慕课 springmvc拦截器
2016-04-17 20:49
337 查看
第1章 概述
拦截器,一般指的是在浏览器页面向服务端发出请求后,拦截请求,对请求进行一系列的操作;或者在服务器返回数据时,在数据到达浏览器界面前,做一些操作。拦截器一般用于权限验证、乱码处理等操作
第2章 Spring MVC拦截器的实现
2-1 过滤器工作原理 (07:36)
1)web.xml <filter> <filter-name>encoding</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>utf8</param-value> </init-param> </filter> <filter-mapping> <filter-name>encoding</filter-name> <url-pattern>*</url-pattern> </filter-mapping>
2-2 拦截器的实现 (08:25)
2-3 拦截器方法介绍 (08:45)
1)编写拦截器类实现HandlerInterceptor接口public class TestInterceor implements HandlerInterceptor { //返回值:表示我们是否需要将当前的请求拦截下来 // true:请求将会被继续执行 // false:请求将被终止 //参数o表示的是拦截器的请求的目标对象 public boolean preHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o) throws Exception { System.out.println("preHandle"); return true; } //可以通过参数modelAndView参数来改变显示的视图,或修改发往视图的方法 public void postHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, ModelAndView modelAndView) throws Exception { modelAndView.addObject("msg","这里传回的是被拦截器修改之后的消息!"); modelAndView.setViewName("hello2"); } public void afterCompletion(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) throws Exception { } }
2)将拦截器注册进SpringMVC框架中
<mvc:interceptors> <bean class="com.imooc.test.interceptor.TestInterceor" /> </mvc:interceptors>
3)配置拦截器的拦截规则
<mvc:interceptor> <mvc:mapping path="/viewform"/> <bean class="com.imooc.test.interceptor.TestInterceor" /> </mvc:interceptor>
2-4 多个拦截器应用 (04:32)
输出:
preHandle
执行到了 preHandle 2
进入了控制器的viewall()方法...
name =
pwd =
执行到了 postHandle 2
执行到了 postHandle
执行到了 afterCompletion 2
执行到了 afterCompletio
2-5 拦截器的其他实现方式 (02:27)
编写拦截器类实现WebRequestInterceptor接口,注册方法不变弊端:preHandler没有返回值
第3章 拦截器的使用场景
1) 乱码问题2)权限验证问题
public boolean preHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o) throws Exception { System.out.println("preHandle"); //乱码 httpServletRequest.setCharacterEncoding("utf-8"); //权限验证 if(httpServletResponse==null){ httpServletRequest.getRequestDispatcher(httpServletRequest.getContextPath()+"/index.jsp").forward(httpServletRequest,httpServletResponse); System.out.println(httpServletRequest.getSession().getAttribute("name")); return false; } return true; }
第4章 拦截器与过滤器的对比及课程总结
拦截器和过滤器的区别。过滤器基于servlet,拦截范围更大;
拦截器依赖于框架,基于反射,只过滤请求。
①拦截器是基于java的反射机制的,而过滤器是基于函数回调。
②拦截器不依赖与servlet容器,过滤器依赖与servlet容器。
③拦截器只能对action请求起作用,而过滤器则可以对几乎所有的请求起作用。
④拦截器可以访问action上下文、值栈里的对象,而过滤器不能访问。
⑤在action的生命周期中,拦截器可以多次被调用,而过滤器只能在容器初始化时被调用一次。
⑥拦截器可以获取IOC容器中的各个bean,而过滤器就不行,这点很重要,在拦截器里注入一个service,可以调用业务逻辑。
相关文章推荐
- 20145237 实验二 “Java面向对象程序设计”
- Java中的接口
- N皇后Java算法
- 关于javassist.NotFoundException
- DBScan聚类算法Java实现
- 20145211 《Java程序设计》第7周学习总结——沧海横流
- 20145235《Java程序设计》第7周学习总结
- Java多线程(4)线程组
- 20145333 《Java程序设计》第二次实验报告
- WebService学习总结(三)——使用JDK开发WebService
- JAVA线程学习笔记
- java初始化顺序
- spring配置方式:
- 20145239杜文超 《Java程序设计》第7周学习总结
- 20145204 《Java程序设计》第7周学习总结
- MyEclipse8.5 安装SVN
- Java学习-9.接口
- 20145322 《Java程序设计》第7周学习总结
- Java学习-8.多态
- 20145317彭垚《Java程序设计》实验二