1.新建Dynamic web project工程。
2.起名为Freemarker
3.打开工程,在WebContent中新建index.html文件。
4.在index.html中添加如下内容:
<!DOCTYPEhtml> <html> <head> <metacharset="UTF-8"> <title>Insert title here</title> </head> <body> 点击下面链接看看效果: <hr> <ahref="hello.do">调用Hello模板</a> </body> </html> |
5.在Java Resource中新建包。
6.添加包名称为:com.sln.freemarker
7.在刚刚创建的包下创建类。
8.添加类名称为:Hello.java
9.在Hello类中,要实现一个Servlet类,以便对Freemarker的请求进行拦截处理。
10.首先继承HttpServlet类。HttpServlet类是在servlet-api.jar中的,所以要从tomcat中引入该jar包。
11.然后复写servlet的init方法。在初始化的方法中,需要初始化Freemarker模板的一些类。
私有对象Configuration类,需要引入Freemarker的jar包。
12.设置模板的路径
cfg.setServletContextForTemplateLoading(getServletContext(), "templates"); |
第二个参数设置了模板的路径。
13.之后复写doGet方法。
代码如下:
//建立数据模型 Map root = newHashMap(); //放入对应数据key value root.put("user","zdz"); //取得模版文件 Template t = cfg.getTemplate("hello.ftl");// FreeMarker会到系统的/WebRoot/templates/目录下找hello.ftl文件 //开始准备生成输出 //使用模版文件的charset作为本页面的charset //使用text/html MIME-type response.setContentType("text/html; charset=" + t.getEncoding()); PrintWriter out = response.getWriter();
//合并数据模型和模版,并将结果输出到out中 try { t.process(root, out);//用模板来开发servlet可以只在代码里面加入动态的数据 } catch (TemplateException e) { thrownew ServletException("处理Template模版中出现错误", e); } |
14.配置web.xml
<web-appversion="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> <servlet> <servlet-name>freemarker</servlet-name> <servlet-class>com.sln.freemarker.Hello</servlet-class> </servlet> <servlet-mapping> <servlet-name>freemarker</servlet-name> <url-pattern>/*.do</url-pattern> </servlet-mapping> </web-app> |