攔截器
參考b站狂神視頻
Spring MVC中的攔截器(Interceptor)類似於Servlet中的過濾器(Filter),它主要用於攔截用戶請求並作相應的處理。例如通過攔截器可以進行權限驗證、記錄請求信息的日志、判斷用戶是否登錄等。
攔截器重寫三個方法,詳見參考,其與過濾器的區別參考 https://blog.csdn.net/zxd1435513775/article/details/80556034
為了解決 用戶可以不登陸便可進入主頁,這是不安全的,為了解決這個問題,便可使用攔截器。
一、新建登錄攔截器
LoginHandlerIntercepter.java
package com.example.employee_management.config;
import org.springframework.web.servlet.HandlerInterceptor;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* @className: LoginHandlerIntercepter
* @description: 登錄攔截器
*/
public class LoginHandlerIntercepter implements HandlerInterceptor {
二、在MVC配置類中添加登錄攔截器
MyMvcConfig.java
package com.example.employee_management.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.LocaleResolver;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
/**
* @className: MyMvcConfig
* @description: MVC 控制器 借助注解完成控制器而不用手動編寫
*/
三、修改登錄控制器:添加session來保證攔截器正常運行
LoginController.java
package com.example.employee_management.controller;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import javax.servlet.http.HttpSession;
啟動項目后,在瀏覽器中輸入
localhost:8080/main.html
便會轉入到首頁(index.html),並且提示用戶尚未登錄。 登錄攔截器的功能便已完成。