今天上午做了个FreeMarker在web中的小例子,分享下。 1、FreeMarker.java package com.lijigou.freemarker; import java.io.IOException; import java.io.PrintWriter; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Locale; import java.util.Map; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import freemarker.template.Configuration; import freemarker.template.ObjectWrapper; import freemarker.template.Template; import freemarker.template.TemplateException; import freemarker.template.TemplateExceptionHandler; @SuppressWarnings("serial") public class FreeMarker extends HttpServlet { private Configuration cfg = null; public void init() throws ServletException { //创建Configuration实例 cfg = new Configuration(); //设置模板路径 cfg.setServletContextForTemplateLoading(getServletContext(), "WEB-INF/templates"); //设置编码格式 cfg.setEncoding(Locale.getDefault(), "UTF-8"); } public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request, response); } @SuppressWarnings("unchecked") public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); PrintWriter out = response.getWriter(); //加载template模板 Template template = cfg.getTemplate("test.ftl"); template.setTemplateExceptionHandler(TemplateExceptionHandler.DEBUG_HANDLER); //设置对象包装器 template.setObjectWrapper(ObjectWrapper.BEANS_WRAPPER); //设置data Map map = new HashMap(); List<User> list = new ArrayList<User>(); for(int i=0;i<10;i++){ User user = new User(); user.setUsername("username"+i); user.setPassword("password"+i); list.add(user); } map.put("list", list); try { //将data和template合并输出 template.process(map, out); out.flush(); } catch (TemplateException e) { e.printStackTrace(); } } } 2、User.java package com.lijigou.freemarker; public class User { private String username; private String password; public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } } 3、test.ftl <html> <head> <title>FreeMarker Example Web Application 1</title> </head> <body> <table> <#if list?exists && list?size gt 0> <#list list as user> <tr> <td>${user.username?cap_first}</td> <td>${user.password?cap_first}</td> </tr> </#list> </#if> </table> </body> </html> 4、web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <servlet> <servlet-name>HelloWorldServlet</servlet-name> <servlet-class>com.lijigou.freemarker.HelloWorldServlet</servlet-class> </servlet> <servlet> <servlet-name>FreeMarker</servlet-name> <servlet-class>com.lijigou.freemarker.FreeMarker</servlet-class> </servlet> <servlet-mapping> <servlet-name>FreeMarker</servlet-name> <url-pattern>/servlet/FreeMarker</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> </web-app>