Servlet过滤器,监听器

本文详细解释了Servlet、过滤器和监听器在Web应用中的作用,包括过滤器实现、应用实例如编码过滤和登陆验证,以及监听器如在线人员统计。通过实例演示了如何在Web.xml中配置过滤器和监听器,强调了它们在自动化执行和事件监听方面的优势。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

过滤器

JSP完成的功能Servlet都能完成,但是Servlet具备很多JSP所不具有的,从使用上看可以分为三种:简单Servlet、过滤Servlet和监听Servlet

 

1.过滤器:是以一种组件的形式绑定在web应用程序当中的,与其他的Web应用程序组件不同的是,过滤器是采用链的方式进行处理的。

一旦加入过滤器,所有的请求先交给过滤器处理,然后再访问相应的web资源的访问限制。

 

(1)实现过滤器:如果定义一个过滤器,则直接让一个类实现javax.servlet.Filter接口即可。

 

Public void init(FilterConfig filterConfig)Throws ServletException

 

public void doFilter(ServletRequest request,Servlet response,FilterChain chain)

 

实现具体的过滤操作,然后通过FilterChain让请求继续向下传递。

chain.doFilter(request,response);

 

过滤器的销毁 public void destroy()

 

2.过滤器的应用:

 

实例一:编码过滤器EncodingFilter.java

 

为所有页面设置统一的编码:如果按照之前的做法,在每一个JSP或者Servlet中都重复编写request.setCharacterEncoding("GBK")的语句肯定是不可取的,会造成大量的代码重复。

 

<!-- 编码过滤 -->

 

方法1

在web.xml中配置:

<filter>

 

<filter-name>encoding</filter-name> <filter-class>org.ecjtu.lp.EncodingFilter</filter-class>

 

</filter>

 

<filter-mapping>

 

<filter-name>encoding</filter-name>

 

<url-pattern>/*</url-pattern>

 

</filter-mapping>


在servlet中写:

 

public void doFilter(ServletRequest request, ServletResponse response,FilterChain chain) throws IOException, ServletException {

request.setCharacterEncoding("GB18030");

response.setCharacterEncoding("GB18030");

chain.doFilter(request, response);

}

 

 

方法2

<!-- 编码过滤 -->

<filter>

<filter-name>encoding</filter-name>

<filter-class>org.ecjtu.lp.EncodingFilter </filter-class>

<init-param>

<param-name>charset</param-name>

<param-value>GB18030</param-value>

</init-param>

</filter>

public void init(FilterConfig config) throws ServletException {

// TODO Auto-generated method stub

this.charSet=config.getInitParameter("charset");//取得初始化参数

}

 

(2)登陆验证:最早的做法是通过session的方式完成,但是每个页面都这样的话,则肯定造成大量代码的重复,而通过过滤器的方法即可避免这种重复操作。

 

注意:向下转型:将ServletRequest转为HttpServletRequest

 

总结:过滤器属于自动执行的一种servlet过滤器依然需要在web.xml文件中进行配置。

过滤器常用的功能是可以完成常用的编码过滤,及登录验证。

 

监听器

1.第三种servlet程序称为监听servlet,主要功能负责Web的各种操作,当相关的事件触发后将产生事件并对此事和request三种操作进行监听。

 

2.实例:监听器:在线人员统计

 

Session销毁的操作:

当一个新用户打开一个动态页时,服务器会为新用户分配session,并触发HttpsessionLisener接口中的sessionCreate()事件,但是在用户销毁时时却有两种不同的方式触发sessionDestroy()事件。

 

方式一:调用HttpSession接口中的invalidate()方法,让一个session失效。

 

方式二:超过了配置session的超时时间,session超时时间可以直接在项目中的web.xml中配置。

 

<session-config>

 

<session-timeout>5</session-timeout>

 

<session_config>

 

默认的超时时间为30分钟。

(本文转载 : http://www.cnblogs.com/200911/archive/2012/05/02/2479880.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值