一、FreeMarker环境搭建
1、新建 Maven Web项目
2、配置坐标依赖和部署插件
1)、pom.xml配置
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.xxxx</groupId> <artifactId>freemarker</artifactId> <version>1.0-SNAPSHOT</version> <packaging>war</packaging> <name>freemarker Maven Webapp</name> <!-- FIXME change it to the project's website --> <url>http://www.example.com</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> </properties> <dependencies> <!-- freemarker的坐标依赖 --> <dependency> <groupId>org.freemarker</groupId> <artifactId>freemarker</artifactId> <version>2.3.23</version> </dependency> <!-- servlet-api的坐标依赖 --> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.0.1</version> </dependency> </dependencies> <build> <finalName>freemarker</finalName> <!-- 插件地址: Tomcat http://tomcat.apache.org/maven-plugin-2.2/ Jetty https://www.eclipse.org/jetty/documentation/current/jetty-maven-plugin.html --> <plugins> <!-- 配置jetty插件 --> <plugin> <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-maven-plugin</artifactId> <version>9.2.1.v20140609</version> </plugin> </plugins> </build> </project>
2)、修改配置文件 web.xml
在项目的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是freemarker默认的文件后缀 --> <servlet-mapping> <servlet-name>freemarker</servlet-name> <url-pattern>*.ftl</url-pattern> </servlet-mapping> </web-app>
3)、编写Controller类
package com.xxxx.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("/f01") public class FreeMarker01 extends HttpServlet { @Override protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // 设置数据 (给模板设置数据) req.setAttribute("msg","Hello FreeMarker!"); // 请求转发跳转到指定的模板页面 template/f01.ftl req.getRequestDispatcher("template/f01.ftl").forward(req,resp); } }
4)、新建模板文件 ftl
在webapp目录下新建template文件夹,创建f01.ftl文件
<!-- html注释 在浏览器中可以看到的注释 --> <#-- freemarker注释 在浏览器中不能看到的注释 freemarker的语法 1. html所有的标签都适用 2. js与css的使用,与html中语法一致 --> <#-- css的使用 --> <style> h2{ font-family: 楷体; } </style> <#-- 获取数据 --> <h2>${msg}</h2> <#-- js的使用 --> <script> // alert("freemarker"); </script>
5)、启动项目
6)、访问项目
浏览器地址栏输入:http://localhost:8989/f01