FreeMarker
FreeMarker环境搭建
- 新建一个maven项目
- 在
pom.xml
中写入所需依赖<dependency> <groupId>org.freemarker</groupId> <artifactId>freemarker</artifactId> <version>2.3.23</version> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.0.1</version> </dependency>
- 在
webapp/WEB-INF/web.xml
中添加FreeMarker相关的servlet配置<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd" > <web-app> <display-name>Archetype Created Web Application</display-name> <!--FreeMarker的Servlet配置--> <servlet> <servlet-name>freemarker</servlet-name> <servlet-class>freemarker.ext.servlet.FreemarkerServlet</servlet-class> <init-param> <!--模板路径--> <param-name>TemplatePath</param-name> <!--默认在webapp目录下查找对应的模板文件--> <param-value>/</param-value> </init-param> <init-param> <!--模板默认的编码:UTF-8--> <param-name>default_encoding</param-name> <param-value>UTF-8</param-value> </init-param> </servlet> <!--映射 当访问所有的ftl文件都会执行上述操作。 处理所有以.ftl结尾的文件;ftl是freemarker默认的文件后缀 --> <servlet-mapping> <servlet-name>freemarker</servlet-name> <url-pattern>*.ftl</url-pattern> </servlet-mapping> </web-app>
- 编写Servlet类
package com.wxt.freemarker.servlet; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; @WebServlet("/text01") public class FreemarkerText extends HttpServlet { @Override protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { //1. 设置数据(给模板设置数据) req.setAttribute("msg","Hello FreeMarker!"); //2. 请求转发,跳转到指定的模板页面 template/f01.ftl req.getRequestDispatcher("template/f01.ftl").forward(req,resp); //3. 新建模板,在webapp目录下新建template目录 } }
- 编写FreeMarker模板
template/f01.ftl
<#--直接使用el表达式获取值即可,注意这里是FreeMarker的注释格式,下文使用html的注释以便观看--> ${msg}
- 配置tomcat
结果如下:
- 启动tomcat,访问路径是tomcat中配置的url + servlet的访问路径。
以当前为例,访问路径为:http://localhost:8080/freemarkerText_war_exploded/text01
FreeMarker数据类型
布尔型
即boolean类型,在FreeMarker模板中布尔型不能直接输出,需要转为字符串输出
格式如下:
${参数?c}
${参数?string}
${参数?string('返回值1',‘返回值2’)}
如果为true则显示返回值1,为false则显示返回值2
例:
servlet代码如下:
@WebServlet("/text02")
public class FreemarkerText02 extends