1. FIlter
Filter:过滤器,用来过滤网站的数据
- 处理中文乱码;
- 登录验证

1.1 编码过滤
public class CharacterEncodingFilter implements Filter {
public void init(FilterConfig filterConfig) throws ServletException {
System.out.println("编码过滤器初始化");
}
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
servletRequest.setCharacterEncoding("utf-8");
servletResponse.setCharacterEncoding("utf-8");
servletResponse.setContentType("text/html");
filterChain.doFilter(servletRequest, servletResponse);
}
public void destroy() {
System.out.println("编码过滤器销毁");
}
}
<filter>
<filter-name>CharacterEncodingFilter</filter-name>
<filter-class>com.yang.filter.CharacterEncodingFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>CharacterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
/*:表示所有的请求都会经过过滤器
1.2 权限拦截
public class SysFilter implements Filter {
public void init(FilterConfig filterConfig) throws ServletException {
}
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
HttpServletRequest req = (HttpServletRequest) servletRequest;
HttpServletResponse resp = (HttpServletResponse) servletResponse;
if (req.getSession().getAttribute(Constant.USER_SESSION) == null) {
resp.sendRedirect(req.getContextPath() + "/login.jsp");
}
filterChain.doFilter(req, resp);
}
public void destroy() {
}
}
2. Listener
在线人数统计
public class OnlineCountListener implements HttpSessionListener {
public void sessionCreated(HttpSessionEvent se) {
ServletContext sct = se.getSession().getServletContext();
Integer onlineCount = (Integer) sct.getAttribute("onlineCount");
if (onlineCount == null) {
onlineCount = 1;
}else{
onlineCount+=1;
}
sct.setAttribute("onlineCount", onlineCount);
}
public void sessionDestroyed(HttpSessionEvent se) {
ServletContext sct = se.getSession().getServletContext();
Integer onlineCount = (Integer) sct.getAttribute("onlineCount");
onlineCount -= 1;
sct.setAttribute("onlineCount", onlineCount);
}
}
<listener>
<listener-class>com.yang.listener.OnlineCountListener</listener-class>
</listener>
```xml
<listener>
<listener-class>com.yang.listener.OnlineCountListener</listener-class>
</listener>
本文介绍了Java Web开发中过滤器(Filter)和监听器(Listener)的使用。编码过滤器`CharacterEncodingFilter`确保了UTF-8的统一编码,防止中文乱码问题,同时实现了登录验证的权限拦截。而`OnlineCountListener`作为会话监听器,实时统计在线人数。通过在web.xml配置文件中声明,这两个组件可以全局影响应用程序的行为。

被折叠的 条评论
为什么被折叠?



