Spring(6)——框架显示层之Velocity技术

Velocity教程

一、框架显示层技术

  • Jsp

优点:1、功能强大,可以写java代码2、支持jsp标签(jsp tag)3、支持表达式语言(el)4、官方标准,用户群广,丰富的第三方jsp标签库5、性能良好。jsp编译成class文件执行,有很好的性能表现.
缺点:jsp没有明显缺点,非要挑点骨头那就是,由于可以编写java代码,如使用不当容易破坏mvc结构

  • Velocity

Velocity是较早出现的用于代替jsp的模板语言
优点:
1、不能编写java代码,可以实现严格的mvc分离
2、性能良好,据说比jsp性能还要好些
3、使用表达式语言,据说jsp的表达式语言就是学velocity的
缺点:
1、不是官方标准
2、用户群体和第三方标签库没有jsp多。
3、对jsp标签支持不够好

  • freemarker

优点:
1、不能编写java代码,可以实现严格的mvc分离
2、性能非常不错
3、对jsp标签支持良好
4、内置大量常用功能,使用非常方便
5、宏定义(类似jsp标签)非常方便
6、使用表达式语言
缺点:
1、不是官方标准
2、用户群体和第三方标签库没有jsp多

二、Velocity模板(VM)语言介绍

Velocity是一个基于java的模板引擎(template engine)。它允许任何人仅仅简单的使用模板语言(template language)来引用由java代码定义的对象。

当Velocity应用于web开发时,界面设计人员可以和java程序开发人员同步开发一个遵循MVC架构的web站点,也就是说,页面设计人 员可以只关注页面的显示效果,而由java程序开发人员关注业务逻辑编码。

Velocity将java代码从web页面中分离出来,这样为web站点的长 期维护提供了便利,同时也为我们在JSP和PHP之外又提供了一种可选的方案。

三、SpringMVC项目与Velocity整合

整合过程:
  • pom.xml(引入velocity的jar包)
  • spring-mvc.xml(视图配置,配置velocity)
  • velocity.properties(velocity配置文件)
(1)加入dependency
    
    
      org.apache.velocity  
      velocity  
      1.5  
    
    
      velocity-tools  
      velocity-tools-generic  
      1.2  
  
(2)视图配置
  
    
        
        
    

  
    
        
  
(3)velocity.properties配置文件
  #encoding  
  input.encoding=UTF-8
  output.encoding=UTF-8

  #autoreload when vm changed  
  file.resource.loader.cache=false
  file.resource.loader.modificationCheckInterval=2
  velocimacro.library.autoreload=false  

四、Velocity语法教程

《Velocity教程》
《使用 Velocity 模板引擎快速生成代码》

五、Controller返回参数值:Controller中绑定、添加模型数据为视图页面展示时所使用

Controller中进行页面控制,执行业务逻辑,计算得到页面要展示的数据,需要将这些数据绑定到Model上,才能被显示层获取到,从而显示到页面上。

  • 方式一:Controller返回类型为ModelAndView
    @RequestMapping("index")
    public ModelAndView index(){
        Map map= new HashMap();
        map.put(String,Object);
        return ModelAndView(String <视图模板名>,map);
    }
    
  • 方式二:在Controller方法中加Model参数,将数据绑定到Model上
    @RequestMapping("checkLogin")
    public String checkLogin(Model model){
        model.addAttribute(key,value); // 在视图模板文件中即可通过key获取value
        return "ok";
    }
    
  • 方式三:利用@ModelAttribute注解,可以将普通方法返回值、请求参数、Controller方法返回值放入Model中(具体参见Spring(4)——Spring MVC中对@ModelAttribute注解的介绍)

三种方法中,推荐使用第二种方法。

六、Controller如何获取Request参数

  • 1、利用原有的Servlet方法,使用HttpServletRequest

  • 2、利用@RequestParam注解
    @RequestParam("username")String name
    当username在request中不存在,会抛出异常,可以使用@RequestParam(value="username" required=false default=" 默认值")这样请求有值就取,没有值就不取。

  • 3、使用实体类封装
    将实体类(需要具有setter,getter方法)作为Controller方法的参数,请求参数与实体类的属性保持一致,则会完成自动绑定,将请求参数自动绑定到这个实体类上,方法直接使用即可。

你可能感兴趣的:(Spring(6)——框架显示层之Velocity技术)