当前位置: 首页 > news >正文

servlet +thymeleaf渲染引擎

servlet +thymeleaf渲染引擎

一、maven坐标

<dependency><groupId>org.thymeleaf</groupId><artifactId>thymeleaf</artifactId><version>3.0.12.RELEASE</version> <!-- 使用适当的Thymeleaf版本 -->
</dependency>
<dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>4.0.1</version> <!-- 使用适当的Servlet API版本 --><scope>provided</scope>
</dependency>

二、web.xml配置

<!DOCTYPE web-app PUBLIC"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN""http://java.sun.com/dtd/web-app_2_3.dtd" ><web-app><display-name>Archetype Created Web Application</display-name><!-- 在servletContext中配置上下文参数 --><context-param><param-name>view-prefix</param-name><param-value>/WEB-INF/templates/</param-value></context-param><context-param><param-name>view-suffix</param-name><param-value>.html</param-value></context-param></web-app>

二、BaseServlet

import org.thymeleaf.TemplateEngine;
import org.thymeleaf.context.WebContext;
import org.thymeleaf.templatemode.TemplateMode;
import org.thymeleaf.templateresolver.ServletContextTemplateResolver;import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;public class ViewBaseServlet extends HttpServlet {private TemplateEngine templateEngine;@Overridepublic void init() throws ServletException {// 1.获取ServletContext对象ServletContext servletContext = this.getServletContext();// 2.创建Thymeleaf解析器对象ServletContextTemplateResolver templateResolver = new ServletContextTemplateResolver(servletContext);// 3.给解析器对象设置参数// ①HTML是默认模式,明确设置是为了代码更容易理解templateResolver.setTemplateMode(TemplateMode.HTML);// ②设置前缀String viewPrefix = servletContext.getInitParameter("view-prefix");templateResolver.setPrefix(viewPrefix);// ③设置后缀String viewSuffix = servletContext.getInitParameter("view-suffix");templateResolver.setSuffix(viewSuffix);// ④设置缓存过期时间(毫秒)templateResolver.setCacheTTLMs(60000L);// ⑤设置是否缓存templateResolver.setCacheable(true);// ⑥设置服务器端编码方式templateResolver.setCharacterEncoding("utf-8");// 4.创建模板引擎对象templateEngine = new TemplateEngine();// 5.给模板引擎对象设置模板解析器templateEngine.setTemplateResolver(templateResolver);}protected void processTemplate(String templateName, HttpServletRequest req, HttpServletResponse resp) throws IOException {// 1.设置响应体内容类型和字符集resp.setContentType("text/html;charset=UTF-8");// 2.创建WebContext对象WebContext webContext = new WebContext(req, resp, getServletContext());// 3.处理模板数据templateEngine.process(templateName, webContext, resp.getWriter());}
}

四、demoServlet

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;@WebServlet("/testservelt")
public class testservlet  extends  ViewBaseServlet{@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doGet(req,resp);}@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException, IOException {HttpSession httpSession= req.getSession();List list=new ArrayList();list.add("战神");list.add("艾尔登法环");list.add("卧龙苍天陨落");list.add("霍格沃茨:遗产");httpSession.setAttribute("list",list);super.processTemplate("testservlet",req,resp);}
}

五、html页面

<!DOCTYPE html>
<!--在页面上外部导入thymeleaf-->
<html xmlns:th="http://www.thymeleaf.org">
<head><meta charset="UTF-8"><title>Title</title><style>table {border-collapse: collapse;}table, td, th {border: 1px solid black;}#gameid {margin: 12px auto;collapse: 1px;}td {text-align: center;width: 160px;}</style>
</head>
<body>
<table id="gameid"><tr><th class="w20">游戏名</th><th>操作</th></tr><tr th:if="${#lists.isEmpty(session.list)}"><td colspan="4">对不起,库存为空!</td></tr><tr th:unless="${#lists.isEmpty(session.list)}" th:each="gamename : ${session.list}"><td><a th:text="${gamename}" href="#">默认没有如果不是通过服务器启动,就显示这个文本</a></td><td><a th:text="购买" href="#">默认没有如果不是通过服务器启动,就显示这个文本</a></td></tr>
</table>
</body>
</html>

引用地址:

https://blog.csdn.net/u011863822/article/details/129747818?ops_request_misc=&request_id=&biz_id=102&utm_term=javaweb%E9%A1%B9%E7%9B%AE%E4%BD%BF%E7%94%A8thymleaf&utm_medium=distribute.pc_search_result.none-task-blog-2allsobaiduweb~default-0-129747818.142v96pc_search_result_base9&spm=1018.2226.3001.4187

http://www.lryc.cn/news/265703.html

相关文章:

  • 10分钟了解nextTick,并实现简易版本的nextTick
  • oracle表空间对象迁移到其他表空间
  • <stdlib.h>头文件: C 语言常用标准库函数详解
  • Qt前端技术:3.QSS字体样式
  • 阿里面试官:面试了一个能力相当不错的候选人,但背调时,他前同事和领导都说他人品很差,纠结该不该要他?...
  • 如何设计树形结构
  • 限量25台,川崎亮相Ninja ZX-10RR冬季限量款
  • 【QT八股文】系列之篇章1 | QT的基础知识及事件/机制
  • SpringBoot 3 集成Hive 3
  • STL中优先队列的模拟实现与仿函数的介绍
  • LeetCode刷题--- 目标和
  • 【.NET Core】反射(Reflection)详解(二)
  • 【错误记录/js】保存octet-stream为文件后数据错乱
  • sql_lab之sqli中的post注入
  • 智能优化算法应用:基于白冠鸡算法3D无线传感器网络(WSN)覆盖优化 - 附代码
  • DETR++: Taming Your Multi-Scale Detection Transformer论文解读
  • 高级数据结构 <二叉搜索树>
  • 蚂蚁集团5大开源项目获开放原子 “2023快速成长开源项目”
  • SpringBoot+JaywayJsonPath实现Json数据的DSL(按照指定节点表达式解析json获取指定数据)
  • 气压计LPS28DFW开发(2)----水压检测
  • 设计模式之-装饰模式,快速掌握装饰模式,通俗易懂的讲解装饰模式以及它的使用场景
  • 计算机网络个人小结
  • 酒店网站搭建的作用是什么
  • 俄罗斯联邦税务局遭乌克兰入侵,数据库和副本被清空,政府数据安全不容忽视
  • WPF组合控件TreeView+DataGrid之TreeView封装
  • redisson 哨兵模式配置
  • 免费的ChatGPT分享
  • C语言—每日选择题—Day54
  • 先进制造身份治理现状洞察:从手动运维迈向自动化身份治理时代
  • 【密码学引论】密码协议