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

JavaWeb的監(jiān)聽器和過(guò)濾器你了解嗎

 更新時(shí)間:2022年02月28日 16:28:56   作者:做最幸福的  
這篇文章主要為大家詳細(xì)介紹了JavaWeb的監(jiān)聽器和過(guò)濾器,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助

1.監(jiān)聽器---->Context,Session

what is listener?

監(jiān)聽器是一個(gè)接口內(nèi)容由我們實(shí)現(xiàn),會(huì)在特定時(shí)間被調(diào)用,監(jiān)聽器用于監(jiān)聽web應(yīng)用中三大域?qū)ο?request,session,application),信息的創(chuàng)建,銷毀,增加,修改,刪除等動(dòng)作的發(fā)生,然后做出相應(yīng)的響應(yīng)處理。當(dāng)范圍對(duì)象的狀態(tài)發(fā)生變化的時(shí)候,服務(wù)器自動(dòng)調(diào)用監(jiān)聽器對(duì)象中的方法。常用于統(tǒng)計(jì)在線人數(shù)和在線用戶,系統(tǒng)加載時(shí)進(jìn)行信息初始化,統(tǒng)計(jì)網(wǎng)站的訪問量等。

ContextListener通過(guò)實(shí)現(xiàn)ServletContextListener來(lái)進(jìn)行全局監(jiān)聽

ContextListener可以通過(guò)記錄用戶訪問網(wǎng)站的次數(shù)思路:用戶通過(guò)訪問index.jsp,來(lái)獲取存放在監(jiān)聽器中的hashmap< String,Integer>,然后在index.jsp中進(jìn)行判斷。

ContextListener的代碼思路如下:

public class ContextListener1 implements ServletContextListener {
    @Override
    public void contextInitialized(ServletContextEvent servletContextEvent) {
        System.out.println("init");
        //創(chuàng)建map集合
        Map<String, Integer> map = new HashMap<String, Integer>();
        //    獲取全局對(duì)象
        ServletContext context = servletContextEvent.getServletContext();
        context.setAttribute("map", map);
        System.out.println(map.isEmpty());
        System.out.println(map);
    }
    @Override
    public void contextDestroyed(ServletContextEvent servletContextEvent) {
        System.out.println("destory");
    }
}

index.jsp的代碼思路如下:

<%
    //獲取用戶ip地址
    String ServerName = request.getServerName();
    //獲取全局對(duì)象
    Map<String, Integer> map = (Map<String, Integer>) application.getAttribute("map");
    if (map.containsKey(ServerName)) {
        map.put(ServerName, map.get(ServerName) + 1);
    } else {
        map.put(ServerName, 1);
    }
    int count = map.get(ServerName);
    int size = map.size();
%>
<h4>ip地址是:<%=ServerName%>,您是第<%=count%>位訪問的用戶,當(dāng)前服務(wù)器共被<%=size%>個(gè)用戶訪問過(guò)</h4>

2.監(jiān)聽器三大作用域

在這里插入圖片描述

在這里插入圖片描述

3.屬性監(jiān)聽器

屬性監(jiān)聽器主要監(jiān)聽屬性值的變化,例如request.setAttribute()等這些數(shù)據(jù)的變化。

package listener;
import javax.servlet.*;
import javax.servlet.http.HttpSessionAttributeListener;
import javax.servlet.http.HttpSessionBindingEvent;
/**
 * @author wjs
 * @create 2022-02-27 15:09
 */
public class AttrListener implements ServletContextAttributeListener, ServletRequestAttributeListener, HttpSessionAttributeListener {
    @Override
    public void attributeAdded(ServletContextAttributeEvent servletContextAttributeEvent) {
    //    向全局作用域中添加值的監(jiān)聽器
    }
    @Override
    public void attributeRemoved(ServletContextAttributeEvent servletContextAttributeEvent) {
    //    向全局作用域刪除值的監(jiān)聽器
    }
    @Override
    public void attributeReplaced(ServletContextAttributeEvent servletContextAttributeEvent) {
    //    向全局域?qū)ο笮薷闹档谋O(jiān)聽器
    }
    @Override
    public void attributeAdded(ServletRequestAttributeEvent servletRequestAttributeEvent) {
    //    向request域中添加值的監(jiān)聽器
    }
    @Override
    public void attributeRemoved(ServletRequestAttributeEvent servletRequestAttributeEvent) {
    //    向request域中刪除值的監(jiān)聽器
    }
    @Override
    public void attributeReplaced(ServletRequestAttributeEvent servletRequestAttributeEvent) {
    //    向request域中修改值的監(jiān)聽器
    }
    @Override
    public void attributeAdded(HttpSessionBindingEvent httpSessionBindingEvent) {
    //    向session域中添加值的監(jiān)聽器
    }
    @Override
    public void attributeRemoved(HttpSessionBindingEvent httpSessionBindingEvent) {
    //    向session域中刪除值的監(jiān)聽器
    }
    @Override
    public void attributeReplaced(HttpSessionBindingEvent httpSessionBindingEvent) {
    //    向session域中修改值的監(jiān)聽器
    }
}

