最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java監(jiān)聽器的作用及用法代碼示例

 更新時間:2017年11月08日 16:59:42   作者:Chimomo  
這篇文章主要介紹了Java監(jiān)聽器的作用及用法代碼示例,具有一定參考價值,需要的朋友可以了解下。

監(jiān)聽器在JavaWeb開發(fā)中用得比較多

Java Web開發(fā)中的監(jiān)聽器(listener)就是application、session、request三個對象創(chuàng)建、銷毀或者往其中添加修改刪除屬性時自動執(zhí)行代碼的功能組件,如下所示:

①ServletContextListener:對Servlet上下文的創(chuàng)建和銷毀進行監(jiān)聽。
②ServletContextAttributeListener:監(jiān)聽Servlet上下文屬性的添加、刪除和替換。
③HttpSessionListener:對Session的創(chuàng)建和銷毀進行監(jiān)聽。

補充:session的銷毀有兩種情況:1). session超時(可以在web.xml中通過<session-config>/<session-timeout>標簽配置超時時間);2). 通過調(diào)用session對象的invalidate()方法使session失效。

④HttpSessionAttributeListener:對Session對象中屬性的添加、刪除和替換進行監(jiān)聽。
⑤ServletRequestListener:對請求對象的初始化和銷毀進行監(jiān)聽。
⑥ServletRequestAttributeListener:對請求對象屬性的添加、刪除和替換進行監(jiān)聽。

監(jiān)聽器常用的用途

它可以監(jiān)聽客戶端的請求、服務(wù)端的操作等。通過監(jiān)聽器,可以自動激發(fā)一些操作,比如監(jiān)聽在線的用戶的數(shù)量

通常使用Web監(jiān)聽器做以下的內(nèi)容:

  統(tǒng)計在線人數(shù),利用HttpSessionLisener

  加載初始化信息:利用ServletContextListener

  統(tǒng)計網(wǎng)站訪問量

  實現(xiàn)訪問監(jiān)控

有時候后臺需要統(tǒng)計最多在線人數(shù)以及當前在線人數(shù),這里通過監(jiān)聽器實現(xiàn)這一功能。

圖片僅供參考。。。

實例一

下面是一個統(tǒng)計網(wǎng)站最多在線人數(shù)監(jiān)聽器的例子

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.annotation.WebListener;
/**
 上下文監(jiān)聽器,在服務(wù)器啟動時初始化onLineCount和maxOnLineCount兩個變量
 并將其置于服務(wù)器上下文(ServletContext)中,其初始值都是0
*/
@WebListener
public class InitListener implements ServletContextListener {
 @Override
 public void contextDestroyed(ServletContextEvent evt) {
 }
 @Override
 public void contextInitialized(ServletContextEvent evt) {
  evt.getServletContext().setAttribute("onLineCount", 0);
  evt.getServletContext().setAttribute("maxOnLineCount", 0);
 }
}
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import javax.servlet.ServletContext;
import javax.servlet.annotation.WebListener;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
/**
 會話監(jiān)聽器,在用戶會話創(chuàng)建和銷毀的時候根據(jù)情況
 修改onLineCount和maxOnLineCount的值
*/
@WebListener
public class MaxCountListener implements HttpSessionListener {
 @Override
 public void sessionCreated(HttpSessionEvent event) {
  ServletContext ctx = event.getSession().getServletContext();
  int count = Integer.parseInt(ctx.getAttribute("onLineCount").toString());
  count++;
  ctx.setAttribute("onLineCount", count);
  int maxOnLineCount = Integer.parseInt(ctx.getAttribute("maxOnLineCount").toString());
  if (count > maxOnLineCount) {
   ctx.setAttribute("maxOnLineCount", count);
   DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
   ctx.setAttribute("date", df.format(new Date()));
  }
 }
 @Override
 public void sessionDestroyed(HttpSessionEvent event) {
  ServletContext app = event.getSession().getServletContext();
  int count = Integer.parseInt(app.getAttribute("onLineCount").toString());
  count--;
  app.setAttribute("onLineCount", count);
 }
}

說明:這里使用了Servlet 3規(guī)范中的@WebListener注解配置監(jiān)聽器,當然你可以在web.xml文件中用<listener>標簽配置監(jiān)聽器。

實例二

在JavaWeb應(yīng)用開發(fā)中,有時候我們需要統(tǒng)計當前在線的用戶數(shù),此時就可以使用監(jiān)聽器技術(shù)來實現(xiàn)這個功能了。

