日期:2014-05-16 浏览次数:20518 次
曾经写过一篇博文《很轻的,Servlet + Freemarker 组合体,没有那么硬~ 》,不过那是基于Servlet 2.× 系列的,今天谈谈如何在Servlet 3.0 下使用Freemarker进行更快的开发方式。
Servlet 3.0的强大、简单的,摆脱以前的约束,重构类名还得需要到web.xml中手动修改,如今再也没有那么多烦恼,当然这仅仅是一个侧面而已,就已经说明了其强大。
Freemarker强大的模板化能力,据说解析速度超越JSP,让讨厌JSP+ JAVA混合体编程的人得到一种解脱,身心的。还有一点就是快速的模型填充,不需要随处可见的JAVA代码,任何角落都是。
总之:Servlet 3.0 + Freemarker, 超级轻的MVC组合,让人愉悦。
闲话短说,先来一个Servlet + JSP组合体:
TemplateTestAction.java
@WebServlet("/test1")
public class TemplateTest1Action extends HttpServlet {
private static final long serialVersionUID = 6576879808909808L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String id = "1688";
String title = "使用freemarker";
String content = "这是测试";
request.setAttribute("blog", new UserBlog(id, title, content, new Date()));
request.getRequestDispatcher("/WEB-INF/pages/template1.html").forward(request, response);
}
}
?
?
对应JSP:
<%@page import="java.text.SimpleDateFormat"%>
<%@page import="com.demo.UserBlog"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP + Servlet</title>
</head>
<body>
<%UserBlog blog = (UserBlog)request.getAttribute("blog"); %>
<h1>ID : <%=blog.getId() %></h1>
<h5>TITLE : <%=blog.getTitle() %></h5>
<p>DATETIME : <%=new SimpleDateFormat("yyyy-MM-dd HH:mm").format(blog.getDate()) %></p>
<div>
CONTENT : <br/>
<p><%=blog.getContent() %></p>
</div>
</body>
</html>
?
?
看看代码,以前大家也都是这么写过来的。
对比一下Servlet + Freemarker :
@WebServlet("/test1")
public class TemplateTest1Action extends HttpServlet {
private static final long serialVersionUID = 6576879808909808L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String id = "1688";
String title = "使用freemarker";
String content = "这是测试";
request.setAttribute("blog", new UserBlog(id, title, content, new Date()));
request.getRequestDispatcher("/WEB-INF/pages/template1.html").forward(request, response);
}
}
?
?
<