SpringMVC的拦截器

 拦截器:拦截网页请求,只能拦截发送至Handler类方法的请求。访问网页(html,jsp)不拦截,若想外部无法访问直接放入

                WEB-INF文件夹内
     * 1、创建自定义拦截器类实现HandlerInterceptor接口
     * 2、在springmvc配置文件的<mvc:interceptors>里配置<bean>拦截所有或者<mvc:interceptor>拦截具体哪些方法的请求

	<!-- 配置拦截器: 所有拦截器都包含在mvc:interceptors标签里-->
	<mvc:interceptors>
		<!-- 配置拦截器:会拦截所有请求 -->
		<bean class="crud.Filters.FirstFilter"></bean>
		<!-- 配置具体资源拦截器 -->
		<mvc:interceptor>
			<!-- 拦截的请求 ,path设置为:/@RequestMapping里的value值 -->
			<mvc:mapping path="/emps"/>
			<!-- <mvc:mapping path="/testFilter"/> -->
			<!-- 不拦截的请求 ,path设置为:/@RequestMapping里的value值-->
			<mvc:exclude-mapping path="/testFilter"/>
			<bean class="crud.Filters.SecondFilter"></bean>
		</mvc:interceptor>
	</mvc:interceptors>
	
	<mvc:view-controller path="views/success" view-name="success"/>

 

package crud.Filters;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

public class FirstFilter  implements HandlerInterceptor{

	/**
	 * 该方法在目标方法之前被调用.
	 * 若返回值为 true, 则继续调用后续的拦截器和目标方法. 
	 * 若返回值为 false, 则不会再调用后续的拦截器和目标方法. 
	 * 
	 * 可以考虑做权限. 日志, 事务等. 
	 */
	@Override
	public boolean preHandle(HttpServletRequest request,
			HttpServletResponse response, Object handler) throws Exception {
		System.out.println("第一个拦截器: preHandle");
		return true;
	}

	/**
	 * 调用目标方法之后, 但渲染视图之前. 
	 * 可以对请求域中的属性或视图做出修改. 
	 */
	@Override
	public void postHandle(HttpServletRequest request,
			HttpServletResponse response, Object handler,
			ModelAndView modelAndView) throws Exception {
		System.out.println("第一个拦截器:postHandle");
	}

	/**
	 * 渲染视图之后被调用. 释放资源
	 */
	@Override
	public void afterCompletion(HttpServletRequest request,
			HttpServletResponse response, Object handler, Exception ex)
			throws Exception {
		System.out.println("第一个拦截器:afterCompletion");
	}
}

 

上一篇:缓冲流&内存流


下一篇:聊聊高并发(二十)解析java.util.concurrent各个组件(二) 12个原子变量相关类