Spring Booot 添加拦截器

mac2025-05-18  28

拦截器的作用:

Interceptor1类, 将他放在和启动器同级

package com.example.demo; 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 Interceptor1 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(tempContextUrl); 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 Interceptor1()); ir.addPathPatterns("/**"); ir.excludePathPatterns("/template/login","/user/findByName","/user/getImage","/js/**","/html/**","/images/**","/css/**");//这里面是放开的方法,即可直接访问的方法 }
最新回复(0)