Spring Boot拦截器

mac2024-05-13  31

把 拦截器 文件 Interceptor.java 放到 与控制器(controler) 同级目录

需要拦截器 放到 启动类中 , 把登陆 放到拦截器之外

登陆时候 建立 session 名称为 name 的 给其赋值 。

Interceptor.java

package com.example.demo.controller; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; public class Interceptor implements HandlerInterceptor { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response,Object handler) throws Exception{ HttpSession session=request.getSession(); Object ob=session.getAttribute("name"); if (ob!=null) { return true; } session.setAttribute("preurl",request.getRequestURI()); StringBuffer url = request.getRequestURL(); String tempContextUrl = url.delete(url.length() - request.getRequestURI().length(), url.length()).append(request.getServletContext().getContextPath()).append("/").toString(); //拦截后默认跳转后的页面 response.sendRedirect("/demo/login"); return false; } @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,ModelAndView model) throws Exception{ } @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler,Exception ex) throws Exception{ } }

启动类中: 启动类中需要实现WebMvcConfigurer接口

//拦截器 @Override public void addInterceptors(InterceptorRegistry registry){ InterceptorRegistration ir=registry.addInterceptor(new Interceptor()); ir.addPathPatterns("/**"); //这里是放开的文件 拦截器不会拦截 ir.excludePathPatterns("/demo/getImage","/demo/login","/demo/findUname","/js/**","/html/**","/images/**","/css/**"); }

我以前超级喜欢喝可乐,我以为我这一辈子都会很喜欢喝,可是我突然有一天就不喜欢喝了,不喜欢了就是不喜欢了,我没有错,可乐也没有错。

最新回复(0)