`
cyhcheng
  • 浏览: 58341 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Thymeleaf入门

    博客分类:
  • java
 
阅读更多

由于本人对HTML5比较有兴趣,看到资讯里Thymeleaf 1.1.1 发布,基于Java的XML/XHTML/HTML5模板引擎。牛人的东西,所以抽时间看了看,感觉不错,抛开性能的问题,本人感觉上手比较容易。模版userdetail.html保存在/WEB-INF/templates。采用javaee5。

下面将主要代码贴出来:

1、域类User.java非常简单:

 

package org.penguin.study.thymeleaf.domains;

import java.io.Serializable;
import java.util.Date;
import java.util.List;

public class User implements Serializable {

	/**
	 * 
	 */
	private static final long serialVersionUID = -1166971076916234412L;

	public User() {
		super();
	}

	public User(String userName, Boolean sex, Date birthday, Integer age, List<String> favs) {
		super();
		this.userName = userName;
		this.sex = sex;
		this.birthday = birthday;
		this.age = age;
		this.favs = favs;
	}

	public User(Long userId, String userName, Boolean sex, Date birthday, Integer age, List<String> favs) {
		super();
		this.userId = userId;
		this.userName = userName;
		this.sex = sex;
		this.birthday = birthday;
		this.age = age;
		this.favs = favs;
	}

	private Long userId;
	private String userName;
	private Boolean sex;
	private Date birthday;
	private Integer age;
	private List<String> favs;

	public Long getUserId() {
		return userId;
	}

	public void setUserId(Long userId) {
		this.userId = userId;
	}

	public String getUserName() {
		return userName;
	}

	public void setUserName(String userName) {
		this.userName = userName;
	}

	public Boolean getSex() {
		return sex;
	}

	public void setSex(Boolean sex) {
		this.sex = sex;
	}

	public Date getBirthday() {
		return birthday;
	}

	public void setBirthday(Date birthday) {
		this.birthday = birthday;
	}

	public Integer getAge() {
		return age;
	}

	public void setAge(Integer age) {
		this.age = age;
	}

	public List<String> getFavs() {
		return favs;
	}

	public void setFavs(List<String> favs) {
		this.favs = favs;
	}

	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + ((userId == null) ? 0 : userId.hashCode());
		return result;
	}

	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		User other = (User) obj;
		if (userId == null) {
			if (other.userId != null)
				return false;
		} else if (!userId.equals(other.userId))
			return false;
		return true;
	}

	@Override
	public String toString() {
		return "User [userId=" + userId + ", userName=" + userName + ", sex=" + sex + ", birthday=" + birthday + ", age=" + age + ", favs=" + favs + "]";
	}
}

 2、PrintUserServlet.java代码:

 

package org.penguin.study.thymeleaf.web;

import java.io.IOException;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.penguin.study.thymeleaf.domains.User;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.thymeleaf.TemplateEngine;
import org.thymeleaf.TemplateMode;
import org.thymeleaf.context.WebContext;
import org.thymeleaf.templateresolver.ServletContextTemplateResolver;

@WebServlet("/printuser")
public class PrintUserServlet extends HttpServlet {

	private static final long serialVersionUID = 392217069528789775L;
	private static final DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
	private static final Logger logger = LoggerFactory.getLogger(PrintUserServlet.class);
	private static TemplateEngine templateEngine;

	public PrintUserServlet() {
		super();
		initializeTemplateEngine();
	}

	protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		String result = "";
		try {
			User zhaojing = new User(100L, "赵静", false, dateFormat.parse("1978-11-22"), 34, new ArrayList<String>() {
				{
					add("听音乐");
					add("读书");
					add("慢跑");
					add("旅游");
				}
			});
			User chengyinghua = new User(200L, "程英华", false, dateFormat.parse("1978-02-04"), 34, new ArrayList<String>() {
				{
					add("听音乐");
					add("读书");
					add("慢跑");
					add("旅游");
				}
			});
			Map<String, Integer> map = new HashMap<String, Integer>() {
				{
					put("a", 96);
					put("b", 97);
					put("c", 98);
				}
			};
			HttpSession session = request.getSession(true);
			session.setAttribute("admin", chengyinghua);
			session.setMaxInactiveInterval(3600);
			request.setAttribute("user", zhaojing);
			request.setAttribute("map", map);
			response.setContentType("text/html;charset=UTF-8");
			response.setHeader("Pragma", "no-cache");
			response.setHeader("Cache-Control", "no-cache");
			response.setDateHeader("Expires", 0);
			final WebContext ctx = new WebContext(request);
			ctx.setVariable("user", zhaojing);
			result = templateEngine.process("userdetail", ctx);
			response.getWriter().write(result);
		} catch (ParseException e) {
			logger.error("格式化生日数据时发生异常,请检查生日数据是否符合yyyy-MM-dd格式,范例:1978-02-04");
		}
	}

	private static void initializeTemplateEngine() {
		ServletContextTemplateResolver templateResolver = new ServletContextTemplateResolver();
		// 设置模版类型
		templateResolver.setTemplateMode(TemplateMode.HTML5);
		// 设置模版路径
		templateResolver.setPrefix("/WEB-INF/templates/");
		// 设置后缀
		templateResolver.setSuffix(".html");
		// 设置缓存时间为1个小时
		templateResolver.setCacheTTLMs(Long.valueOf(3600000L));
		templateEngine = new TemplateEngine();
		templateEngine.setTemplateResolver(templateResolver);
	}
}

 3、模版代码userdetail.html:

 

<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="utf-8" />
<title>Thymeleaf入门</title>
<style type="text/css">
li.odd  {
  background-color: #f0faaa;
}
</style>
</head>
<body>
	一个超简单的Thymeleaf应用。从模版中读取数据:
	<div th:text="${user.userName }" />	
	<div th:text="${session.admin.userName }" />
	爱好:<li th:each="fav : ${user.favs}" th:text="${fav}"  th:class="${favStat.odd}? 'odd'" />
	<br />  
	兴趣:<input type="radio" th:each="object : ${map.entrySet()}" th:text="${object.value}"  th:id="${object.key}" name="chars"  th:checked="${objectStat.index==0}?'checked'" />    
</body>
</html>
分享到:
评论
1 楼 cyhcheng 2011-09-21  
如果想进一步学习,建议到官方站点:http://www.thymeleaf.org去学习。个人推荐用1周左右的时间好好看看。感觉上非常棒。

相关推荐

Global site tag (gtag.js) - Google Analytics