监听器和过滤器


      监听器和过滤器他们的用法其实和servlet很相似,都是通过配置文件进行映射,比如这个自定义的简单的一个 sessionListener,它的配置文件时这样的:

  <listener>
  			<listener-class>com.yc.web.Listeners.SessionListener</listener-class>
  </listener>

这个sessionListner是实现的javax.servlet.http包下的 HttpSessionListener接口:

import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;

public class SessionListener implements HttpSessionListener {

	public void sessionCreated(HttpSessionEvent se) {
			//对session的创建的监听的计数统计.要在这里取到application
			ServletContext application=se.getSession().getServletContext();
			int  count=0;
			if(application.getAttribute("count")!=null){
				count=(Integer)application.getAttribute("count");//判断属性是否为空,不为空则
			}
			count++;
			application.setAttribute("count", count);
	
	}

	public void sessionDestroyed(HttpSessionEvent se) {
		//对session的创建的监听的计数统计.要在这里取到application
		ServletContext application=se.getSession().getServletContext();
		int  count=0;
		if(application.getAttribute("count")!=null){
			count=(Integer)application.getAttribute("count");//判断属性是否为空,不为空则
		}
		count--;
		application.setAttribute("count", count);
	}

}
这段代码实现的是实现对session的创建,销毁的监听,对session属性的监听可以实现 HttpSessionAttributeListener接口的方法实现。

通过这段代码,在session里得到jsp中的application,。就可以实现同一服务器在线人数的统计。(当然如果本机测试可以用两三个浏览器去试)。



下面是过滤器:

配置如下:

<filter>
			<filter-name>CharactorFilter</filter-name>
			<filter-class>com.yc.web.filters.CharactorFilter</filter-class>
</filter>
<filter-mapping>
		<filter-name>CharactorFilter</filter-name>
		<url-pattern>/*</url-pattern><!-- 访问的映射通配符-->
</filter-mapping>
和一般的servlet很类似的配置方法。

package com.yc.web.filters;

import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class CharacterFilter implements Filter {

	public void destroy() {

	}

	public void doFilter(ServletRequest request, ServletResponse response,
			FilterChain arg2) throws IOException, ServletException {
		HttpServletRequest req=(HttpServletRequest)request;
		HttpServletResponse resp=(HttpServletResponse)response;
                req.setCharacterEncoding("utf-8");
                resp.setCharacterEncoding("utf-8");

 }

	public void init(FilterConfig arg0) throws ServletException {

	}

}
这段代码和上面的配置是表示对所有的页面进行字符集的设置过滤,即页面的额全部的HttpServletRequest  HttpServletResponse的字符集都会被设置成utf-8字符集。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值