配置SpringMVC中的视图解析器

视图解析器的作用:

就是当 DispatcherServlet将ModelAndView传递给视图解析器的时候,将ModelAndView数据填充到相应的视图中,然后返回一个带有数据的视图给DispatcherServlet.

视图解析其中有个抽象类:

AbstractCachingViewResolver 它将解析过的视图进行缓存,下次再次解析的时候就会在缓存中直接寻找该视图。


第一种视图:UrlBasedViewResolver,继承上面这个抽象类,具有缓存功能。但这里不介绍了,因为有个更通用的方法替代这个视图。


第二种视图:InternalResourceViewResolver 继承UrlBasedViewResolver` 而且有自己的特点。
先来看看它是如何配置的:
springmvc.xml:

 
    
    
    
        
        
    

处理器:

modelAndView.setViewName("/fruitsList");

当你访问:http://localhost:8080/SpringMVC_test/queryList.action即可。
总结:

  1. 利用前缀和后缀的配置,可以减少Contreller中视图定义的代码。
  2. 该解析器也有对视图缓存的功能
  3. 通常把jsp放在WEB-INF目录下,视图解析器会在服务器中将请求foreword到对应的视图上。

再来介绍一个返回模板类型的视图解析器:FreeMarkerViewResolver
它会解析逻辑视图配置,返回一种Freemarker模板,该模板负责将数据模型中的数据合并到模板中,从而生成标准的输出,可以生成各种文本,包括HTML,XML,java源码等。
先来看看配置吧,springmvc要配置两个部分:


    
    

    
    
        
        
        
    
    
    
        
    

再看看控制器:

//标识是一个控制器,可以被处理器适配器找到
@Controller
public class FruitsController {

    private FruitService fruitService = new FruitService();
    //@RequestMapping实现将queryList方法和url进行映射,一个方法对应一个url
    //一般建议将url设置和方法写一样
    @RequestMapping("/queryList")
    public ModelAndView queryList() {
        List list = fruitService.queryFruitsList();
        ModelAndView modelAndView = new ModelAndView();
        modelAndView.addObject("fruits",list);

        System.out.println(modelAndView.getModelMap());
        modelAndView.setViewName("fruit");
        return modelAndView;
    }
    class FruitService{
        public List queryFruitsList(){
            List list = new ArrayList();
            list.add(new Fruit("苹果",5));
            list.add(new Fruit("火龙果",7));
            list.add(new Fruit("雪莲果",4));
            return list;
        }
    }
}

所以要在/WEB-INF/freemarker的目录下创建一个模板:
/WEB-INF/freemarker/fm_fruit.ftl

所以只要
http://localhost:8080/SpringMVC_test/queryList.action
就可以访问到
/WEB-INF/freemarker/fm_fruit.ftl
注意:maven还要配置:


          
          org.springframework
          spring-context-support
          4.3.6.RELEASE
      
      
          org.freemarker
          freemarker
          2.3.28
      

不过最后的编码问题还有数据访问没实现…… 试了下网上方法不行。模板这一块 以后再了解。
总结:
使用FreeMarkerViewResolver可以生成Freemarker模板。

哈哈哈 其他的还有很多,我就不多介绍了。一个用来jsp,一个用来模板 我觉得这两个基本已经够满足要求的了。

你可能感兴趣的:(SSM框架)