版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/DmxExcalibur/article/details/90522415
最近写项目,添加了某个拦截器之后,发现css、js、img等静态资源被拦截:
现象:项目添加登录验证的拦截器之后,清空浏览器缓存数据,再次运行项目,login页面会丢失样式、图片、js等静态资源,如果成功登录,以上静态资源会被浏览器加载并缓存,再次跳转到login.jsp会发现静态资源都已正常。
原因:第一次登录静态资源被拦截,因此样式乱。
解决方案:拦截器中遇到静态资源请求放行:
String requestURI = request.getRequestURI(); //请求参数
示例代码如下:
package com.ssm.interceptor; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; //配置拦截器 public class LoginInterceptor implements HandlerInterceptor{ @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { System.out.println("1.我先执行!"); //response.setContentType("text/html;charset=utf-8"); //统一的响应乱码处理 if (requestURI.indexOf("/img/") != -1 || requestURI.indexOf("/css/") != -1 || requestURI.indexOf("/js/") != -1) { return true;//放行 }else{ response.sendRedirect("/xxx");//要跳转的页面 return false; //拦截 } } @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { System.out.println("2.我第二个执行!"); } @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { System.out.println("3.我最后执行!"); } }
文章来源: https://blog.csdn.net/DmxExcalibur/article/details/90522415