1、目的:拦截器的配置主要是对请求进行相应的处理(在登录和session过时的时候是一个很好的方式)

2、由于Spring容器的优越性,在配置的时候全部交给容器管理是一个很不错的方式

3、配置拦截器:

  1)在对应的方式类中实现HandlerInterceptor接口,会要求实现3个方法

  

@Override	public void afterCompletion(HttpServletRequest arg0, HttpServletResponse arg1,   arg2, Exception arg3)			throws Exception {				// TODO Auto-generated method stub			}	@Override	public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1,   arg2, ModelAndView arg3)			throws Exception {				// TODO Auto-generated method stub			}	public boolean preHandle(HttpServletRequest request, HttpServletResponse response,  obj) throws Exception {				return true;	}

  2)所有的请求都会在拦截器里面经过,这样在做登录拦截的时候会起到数据的保护和相关的展示限权

  在preHandle方法里面加入自己的逻辑

public boolean preHandle(HttpServletRequest request, HttpServletResponse response,  obj) throws Exception {				//获取判定登陆的session是否存在		String token = (String) request.getSession().getAttribute("token");		String postId = (String) request.getSession().getAttribute("postId");		if(token == null || token == ""){			String XRequested =request.getHeader("X-Requested-With");			if(" HttpRequest".equals(XRequested)){				response.getWriter().write("IsAjax");			}else{				response.sendRedirect("/m-web/");			}			return false;		}		if(postId == null || postId == ""){			String XRequested =request.getHeader("X-Requested-With");			if(" HttpRequest".equals(XRequested)){				response.getWriter().write("IsAjax");			}else{				response.sendRedirect("/m-web/");			}			return false;		}		return true;	}

  里面存在ajax请求拦截的处理详情见:http://www.cnblogs.com/ll409546297/p/6203403.html

3、在Spring的配置文件里面加入

<mvc:interceptors>        <mvc:interceptor>            <mvc:mapping path="/**"/>            <mvc:exclude-mapping path="/user/login"/>            <mvc:exclude-mapping path="/user/loginOut"/>            <mvc:exclude-mapping path="/user/setPostId"/>            <mvc:exclude-mapping path="/user/getPostId"/>            <mvc:exclude-mapping path="/resources/**"/>            <mvc:exclude-mapping path="/assets/**"/>            <mvc:exclude-mapping path="/css/**"/>            <mvc:exclude-mapping path="/fonts/**"/>            <mvc:exclude-mapping path="/images/**"/>            <mvc:exclude-mapping path="/img/**"/>            <mvc:exclude-mapping path="/js/**"/>            <mvc:exclude-mapping path="/pic/**"/>            <mvc:exclude-mapping path="/plugins/**"/>            <mvc:exclude-mapping path="/static/**"/>            <mvc:exclude-mapping path="/ui/**"/>            <bean class="com.troy.ai.web.Interceptors.LoginInterceptor"/>        </mvc:interceptor>    </mvc:interceptors>

解释:

<mvc:mapping path="/**"/>  //是对所有路径进行过滤<mvc:exclude-mapping path="/user/login"/>  //是对该路径进行放行<mvc:exclude-mapping path="/ui/**"/>  //是对静态资源加载放行<bean class="com.troy.ai.web.Interceptors.LoginInterceptor"/>  //指定处理拦截的相关类

4、拦截器的配置相对简单,但是在实际的应用过程却非常常见,逻辑处理方面需要根据实际来处理

收藏 打印