今天上午做了个FreeMarker在web中的小例子,分享下。
1、FreeMarker.java
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
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
</table>
</body>
</html>
4、web.xml
<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>