日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Javaweb监听器(2)

發布時間:2025/4/16 java 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Javaweb监听器(2) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

屬性監聽器:ServletRequestAtttributeListener/HttpSeessionAttributeListener/ServletContextAttributeListener

這里可以直接拿HttpSeessionAttributeListener來示例

首先來寫一個實現他的接口類:

package comgqx.b_attr;import javax.servlet.http.HttpSession; import javax.servlet.http.HttpSessionAttributeListener; import javax.servlet.http.HttpSessionBindingEvent;public class MySesssionAttribute implements HttpSessionAttributeListener{//屬性添加@Overridepublic void attributeAdded(HttpSessionBindingEvent event) {// TODO Auto-generated method stub//首先要獲取sessionHttpSession session=event.getSession();//獲取添加的屬性Object object=session.getAttribute("name");System.out.println("添加的屬性是:"+object);}//屬性移除@Overridepublic void attributeRemoved(HttpSessionBindingEvent event) {// TODO Auto-generated method stubSystem.out.println("屬性移除了!");}//屬性被替換@Overridepublic void attributeReplaced(HttpSessionBindingEvent event) {// TODO Auto-generated method stub//獲取session對象HttpSession session=event.getSession();// 獲取替換之前的值Object oldObject=event.getValue();System.out.println("舊值:"+oldObject);//獲取新值Object object=session.getAttribute("name");System.out.println("新的sessiom值是:"+object);}}

 來寫一個jsp頁面,寫一句簡單的話

session.setAttribute("name", "gqxing");

配置到服務器上去(web.xml)

<!-- 屬性監聽器Session --><listener><listener-class>comgqx.b_attr.MySesssionAttribute</listener-class></listener>

訪問相關的jsp頁面可以看到如下結果:

然后我們在jsp去修改代碼如下:

    session.setAttribute("name", "gqxing"); //屬性移除session.removeAttribute("name");

清除緩存后,繼續去訪問,發現先關的語句被執行了。如下:

繼續去修改jsp頁面,如下,來些事替換session中的相關值

<% session.setAttribute("name", "gqxing"); //屬性移除//session.removeAttribute("name");//屬性替換session.setAttribute("name", "test");%>

清除緩存,繼續訪問,就會看到替換的語句,這里要注意的是,我們不經在HttpSessionAttributeListener的實現類的attributeReplaced()方法中得到新的值,還可以通過getValue()方法得到被替換的舊值,如下:


?

?HttpSessionBindingListener:監聽對象綁定、解除綁定到session上的事件

步驟:

  對象實現此接口,在把對象綁定、解除綁定帶session上就會自動觸發監聽代碼。

示例代碼:

package comgqx.b_attr;import javax.servlet.http.HttpSession; import javax.servlet.http.HttpSessionAttributeListener; import javax.servlet.http.HttpSessionBindingEvent;public class MySesssionAttribute implements HttpSessionAttributeListener{//屬性添加@Overridepublic void attributeAdded(HttpSessionBindingEvent event) {// TODO Auto-generated method stub//首先要獲取sessionHttpSession session=event.getSession();//獲取添加的屬性Object object=session.getAttribute("name");System.out.println("添加的屬性是:"+object);}//屬性移除@Overridepublic void attributeRemoved(HttpSessionBindingEvent event) {// TODO Auto-generated method stubSystem.out.println("屬性移除了!");}//屬性被替換@Overridepublic void attributeReplaced(HttpSessionBindingEvent event) {// TODO Auto-generated method stub//獲取session對象HttpSession session=event.getSession();// 獲取替換之前的值Object oldObject=event.getValue();System.out.println("舊值:"+oldObject);//獲取新值Object object=session.getAttribute("name");System.out.println("新的sessiom值是:"+object);}}

在jsp頁面寫入如下代碼:

session.setAttribute("admin", new Admin()); session.removeAttribute("admin");

然后去訪問,會看到控制臺的看到如下的結果(有時候沒有清楚緩存,在測試這個的時候會發現一些語句會重復,如若是第一次訪問是去創建Admin對象,沒有加入清除對象的語句,第二次加入清除對象的語句,再去訪問,會看到兩句“Admin對象已經從session中移除了!”的語句)

?

?應用舉例:可以作為上線提醒,比如qq,當一個好友上線的時候,系統會提示你的好友“****”上線了

HttpSessionBindingListener和前面的聲明周期屬性的監聽器的區別是:

  不用再web.xml上配置,因為監聽的對象是自己創建的對象,不是服務器創建的對象。

?

  

轉載于:https://www.cnblogs.com/helloworldcode/p/6116881.html

總結

以上是生活随笔為你收集整理的Javaweb监听器(2)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。