[JAVA EE] 拦截器
生活随笔
收集整理的這篇文章主要介紹了
[JAVA EE] 拦截器
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
攔截器
? 攔截器(Interceptor)主要用于攔截用戶請求并作相應的處理。
? 基于Java的反射機制,屬于面向切面編程(AOP)的一種運用。
? 應用場景:驗證用戶登錄狀態、權限驗證、記錄系統日志、通用處理等。
攔截器類基本代碼框架
public class MyInterceptor implements HandlerInterceptor {
//在處理請求之前被調用。可以進行權限校驗、安全控制等處理;
boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
throws Exception;
// 設置攔截的業務的條件
// return true; 放行(滿足條件時放行,繼續業務處理)
// return false; 攔截(不滿足條件時,跳轉到其他處理)
}
攔截器示例的目錄結構
- MyInterceptor.java
- 加載的是 org.slf4j.Logger 包
- Logger 類相關的包比較多,注意別加載錯了
package com.example.demo.Interceptor;import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.servlet.HandlerInterceptor;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.text.SimpleDateFormat;
import java.util.Date;public class MyInterceptor implements HandlerInterceptor {//聲明日志對象private final Logger log = LoggerFactory.getLogger(this.getClass());@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {String ip=request.getRemoteAddr(); //獲得客戶端 ip 地址String path=request.getServletPath(); //獲得客戶端Servlet請求路徑SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");Date d = new Date(); //獲得當前系統日期時間String ds = sdf.format(d); //格式化date對象log.info("時間"+ds+":"+ip+"訪問了"+path); // 日志輸出return true; // 放行(關鍵點)}
}
- MyWebConfig.java
package com.example.demo.config;import com.example.demo.Interceptor.MyInterceptor;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;@Configuration // 表明是一個配置類 不要掉了!
public class MyWebConfig implements WebMvcConfigurer {@Overridepublic void addInterceptors(InterceptorRegistry registry) { //加載攔截器registry.addInterceptor( new MyInterceptor() ) //加載自定義的攔截器.addPathPatterns("/**") //攔截請求的路徑 /** 表示所有請求.excludePathPatterns("/","/css/*","/images/*","/js/*"); //不攔截的請求,如首頁、靜態資源等}
}
運行結果:
IDEA控制臺輸出
- 注意要把上一篇Filter里設置的黑名單注釋掉~~
總結
以上是生活随笔為你收集整理的[JAVA EE] 拦截器的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [JAVA EE] Filter过滤器
- 下一篇: 丝巾和桑蚕丝的区别是什么?