拦截器,过滤器,监听器_腾讯视频
拦截器、过滤器、监听器各有什么作用?
java小课堂
1.背景介绍
2.知识剖析
3.常见问题
4.解决方案
5.编码实战
6.扩展思考
7.参考文献
8.更多讨论
1.背景介绍
拦截器:spring mvc中的一项重要功能,主要作用是拦截用户的请求并进行相应的处理.比如通过拦截器进行用户权限验证,判断用户是否已经登录
过滤器:过滤器是实现了javax.servlet.Filter接口的服务器端程序,主要的用途是过滤字符编码,做一些业务逻辑判断,过滤器随web应用启动而启动,只初始化一次,只有当web应用停止或重新部署才销毁
监听器:监听器是实现了javax.servlet.ServletContextListener接口的服务器端程序,它也是随web应用的启动而启动,只初始化了一次,随web应用的停止而销毁.
2.知识剖析
拦截器:拦截器请求是通过实现HandlerInterceptor接口来完成的.HandlerInterceptor接口定义了三个方法,spring mvc就是通过这三个方法来对用户请求进行拦截处理
1:boolean preHandle,在请求处理之前被调用,可以在这个方法中进行一些前置的初始化操作或者对当前请求进行预处理.也可以进行一些判断来决定请求是否要继续进行下去.
spring mvc中的拦截器是链式调用形式.也就是说一个请求可以同时存在多个控制器,每个控制器的调用会根据它声明的顺序依次执行,且最先执行的是preHandle方法
该方法返回值是boolean类型,返回false时表示请求结束,返回true时就会继续调用下一个拦截器的preHandLe方法,如果没有下一个拦截器,就会调用当前请求的控制器方法
2:void postHandle,该方法只能在当前拦截器返回true时才能被调用.此方法意思是在当前请求被处理后,也就是控制器方法被调用之后执行,但是会在DispatcherServlet(分发器)进行视图渲染前被调用
3:void afterCompletion,该方法也是需要preHandle方法返回true时才会执行,.该方法将在整个请求结束后,也就是DispatcherServlet渲染对应视图之后执行,主要作用是进行资源清理
监听器:监听器Listener就是在application,session,request三个对象创建、销毁或者往其中添加修改删除属性时自动执行代码的功能组件。
Listener是Servlet的监听器,可以监听客户端的请求,服务端的操作等。
监听器主要分为以下三类
1:ServletContext监听
2:Session监听
3:Request监听
过滤器:Filter,是Servlet中最实用的技术,通过过滤器对web服务器管理的所有web资源,如:jsp,servlet,静态图片文件或静态html文件进行拦截,从而实现一些特殊的功能,例如实现URL级别的权限访问控制,过滤敏感词汇等功能
主要用于对用户请求进行预处理,也可以对HttpServletResponse进行后处理.
3.常见问题
1:过滤器如何实现拦截
2:他们的配置是怎样的
4.解决方案
Filter接口中有一个doFilter方法,当开发人员编写好Filter,并配置对哪个web资源进行拦截后,web服务器在每次调用方法之前,都会先调用一下filter的doFilter方法,因此,可以达到以下目的:
1:调用目标之前,让一段代码执行
2:是否调用目标资源(即是否让用户访问web资源)
web服务器在调用doFilter方法时,会传递一个filterChain对象进来,filterChain对象是filter接口中最重要的一个对象,它也提供了一个doFilter方法,开发人员可以根据需求决定是否调用此方法,调用该方法,则web服务器就会调用web资源的service方法,即web资源就会被访问,否则web资源不会被访问。
5.编码实战
过滤器,监听器,拦截器的配置
6.扩展思考
7.参考文献
百度
8.更多讨论
鸣谢
感谢观看,如有出错,恳请指正
网友评论