第一种拦截器 implements HandlerInterceptor
标题首先定义一个类
package com.shsxt.springmvc.interceptor;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* 拦截器实现
* 实现HandlerInterceptor接口
*
*/
public class MyInterceptor implements HandlerInterceptor {
/**
* 拦截器实现
*在目标方法(Handler)执行前 执行
*/
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
System.out.println("MyInterceptor01拦截器 preHandle--->在目标方法(Handler)执行前 执行 ");
/**
* 如果返回true',则表示执行目标方法
* 如果返回false 则阻止目标方法执行
*/
return true;
}
/**
* 在目标方法执行后,视图生成前执行
* @param request
* @param response
* @param handler
* @param modelAndView
* @throws Exception
*/
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
System.out.println("MyInterceptor01拦截器 preHandle--->在目标方法(Handler)执行后,试图生成前执行 ");
}
/**
* 在目标方法执行后,视图生成后执行
* @param request
* @param response
* @param handler
* @param ex
* @throws Exception
*/
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
System.out.println("MyInterceptor01拦截器 preHandle--->在目标方法(Handler)执行后,试图生成后执行 ");
}
}
在spring mvc配置文件中添加
<!-- 设置拦截器:方式二 (推荐使用) -->
<mvc:interceptors>
<!-- 设置具体的拦截器 -->
<mvc:interceptor>
<!-- 设置需要被拦截的资源。可使用通配符。可设置多个。 -->
<mvc:mapping path="/**"/> <!-- 拦截所有的请求 -->
<!-- 设置不需要拦截的资源。可使用通配符。可设置多个 -->
<mvc:exclude-mapping path="/url/*"/> <!-- 表示url路径下的资源不被拦截 -->
<mvc:exclude-mapping path="/hello"/>
<!-- 设置拦截器的类路径 -->
<bean class="com.shsxt.springmvc.interceptor.MyInterceptor"/>
</mvc:interceptor>
</mvc:interceptors>
第二种拦截器
此种方法 可以只生成preHandler 另外两个不生成
package com.shsxt.springmvc.interceptor;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* 拦截器实现
* 继承HandlerInterceptorAdapter 适配器
*/
public class MyInterceptor02 extends HandlerInterceptorAdapter {
/**
* 在目标方法执行前执行
*/
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
System.out.println("MyInterceptor02 preHandle拦截器 ------>在目标方法执行前执行");
return true;
}
/**
* 在目标方法执行后,视图生成前执行
* @param request
* @param response
* @param handler
* @param modelAndView
* @throws Exception
*/
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
System.out.println("MyInterceptor02拦截器 preHandle--->在目标方法(Handler)执行后,试图生成前执行 ");
}
/**
* 在目标方法执行后,视图生成后执行
* @param request
* @param response
* @param handler
* @param ex
* @throws Exception
*/
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
System.out.println("MyInterceptor02拦截器 preHandle--->在目标方法(Handler)执行后,试图生成后执行 ");
}
}