Filter开发步骤:(重要)
与往之相同,
- 先导包
import javax.servlet.*;
- 编写过滤器
- 增加web.xml文件中的filter配置
/*
* 过滤器中的所有代码,在过滤特定请求的时候
* */
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain) throws IOException, ServletException {
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=UTF-8");
System.out.println("CharacterEncodingFilter 执行前。。。");
filterChain.doFilter(request,response);//让我们的请求继续走,如果不写,程序到这里就被拦截停止!
System.out.println("CharacterEncodingFilter 执行后。。。");
}
<filter>
<filter-name>CharacterEncodingFilter</filter-name>
<filter-class>atu.wanaei.filter.CharacterEncodingFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>CharacterEncodingFilter</filter-name>
<url-pattern>/servlet/*</url-pattern>
</filter-mapping>
监听器
实现一个监听器的接口;(有N种)
- 编写一个监听器:实现监听器的接口
- 配置监听器(web.xml中注册)
<!-- 注册监听器-->
<listener>
<listener-class>atu.wanaei.listener.OnlineCountListener</listener-class>
</listener>
public class OnlineCountListener implements HttpSessionListener {
// 创建session监听,看你的一举一动
// 一旦创建Session,就会触发一次这个事件
@Override
public void sessionCreated(HttpSessionEvent se) {
ServletContext context = se.getSession().getServletContext();
Integer onlineCount = (Integer)context.getAttribute("OnlineCount");
if (onlineCount==null){
onlineCount = new Integer(1);
}else{
int count = onlineCount.intValue();
onlineCount = new Integer(count+1);
}
context.setAttribute("OnlinrCount",onlineCount);
}
// 销毁session监听
@Override
public void sessionDestroyed(HttpSessionEvent se) {
ServletContext context = se.getSession().getServletContext();
Integer onlineCount = (Integer)context.getAttribute("OnlineCount");
if (onlineCount==null){
onlineCount = new Integer(1);
}else{
int count = onlineCount.intValue();
onlineCount = new Integer(count-1);
}
context.setAttribute("OnlinrCount",onlineCount);
}
}