拦截器:拦截网页请求,只能拦截发送至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");
}
}