第一步:创建拦截器类 实现接口HandlerInterceptor
package com.mth.springmvcinterceptor;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
/**
* @ClassName: MyInterceptor
* @Description: SpringMVC拦截器 每个请求都进行拦截
* @author mth 75100313@qq.com
* @date 2014-1-18 下午09:06:32
*
*/
public class MyInterceptor implements HandlerInterceptor {
/**
* 最终拦截 执行时机:试图已经被解析完毕。页面上如果出错了 捕捉异常信息 主要是监控的作用。
*/
public void afterCompletion(HttpServletRequest arg0,
HttpServletResponse arg1, Object arg2, Exception ex)
throws Exception {
System.out.println("最终拦截");
//打印输出异常信息 可以放到日志记录里面
ex.printStackTrace();
System.out.println("======================================");
}
/**
* 后置拦截 执行时机:controller执行完,视图解析器没有把视图解析成页面, 对视图做统一的修改,通俗点说就是再解析之前修改视图用的
* 每个请求中都加
*/
public void postHandle(HttpServletRequest arg0,
HttpServletResponse response, Object arg2, ModelAndView mv)
throws Exception {
System.out.println("后置拦截");
Map<String, Object> map = mv.getModel();
map.put("test", "后置拦截添加的内容");
}
/**
* 前置拦截 执行时机:在执行controller之前执行 第一层
* true放行可以访问controller;false被拦截,即不能访问controller
*
* 最常用的是对权限的验证
*/
public boolean preHandle(HttpServletRequest arg0, HttpServletResponse arg1,
Object arg2) throws Exception {
System.out.println("前置拦截");
return true;
}
}
第二步:设置springmvc-servlet.xml 增加下面代码
<!--
========================华丽的分割 拦截器==================================
-->
<mvc:interceptors>
<mvc:interceptor>
<!--对某一模块的拦截格式:/模块名/*,对所有请求都拦截 格式:/** -->
<mvc:mapping path="/**" />
<bean class="com.mth.springmvcinterceptor.MyInterceptor"></bean>
</mvc:interceptor>
</mvc:interceptors>