thymeleaf依存関係
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
コントローラ
package com.zzf.demo.controller;
import com.zzf.demo.model.ZUser;
import com.zzf.demo.service.ZUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import java.util.List;
/*
*
*@author:zzf
*@time:2020-12-01
*
*/
@Controller
@RequestMapping("/zUser")
public class ZUerController {
@Autowired
private ZUserService zUserService;
@RequestMapping("/test")
public String test(Model model){
//查询
List<ZUser> zUsers=zUserService.findAll();
model.addAttribute("users",zUsers);
return "zUser";
}
}
thymeleafテンプレート
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<table>
<tr>
<td>用户名</td>
<td>密码</td>
</tr>
<tr th:each="user:${users}">
<td th:text="${user.name}"></td>
<td th:text="${user.password}"></td>
</tr>
</table>
</body>
</html>
効果
フィルタ
新しいフィルタークラス
package com.zzf.demo.filter;
import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import java.io.IOException;
/*
*
*@author:zzf
*@time:2020-12-01
*
*/
@WebFilter(filterName = "zUserFilter",urlPatterns = "/*")
public class ZUserFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
System.out.println("------------->>>init");
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
System.out.println("------------->>>doFilter");
filterChain.doFilter(servletRequest, servletResponse);
}
@Override
public void destroy() {
System.out.println("------------->>>destory");
}
}
@WebFilterは、クラスをフィルターとして宣言するために使用されます。このアノテーションは、アプリケーションのデプロイ時にコンテナーによって処理されます。コンテナーは、特定の属性構成に従って対応するクラスをフィルターとしてデプロイするため、Webアプリケーションは展開しません。リスナーを使用するときはWeb上にある必要があります。xmlファイルでリスナーの関連する説明情報を構成します。一般的な属性には、フィルターの名前を指定するfilterNameが含まれます。これは、xml構成のfilter-nameタグと同等です。 file、および一連のフィルターのURLマッチングモードを指定するために使用されるurlPatternsと同等のxml構成ファイルのurl-patternには、urlPatternsと同等であり、同時に使用できない値もあります。時間。
エントリークラス
package com.zzf.demo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.ServletComponentScan;
@SpringBootApplication
@ServletComponentScan
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
@ServletComponentScanを使用すると、他のコードを記述せずに、サーブレット、フィルタ、およびリスナーを@ WebServlet、@ WebFilter、および@WebListenerアノテーションを介して直接自動的に登録できます。
リスナー
package com.zzf.demo.listener;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.annotation.WebListener;
/*
*
*@author:zzf
*@time:2020-12-01
*
*/
@WebListener
public class ZUserListener implements ServletContextListener {
@Override
public void contextInitialized(ServletContextEvent sce) {
System.out.println("ServletContext上下文初始化");
}
@Override
public void contextDestroyed(ServletContextEvent sce) {
System.out.println("ServletContext上下文销毁");
}
}
@WebListenerは、クラスをリスナーとして宣言します。アノテーションは、アプリケーションがデプロイされるときにコンテナーによって処理されます。コンテナーは、特定の属性構成に従って対応するクラスをリスナーとしてデプロイするため、Webアプリケーションはリスナーを使用する場合は、web.xmlファイルでリスナーの関連する説明情報を構成します。
ServletContextListenerは、実際にはWebアプリケーションのライフサイクルであるServletContextオブジェクトのライフサイクルを監視します
。Servletコンテナが開始されるか、Webアプリケーションが終了すると、ServletContextEventイベントがトリガーされ、
ServletContextListenerクラスによって処理されます。
contextInitialized、サーブレットコンテナがWebアプリケーションを起動するとき、最初にこのメソッドを呼び出し、次にフィルタを初期化し、アプリケーションの起動時に初期化する必要があるサーブレットを初期化します。
contextDestroyed、このメソッドは、サーブレットコンテナがWebアプリケーションを終了するときに呼び出されます。このメソッドを呼び出す前に、コンテナはすべてのサーブレットおよびフィルタフィルタを破棄します。