Java SpringBoot攔截器詳解
1. 攔截器
在 Spring Boot 可以可以在以下情況執(zhí)行操作:
在將請(qǐng)求發(fā)送到控制器之前在將響應(yīng)發(fā)送給客戶端之前
2. 攔截器使用
下面實(shí)現(xiàn)一簡單的登錄驗(yàn)證功能。
2.1 準(zhǔn)備工作
Step1:在前端頁面添加thymeleaf支持;
<html lang="en" xmlns:th="http://www.thymeleaf.org">
Step2:主要的HTML內(nèi)容如下:
<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 中添加視圖控制器,實(shí)現(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
實(shí)現(xiàn)登錄的功能最主要的是Controller。在Controller中,為了簡單方便,我們不走數(shù)據(jù)庫,直接利用 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", "郵箱或密碼錯(cuò)誤");
return "SignUp";
}
}
}
在前端頁面插入該 id 為 msg 的輸出信息。
<div style="color: red" th:text="${msg}"></div>
2.3 Interceptor
過濾器的實(shí)現(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", "你沒有權(quán)限進(jìn)入,請(qǐng)登錄");
request.getRequestDispatcher("SignUp.html").forward(request,response);
return false;
}else {
return true;
}
}
}
2.4 Config
Config 類實(shí)現(xiàn)了 WebMvcConfigurer 接口,添加攔截器需要實(shí)現(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. 總結(jié)
Spring Boot 是實(shí)現(xiàn)的攔截器與 Spring MVC 是一直的,只不過需要在 Config 中實(shí)現(xiàn)了 addInterceptors 方法。
文章中用到的頁面放在了下面:
鏈接: https://pan.baidu.com/s/1jmc7Eq0uQCi2QTy2Q7zLdw提取碼: ufjw
input標(biāo)簽實(shí)現(xiàn)了簡單的驗(yàn)證功能,頁面預(yù)覽:

本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更懂欸組長
相關(guān)文章
Java實(shí)現(xiàn)Word/Excel/TXT轉(zhuǎn)PDF的方法
這篇文章主要介紹了Java實(shí)現(xiàn)Word/Excel/TXT轉(zhuǎn)PDF的方法,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-01-01
Spring?Boot將@RestController誤用于視圖跳轉(zhuǎn)問題解決
這篇文章主要為大家介紹了Spring?Boot將@RestController誤用于視圖跳轉(zhuǎn)問題解決方案詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-06-06
SpringBoot?全局線程池配置及應(yīng)用小結(jié)
為了提高應(yīng)用程序的性能和響應(yīng)速度,線程池是一個(gè)非常重要的工具,本文主要介紹了Spring?Boot?全局線程池配置及應(yīng)用,具有一定的參考價(jià)值,感興趣的可以了解一下2024-05-05
完美解決Eclipse導(dǎo)入的項(xiàng)目上有個(gè)紅叉,但不影響項(xiàng)目運(yùn)行的問題
這篇文章主要介紹了完美解決Eclipse導(dǎo)入的項(xiàng)目上有個(gè)紅叉,但不影響項(xiàng)目運(yùn)行的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2021-01-01
Java數(shù)據(jù)結(jié)構(gòu)之堆(優(yōu)先隊(duì)列)的實(shí)現(xiàn)
堆(優(yōu)先隊(duì)列)是一種典型的數(shù)據(jù)結(jié)構(gòu),其形狀是一棵完全二叉樹,一般用于求解topk問題。本文將利用Java語言實(shí)現(xiàn)堆,感興趣的可以學(xué)習(xí)一下2022-05-05
java解決單緩沖生產(chǎn)者消費(fèi)者問題示例
這篇文章主要介紹了java解單緩沖生產(chǎn)者消費(fèi)者問題示例,需要的朋友可以參考下2014-04-04
深入理解java異常處理機(jī)制的原理和開發(fā)應(yīng)用
Java異常處理機(jī)制在日常開發(fā)中應(yīng)用頻繁,本篇文章主要在基礎(chǔ)的使用方法上,更進(jìn)一步的,如何更加合理的使用異常機(jī)制,希望可以對(duì)各位朋友能有所幫助。2017-04-04
SpringBoot如何通過配置文件(yml,properties)限制文件上傳大小
這篇文章主要介紹了SpringBoot如何通過配置文件(yml,properties)限制文件上傳大小,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-03-03
SpringBoot+MybatisPlus+Mysql+JSP實(shí)戰(zhàn)
這篇文章主要介紹了SpringBoot+MybatisPlus+Mysql+JSP實(shí)戰(zhàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12

