freemarker在servlet中的使用

来源:互联网 发布:php实现uv pv ip统计 编辑:程序博客网 时间:2024/06/06 21:39

1、在web.xml引入FreeMarker提供的Servlet

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">
  <display-name>freemarker_web</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
  
  <servlet>
  <servlet-name>freemarker</servlet-name>
  <servlet-class>freemarker.ext.servlet.FreemarkerServlet</servlet-class>
    
  <!-- 模板的查找路径  从上下文根路径查找   模板ftl -->
  <init-param>
    <param-name>TemplatePath</param-name>
    <param-value>/</param-value>
  </init-param>
  <!-- 是否不需要缓存 -->
  <init-param>
    <param-name>NoCache</param-name>
    <param-value>true</param-value>
  </init-param>
  <!-- 最终显示的是html -->
  <init-param>
    <param-name>ContentType</param-name>
    <param-value>text/html;UTF-8</param-value>
  </init-param>
    
  <!-- FreeMarker settings: -->
  <init-param>
    <param-name>template_update_delay</param-name>
    <param-value>0</param-value> <!-- 0 is for development only! Use higher value otherwise. -->
  </init-param>
  <!-- 默认的字符集 -->
  <init-param>
    <param-name>default_encoding</param-name>
    <param-value>UTF-8</param-value>
  </init-param>
  <!-- 数字的格式 -->
  <init-param>
    <param-name>number_format</param-name>
    <!-- 保留的小数位 -->
    <param-value>0.##</param-value>
  </init-param>
<!-- 自动实例化servlet容器 -->
  <load-on-startup>1</load-on-startup>
</servlet>


<servlet-mapping>
 <servlet-name>freemarker</servlet-name>
 <url-pattern>*.ftl</url-pattern>
</servlet-mapping>  
</web-app>



2、新建test.ftl模板文件

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh-CN" dir="ltr">  <head>   <title>test!</title>   <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>  </head>  <body>      <div>          直接显示字符串<br />          String:${strValue}<br/>             <hr/>      </div>            <div>      显示日期      date:${myDate?date}<br/>      <hr/>      显示时间      time:${myDate?time}<br/>      <hr/>      显示时间戳      datetime:${myDate?datetime}<br/>      <hr/>       </div>            <div>      访问对象数组      ObjectArray:      ${objectArray[0]},${objectArray[1]},${objectArray[2]}      <br />      <hr/>           </div>            <div>      遍历Set中的元素      SetData:<br />      <#list setData as value>          ${value}      </#list>      <hr/>       </div>            <div>      遍历List中的元素      strList:<br/>      <#list strList as strValue >      <#if strValue_index == 0>          ${strValue} is first element      <#elseif !strValue_has_next>          ${strValue} is last element      <#else>          ${strValue}      </#if>      <br />      </#list>      <hr/>       </div>            <div>      获取map中的值      <br/>      map:      key1=${map.key1},key2=${map.key2},key3=${map.key3}      <hr/>           </div>                  <#include "foot.html">  </body>     </html> 

3、编写Servlet

public class TestServlet extends HttpServlet {    private static final long serialVersionUID = 1L;    /**     * Default constructor.     */    public TestServlet() {        // TODO Auto-generated constructor stub    }    /**     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse     *      response)     */    protected void doGet(HttpServletRequest request, HttpServletResponse response)            throws ServletException, IOException {        String strValue = "this is String";        Date myDate = new Date();        Object[] objectArray = new Object[] { 1, "str", 1.2 };        Set<Object> setData = new HashSet<Object>();        setData.add("dataValue1");        setData.add("dataValue2");        setData.add("dataValue3");        List<String> strList = new ArrayList<String>();        strList.add("字符串1");        strList.add("字符串2");        strList.add("字符串3");        Map<String, Object> map = new HashMap<String, Object>();        map.put("key1", "value1");        map.put("key2", "value2");        map.put("key3", "value3");        request.setAttribute("strValue", strValue);        request.setAttribute("objectArray", objectArray);        request.setAttribute("strList", strList);        request.setAttribute("map", map);        request.setAttribute("myDate", myDate);        request.setAttribute("setData", setData);        request.getRequestDispatcher("/WEB-INF/ftl/test.ftl").forward(request, response);    }    /**     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse     *      response)     */    protected void doPost(HttpServletRequest request, HttpServletResponse response)            throws ServletException, IOException {        // TODO Auto-generated method stub        doGet(request, response);    }}