SpringMVC之拦截器(interceptors)的简介及用法
来源:互联网 发布:javascript setdate 编辑:程序博客网 时间:2024/05/19 12:28
一、什么是拦截器?
spring提供的一个特殊的组件,当DispatcherServlet收到请求之后,如果有拦截器,会先调用拦截器,然后调用响应的处理器(Controller)。 注: 过滤器属于servlet规范,而拦截器属于spring框架。
二、如何写一个拦截器?
1.写一个java类,实现HandlerInterceptor接口
//实现HandlerInterceptor接口 //可自动生成preHandle()、postHandle()、afterCompletio()方法public class SomeInterceptor implements HandlerInterceptor{ /** * DispatcherServlet收到请求之后,会先调用preHandle方法 * 如果该方法的返回值为true,则继续向后调用 * 如果该方法的返回值为false,则不再向后调用 * * Object handler:描述处理器方法的一个对象 */ public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { System.out.println("preHandle()"); return true; } /** * 处理器(Controlle)的方法已经执行完毕 * 正准备将结果(ModelAndView对象)返回 * 给DispatcherServlet之前执行postHandle方法 * 可以在该方法里去修改处理器返回的结果 */ public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { System.out.println("postHandle()"); } /** * 当preHandle返回值为true该方法才会执行 * afterCompletion在postHandle方法执行之后才执行 * * Exception ex处理处理器所抛出的异常,可以写一个拦截器用来处理处理器抛出的异常 */ public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { System.out.println("afterCompletion()"); }}
2.实现具体的拦截处理逻辑。比如:session验证
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { System.out.println("preHandle()"); HttpSession session= request.getSession(); Object obj = session.getAttribute("admin"); if(obj == null) { //未登录,重定向到登录界面 response.sendRedirect("toLogin.do"); return false; } return false; }
3.配置拦截器
<!-- 配置拦截器 --> <!-- 如果有多个拦截器,会按照配置的先后顺序执行 --> <mvc:interceptors> <mvc:interceptor> <!-- 拦截器路径配置 --> <!-- 拦截路径多的话会分层多加一个*号 即拦截所有的请求路径为/** --> <!-- 要拦截的路径 --> <mvc:mapping path="/**"/> <!-- 拦截器不需要拦截的路径 --> <mvc:exclude-mapping path=""/> <!-- 拦截器类 -->> <bean class="拦截器要拦截的java代码路径"> </mvc:interceptor> </mvc:interceptors>
阅读全文
1 0
- SpringMVC之拦截器(interceptors)的简介及用法
- springMVC之mvc:interceptors拦截器的用法
- springMVC之mvc:interceptors拦截器的用法
- springMVC之mvc:interceptors拦截器的用法
- springMVC之mvc:interceptors拦截器的用法
- Okhttp-wiki 之 Interceptors 拦截器
- Spring MVC 之 Interceptors拦截器
- SpringMVC源码总结(十一)mvc:interceptors拦截器介绍
- SpringMVC源码总结(十一)mvc:interceptors拦截器介绍
- SpringMVC源码总结(十一)mvc:interceptors拦截器介绍
- SpringMVC源码总结(十一)mvc:interceptors拦截器介绍
- struts2的拦截器介绍(Interceptors)
- 拦截器(Interceptors)
- struts2 Interceptors 拦截器
- OkHttp-Interceptors拦截器
- SpringMVC拦截器简介
- 使用mvc:interceptors标签来声明需要加入到SpringMVC拦截器链中的拦截器
- Android OkHttp官方Wiki之Interceptors拦截器
- git使用从零到一
- C# 解决约瑟夫环问题
- 论复盘的正确姿势2.0
- DB2中的DML竟然包含select
- 看图说话之二叉堆(优先队列)——java实现
- SpringMVC之拦截器(interceptors)的简介及用法
- leetcode题解-4. Median of Two Sorted Arrays
- HDU
- 将两个数组内容向中间靠拢交换
- android studio Test类测试ormlite数据库问题
- canvas save()和canvas restore()状态的保存和恢复使用方法及实例
- 十月培训
- Android学习《第一行代码》01
- 锁小结