欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

servlet監(jiān)聽器的學習使用(三)

 更新時間:2017年09月30日 17:15:32   作者:柳暗花明睡一覺  
這篇文章主要為大家詳細介紹了servlet監(jiān)聽器學習使用的相關資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文為大家分享了servlet監(jiān)聽器的具體學習內容,供大家參考,具體內容如下

1.什么是servlet監(jiān)聽器?

  servlet監(jiān)聽器也叫web監(jiān)聽器。是servlet中一種特殊類。能夠幫助開發(fā)者監(jiān)聽web應用中的特定事件。比如ServletContext,ServletSession,ServletRequest的創(chuàng)建和銷毀,變量的創(chuàng)建和銷毀等。

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

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

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

  加載初始化信息:利用ServletContextListener

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

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

3.監(jiān)聽器的分類

  根據(jù)servlet對象可以將監(jiān)聽器劃分為三種:ServletContext,ServletSession,ServletRequest。

4監(jiān)聽器的應用

4.1 ServletContex :對應監(jiān)控application內置對象的創(chuàng)建和銷毀。

  當web容器開啟時,執(zhí)行contextInitialized方法;當容器關閉或重啟時,執(zhí)行contextDestroyed方法。

實現(xiàn)方式:直接實現(xiàn)ServletContextListener接口

package com.learn;

import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import java.io.*;

/**
 * Created by Administrator on 2017/09/23.
 */
public class MyServletContextListener implements ServletContextListener {
 @Override
 public void contextInitialized(ServletContextEvent sce) {

  System.out.println("Webapp initital.......");
  ServletContext servletContext = sce.getServletContext();
  InputStreamReader inputStreamReader = new InputStreamReader(servletContext.getResourceAsStream("/count/count.txt"));
  BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
  try {
   int icount = Integer.parseInt(bufferedReader.readLine());
   icount++;
   servletContext.setAttribute("count",icount);
   System.out.println("Webapp initital success");
  } catch (IOException e) {
   e.printStackTrace();
  }

 }

 @Override
 public void contextDestroyed(ServletContextEvent sce) {

  System.out.println("webApp destroyed ........");
  ServletContext servletContext = sce.getServletContext();

  Integer count = (Integer) servletContext.getAttribute("count");
  if(count != null){
   count ++;
   String filePath = servletContext.getRealPath("/count");
   filePath = filePath+"/count.txt";
   try {
    PrintWriter printWriter = new PrintWriter(filePath);
    printWriter.write(count);
    printWriter.close();
    System.out.println("webApp desdroyed success ");
   } catch (FileNotFoundException e) {
    e.printStackTrace();
   }
  }
 }
}

4.2HttpSession監(jiān)控:對應監(jiān)控session內置對象的創(chuàng)建和銷毀。

當打開一個新的頁面時,開啟一個session會話,執(zhí)行sessionCreated方法;當頁面關閉session過期時,或者容器關閉銷毀時,執(zhí)行sessionDestroyed方法。

實現(xiàn)方式:直接實現(xiàn)HttpSessionListener接口:

package com.learn;

import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;

/**
 * Created by Administrator on 2017/09/23.
 */
public class MySessionListener implements HttpSessionListener{
 @Override
 public void sessionCreated(HttpSessionEvent se) {

  HttpSession session = se.getSession();
  System.out.println("新建session,sessionId:"+session.getId());

 }

 @Override
 public void sessionDestroyed(HttpSessionEvent se) {
  HttpSession session = se.getSession();
  System.out.println("銷毀session,sessionId:"+session.getId());
 }
}

4.3ServletRequest監(jiān)控:對應監(jiān)控request內置對象的創(chuàng)建和銷毀。

當訪問某個頁面時,出發(fā)一個request請求,執(zhí)行requestInitialized方法;當頁面關閉時,執(zhí)行requestDestroyed方法。

實現(xiàn)方式,直接實現(xiàn)ServletRequestListener接口:

package com.learn;

