前言

  • 利用了六天的时间,对Tomcat的内容进行了整理。
  • 学习不易、整理也不易,自己坚持的更了下来,很不错。
  • 希望每一位在努力前行的小伙伴,都要相信坚持就会有收获。
  • 本次Tomcat就探寻到这里,明年我还会更加深入的探寻一次,感兴趣的小伙伴可以关注一下。

一、Thymeleaf基本配置


首先如果我们想在Tomcat里用thymeleaf,需要我们进行如下配置:

  • 这里是项目所需要用到的jar包

  • 下面我们进行配置信息
package com.meteor.thymeleaf;

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; //重写init()方法(其是servlet的初始化方法)
@Override
public void init() throws ServletException {
//1. 获取当前Servlet的ServletContext对象
ServletContext servletContext = this.getServletContext();
//2. 创建Thymeleaf解析器对象,其接收:一个ServletContext对象
ServletContextTemplateResolver templateResolver = new ServletContextTemplateResolver(servletContext);
//3. 给解析器对象设置参数
//3.1 设置解析的模板模式, HTML是默认模式,明确设置是为了代码更容易理解
templateResolver.setTemplateMode(TemplateMode.HTML);
//3.2 设置前缀
String viewPrefix = servletContext.getInitParameter("view-prefix");
templateResolver.setPrefix(viewPrefix);
//3.3 设置后缀
String viewSuffix = servletContext.getInitParameter("view-suffix");
templateResolver.setSuffix(viewSuffix);
//3.4 设置缓存过期时间(毫秒)
templateResolver.setCacheTTLMs(60000L);
//3.5 设置是否缓存
templateResolver.setCacheable(false);
//3.6 设置服务器端编码方式
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());
}
}
  • 在web.xml中配种context
<!-- 在web.xml文件中的上下文参数中配置视图前缀和视图后缀的相关属性和值,方便后续servlet读取 -->
<!-- 说明:param-value中设置的前缀、后缀的值不是必须叫这个名字,可以根据实际情况和需求进行修改。
这里示例将用于视图前缀设置为: /WEB-INF/view/, 视图后缀设置为: .html -->
<context-param>
<param-name>view-prefix</param-name>
<param-value>/</param-value>
</context-param>
<context-param>
<param-name>view-suffix</param-name>
<param-value>.html</param-value>
</context-param>
  • 最后我们就可以进入测试环节了
@WebServlet("/index")
public class TestServlet extends ViewBaseServlet{
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
req.setAttribute("msg","传过来的数据~");
//这是你要转到的页面
processTemplate("index",req,resp);
}
}
  • 其实这些配置在我们的官方文档中都有,推荐大家学会跟着官方文档学习。

二、Thymeleaf常用语法

加入<html xmlns:th="http://www.thymeleaf.org">规范

2.1 标准变量表达式

<p th:text="欢迎Thymeleaf">Hello~</p>
<h1 th:text="${msg}">msg会替换这个信息/h1> <!-- 可以将传过来的对象,简写成这样-->
<div th:object="${user}">
<p th:text="*{id}">id</p>
<p th:text="*{name}">name</p>
</div> <!-- 连接表达式-->
<a th:href="@{/stu/student(id=20,name='lx')}"
<img src="" th:src="@{${图片地址}}" alt="">

2.2 each

<div th:each="li:${list}">
<span th:text="${liStat.size}"></span>
<span th:text="${li.id}"></span>
<span th:text="${li.name}"></span>
</div>
        ArrayList<User> list = new ArrayList<>();
list.add(new User(1001,"Meteor"));
list.add(new User(1002,"Meteors"));
list.add(new User(1003,"Meteorss"));
req.setAttribute("list",list);

2.3 if

<div th:if="10 > 0">
显示文本内容
</div>
<div th:unless="10 > 0">
显示文本内容
</div>

2.4 switch

<div th:switch="${sex}">
<p th:case="m">显示男</p>
<p th:case="f">显示女</p>
<p th:case="*">显示未知</p>
</div>

2.5 th:inline

<div th:inline="text">
<p>显示姓名:[[${key}]]</p>
</div> <script type="text/javascript" th:inline="javascript">
alert("获取模板数据" + [[${method}]]);
</script> <p th:text=" '我是' + ${name} + ',喜欢听他的' + ${music}">
显示数据
</p>

2.6 内置对象

  • #request 表示 HttpServletRequest

  • #session 表示 HttpSession对象

  • session 表示 HttpSession对象,是#session简化的一种方式

<p th:text="${#request.getAttribute('user')}"></p>
<p th:text="${#request.getContextPath()}"></p>
<p th:text="${#param.name}"></p>
<p th:text="${#param.size()}"></p>

三、结尾

  • 对于Tomcat的Servlet内容就总结这么多,若想深入学习等待后续更新。
  • 我将会继续更新关于Java方向的学习知识,感兴趣的小伙伴可以关注一下。
  • 文章写得比较走心,用了很长时间,绝对不是copy过来的!
  • 尊重每一位学习知识的人,同时也尊重每一位分享知识的人。
  • 你的点赞与关注,是我努力前行的无限动力。