4.過(guò)濾器

在這里插入圖片描述

4.1過(guò)濾器的使用

1.編寫java	類實(shí)現(xiàn)Filter接口
2.重寫doFilter()方法
3.設(shè)置攔截的url

4.2過(guò)濾器的攔截路徑

/*:根目錄下所有請(qǐng)求都攔截

/*.do:所有帶.do的請(qǐng)求都攔截

/*.jsp

4.3過(guò)濾器的攔截順序

過(guò)濾器的攔截順序,取決于在配置文件web.xml的先后順序

4.4過(guò)濾器的四種攔截方式

在這里插入圖片描述
在這里插入圖片描述

總結(jié)

本篇文章就到這里了,希望能夠給你帶來(lái)幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容! 

相關(guān)文章

  • java web學(xué)習(xí)_淺談request對(duì)象中g(shù)et和post的差異

    java web學(xué)習(xí)_淺談request對(duì)象中g(shù)et和post的差異

    下面小編就為大家?guī)?lái)一篇java web學(xué)習(xí)_淺談request對(duì)象中g(shù)et和post的差異。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-05-05
  • SpringBoot實(shí)現(xiàn)前后端、json數(shù)據(jù)交互以及Controller接收參數(shù)的幾種常用方式

    SpringBoot實(shí)現(xiàn)前后端、json數(shù)據(jù)交互以及Controller接收參數(shù)的幾種常用方式

    這篇文章主要給大家介紹了關(guān)于SpringBoot實(shí)現(xiàn)前后端、json數(shù)據(jù)交互以及Controller接收參數(shù)的幾種常用方式,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2022-03-03
  • Spring OAuth2.0 單元測(cè)試解決方案

    Spring OAuth2.0 單元測(cè)試解決方案

    這篇文章主要介紹了Spring OAuth2.0 單元測(cè)試解決方案,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10
  • Java高級(jí)之虛擬機(jī)加載機(jī)制的實(shí)例講解

    Java高級(jí)之虛擬機(jī)加載機(jī)制的實(shí)例講解

    下面小編就為大家分享一篇Java高級(jí)之虛擬機(jī)加載機(jī)制的實(shí)例講解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2017-12-12
  • 一文學(xué)習(xí)Java NIO的ByteBuffer工作原理

    一文學(xué)習(xí)Java NIO的ByteBuffer工作原理

    很多網(wǎng)友說(shuō)JDK又在寫B(tài)ug!下面通過(guò)通過(guò)本文學(xué)習(xí)下為何Java NIO的ByteBuffer這么垃圾,涉及到ByteBuf API 的優(yōu)點(diǎn)及工作原理解析,感興趣的朋友跟隨小編一起看看吧
    2021-05-05
  • Java中Volatile關(guān)鍵字詳解及代碼示例

    Java中Volatile關(guān)鍵字詳解及代碼示例

    這篇文章主要介紹了Java中Volatile關(guān)鍵字詳解及代碼示例,分為兩個(gè)部分,第一部分介紹了Volatile關(guān)鍵字的基本概念等內(nèi)容,第二部分分享了實(shí)例代碼,具有一定參考價(jià)值,需要的朋友可以了解下。
    2017-11-11
  • SpringBoot使用@Value實(shí)現(xiàn)給靜態(tài)變量注入值

    SpringBoot使用@Value實(shí)現(xiàn)給靜態(tài)變量注入值

    這篇文章主要介紹了SpringBoot使用@Value實(shí)現(xiàn)給靜態(tài)變量注入值的方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • JAVA多線程線程安全性基礎(chǔ)

    JAVA多線程線程安全性基礎(chǔ)

    這篇文章主要介紹了如何測(cè)試Java類的線程安全性,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2021-08-08
  • 通過(guò)Java來(lái)測(cè)試JSON和Protocol Buffer的傳輸文件大小

    通過(guò)Java來(lái)測(cè)試JSON和Protocol Buffer的傳輸文件大小

    這篇文章主要介紹了通過(guò)Java來(lái)測(cè)試JSON和Protocol Buffer的傳輸文件大小,Protocol Buffer(文中簡(jiǎn)稱Protobuffer)是谷歌開發(fā)的新的文件傳輸格式,需要的朋友可以參考下
    2015-12-12
  • MyBatis中Mapper的注入問題詳解

    MyBatis中Mapper的注入問題詳解

    這篇文章主要介紹了MyBatis中Mapper的注入問題,我知道在 SpringBoot 體系中,MyBatis 對(duì) Mapper 的注入常見的方式有 2 種,具體哪兩種方法跟隨小編一起看看吧
    2021-09-09

最新評(píng)論