servlet知识汇总(三)

11 篇文章 0 订阅

过滤器

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

 1.过滤器:是以一种组件的形式绑定在web应用程序当中的,与其他的Web应用程序组件不同的是,过滤器是采用链的方式进行处理的。一旦加入过滤器,所有的请求先交给过滤器处理,然后再访问相应的web资源的访问限制。

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

Publicvoid init(FilterConfig filterConfig)Throws ServletException

publicvoid 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中写:

publicvoid doFilter(ServletRequest request, ServletResponse response,FilterChainchain) 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>

 publicvoid 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分钟。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值