最近在写一个web项目的时候遇到session过期导致页面打不开直接报500的错误,那个这时候就需要添加一个拦截器了,点击指定页面的时候回先判断session是否存在,如果不存在回直接跳转到首页.
用传统xml方式添加拦截器网上的教程一大堆,但是使用注解配置的配置文件添加拦截器搜了半天好像也没有,所以在此记录下.
在配置类中加载拦截器.
@Override public void addInterceptors(InterceptorRegistry registry) { //添加拦截的路径 registry.addInterceptor(new SessionInterceptor()).addPathPatterns("/applicationlist-{page}-{vendorid}","/themelist-{page}"); //添加不拦截的路径 // registry.addInterceptor(new SessionInterceptor()).excludePathPatterns(""); };
SessionInterceptor()为我配置的拦截器类.这个类需要实现HandlerInterceptor
package com.vlife.springmvc.Interceptor; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; public class SessionInterceptor implements HandlerInterceptor{ @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { // TODO 自动生成的方法存根 String tvendorid=(String)request.getSession().getAttribute("tvendorid"); String searchValue =(String)request.getSession().getAttribute("searchValue"); if(tvendorid == null && searchValue== null) { request.getRequestDispatcher("/list").forward(request, response); return false; } return true; } @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { // TODO 自动生成的方法存根 } @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { // TODO 自动生成的方法存根 } }
还没有评论,来说两句吧...