web監聽器

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;
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章