SpringMVC拦截器
2016-03-08 22:54
537 查看
Spring MVC 拦截器
与Servlet Filter 类似的编程组件,用于在Spring的请求流程中横向拦截式编程。
Spring拦截经常用于处理 权限等功能。
注:afterCompletion()方法在视图(jsp)处理后才执行,不能对视图产生影响。
与Servlet Filter 类似的编程组件,用于在Spring的请求流程中横向拦截式编程。
Spring拦截经常用于处理 权限等功能。
1.拦截器的执行流程
2.拦截器的实现过程
1)实现拦截器接口
public class DemoIntercepter implements HandlerInterceptor { /** * 1. 在控制器之前执行的方法 * 2. 返回值是true的时候才能继续执行后续控制器 * 3. 可以利用request传递(共享)数据。 * 4. 不执行后续的控制器,这里可利用response * 直接返回结果给用户(短路了!)方法返回值false * 5. handle 代表被调用的控制器。 */ public boolean preHandle( HttpServletRequest req, HttpServletResponse res, Object handle) throws Exception { System.out.println("调用了preHandle"); req.setAttribute("msg","Hello!"); return true; } /** * 在控制器以后执行方法 * 1. 用于处理控制器处理以后的数据 * 2. req 用于共享数据 * 3. res 用于处理结果 * 4. view 中包含 控制器处理以后的 “数据”和“视图” */ public void postHandle( HttpServletRequest req, HttpServletResponse res, Object handle, ModelAndView view) throws Exception { String msg = (String) req.getAttribute("msg"); msg += " Spring!"; req.setAttribute("msg", msg); System.out.println("调用postHandle"); } /** * 视图处理以后再执行的方法 * 1. 在视图处理以后执行,是向用户发生显示结果的 * 最后流程位置。 * 2. 可以用户处理异常 * 3. 最后更新显示结果 */ public void afterCompletion( HttpServletRequest req, HttpServletResponse res, Object handle, Exception e) throws Exception { System.out.println("afterCompletion"); String msg = (String) req.getAttribute("msg"); msg += " Bye!"; req.setAttribute("msg", msg); } }
2)在 spring-mvc.xml 中配置拦截器
<!-- 配置拦截器 --> <mvc:interceptors> <mvc:interceptor> <!-- 定义哪些路径被拦截 --> <!-- 此路径只能作用一级路径,且不能使用/*,可以配置多个 --> <mvc:mapping path="/interceptor/*"/> <mvc:mapping path="/interceptor/demo/*"/> <mvc:mapping path="/demo.do"/> <bean class="controller.DemoInterceptor"/> </mvc:interceptor> </mvc:interceptors>
3.执行流程
-->preHandle()-->Controller()-->postHandle()注:afterCompletion()方法在视图(jsp)处理后才执行,不能对视图产生影响。
相关文章推荐
- MD5加密算法JAVA实现
- Java clone()
- 00002笔试题(JAVA)
- MyEclipse创建struts.xml
- AOS V0.7 发布,JavaEE 应用基础平台
- Spring 简介
- 简单线程的实现
- Spring客户端设备检测识别
- SpringMVC的异常管理
- Eclipse(Android)下快速定位错误行
- java设计模式——创建型之建造者模式
- 关于eclipse集成weblogic以及项目部署
- Struts2--简单的实例
- 2016蓝桥杯假期任务之《连号区间数》
- Java内联函数
- 查找程序根目录下所有文件(Java IO与ListActivity的结合)
- java Script 介绍
- 简化MongoAPI(spring-data-mongo)第三部分----Criteria和Query对象的使用
- springMVC读取中文参数问题
- HDOJ 1850Being a Good Boy in Spring Festival(nim博弈)