有两种方法可以利用Freemarker 作为视图.
- 使用Freemarker 结果类型绘制Freemarker 模版;也就是说通过ActionBean。
- 在web.xml文件中注册FreemarkerServlet以便直接通过浏览器请求绘制Freemarker 模版.也就是说不通过ActionBean,直接访问ftl文件。
为使用第二种方式, 必须修改web.xml文件加入FreemarkerServlet的servlet定义及其映射, 如下:
- <servlet>
- <servlet-name>freemarker</servlet-name>
- <servlet-class>com.opensymphony.webwork.views.freemarker.FreemarkerServlet</servlet-class>
- <!-- FreemarkerServlet settings: -->
- <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>
- <init-param>
- <param-name>ContentType</param-name>
- <param-value>text/html</param-value>
- </init-param>
- <init-param>
- <param-name>default_encoding</param-name>
- <param-value>GBK</param-value>
- </init-param>
- <init-param>
- <param-name>number_format</param-name>
- <param-value>0.##########</param-value>
- </init-param>
- <load-on-startup>1</load-on-startup>
- </servlet>
- <servlet-mapping>
- <servlet-name>freemarker</servlet-name>
- <url-pattern>*.ftl</url-pattern>
- </servlet-mapping>
用Freemarker结果类型意味着Freemarker模版仅能通过Action进行绘制, 换言之, 访问.ftl页面将不会进行绘制而直接返回文本内容.
如果你选择这种方式, 推荐你将Freemarker文件放在WEB-INF目录下使其不可访问. 使用FreemarkerServlet意味着Freemarker模版可以通过对.ftl页面的请求进行绘制. 这也意味着需要对模版实现安全检查, 以便用户不能绕过活动(如果这是必需的)直接访问它.