FreeMarker与SpringMVC的整合

FreeMarker与SpringMVC的整合1. 背景: FreeMarker是一个模板引擎,一个基于模板生成文本输出的通用工具,使用纯java编写。 2. 特性 本示例实在spring的基础上整合FreeMarker,所以对于spring的部分配置不重点关注。 其中:spring-mvc.xml是spring与free…

SpringMVC整合freeMarker实现页面静态化+SpringMVC配置多视图

1. 背景:

FreeMarker是一个模板引擎,一个基于模板生成文本输出的通用工具,使用纯java编写。 FreeMarker被设计用来生成HTML Web页面,特别是基于MVC模式的应用程序 虽然FreeMarker具有一些编程能力,但通常由java程序准备要显示的数据,由FreeMarker生成页面,通过模板显示准备的数据

FreeMarker与SpringMVC的整合

2. 特性

  • 能够生成各种文本:HTML,XML,RTF,Java源代码等等
  • 易于嵌入到你的产品中:轻量级,不需要Servlet环境
  • 插入式模板载入器:可以从任何源载入模板,如本地文件,数据库
  • 你可以按你所需要的生成文本,保存到本地文件;作为Email发送,从Web应用程序发送它返回给浏览器

整合

本示例实在spring的基础上整合FreeMarker,所以对于spring的部分配置不重点关注。 FreeMarker与SpringMVC的整合

其中:spring-mvc.xml是spring与freeMarker整合配置文件,而WEB-INF下的文件夹中,ftl为freeMarker的模板,jsp为spring的模板。

1.在pom.xml文件中引入相关依赖

<dependency>
      <groupId>org.freemarker</groupId>
      <artifactId>freemarker</artifactId>
      <version>2.3.23</version>
    </dependency>


    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context-support</artifactId>
      <version>5.0.5.RELEASE</version>
    </dependency>


  1. spring-mvc.xml中的配置
<!-- 配置Jsp视图解析器 -->
     <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
         <property name="viewClass" value="org.springframework.web.servlet.view.InternalResourceView" />
         <property name="prefix" value="/WEB-INF/jsp/" />
         <property name="suffix" value=".jsp" />
         <property name="order" value="1" />
     </bean>
 
     <!-- 配置freeMarker的模板路径 -->
     <bean class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
         <property name="templateLoaderPath" value="/WEB-INF/ftl/" /><!--注意这儿不要添加classpath-->
         <property name="defaultEncoding" value="utf-8" />
         <property name="freemarkerVariables">
             <map>
                 <entry key="xml_escape" value-ref="fmXmlEscape" />
             </map>
         </property>
         <property name="freemarkerSettings">
             <props>
                 <prop key="template_update_delay">0</prop>
                 <prop key="default_encoding">UTF-8</prop>
                 <prop key="number_format">0.##########</prop>
                 <prop key="date_format">yyyy-MM-dd</prop>
                 <prop key="datetime_format">yyyy-MM-dd HH:mm:ss</prop>
                 <prop key="locale">zh_CN</prop>
                 <prop key="classic_compatible">true</prop>
                 <prop key="template_exception_handler">ignore</prop>
             </props>
         </property>
     </bean>
     <bean id="fmXmlEscape" class="freemarker.template.utility.XmlEscape"/>
 
     <!-- 配置freeMarker视图解析器 -->
     <bean class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">
         <property name="viewClass" value="org.springframework.web.servlet.view.freemarker.FreeMarkerView"/>
         <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="cache" value="true" />
         <property name="prefix" value="" />
         <property name="suffix" value=".ftl" />
         <property name="order" value="0"/>
     </bean>
  • jsp视图解析器与FreeMarker视图解析器中的order属性,只有在spring项目中多视图时才会配置。上面配置中把FreeMarker的order设置为0,jsp设置为1,意思是要找view的时候,先找ftl文件,再找jsp文件作为视图

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/13341.html

(0)

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注