Java SpringBoot攔截器詳解
1. 攔截器
在 Spring Boot 可以可以在以下情況執(zhí)行操作:
在將請求發(fā)送到控制器之前在將響應發(fā)送給客戶端之前
2. 攔截器使用
下面實現(xiàn)一簡單的登錄驗證功能。
2.1 準備工作
Step1:在前端頁面添加thymeleaf支持;
<html lang="en" xmlns:th="http://www.thymeleaf.org">
Step2:主要的HTML內容如下:
<form method="post" th:action="@{/SignUp}">
<input class="input_Email" type="email" name="email">
<input class="input" type="password" maxlength="20px" name="password">
<button type="submit">登錄</button>
</form>
注意:th:action="@{/SignUp}" 中的 URL 的 Controller 中定義。
Step3:Config 中添加視圖控制器,實現(xiàn) WebMvcConfigurer 接口中的 addViewControllers 方法;
@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController("/").setViewName("/SignUp");
registry.addViewController("/SignUp.html").setViewName("/SignUp");
registry.addViewController("/SuccessPage.html").setViewName("/SuccessPage");
}
2.2 Controller
實現(xiàn)登錄的功能最主要的是Controller。在Controller中,為了簡單方便,我們不走數(shù)據庫,直接利用 equal 方法來比較參數(shù)。
@Controller
public class SignUpController {
@RequestMapping("/SignUp")
public String SignUp(@RequestParam("email") String email,
@RequestParam("password") String password,
Model model,
HttpSession session) {
if (email.equals("123@qq.com") && password.equals("123456")) {
session.setAttribute("email",email);
return "SuccessPage";
}else {
model.addAttribute("msg", "郵箱或密碼錯誤");
return "SignUp";
}
}
}
在前端頁面插入該 id 為 msg 的輸出信息。
<div style="color: red" th:text="${msg}"></div>
2.3 Interceptor
過濾器的實現(xiàn)如下:
public class SignUpInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
if(request.getSession().getAttribute("email") == null){
request.setAttribute("msg", "你沒有權限進入,請登錄");
request.getRequestDispatcher("SignUp.html").forward(request,response);
return false;
}else {
return true;
}
}
}
2.4 Config
Config 類實現(xiàn)了 WebMvcConfigurer 接口,添加攔截器需要實現(xiàn)其中 addInterceptors 方法。
addPathPatterns:指在和何處添加攔截器,/** 表示該路徑下的所有文件及子目錄的所有文件;excludePathPatterns:表示需要排除攔截器的url
@Configuration
public class Boot_Config implements WebMvcConfigurer {
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new SignUpInterceptor()).addPathPatterns("/**").
excludePathPatterns("/","/SignUp","/SignUp.html");
}
}
2.5 測試
2.5.1 正常登錄

2.5.2 非正常登錄

2.5.3 攔截器

3. 總結
Spring Boot 是實現(xiàn)的攔截器與 Spring MVC 是一直的,只不過需要在 Config 中實現(xiàn)了 addInterceptors 方法。
文章中用到的頁面放在了下面:
鏈接: https://pan.baidu.com/s/1jmc7Eq0uQCi2QTy2Q7zLdw提取碼: ufjw
input標簽實現(xiàn)了簡單的驗證功能,頁面預覽:

本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關注腳本之家的更懂欸組長
相關文章
Java實現(xiàn)Word/Excel/TXT轉PDF的方法
這篇文章主要介紹了Java實現(xiàn)Word/Excel/TXT轉PDF的方法,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下2020-01-01
Spring?Boot將@RestController誤用于視圖跳轉問題解決
這篇文章主要為大家介紹了Spring?Boot將@RestController誤用于視圖跳轉問題解決方案詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-06-06
完美解決Eclipse導入的項目上有個紅叉,但不影響項目運行的問題
這篇文章主要介紹了完美解決Eclipse導入的項目上有個紅叉,但不影響項目運行的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-01-01
Java數(shù)據結構之堆(優(yōu)先隊列)的實現(xiàn)
堆(優(yōu)先隊列)是一種典型的數(shù)據結構,其形狀是一棵完全二叉樹,一般用于求解topk問題。本文將利用Java語言實現(xiàn)堆,感興趣的可以學習一下2022-05-05
SpringBoot如何通過配置文件(yml,properties)限制文件上傳大小
這篇文章主要介紹了SpringBoot如何通過配置文件(yml,properties)限制文件上傳大小,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-03-03
SpringBoot+MybatisPlus+Mysql+JSP實戰(zhàn)
這篇文章主要介紹了SpringBoot+MybatisPlus+Mysql+JSP實戰(zhàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-12-12

