spring mvc基础篇(八):映射处理器之FreeMarker模板技术

8.1 FreeMarker简介

FreeMarker是一款模板引擎: 即一种基于模板和要改变的数据,并用来生成输出文本(HTML网页、电子邮件、配置文件、源代码等)的通用工具。它不是面向最终用户的,而是一个Java类库,是一款程序员可以嵌入他们所开发产品的组件。

8.2 开发环境

开发工具:myeclipse8.6.1

数据库:mysql5.5.23

服务器: tomcat6.0.37

框架版本: spring3.2.2

8.3 案例开发步骤

步骤一:在myeclipse8.6中新建web工程springmvc08,拷贝如下包到lib目下:

注意新增的包。

 spring mvc基础篇(八):映射处理器之FreeMarker模板技术

步骤二:编写web.xml 配置文件,代码如下:

=================================web.xml========================

<?xmlversion="1.0" encoding="UTF-8"?>

<web-appversion="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee

http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

<!-- 配置spring的字符集过滤 -->

  <filter>

    <filter-name>encode</filter-name>

    <filter-class>org.springframework.web.filter

.CharacterEncodingFilter</filter-class>

    <init-param>

      <param-name>encoding</param-name>

      <param-value>UTF-8</param-value>

    </init-param>

    <init-param>

         <param-name>forceEncoding</param-name>

         <param-value>true</param-value>

    </init-param>

  </filter>

  <filter-mapping>

    <filter-name>encode</filter-name>

    <url-pattern>/*</url-pattern>

</filter-mapping>

<servlet>

<servlet-name>springmvc</servlet-name>

<servlet-class>

org.springframework.web.servlet.DispatcherServlet

</servlet-class>

<load-on-startup>1</load-on-startup>

</servlet>

<servlet-mapping>

<servlet-name>springmvc</servlet-name>

<url-pattern>*.do</url-pattern>

</servlet-mapping>

</web-app>

================================================================

步骤三:建立index.jsp,如下所示:

=========================index.jsp==============================

<body>

    <h1><ahref="FreeMaker.do">freemaker示例:</a></h1>

</body>

=====================================================================

步骤四:在com.wx.controls包下面编写控制器FreeMarkerController.java,如下:

==================FreeMarkerController.java==========================

public class FreeMarkerControllerextendsAbstractCommandController {

    protected ModelAndView handleRequestInternal(

HttpServletRequest reqeust,HttpServletResponse response)

throws Exception {

        //视图解析器会根据base名称去找base.ftl的模板

       ModelAndView mav = new ModelAndView("base");

       mav.addObject("username","张三");

       SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

       mav.addObject("time", sdf.format(new Date()));

       return mav;

    }

    //该方法无实际作用,但必须要实现它

    protected ModelAndView handle(HttpServletRequest request,

           HttpServletResponse response, Object command,BindException errors)

           throws Exception {

       return null;

    }

}

==================================================================

 

步骤五:在核心配置文件springmvc-servlet.xml里面完善如下配置

======================== springmvc-servlet.xml=======================

<beans>

    <!--指明模板文件的默认编码及位置-->

    <beanid="freemarkerConfig"

        class="org.springframework.web.servlet

.view.freemarker.FreeMarkerConfigurer">

       <propertyname="defaultEncoding"value="UTF-8"/>

       <propertyname="templateLoaderPath"value="/freemarker/"/>

    </bean>

    <!—freemarker视图解析器,指明生成页面的内容编码,

是否应用缓存,以及前缀后缀等-->

    <beanid="fmViewResolver"       

       class="org.springframework.web.servlet

.view.freemarker.FreeMarkerViewResolver">

       <propertyname="contentType"value="text/html;charset=utf-8"/>

       <propertyname="cache"value="false"/>

       <propertyname="prefix"value=""/>

       <propertyname="suffix"value=".ftl"/>

    </bean>

   

    <beanid="simpleUrlMapping"

       class="org.springframework.web.servlet

.handler.SimpleUrlHandlerMapping">

       <propertyname="mappings">

       <props>

            <propkey="/FreeMaker.do">freeControl</prop>

       </props>

       </property>

    </bean>

<beanid="freeControl"class="com.wx.controls.FreeMarkerController">  

    </bean>

</beans> ====================================================================

步骤六:在webroot目录下建立模板文件base.ftl,如图所示:

 spring mvc基础篇(八):映射处理器之FreeMarker模板技术

模板页面内容如下:

=====================base.ftl====================================

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

 <head>

    <title>freemaker示例</title>

    <meta http-equiv="pragma"content="no-cache">

    <meta http-equiv="cache-control"content="no-cache">

    <meta http-equiv="expires"content="0">   

  </head>

 

<body>

    欢迎来到FreeMarker模板页面<br/>

    welcome${username}<br/>

    当前时间:${time}

</body>

</html>

==================================================================

 

步骤七: 启动tomcat,发布项目,在地址栏输入 http://localhost:8080/springmvc08/index.jsp 进行测试,得到结果:

spring mvc基础篇(八):映射处理器之FreeMarker模板技术

 联系作者

spring mvc基础篇(八):映射处理器之FreeMarker模板技术