前言
- 利用了六天的時間,對Tomcat的內容進行了整理?。
- 學習不易、整理也不易,自己堅持的更了下來,很不錯?。
- 希望每一位在努力前行的小夥伴,都要相信堅持就會有收穫?。
- 本次Tomcat就探尋到這裡,明年我還會更加深入的探尋一次,感興趣的小夥伴可以關注一下?。
一、Thymeleaf基本配置
- 眾所周知Thymeleaf是SpringBoot官方推薦的模板引擎,那麼為什麼要放在Tomcat這裡呢,因為JSP有點老~
- 至於是否還需要學習jsp,我也不清楚,反正我是學了,但是今天帶給大家Thymeleaf知識小結。
- 附上官網文件連結https://www.thymeleaf.org/doc/tutorials/3.0/usingthymeleaf.html#what-is-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過來的!
- 尊重每一位學習知識的人,同時也尊重每一位分享知識的人。
- ?你的點贊與關注,是我努力前行的無限動力。?