由于本人对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开发的系统项目 课程设计 毕业设计参考 含项目源码+说明基于SSM开发的系统项目 课程设计 毕业设计参考 含项目源码+说明基于SSM开发的系统项目 课程设计 毕业设计参考 含项目源码+说明基于SSM开发的系统项目 ...
资源简介:SSM Java 项目集合 一、概述 在这个平台上,我们为大家带来了一系列的 JavaSSM(Spring + SpringMVC + MyBatis)项目。这些项目旨在展示SSM框架在实际应用中的魅力,同时也为开发者提供了一个快速学习和...
thymeleaf语法入门,有兴趣的可以看一看
1. **创建Thymeleaf入门项目** - 使用Maven作为构建工具,首先需要创建一个新的Maven项目。 - 在`pom.xml`文件中添加Thymeleaf的依赖。通过以下代码段可以引入SpringBoot提供的`spring-boot-starter-thymeleaf`...
"Thymeleaf语法入门" Thymeleaf是现代服务器端Java模板引擎,主要目标是为开发工作流程带来优雅的自然模板 - HTML。Thymeleaf可以在直接浏览器中正确显示,并且可以作为静态原型,从而在开发团队中实现更强大的协作...
《SpringBoot+MybatisPlus+Thymeleaf框架入门Web系统详解》 SpringBoot、MybatisPlus和Thymeleaf是现代Java开发中常见的三大框架,它们各自在Web开发的不同领域发挥着重要作用。SpringBoot简化了Spring应用的初始...
**Spring Boot Thymeleaf 入门级Demo详解** 在现代Web开发中,Spring Boot以其简洁的配置和强大的功能成为了Java开发者首选的框架之一。Thymeleaf则是一款优秀的服务器端模板引擎,它使得HTML页面可以直接在浏览器...
### 使用Thymeleaf入门详解 #### 一、Thymeleaf简介 ##### 1.1 什么是Thymeleaf? Thymeleaf是一款Java库,它是一个强大的XML/XHTML/HTML5模板引擎,能够对模板文件应用一组转换来显示数据和/或由应用程序产生的...
1. **快速入门**:介绍如何设置Thymeleaf环境,创建第一个模板,以及如何在Java项目中使用Thymeleaf。 2. **核心概念**:深入解释Thymeleaf的模板语言、表达式语言以及上下文变量。 3. **标准语法**:详细阐述各种...
Thymeleaf是一款强大的模板引擎,常用于Spring Boot应用中,替代JSP作为视图层技术。它允许开发者在HTML中直接写业务逻辑,而无需借助JavaScript或服务器端的表达式语言。本教程将深入浅出地介绍Thymeleaf的基础知识...
本文档以Thymeleaf官方文档为基础,科学系统地、循序渐进地将Thymeleaf的使用方法、技术细节、扩展思路铺展开来,带您走进Thymeleaf的欢乐世界。
**Spring Boot整合Mybatis、Druid、PageHelper、Swagger、AOP、过滤器与拦截器、Thymeleaf基础入门** 在现代Java开发中,Spring Boot以其简洁的配置和强大的功能,成为了主流的微服务框架。这个入门示例将帮助我们...
【标题】: "Spring Boot与Thymeleaf整合详解" 【描述】: "Spring Boot以其简洁的配置和快速开发的特点,已经成为Java开发者的首选框架之一。Thymeleaf则是一种现代的、强大的模板引擎,特别适合前后端分离的Web应用...
通过博客中的入门程序,初学者可以快速理解Thymeleaf的基本用法和它与Spring的集成方式。从创建简单的Thymeleaf模板,到理解如何将模型数据注入到视图,再到使用Thymeleaf的条件、循环等语法,都能逐步掌握Thymeleaf...
通过官方文档全译中文版,本教程提供了关于Thymeleaf的基础知识,包括其目的、可用模板类型、方言的概念以及如何使用Thymeleaf进行Web开发。对于希望提升开发效率和模板维护能力的Java开发者而言,Thymeleaf提供了一...
在本文中,我们将深入探讨如何将SpringBoot、Mybatis和Thymeleaf三大技术栈与Shiro安全框架整合,以实现一个完整的Web应用程序的权限控制和用户管理。首先,我们来了解一下这四个核心技术: 1. **SpringBoot**:...
SpringBoot 是一个由 Pivotal 开发的 Java 框架,它简化了在 Spring 框架上创建独立的、生产级别的基于 Java 的应用...这个入门案例是进一步学习 Thymeleaf 和 SpringBoot 集成的起点,为后续的开发工作奠定了基础。