package me.gacl.web.listener;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
/**
* @ClassName: OnLineCountListener
* @Description: 統(tǒng)計當前在線用戶個數(shù)
* @author: 孤傲蒼狼
* @date: 2014-9-10 下午10:01:26
*
*/ 
public class OnLineCountListener implements HttpSessionListener {
 @Override
 public void sessionCreated(HttpSessionEvent se) {
  ServletContext context = se.getSession().getServletContext();
  Integer onLineCount = (Integer) context.getAttribute("onLineCount");
  if(onLineCount==null){
   context.setAttribute("onLineCount", 1);
  }else{
   onLineCount++;
   context.setAttribute("onLineCount", onLineCount);
  }
 }
 @Override
 public void sessionDestroyed(HttpSessionEvent se) {
  ServletContext context = se.getSession().getServletContext();
  Integer onLineCount = (Integer) context.getAttribute("onLineCount");
  if(onLineCount==null){
   context.setAttribute("onLineCount", 1);
  }else{
   onLineCount--;
   context.setAttribute("onLineCount", onLineCount);
  }
 }
}

總結(jié)

以上就是本文關(guān)于Java監(jiān)聽器的作用及用法代碼示例的全部內(nèi)容,希望對大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站:javaweb設(shè)計中filter粗粒度權(quán)限控制代碼示例、Javaweb項目session超時解決方案JavaWeb項目中dll文件動態(tài)加載方法解析(詳細步驟)等,如有不足之處,歡迎留言指出。感謝朋友們長久以來對本站的支持!

相關(guān)文章

  • jdk-logging?log4j?logback日志系統(tǒng)實現(xiàn)機制原理介紹

    jdk-logging?log4j?logback日志系統(tǒng)實現(xiàn)機制原理介紹

    這篇文章主要介紹了jdk-logging、log4j、logback日志介紹以及三個日志系統(tǒng)的實現(xiàn)機制,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-03-03
  • selenium+java破解極驗滑動驗證碼的示例代碼

    selenium+java破解極驗滑動驗證碼的示例代碼

    本篇文章主要介紹了selenium+java破解極驗滑動驗證碼的示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-01-01
  • Java日期時間使用方法匯總

    Java日期時間使用方法匯總

    這篇文章主要針對Java日期時間使用方法進行匯總,感興趣的朋友可以參考一下
    2016-03-03
  • 淺談Java HttpURLConnection請求方式

    淺談Java HttpURLConnection請求方式

    這篇文章主要介紹了淺談Java HttpURLConnection請求方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-08-08
  • MyBatis游標Cursor的正確使用和百萬數(shù)據(jù)傳輸?shù)膬?nèi)存測試

    MyBatis游標Cursor的正確使用和百萬數(shù)據(jù)傳輸?shù)膬?nèi)存測試

    這篇文章主要介紹了MyBatis游標Cursor的正確使用和百萬數(shù)據(jù)傳輸?shù)膬?nèi)存測試,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • 并發(fā)編程之Java內(nèi)存模型順序一致性

    并發(fā)編程之Java內(nèi)存模型順序一致性

    這篇文章主要介紹了并發(fā)編程Java內(nèi)存模型順序一致性,順序一致性內(nèi)存模型是一個理論參考模型,處理器的內(nèi)存模型和編程語言的內(nèi)存模型都會以順序一致性內(nèi)存模型作為參照,下面我們一起進入文章看看學(xué)校內(nèi)容,需要的朋友可以參考一下
    2021-11-11
  • Java 類在 Tomcat 中是如何加載的(過程分析)

    Java 類在 Tomcat 中是如何加載的(過程分析)

    這篇文章主要介紹了Java 類在 Tomcat 中是如何加載的過程分析,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-07-07
  • Mybatis如何自動生成數(shù)據(jù)庫表結(jié)構(gòu)總結(jié)

    Mybatis如何自動生成數(shù)據(jù)庫表結(jié)構(gòu)總結(jié)

    這篇文章主要給大家介紹了關(guān)于Mybatis如何自動生成數(shù)據(jù)庫表結(jié)構(gòu)的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者使用Mybatis具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-11-11
  • 基于JDK動態(tài)代理原理解析

    基于JDK動態(tài)代理原理解析

    這篇文章主要介紹了基于JDK動態(tài)代理原理解析,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • Java編寫網(wǎng)上超市購物結(jié)算功能程序

    Java編寫網(wǎng)上超市購物結(jié)算功能程序

    這篇文章主要為大家詳細介紹了Java編寫網(wǎng)上超市購物結(jié)算功能程序的具體代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-06-06

最新評論

阿坝县| 拉萨市| 邳州市| 凤城市| 双江| 秀山| 涞源县| 措美县| 吉木乃县| 安仁县| 八宿县| 霍林郭勒市| 宝鸡市| 南昌市| 开远市| 黄浦区| 青铜峡市| 嵊州市| 秦皇岛市| 平阳县| 和龙市| 无棣县| 罗源县| 泗阳县| 高邮市| 广灵县| 新闻| 巩留县| 平南县| 江安县| 西昌市| 信丰县| 新营市| 团风县| 莱西市| 宁国市| 遂溪县| 榆中县| 库尔勒市| 葫芦岛市| 古丈县|