本文内容全部来自尚硅谷
本文代码来自SpringMVC总结(十一)--SpringMVC_RESTRUL_CRUD显示所有员工信息
目录
简介
HelloWorld
新建一个java文件
文件内容如下
必须实现HandlerInterceptor
package com.atguigu.springmvc.interceptors;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
public class FirstInterceptor implements HandlerInterceptor{
/**
* 该方法在目标方法之前被调用.
* 若返回值为 true, 则继续调用后续的拦截器和目标方法.
* 若返回值为 false, 则不会再调用后续的拦截器和目标方法.
*
* 可以考虑做权限. 日志, 事务等.
*/
@Override
public boolean preHandle(HttpServletRequest request,
HttpServletResponse response, Object handler) throws Exception {
System.out.println("[FirstInterceptor] preHandle");
return true;
}
/**
* 调用目标方法之后, 但渲染视图之前.
* 可以对请求域中的属性或视图做出修改.
*/
@Override
public void postHandle(HttpServletRequest request,
HttpServletResponse response, Object handler,
ModelAndView modelAndView) throws Exception {
System.out.println("[FirstInterceptor] postHandle");
}
/**
* 渲染视图之后被调用. 释放资源
*/
@Override
public void afterCompletion(HttpServletRequest request,
HttpServletResponse response, Object handler, Exception ex)
throws Exception {
System.out.println("[FirstInterceptor] afterCompletion");
}
}
修改spirngmvc配置文件
添加自定义的拦截器
显示效果成功了
补充
1、
这个拦截器好像是拦截了所有的,并未指定不拦截谁
2、代码执行顺序是
第一个执行preHandle方法
该方法在目标方法之前被调用;
若返回值为 true, 则继续调用后续的拦截器和目标方法,若返回值为 false, 则不会再调用后续的拦截器和目标方法
可以考虑做权限. 日志, 事务等.
第二个执行的是目标函数
第三个是postHandle方法
1 调用目标方法之后, 但渲染视图之前.
2 可以对请求域中的属性或视图做出修改.
第四个是afterCompletion方法
渲染视图之后被调用. 释放资源