首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Servlet资料辅导(5)

Servlet资料辅导(5)

作者头像
紫风
发布2025-10-14 16:01:13
发布2025-10-14 16:01:13
180
举报

Servlet过滤器和监听器

Servlet过滤器(Filter)

过滤器是用于过滤Servlet的请求和响应,过滤器是存在于请求和被请求资源之间的。 过滤器就像当于一个中间件,请求要经过过滤器,然后过滤器才去掉用Servlet,Servlet的响应也会被过滤器截获并作相应的处理。

Filter是一个接口,要写一个自己的Filter就只能实现Filter接口。 Filter也有自己的生命周期,他的生命周期和Servlet比较相似,也是会先调用init()方法,然后再调用核心的处理过滤的方法doFilter(),这个方法中可定义了过滤规则,然后是destory()方法销毁Filter对象。

dofilter(ServletRequest request,ServletResponse response,FilterChain chain) 这个是过滤的核心方法,FilterChain的方法doFilter(ServletRequest request, ServletResponse response)也就是用过滤后的请求调用资源的方法,如果不写这个方法,也就算不会去调用相应的资源。 Filter的配置

Filter的配置和Servlet相似。  <filter>   <filter-name>SessionFilter</filter-name>   <filter-class>alan.filter.SessionFilter</filter-class>  </filter>  <filter-mapping>   <filter-name>SessionFilter</filter-name>   <url-pattern>/protected/*</url-pattern>   <!--这里的url-pattern就是要过滤的Servlet的url-pattern-->   <dispatcher>request</dispatcher>   <dispatcher>forward</dispatcher>   <dispatcher>include</dispatcher>   <!--上面的三个是过滤的范围-->  </filter-mapping>

CharArrayWriter类,是一个将数据保存在字符数组中的输出流,我们可以使用它来构造一个PrintWriter对象,也就实现了向内存输出。CharArrayWriter类的toString()和toCharArray()方法就可以取得写入内存中的数据。

注意:CharArrayWriter类是一个不会真正输出的类,他的write()方法只会将内容写入字符数组,而且这个字符数组是会自动增长的。

Servlet监听器

以下是3个Listener接口。 ServletRequestListener HttpSessionListener ServletContextListener

这三个监听器接口,分别监听Servlet中3种比较中要的对象的创建和销毁。这三个接口中分别有监听该对象创建和销毁事件的方法,服务器本身就是事件源。

listener的配置

<listener>  <listener-class>alan.servlet.listener.AlanContextListener</listener-class>         <!--listener-class也就是实现Listener接口的类--> </listener>

Servlet中的重要对象(只针对应用)

                                              数量                生命周期             是否线程安全 ServletContext                        1                   全局的                不安全                                                         只有在应用关闭时才销毁     需要加同步访问

HttpSession                      和用户的                局部的                不安全                                          数量相同         只在有效时间内存在         需要加同步访问

ServletRequest                      多个                   局部的               线程安全

(HttpServletRequest)             只在servic()和doGet()             doPost()中存在

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2008-12-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档