Tomcat深入浅出——最终章(六)的更多相关文章

  1. Tomcat深入浅出——Servlet(二)

    一.Servlet简介 Servlet类最终开发步骤: 第一步:编写一个Servlet类,直接继承HttpServlet 第二步:重写doGet方法或者doPost方法,重写哪个我说的算! 第三步:将 ...

  2. How Tomcat Works(六)

    本文继续分析HttpProcessor类,该类实现了org.apache.catalina.Lifecycle接口和java.lang.Runnable接口 我们先分析它的构造函数 /** * The ...

  3. Tomcat架构解析(六)-----BIO、NIO、NIO2、APR

    对于应用服务器来说,性能是非常重要的,基本可以说决定着这款应用服务器的未来.通常从软件角度来说,应用服务器性能包括如下几个方面: 1.请求处理的并发程度,当前主流服务器均采用异步的方式处理客户端的请求 ...

  4. Tomcat学习笔记(六)

    Tomcat日志 网上找到一篇分析不错的博文   http://peiquan.blog.51cto.com/7518552/1580189/

  5. Tomcat类载入器机制(Tomcat源代码解析六)

    要说Tomcat的Classloader机制,我们还得从Bootstrap開始.在BootStrap初始化的时候.调用了org.apache.catalina.startup.Bootstrap#in ...

  6. Tomcat深入浅出(一)

    一.Tomcat简介 我们下载好Tomcat后需要配置一下Java环境:如果打开出现闪退得情况,首先是jdk 同时配置JRE_HOME Tomcat的一些关键目录: /bin:存放用于启动及关闭的文件 ...

  7. Tomcat深入浅出——Servlet(三)

    零.HttpServletRequest 上一篇已经介绍了这个接口,现在补充些内容 首先介绍一下作用域: jakarta.servlet.jsp.PageContext pageContext 页面作 ...

  8. Tomcat深入浅出——Session与Cookie(四)

    一.Cookie 1.1 Cookie概念 Cookie:有时也用其复数形式 Cookies.类型为"小型文本文件",是某些网站为了辨别用户身份,进行Session跟踪而储存在用户 ...

  9. Tomcat深入浅出——Filter与Listener(五)

    一.Filter过滤器 1.1 Filter过滤器的使用 这是过滤器接口的方法 public interface Filter { default void init(FilterConfig fil ...

随机推荐

  1. 02稀疏数组(java版本)

    1 package com.aixuexi.contact; 2 3 public class SpareArray { 4 public static void main(String[] args ...

  2. 一文读懂原子操作、内存屏障、锁(偏向锁、轻量级锁、重量级锁、自旋锁)、Disruptor、Go Context之上半部分

    我不想卷,我是被逼的 在做了几年前端之后,发现互联网行情比想象的差,不如赶紧学点后端知识,被裁之后也可接个私活不至于饿死.学习两周Go,如盲人摸象般不知重点,那么重点谁知道呢?肯定是使用Go的后端工程 ...

  3. SQL安装

    安装教程 点击传送 遇到的问题 解决方案1:

  4. ChCore Lab1 机器启动 实验笔记

    本文为上海交大 ipads 研究所陈海波老师等人所著的<现代操作系统:原理与实现>的课程实验(LAB)的学习笔记的第一篇. 书籍官网:现代操作系统:原理与实现,里面有实验的参考指南和代码仓 ...

  5. JDBC:加载数据库驱动、连接数据库(详细讲解)

    加载数据库驱动: 1)由于Java是一个纯面向对象语言,任何事物在其中都必须抽象成类或者类对象,数据库也不例外,JDBC同样也把数据库抽象成面向对象的结构: 2)JDBC将整个数据库驱动器在底层抽象成 ...

  6. Java学习笔记-基础语法Ⅶ-集合

    集合 集合类特点:提供一种存储空间可变的存储模型,存储的数据容量可以随时发生改变 这里需要回顾一下,因为数组和字符串一旦创建,就不可改变,需要区分一下 import java.util.ArrayLi ...

  7. kNN-预测

    现在进行第五步,对数据进行预测 那么要做的的是从数据集里面拿出一部分作为要预测的,剩下的去比较,书上使用的是10% # 对之前做好的kNN算法进行预测 # 首先获取之前构造好的kNN分类器.数据.规则 ...

  8. TinyMCE简介

    TinyMCE是一款开源.易用.UI时新的富文本编辑器. 插件丰富,自带插件基本满足要求 可扩展性强,可自定义功能 界面好看,符合现代审美 提供经典.内联.沉浸无干扰三种模式 官网:https://w ...

  9. k8s docker 中部署think php 并搭建php websocket

    不得不说php 对云原生有点不够友好,之前用java .net打包docker镜像 一下就ok了,php倒腾了好久才算部署成功. 场景:使用阿里云ack(k8s) 部署采用thinkPHP框架的php ...

  10. 【leetcode】42. 接雨水

    目录 题目 题解 题目 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水. 示例 1: 输入:height = [0,1,0,2,1,0,1,3,2,1 ...