1.web監聽器:servlet規範中定義的一種特殊類
2.監聽範圍
(1)ServletContext--application
使用:implements ServletContextListener
方法:contextInitialized(),contextDestroyed()
(2)HttpSession--session
使用:implements HttpSessionListener
方法:sessionCreated(),sessionDestroyed()
(3)ServletRequest--request
使用:implements ServletRequestListener
方法:requestInitialized(),requestDestroyed()
3.用途:統計在線人數,加載初始化信息,統計訪問量
4.註冊
<listener>
<listener-class>***</listener-class>
</listener>
5.註解
@WebListener
6.實例
@WebListener
public class RequestListener implements ServletRequestListener {
private SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
private List<LogUser> userList;
public void requestDestroyed(ServletRequestEvent event) {
}
public void requestInitialized(ServletRequestEvent event) {
HttpServletRequest request = (HttpServletRequest) event.getServletRequest();
String id = request.getSession().getId();
String ip = request.getRemoteAddr();
String loginTime = dateFormat.format(new Date());
if(userList == null){
userList = new ArrayList<LogUser>();
}
LogUser oldUser = isExist(id);
if(oldUser == null){
LogUser newUser = new LogUser(id,ip,loginTime,1);
userList.add(newUser);
}else{
oldUser.setStatus(1);
}
request.getSession().getServletContext().setAttribute("user_list", userList);
}
private LogUser isExist(String id) {
LogUser user = null;
for (LogUser logUser : userList) {
if(id.equals(logUser.getId())){
user = logUser;
break;
}
}
return user;
}
}