1、创建 拦截器(interceptor)
package com.example.demo.config;
import com.example.demo.interceptor.MyHandlerInterptor;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
/**
* Created by Intellij IDEA.
*
* @author
* User: 33754
* Date: 2021/1/23
*/
@Configuration
public class AdminWebConfig implements WebMvcConfigurer {
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new MyHandlerInterptor())
//所有请求都拦截
.addPathPatterns("/**")
//放行的请求, 放行的静态资源
.excludePathPatterns("/","/login","/css/*.css","/fonts/*","/images/*","/js/*");
}
}
2、创建 拦截器执行的 class
1 package com.example.demo.interceptor; 2 3 import com.example.demo.tuil.Optional; 4 import lombok.extern.log4j.Log4j; 5 import lombok.extern.log4j.Log4j2; 6 import lombok.extern.slf4j.Slf4j; 7 import org.springframework.web.servlet.HandlerInterceptor; 8 import org.springframework.web.servlet.ModelAndView; 9 10 import javax.servlet.http.HttpServletRequest; 11 import javax.servlet.http.HttpServletResponse; 12 import javax.servlet.http.HttpSession; 13 14 /** 15 * Created by Intellij IDEA. 16 *登录检查 17 * @author18 * User: 33754 19 * Date: 2021/1/23 20 */ 21 @Slf4j 22 public class MyHandlerInterptor implements HandlerInterceptor { 23 24 /** 25 * 前处理器 26 * @param request 请求 27 * @param response 返回 28 * @param handler 处理器 29 * @return 返回 30 * @throws Exception 异常 31 */ 32 @Override 33 public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { 34 StringBuffer requestUrl = request.getRequestURL(); 35 log.info("拦截的路径我是 "+requestUrl); 36 37 //检查是否登录 38 HttpSession session = request.getSession(); 39 Object user = session.getAttribute("user"); 40 //调用 optional(判断非null... )类 41 Optional<Object> objectOptional = Optional.ofNullable(user); 42 if (objectOptional.isPresent()) { 43 return true; 44 } 45 session.setAttribute("msg","请先登录"); 46 response.sendRedirect("/"); 47 return false; 48 } 49 /** 50 * 后处理器 51 * @param request 请求 52 * @param response 返回 53 * @param handler 处理器 54 * @param modelAndView 参数 视图 55 * @throws Exception 异常 56 */ 57 @Override 58 public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { 59 System.out.println("postHandle modelandview"+ modelAndView); 60 } 61 /** 62 * 页面加载完之前 63 * @param request 请求 64 * @param response 返回 65 * @param handler 处理器 66 * @param ex 异常 67 * @throws Exception 异常 68 */ 69 @Override 70 public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { 71 System.out.println("after ex 异常"+ ex); 72 } 73 74 }
原文:https://www.cnblogs.com/nowthefuture/p/14320675.html