Freemaker整合servlet

今天我们创建一个以servlet为基础的应用,该应用使用Freemarker FTL作为视图,而不是jsp.这会使你看到servlet+freemarker的整合。

这个应用非常简单:
有一个表展示用户信息,比如性和名。
可以添加新用户

在eclipse里建立dynamic web project,然后把freemarker.jar放到lib中。

然后修改web.xml,这个文件很长,别害怕,我们将拆解这里的代码,然后我们就会懂到底发生了什么。


		freemarker
		freemarker.ext.servlet.FreemarkerServlet

		
		
			TemplatePath
			/
		
		
			NoCache
			true
		
		
			ContentType
			text/html; charset=UTF-8 
		

		
		
			template_update_delay
			0 
		
		
			default_encoding
			ISO-8859-1 
		
		
			number_format
			0.##########
		

		1
	

	
		freemarker
		*.ftl
	



	
		hello_servlet
		net.viralpatel.freemarker.HelloServlet
	

	
		hello_servlet
		/hello
	

	
	
		
			FreeMarker MVC Views
			*.ftl
		
		
			
		
	
首先,我们放置了这样一个条目:freemarker.ext.servlet.FreemarkerServlet.我们把所有对*.ftl的访问映射到了这个servlet,这样,所有以.ftl结尾的请求
都会被FreemarkerServlet处理  

除此之外,我们还添加了一些参数,这些参数的意义都是不言自明的。可以看一下注释   

FTL模板文件.ftl放在了webapp文件夹中,为了放置随意访问这些文件,我们在web.xml中加了安全限制。

package net.viralpatel.freemarker;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class HelloServlet extends HttpServlet {
	
	private static final long serialVersionUID = 1L;
	
	private static List userList = new ArrayList();
	
	static {
		userList.add(new User("Bill", "Gates"));
		userList.add(new User("Steve", "Jobs"));
		userList.add(new User("Larry", "Page"));
		userList.add(new User("Sergey", "Brin"));
		userList.add(new User("Larry", "Ellison"));
	}
	
	@Override
	protected void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		request.setAttribute("users", userList);
		request.getRequestDispatcher("/index.ftl").forward(request, response);

	}
	
	@Override
	protected void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		
		String firstname = request.getParameter("firstname");
		String lastname = request.getParameter("lastname");
		
		if(null != firstname && null != lastname
				&& !firstname.isEmpty() && !lastname.isEmpty()) {
			
			synchronized (userList) {
				userList.add(new User(firstname, lastname));
			}
			
		}
		
		doGet(request, response);
	}
}
index.ftl


    <#list users as user>
  	
Firstname Lastname
${user.firstname} ${user.lastname}
原文: http://viralpatel.net/blogs/freemarker-servlet-tutorial-example/

源代码:http://pan.baidu.com/share/link?shareid=2294825673&uk=3878681452



你可能感兴趣的:(FreeMarker)