監(jiān)聽器
概述
API
ServletContextListener
在Servlet上下文對象初始化或者銷毀時得到通知傅是,位于javax.servlet包下
常用方法:
contextInitialized(ServletContextEvent arg)
在Web應用程序初始化開始時由Web容器調用砖第,該方法無返回值
contextDestory(ServletContextEvent arg)
當Servlet上下文將要關閉時由Web容器調用翘盖,該方法無返回值
ServletContextAttributeListener
在Servlet上下文中的屬性列表發(fā)生變化時得到通知哭靖,位于javax.servlet包下
HttpSessionListener
在Session創(chuàng)建后或者失效前得到通知醉锅,位于javax.servlet.http包下
HttpSessionActivationListener
實現(xiàn)該接口的對象赦颇,如果綁定到Session中,當Session被鈍化或者激活時奥溺,Servlet容器將通知該對象,位于javax.servlet.http包下
HttpSessionBindingListener接口
常用方法:
valueBound(HttpSessionBindingEvent event)
當對象被添加到Session時,由容器調用該方法來通知對象骨宠,該方法無返回值
valueUnbound(HttpSessionBindingEvent event)
當對象從Session中清除時浮定,由容器調用該方法來通知對象,該方法無返回值
ServletContext監(jiān)聽
public class MyContextListener implements ServletContextListener, ServletContextAttributeListener {
@Override
public void attributeAdded(ServletContextAttributeEvent arg0) {
System.out.println("屬性添加");
}
@Override
public void attributeRemoved(ServletContextAttributeEvent arg0) {
System.out.println("屬性修改");
}
@Override
public void attributeReplaced(ServletContextAttributeEvent arg0) {
System.out.println("屬性刪除");
}
@Override
public void contextDestroyed(ServletContextEvent arg0) {
System.out.println("ServletContext對象銷毀時調用");
}
@Override
public void contextInitialized(ServletContextEvent arg0) {
System.out.println("ServletContext對象創(chuàng)建時調用");
}
}
<listener>
<listener-class>com.shuai.listeners.MyContextListener</listener-class>
</listener>
HttpServletRequest監(jiān)聽
public class MyRequestListener implements ServletRequestListener, ServletRequestAttributeListener {
@Override
public void attributeAdded(ServletRequestAttributeEvent arg0) {
System.out.println("增加屬性");
}
@Override
public void attributeRemoved(ServletRequestAttributeEvent arg0) {
System.out.println("刪除屬性");
}
@Override
public void attributeReplaced(ServletRequestAttributeEvent arg0) {
System.out.println("替換屬性的值");
}
@Override
public void requestDestroyed(ServletRequestEvent arg0) {
System.out.println("request銷毀");
}
@Override
public void requestInitialized(ServletRequestEvent arg0) {
System.out.println("request創(chuàng)建");
}
}
<listener>
<listener-class>com.shuai.listeners.MyRequestListener</listener-class>
</listener>
HttpSession監(jiān)聽
public class MySessionListener implements HttpSessionListener, HttpSessionAttributeListener {
@Override
public void attributeAdded(HttpSessionBindingEvent arg0) {
System.out.println("新增屬性");
}
@Override
public void attributeRemoved(HttpSessionBindingEvent arg0) {
System.out.println("屬性移除");
}
@Override
public void attributeReplaced(HttpSessionBindingEvent arg0) {
System.out.println("修改屬性");
}
@Override
public void sessionCreated(HttpSessionEvent arg0) {
System.out.println("session創(chuàng)建");
}
@Override
public void sessionDestroyed(HttpSessionEvent arg0) {
System.out.println("session銷毀");
}
}
<listener>
<listener-class>com.shuai.listeners.MySessionListener</listener-class>
</listener>
全局改變session回收時間
web.xml中配置
<session-config>
<session-timeout>1</session-timeout>
</session-config>
案例
顯示當前登錄的用戶-并且可以踢出用戶
HTTPSession屬性監(jiān)聽器-當用戶登錄的時候把登錄信息保存到session中
session監(jiān)聽到屬性增加的時候层亿,把用戶信息保存到application中桦卒。
session監(jiān)聽到屬性移除的時候,把用戶信息從application中移除匿又。
一個servlet專門用來做用戶的顯示
做一個請求過濾器做權限控制方灾。
其它
訪問者ip
request.getRemoteHost()
session創(chuàng)建時間
session.getCreationTime()
session最后訪問時間
session.getLastAccessedTime()
最后編輯于 :
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者