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

Spring MVC拦截器

ReasonLee JAVA开发工程师
难度中级
时长41分
学习人数
综合评分9.77
244人评价 查看评价
9.9 内容实用
9.8 简洁易懂
9.6 逻辑清晰
  • 多个拦截器应用https://img1.sycdn.imooc.com//5d54c37c0001fc6c12820711.jpg

    查看全部
  • preHandle

    https://img1.sycdn.imooc.com//5d54c14b0001eda611480258.jpg


    postHandle

    https://img1.sycdn.imooc.com//5d54c1710001109d09900189.jpg


    afterCompletion 

    https://img1.sycdn.imooc.com//5d54c1d100010abf12200139.jpg

    查看全部
  • 过滤器解决中文乱码问题

    https://img1.sycdn.imooc.com//5d54ba480001146512930535.jpg

    https://img1.sycdn.imooc.com//5d54ba670001305b10490291.jpg


    查看全部
  • 拦截器的实现

    https://img1.sycdn.imooc.com//5d54b8d400013b5405760226.jpg


    注册拦截器

    https://img1.sycdn.imooc.com//5d54b9210001ecf711750559.jpg

    配置拦截器的拦截规则

    https://img1.sycdn.imooc.com//5d54b9ca0001aa0110870254.jpg


    查看全部
    0 采集 收起 来源:拦截器的实现

    2019-08-15

  • 拦截器在实际项目中,用于对登录权限进行管理,当用户session失效或者未登录状态下,需跳转到登录页进行登录,重写session,并根据是否携带resultUrl 地址进行回跳的操作,次resultUrl 是上一次被拦截的请求URL

    查看全部
  • 本章对拦截器和过滤器进行了对比,并对课程进行了总结。

    区别:

    【a】过滤器Filter依赖于Servlet容器,基于回调函数,过滤范围大。

    【b】 拦截器Interceptor依赖于框架容器,基于反射机制,只过滤请求。

    总结:

    拦截器可以处理Web应用中请求的一些通用性问题。

    共性问题在拦截器中处理,可以减少重复代码,便于维护。




    查看全部
  • 本章主要对拦截器的使用场景进行介绍,解决了乱码问题和权限验证问题。

    拦截器的使用场景

    使用原则:处理所有请求的共同问题。

    1、通过拦截器解决乱码问题(可以设置请求编码(preHandle中进行设置)和响应编码设置)。

    拦截器类的preHandle方法中,使用HttpServletRequest对象的setCharacterEncoding("utf-8"),这样请求执行之前字符集被更改为utf-8。

    https://img1.sycdn.imooc.com//5d1c967b0001ddf609500189.jpg2、解决权限验证问题(比如:有些页面只有登陆后,才可以使用)

    在拦截器类的preHandle方法中进行判断,如果登入成功时,会往session域中存储一个值,该方法通过参数HttpServletRequest对象的getSesssion().getAttribute(“存储的值”)判断改值是否为null,也就是如果session域中没有该值,则终止请求,通过HttpServletRequest对象的getRequestDispatcher返回登陆页面,并且返回false。


    https://img1.sycdn.imooc.com//5d1c987a0001ae7209550336.jpg


    查看全部
  • 拦截器的其他实现方式:拦截器类实现另一个接口WebRequestInterceptor,它也会实现三个方法,方法名和前面学到的方法名一样,只不过是参数有一些区别,还有另外一个区别是preHandle方法没有返回值,也就是它不能像实现HandlerInterceptro那样通过false返回值来终止请求,所以实际开发中经常使用HandlerInterceptor接口,这种实现方式在SpringMVC中配置的写法是不变的。

    查看全部
  • 多个拦截器应用

    多个拦截器:定义两个拦截器类并实现HandlerInterceptor,并在SpringMVC配置文件中进行配置。

    https://img1.sycdn.imooc.com//5d1c242c0001a35909770212.jpg

    多个拦截器执行顺序:

    https://img1.sycdn.imooc.com//5d1c248e0001ffe310270640.jpg


    查看全部
  • 拦截器的方法介绍

    1、preHandle方法:在请求被处理之前进行调用,方法返回值为boolean,该返回值代表是否将当前请求进行拦截,如果为true,请求将继续运行,如果为false,请求将被终止(也就是请求不会到达控制器,也不会执行另外两个拦截器方法),该方法有三个参数,HttpServletRequest存储了请求的信息,HttpServletResponse存储了响应的信息,Object表示被拦截的请求目标的对象(当前拦截的就是请求要访问的TestController的viewAll方法,可以理解为TestController的实例)。

    https://img1.sycdn.imooc.com//5d1c1abd0001a1e406360331.jpg

    扩展:Maven中无法使用EL表达式解决方法?

    答:问题因为2.5之前,web.xml文件中的头定义中,el表达式默认是忽略不解析的,有如下三种解决方法。

    【1】jsp文件头上添加:<%@ page isELIgnored="false"%>

            【2】web.xml中添加定义。(不做详细)

                 【3】web.xml头中添加定义。(不做详细)

    2、postHandle方法:在请求被处理之后进行调用,处了以上三个参数外,还有一个ModelAndView参数,可以通过该参数改变显示的视图。

    https://img1.sycdn.imooc.com//5d1c1f1f0001289209900270.jpg

    3、afterCompletion方法:在请求响应结束之后(视图显示之后)才进行调用,主要用于一些资源的销毁,例如连接、流等,不经常使用它。


    查看全部
  • 拦截器的实现

    步骤1:编写拦截器类实现HandlerInterceptor接口,并实现了三个方法(preHandle():到达Controller前执行的方法,postHandle():执行Controller后执行的方法,afterCompletion():执行完Controller后的方法),分别进行了输出,并把preHandle方法返回值false改为true

    https://img1.sycdn.imooc.com//5d1b4d990001e58009320506.jpg

    步骤2:SpringMVC的配置文件(mvc-dispatcher-servlet.xml)中注册拦截器

    使用<mvc:interceptor><bean class="拦截器的路径"</bean></mvc:interceptor>,使用它之前需要使用到mvc的命名空间,并且配置了mvc的格式描述。

    https://img1.sycdn.imooc.com//5d1b4e5d00019d6606870051.jpg

    https://img1.sycdn.imooc.com//5d1b4e5d0001bb7807800060.jpg

    https://img1.sycdn.imooc.com//5d1b4ea400011fe909700149.jpg
    步骤3:在SpringMVC的配置文件中(mvc-dispatcher-servlet.xml)配置拦截器的拦截规则,通过<mvc:mapping path="拦截路径"/>,例如以viewAll.form结尾的请求(path="/viewAll.form"),如果再增加一个新的方法,访问该方法就不会执行拦截器的方法。

    https://img1.sycdn.imooc.com//5d1b515e0001426d09700237.jpg

    查看全部
    0 采集 收起 来源:拦截器的实现

    2019-07-02

  • SpringMVC拦截器的工作原理

    解决乱码问题:SpringMVC提供的一个过滤器类(在org.springframework.web-3.0.1.RELEASE-A.jar——>org.springframework.web.filter)CharacterEncodingFilter可以解决该问题。

    案例:配置SpringMVC过滤器,和过滤器相似通过<filter>和<filter-mapping>进行配置,只不过过滤器的<filter-class>是自己手动编写,而SpringMVC提供的不用再手动去设置字符集(自定义过滤器实现Filter接口,并手动获取request对象,然后再设置字符集为UTF-8,再跳转页面,SpringMVC是固定的,也就是<init-param>中的<param-name>的值是encoding,<param-value>的值是utf-8)

    拓展:关于web.xml的url映射的小知识:
    < url-pattern>/</url-pattern>  会匹配到/login这样的路径型url,不会匹配到模式为*.jsp这样的后缀型url
    < url-pattern>/*</url-pattern> 会匹配所有url:路径型的和后缀型的url(包括/login,*.jsp,*.js和*.html等)

    注意一下CharacterEncodingFilte只可以过滤post请求编码

    查看全部
  • 过滤器可以过滤静态资源,拦截器只对请求过滤

    查看全部
  • 验证登录,都是从 request 请求中获取session 信息

    查看全部
  • 拦截器,统一处理乱码

    查看全部

举报

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

微信扫码,参与3人拼团

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

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