由于本人对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>
分享到:
相关推荐
SpringBoot + SpringSecurity + Thymeleaf 入门案例,适合快速整合权限管理框架的同学,可以快速进行修改源代码实现权限控制的效果。代码是入门案例,较为简单。能够使整合更加迅速。其中搭配了前端页面进行效果显示...
资源简介:SSM Java 项目集合 一、概述 在这个平台上,我们为大家带来了一系列的 JavaSSM(Spring + SpringMVC + MyBatis)项目。这些项目旨在展示SSM框架在实际应用中的魅力,同时也为开发者提供了一个快速学习和...
thymeleaf语法入门,有兴趣的可以看一看
Thymeleaf之HelloWorld, java, thymeleaf , maven , thymeleaf入门
thymeleaf语法
学习 thymeleaf 入门必读。
spring boot thymeleaf 入门级demo
Thymeleaf案例入门和基本语法讲解
springBoot+mybatisplus+thymeleaf+静态html模板的例子,适合想了解框架的朋友们。希望对大家有帮助。数据库脚本在resources的sql目录下。
本文档以Thymeleaf官方文档为基础,科学系统地、循序渐进地将Thymeleaf的使用方法、技术细节、扩展思路铺展开来,带您走进Thymeleaf的欢乐世界。
Spring Boot 整合Mybatis、Druid、PageHelper、Swagger 、AOP、过滤器、拦截器、thymeleaf 基础入门demo
SpringBoot+Mybatis+Thymeleaf整合Shiro入门
创建Thymeleaf的入门项目 maven构建简单项目 修改pom文件添加thymeleaf的坐标 <groupId>org.springframework.boot <artifactId>spring-boot-starter-thymeleaf </dependency>
thymeleaf入门及基础语法知识。睡觉睡到自然醒,数钱数到手抽筋!大庇天下寒士俱欢颜。怅寥廓,问苍茫大地,谁主沉浮。
Thymeleaf简单入门 什么是Thymeleaf Thymeleaf是一个模板引擎,主要用于编写动态页面。 SpringBoot整合Thymeleaf SpringBoot整合Thymeleaf的方式很简单,共分为以下几个步骤 创建一个sprinboot项目 添加...
thymeleaf开发手册,技术资料,java,深入浅出快速入门
本教程解释了什么是Thymeleaf?Thymeleaf过程可以使用哪种模板?根据官方文档全译中文版,提供给有需要的猿们学习。
springboot集成thymeleaf的迷你案例,注意是迷你
IntelliJ IDEA下SpringBoot+Maven+JPA+Thymeleaf整合实现增删改查及分页入门项目实例.zip