`
cyhcheng
  • 浏览: 60017 次
  • 性别: 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周左右的时间好好看看。感觉上非常棒。

相关推荐

    SpringBoot + SpringSecurity + Thymeleaf 入门案例的源代码

    SpringBoot + SpringSecurity + Thymeleaf 入门案例,适合快速整合权限管理框架的同学,可以快速进行修改源代码实现权限控制的效果。代码是入门案例,较为简单。能够使整合更加迅速。其中搭配了前端页面进行效果显示...

    springboot+Thymeleaf入门项目,整合了ssm,验证码.zip

    基于SSM开发的系统项目 课程设计 毕业设计参考 含项目源码+说明基于SSM开发的系统项目 课程设计 毕业设计参考 含项目源码+说明基于SSM开发的系统项目 课程设计 毕业设计参考 含项目源码+说明基于SSM开发的系统项目 ...

    springboot+Thymeleaf入门项目,整合了ssm,mybatis-generator,适合初学者学习.zip

    资源简介:SSM Java 项目集合 一、概述 在这个平台上,我们为大家带来了一系列的 JavaSSM(Spring + SpringMVC + MyBatis)项目。这些项目旨在展示SSM框架在实际应用中的魅力,同时也为开发者提供了一个快速学习和...

    thymeleaf语法入门.md

    thymeleaf语法入门,有兴趣的可以看一看

    SpringBoot整合Thymeleaf.docx

    1. **创建Thymeleaf入门项目** - 使用Maven作为构建工具,首先需要创建一个新的Maven项目。 - 在`pom.xml`文件中添加Thymeleaf的依赖。通过以下代码段可以引入SpringBoot提供的`spring-boot-starter-thymeleaf`...

    thymeleaf语法入门.pdf

    "Thymeleaf语法入门" Thymeleaf是现代服务器端Java模板引擎,主要目标是为开发工作流程带来优雅的自然模板 - HTML。Thymeleaf可以在直接浏览器中正确显示,并且可以作为静态原型,从而在开发团队中实现更强大的协作...

    springBoot+mybatisplus+thymeleaf框架入门web系统

    《SpringBoot+MybatisPlus+Thymeleaf框架入门Web系统详解》 SpringBoot、MybatisPlus和Thymeleaf是现代Java开发中常见的三大框架,它们各自在Web开发的不同领域发挥着重要作用。SpringBoot简化了Spring应用的初始...

    spring boot thymeleaf

    **Spring Boot Thymeleaf 入门级Demo详解** 在现代Web开发中,Spring Boot以其简洁的配置和强大的功能成为了Java开发者首选的框架之一。Thymeleaf则是一款优秀的服务器端模板引擎,它使得HTML页面可以直接在浏览器...

    using thymeleaf

    ### 使用Thymeleaf入门详解 #### 一、Thymeleaf简介 ##### 1.1 什么是Thymeleaf? Thymeleaf是一款Java库,它是一个强大的XML/XHTML/HTML5模板引擎,能够对模板文件应用一组转换来显示数据和/或由应用程序产生的...

    Thymeleaf中文参考手册_3.0.5版_thymeleaf_thymeleaf中文网_thymeleaf文档_thmele

    1. **快速入门**:介绍如何设置Thymeleaf环境,创建第一个模板,以及如何在Java项目中使用Thymeleaf。 2. **核心概念**:深入解释Thymeleaf的模板语言、表达式语言以及上下文变量。 3. **标准语法**:详细阐述各种...

    Thymeleaf案例入门和基本语法讲解

    Thymeleaf是一款强大的模板引擎,常用于Spring Boot应用中,替代JSP作为视图层技术。它允许开发者在HTML中直接写业务逻辑,而无需借助JavaScript或服务器端的表达式语言。本教程将深入浅出地介绍Thymeleaf的基础知识...

    thymeleaf语法入门

    本文档以Thymeleaf官方文档为基础,科学系统地、循序渐进地将Thymeleaf的使用方法、技术细节、扩展思路铺展开来,带您走进Thymeleaf的欢乐世界。

    Spring Boot 整合Mybatis、Druid、PageHelper、Swagger 、AOP、过滤器、拦截器、thymeleaf 基础入门demo

    **Spring Boot整合Mybatis、Druid、PageHelper、Swagger、AOP、过滤器与拦截器、Thymeleaf基础入门** 在现代Java开发中,Spring Boot以其简洁的配置和强大的功能,成为了主流的微服务框架。这个入门示例将帮助我们...

    总体 总体 总体 总体 总体 总体

    【标题】: "Spring Boot与Thymeleaf整合详解" 【描述】: "Spring Boot以其简洁的配置和快速开发的特点,已经成为Java开发者的首选框架之一。Thymeleaf则是一种现代的、强大的模板引擎,特别适合前后端分离的Web应用...

    thymeleaf整合spring所需包

    通过博客中的入门程序,初学者可以快速理解Thymeleaf的基本用法和它与Spring的集成方式。从创建简单的Thymeleaf模板,到理解如何将模型数据注入到视图,再到使用Thymeleaf的条件、循环等语法,都能逐步掌握Thymeleaf...

    Thymeleaf 中文教程

    通过官方文档全译中文版,本教程提供了关于Thymeleaf的基础知识,包括其目的、可用模板类型、方言的概念以及如何使用Thymeleaf进行Web开发。对于希望提升开发效率和模板维护能力的Java开发者而言,Thymeleaf提供了一...

    SpringBoot+Mybatis+Thymeleaf整合Shiro入门

    在本文中,我们将深入探讨如何将SpringBoot、Mybatis和Thymeleaf三大技术栈与Shiro安全框架整合,以实现一个完整的Web应用程序的权限控制和用户管理。首先,我们来了解一下这四个核心技术: 1. **SpringBoot**:...

    springboot-thymeleaf.zip

    SpringBoot 是一个由 Pivotal 开发的 Java 框架,它简化了在 Spring 框架上创建独立的、生产级别的基于 Java 的应用...这个入门案例是进一步学习 Thymeleaf 和 SpringBoot 集成的起点,为后续的开发工作奠定了基础。

Global site tag (gtag.js) - Google Analytics