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>