import javax.servlet.ServletRequestEvent;
import javax.servlet.ServletRequestListener;
import javax.servlet.http.HttpServletRequest;

/**
 * Created by Administrator on 2017/09/23.
 */
public class MyRequestListener implements ServletRequestListener {
 @Override
 public void requestDestroyed(ServletRequestEvent sre) {


  HttpServletRequest request = (HttpServletRequest) sre.getServletRequest();
  Long date = System.currentTimeMillis()-(Long) (request.getAttribute("dateCreated"));
  System.out.println("消耗時間:"+date);
 }

 @Override
 public void requestInitialized(ServletRequestEvent sre) {
  HttpServletRequest request = (HttpServletRequest) sre.getServletRequest();
  String uri = request.getRequestURI();
  uri = request.getQueryString() == null ? uri : (uri + "?" + request.getQueryString());

  request.setAttribute("dateCreated", System.currentTimeMillis());
  System.out.println("IP:"+request.getRemoteAddr()+"URI:"+uri);

 }
}

5監(jiān)聽器web.xml的配置

<listener>
  <listener-class>com.learn.MyServletContextListener</listener-class>
</listener>

<listener>
  <listener-class>com.learn.MySessionListener</listener-class>
</listener>

<listener>
 <listener-class>com.learn.MyRequestListener</listener-class>
</listener>

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • maven?setting.xml文件配置禪定之旅

    maven?setting.xml文件配置禪定之旅

    這篇文章主要為大家介紹了maven?setting.xml文件禪定之旅,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-05-05
  • Java+opencv3.2.0之scharr濾波器

    Java+opencv3.2.0之scharr濾波器

    這篇文章主要為大家詳細介紹了Java+opencv3.2.0之scharr濾波器的相關資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-02-02
  • Java中的this、super、final關鍵字詳解

    Java中的this、super、final關鍵字詳解

    這篇文章主要介紹了Java中的this、super、final關鍵字詳解,它在方法內部使用,表示這個方法所屬對象的引用,它在構造器內部使用,表示該構造器正在初始化的對象,this 可以調用類的屬性、方法和構造器,需要的朋友可以參考下
    2023-09-09
  • Springboot整合Swagger2和Swagger3全過程

    Springboot整合Swagger2和Swagger3全過程

    這篇文章主要介紹了Springboot整合Swagger2和Swagger3全過程,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • Java魔法值處理的四種方式

    Java魔法值處理的四種方式

    這篇文章主要介紹了Java魔法值處理的四種方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • 如何將JSON字符串數(shù)組轉對象集合

    如何將JSON字符串數(shù)組轉對象集合

    這篇文章主要介紹了如何將JSON字符串數(shù)組轉對象集合,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • SpringBoot+easypoi實現(xiàn)數(shù)據(jù)的Excel導出

    SpringBoot+easypoi實現(xiàn)數(shù)據(jù)的Excel導出

    這篇文章主要為大家詳細介紹了SpringBoot+easypoi實現(xiàn)數(shù)據(jù)的Excel導出,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-05-05
  • 利用Java實現(xiàn)在PDF中添加工具提示

    利用Java實現(xiàn)在PDF中添加工具提示

    這篇文章主要介紹了如何通過Java在PDF中添加工具提示,文中的示例代碼講解詳細,對我們學習或工作有一定的參考價值,感興趣的可以學習一下
    2022-01-01
  • java 格式化輸出數(shù)字的方法

    java 格式化輸出數(shù)字的方法

    在實際工作中,常常需要設定數(shù)字的輸出格式,如以百分比的形式輸出,或者設定小數(shù)位數(shù)等,現(xiàn)稍微總結如下
    2014-01-01
  • Java實現(xiàn)的百度語音識別功能示例

    Java實現(xiàn)的百度語音識別功能示例

    這篇文章主要介紹了Java實現(xiàn)的百度語音識別功能,較為簡明扼要的分析了Java調用百度語音接口相關操作步驟,并給出了具體的語音識別用法代碼示例,需要的朋友可以參考下
    2018-08-08

最新評論