拦截器:拦截前端页面发送的请求。在拦截请求之前,之后,请求执行完之后可进行操作。并且拦截器是一个接口,需要用一个类来实现该接口。
创建拦截器步骤:
- 创建一个组件(类),用于实现拦截器接口:
public class MyFirstInterceptor implements HandlerInterceptor{
@Override
public void afterCompletion(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, Exception arg3)
throws Exception {
System.out.println("MyFirstInterceptor...afterCompletion");
}
@Override
public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, ModelAndView arg3)
throws Exception {
System.out.println("MyFirstInterceptor...postHandle");
}
@Override
public boolean preHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2) throws Exception {
System.out.println("MyFirstInterceptor...preHandle");
return true;
}
}
说明:preHandle
:在拦截前端请求之前可执行的方法。postHandle
:在拦截前端请求之后可执行的方法。afterCompletion
:在执行完前端整个请求方法后拦截器要执行的方法。
- 在容器配置文件中配置拦截器组件(共有如下两种方法):
<!-- 测试拦截器 -->
<mvc:interceptors>
<!-- 1.配置某个拦截器:默认是拦截所有请求; -->
<bean class="com.atguigu.controller.MyFirstInterceptor"></bean>
<!-- 2.配置某个拦截器更详细的信息 -->
<!-- <mvc:interceptor>
<mvc:mapping path="/test01"/>
<bean class="com.atguigu.controller.MyFirstInterceptor"></bean>
</mvc:interceptor> -->
</mvc:interceptors>
- 测试
1)前端页面发送/test01
请求。
2)创建一个控制器组件,用于拦截前端请求:
@Controller
public class InterceptorTestController {
@RequestMapping(value="/test01")
public String test01(){
System.out.println("test01....");
return "success";
}
}
结果如下: