zoukankan      html  css  js  c++  java
  • SSM之旅(二)--换个视图解析器FreeMarker

    对于一些不写jsp的同学来说,freemarker是个不错的选择,什么是freeMarker,没错,他是一个动态模板引擎,并用来生成输出文本(HTML网页、电子邮件配置文件源代码等)的通用工具。 它不是面向最终用户的,而是一个Java类库,是一款程序员可以嵌入他们所开发产品的组件。具体啥的自己是了解。

    1、想要引入freemarker,首先你需要引入jar包,毕竟他是一个java类库

    <!--freeMarker依赖-->
    <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context-support</artifactId>
    <version>3.2.4.RELEASE</version>
    </dependency>
    <dependency>
    <groupId>org.freemarker</groupId>
    <artifactId>freemarker</artifactId>
    <version>2.3.19</version>
    </dependency>

    2、与springMVC进行整合,修改servlet-context.xml提供视图解析

    <!-- 设置freeMarker的配置文件路径 -->
        <bean id="freemarkerConfiguration" class="org.springframework.beans.factory.config.PropertiesFactoryBean">
            <property name="location" value="classpath:config/freemarker_static.properties"/>
        </bean>
    
        <!-- 配置freeMarker参数 -->
        <bean class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
            <property name="freemarkerSettings" ref="freemarkerConfiguration"/>
            <property name="templateLoaderPath"><value>/WEB-INF/views/</value></property>
        </bean>
    
        <!-- 配置freeMarker视图解析器 -->
        <bean id="viewResolver" class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">
            <property name="cache" value="true" />
            <property name="prefix" value="" />
            <property name="suffix" value=".ftl" />
            <property name="contentType" value="text/html;charset=UTF-8"></property>
            <property name="requestContextAttribute" value="request" />
            <property name="exposeSpringMacroHelpers" value="true" />
            <property name="exposeRequestAttributes" value="true" />
            <property name="exposeSessionAttributes" value="true" />
            <property name="order" value="0" />
        </bean>
    
        <!-- 配置视图解析器 如何把handler 方法返回值解析为实际的物理视图 -->
       <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
            <property name = "prefix" value="/WEB-INF/views/"></property>
            <property name = "suffix" value = ".jsp"></property>
            <property name="order" value="1" />
        </bean>

    其实我们可以提供多个视图解析器,并且按照order设置优先级来调用,从小到大。

    3、控制器

    public class IndexController {
    
        @RequestMapping(value = "/index")
        public ModelAndView indexApi(final Model model){
    
            ModelAndView mv = new ModelAndView();
            mv.addObject("name", "this is freemaker test!!!");
            return mv;
        }
    }

    注意,return mv;是返回逻辑视图与数据,如果是直接返回return "index" 那么这只是返回了逻辑视图,需要将数据放入到model中,传入到resquest的域里面进行返回。

    freeMarker的作用很多,以后时间进行详解和补充。

    这一讲引入了freemarker,好的,我们下一章是如果进行请求响应的类型区别。

  • 相关阅读:
    温昱谈架构和框架(Framework)的区别
    温故而知新:HttpApplication,HttpModule,HttpContext及Asp.Net页生命周期
    怎么设计一个好的数据库
    ORACLE修改表空间方法
    为[ double ] 类型 添加[zzzzz]方法
    常用的html代码 加粗 加亮 字型加大 变色等
    ASP.NET页面级别的事务
    无法加载 DLL“oramts.dll”: 找不到指定的模块。 (异常来自 HRESULT:0x8007007E)
    把漫画浏览器的离线下载的功能给实现了一下
    以前写的IE9鼠标手势插件在IE10下也能工作
  • 原文地址:https://www.cnblogs.com/DASOU/p/7327283.html
Copyright © 2011-2022 走看看