- 过滤器:双向过滤器, Servlet/Filter都是Web的组件.
-
过滤器可以对所有的请求或者响应做拦截操作.(过滤器是属于服务端的内容)
1:以常规的方式调用资源(Servlet/JSP);
2:利用修改过的请求信息调用资源;
3:调用资源之后,但在响应前,对响应做出修改;
4:阻止当前资源调用,代之转到其他资源. -
过滤器在开发中的运用:
1):可以对请求中的字符做编码.
2):登陆验证过滤器.
3):敏感字过滤器
4):拦截器(框架用到) -
Filter开发:
1:自定义一个类(XxxFilter),实现于javax.servlet.Filter接口.
2:实现Filter接口中的方法(init(初始化方法),doFilter(执行过滤操作)).
3:告诉Tomcat来帮我们管理该Filter程序(1:使用web.xml做配置,2:WebFilter("/资源名")).
<filter>
<filter-name>Filter的别名</filter-name>
<filter-class>自定义Filter的全限定名</filter-class>
</filter>
<filtert-mapping>
<filter-name>Filter的别名</filter-name>
<url-pattern>/过滤的资源名称</utl-pattern>
</filter-mapping> -
1:filter在服务器启动的时候就开始创建对象, 然后初始化.
2:fiter拦截了请求后, 完成过滤逻辑之后,必须要放行请求: chain.doFilter(request, response);
3:Fiter 中配置 url-pattern的文本内容: Filter对哪一些资源做过滤操作.
如: /hello.jsp :说明当前Filter只会对/hello.jsp做拦截/过滤.
/employee :说明当前Filter只会对/employee资源做过滤.
/system/* :说明当前Filter只会对以/system/作为前缀的资源路径做拦截.
/* : 说明当前Filter会对所有的请求资源做拦截
4:FilterChain(过滤器链):多个过滤器按照一定的顺序,排列起来.
----------------------------------------------------------------------
程序中,存在多个过滤器的时候,过滤器的先后执行顺序由谁来决定.
由在web.xml中:配置的<filter-mapping>的先后顺序来决定.
注解配置时则是由Filter的名称字母顺序来决定
5: 过滤的请求的类型:
REQUEST : 拦截请求, 默认的方式
FORWORD: 仅仅拦截请求转发
ERROE: 拦截错误请求 includeFilter的生命周期:
在启动服务器的时候去创建Filter对象,执行init方法,在访问资源发请求,被当前Filter拦截的时候执行doFilter方法,最后在正常关闭服务器的时候,去执行destroy方法构造器--->>init()--->>doFilter()--->>destroy()
-
配置了什么类型的请求,就只对哪些类型的请求做过滤
-
请求编码过滤器
登录验证过滤器
屏蔽敏感字过滤器 改变源代码的功能:
1.定义一个和我们要修改的类完全一样的类(包名和类型完全一样),然后再将其中的所有的代码全部拷贝到我们定义的类中,此时在我们的项目中,就只能使用我们自定义的类
2.定义一个类去继承我们要修改的类,然后再通过覆写的方式去修改对应的方法(学习) -
JavaWeb中的监听器的分类:
1.作用域监听器(创建/销毁)
作用域:request/session/application
2.作用域属性对象监听器
(添加/删除/修改)作用域中的共享数据的监听 -
Web的另一大组件:Listener(监听器).
----------------------------------------------------
Web中的监听器,主要用于监听作用域对象的创建,监听作用域对象属性的添加/删除/替换:
1):监听作用域对象的创建和销毁.
ServletRequestListener:监听请求对象的创建和销毁.
HttpSessionListener:监听会话对象(session)的创建和销毁.
ServletContextListener:监听应用的创建和销毁.
2):监听作用域对象的属性的添加/删除/替换.
ServletRequestAttributeListener: 监听request作用域中属性的添加/删除/替换.
HttpSessionAttributeListener:监听session作用域中属性的添加/删除/替换.
ServletContextAttributeListener:监听application作用域中属性的添加/删除/替换.public class MyServletRequestListener implements ServletRequestListener { //请求发送后就会调用 销毁request,listener @Override public void requestDestroyed(ServletRequestEvent paramServletRequestEvent) { System.out.println("销毁request,listener"); Object source = paramServletRequestEvent.getSource(); System.out.println(source); } public void requestInitialized(ServletRequestEvent paramServletRequestEvent) { System.out.println("创建request,listener"); } } <listener> <display-name>MyListener</display-name> <listener-class>com.listener.MyServletRequestListener</listener-class> </listener>
java web-filter&listener
最新推荐文章于 2021-11-17 17:21:37 发布