为了账号安全,请及时绑定邮箱和手机立即绑定

Spring MVC拦截器

ReasonLee JAVA开发工程师
难度中级
时长41分
学习人数
综合评分9.77
244人评价 查看评价
9.9 内容实用
9.8 简洁易懂
9.6 逻辑清晰
  • 拦截器的使用场景 使用原则:处理所有请求的共同问题 (1).解决乱码问题 可以不使用Spring MVC提供的CharacterEncodingFilter过滤器解决编码问题,改为用拦截器来解决客户端请求的乱码问题. 步骤: 1.创建一个拦截器,该拦截器配置为拦截所有的客户端请求. 2.在拦截器的preHandle()方法中通过HttpServletRequest参数的setCharacterEncoding()方法设置请求的字符编码为UTF-8. (2).解决权限验证问题: 即对用户是否登录进行判断,一般用户的登录信息都会保存在Session中. 在拦截器的preHandle()方法中通过HttpServletRequest参数的getSession()方法获取得到Session对象. 判断该对象中是否已经保存了用户登录的信息. 如果用户是没有登录的,则发送到登录页面,并且终止当前请求. 即通过request对象使用请求转发跳转到登录页面,preHandle()方法return false. 如果已经是登录的,则方法return true即可.
    查看全部
  • 拦截器的其他实现方式. 1.实现HandlerInterceptor接口(方式一) 2.实现webRequestInterceptor接口(方式二) webRequestInterceptor接口声明的方法与HandlerInterceptor接口声明的方法的方法名一样,但方法参数不一样,原理与使用方法基本相似. webRequestInterceptor接口中的preHandle()方法是没有返回值的.因此不能通过preHandle()方法去终止请求. 不管使用哪种方式创建拦截器,在配置文件中都是用<mvc:interceptors>标签进行注册. <mvc:interceptors> <mvc:interceptor> <mvc:mapping path="" /> <bean class=""/> </mvc:interceptor> <mvc:interceptor> <mvc:mapping path="" /> <bean class=""/> </mvc:interceptor> </mvc:interceptors> 或者: <mvc:interceptors> <bean class=""/> <bean class=""/> </mvc:interceptors>
    查看全部
  • 一个应用中配置多个拦截器. 直接在配置文件中的<mvc:interceptors>标签下配置多个<mvc:interceptor>标签或者直接配置多个bean即可. 多个拦截器的执行顺序. preHandle1->preHandle2->controller方法->postHandle2->postHandle1->afterCompletion2->afterCompletion1. 类似函数递归的原理.
    查看全部
  • 实现接口的三个方法中: preHandle()方法在请求被处理之前进行调用,具有一个boolean类型的返回值. 该方法的返回值作用是:是否将当前请求拦截下来,如果返回false,请求将被终止,即不会继续执行Controller中的方法与postHandler、afterCompletion方法. 如果返回true,则请求将会继续运行. 三个方法中都具有HttpServletRequest、HttpServletResponse与Object类型的参数. Object类型参数表示的是被拦截的请求的目标对象.即请求去到Controller对应的那个方法. postHandle()方法会在请求被处理之后进行调用,该方法中有ModelAndView类型的参数,可以通过ModelAndView参数来改变要显示的视图,或修改发往视图中保存的属性值. (利用ModelAndView的addObject()、setViewName()方法修改) afterCompletion()方法会在请求被响应之后进行调用,即视图已经被显示出来之后再调用的方法.可以在该方法中进行资源的销毁操作.
    查看全部
  • 实现接口的三个方法: public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object obj, Exception e) throws Exception {} public void postHandle(HttpServletRequest request, HttpServletResponse response,Object obj, ModelAndView mv) throws Exception {} public boolean preHandle(HttpServletRequest request, HttpServletResponse response,Object obj) throws Exception { return true; } 方法的执行顺序是preHandle->到达Controller方法并执行-->postHandle-->afterCompletion 在Struts2中拦截器是实现Interceptor接口.
    查看全部
    0 采集 收起 来源:拦截器的实现

    2018-03-22

  • 拦截器的实现 1.编写一个类实现HandlerInterceptor接口. 2.实现接口声明的方法.分别是afterCompletion、postHandle、preHandle方法. 3.将拦截器注册进Spring MVC框架中.在配置文件中使用<mvc:interceptors>标签配置. 有两种配置方式: 一.所有的请求都会进入拦截器: <mvc:interceptors> <bean class="com.own.interceptor.MyFirstInterceptor"/> </mvc:interceptors> 二.指明拦截器的拦截url: <mvc:interceptors> <mvc:interceptor> <mvc:mapping path="/hello/login"/> <bean class="com.own.interceptor.MyFirstInterceptor"/> </mvc:interceptor> </mvc:interceptors> 那么拦截器只会拦截到达/hello/login的请求,path属性中可以使用正则表达式.
    查看全部
    0 采集 收起 来源:拦截器的实现

    2018-03-22

  • Spring MVC可以通过配置过滤器来解决乱码问题. Spring MVC默认提供了CharacterEncodingFilter过滤器类,来对客户端的请求进行编码设置. 在web.xml中配置该过滤器: <filter> <filter-name>charset</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <!--配置名为encoding的参数(固定值),指定所有请求会经过这个filter,并且将所有请求的请求编码设置为utf8--> <init-param> <param-name>encoding</param-name> <param-value>utf8</param-value> </init-param> </filter> <filter-mapping> <filter-name>charset</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> 过滤器与拦截器原理类似 区别是过滤器是最先对请求进行拦截,拦截器是当请求通过过滤器之后,在请求到达Controller之前进行拦截.当执行完Controller的方法之后再依次递归返回执行. 过滤器与拦截器都能在Controller方法执行的前后进行一些工作.
    查看全部
  • Controller的方法中可以返回一个ModelAndView对象. ModelAndView对象有setViewName()方法,用来设置要返回的视图名称. 当返回ModelAndView对象时,就会跳转到setViewName()方法中指定的jsp页面. @RequestMapping("/model") public ModelAndView test(){ ModelAndView mv=new ModelAndView(); //去到根目录下的hello.jsp页面 mv.setViewName("/hello.jsp"); return mv; } ModelAndView类中有addObject(String key,Object value)方法,用来把对象保存在ModelAndView中,最后方法返回ModelAndView对象,在jsp页面中就可以使用el表达式通过key来获取得到value. ModelAndView与Model作用类似.
    查看全部
  • 方法内设置字符集
    查看全部
  • 解决乱码的过滤器
    查看全部
  • 拦截器
    查看全部
    0 采集 收起 来源:概述

    2016-04-20

  • 多个拦截器同时工作流程图
    查看全部
  • 过滤器依赖servlet容器,基于回调函数,过滤范围大,可以过来一些资源请求 如css js 图片 拦截器依赖于框架容器,基于反射机制,只过滤请求。由于是基于反射机制,反射是必须得知道类名所以只能拦截类方面的方法,对于不是对象方面的调用是拦截不到的 如静态资源css文件引用。
    查看全部
  • 图文解说
    查看全部
  • 多拦截器执行流程图
    查看全部

举报

0/150
提交
取消
课程须知
学习本门课程前需要具备Spring MVC的基础知识,可以观看慕课网的《Spring MVC起步》课程;还需要对过滤器的知识有所了解。
老师告诉你能学到什么?
1、理解Spring MVC拦截器的工作原理 2、掌握如何实现Spring MVC拦截器 3、了解Spring MVC拦截器的使用场景 4、理解Spring MVC拦截器与过滤器的区别

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!