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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java怎么监听多个组件,java web(五):java web三大组件之另外两个和八大监听器

發布時間:2025/4/16 编程问答 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java怎么监听多个组件,java web(五):java web三大组件之另外两个和八大监听器 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

java的三大組件指Servlet、Filter、Listener。八大監聽器指八個接口。前面介紹了Servlet,現在介紹一下Filter攔截器以及攔截地址的設置,

Listener監聽那些事件。

java web的cookie和session機制有篇博客講的很好,有興趣的博友可以去看看。地址:https://www.cnblogs.com/whgk/p/6422391.html

一:Filter

1.基本概念

Filter稱之為過濾器,是用來做一些攔截的任務, 在Servlet接受請求之前,做一些事情,如果不滿足限定,可以拒絕進入Servlet。

一個web項目中可以配置多個filter過濾器,瀏覽器訪問靜態資源如html、jsp、css或者訪問動態資源servlet都會經過filter過濾器,滿足條件,過濾器放行,否則直接返回。

2.使用

filter有很多用處,網上一搜,在filter層,來獲取用戶的身份,可以考慮在filter層做一些常規的校驗(如參數校驗,referer校驗等),可以在filter層做

穩定性相關的工作(如全鏈路打點,可以在filter層分配一個traceId;也可以在這一層做限流等)。我最常見的是spring中的編碼過濾器。我們通過編碼過濾器認識filter。

代碼:

package com.briup.servlet.filter;

import java.io.IOException;

import javax.servlet.Filter;

import javax.servlet.FilterChain;

import javax.servlet.FilterConfig;

import javax.servlet.ServletException;

import javax.servlet.ServletRequest;

import javax.servlet.ServletResponse;

/**

* Servlet Filter implementation class EncodingFilter

* 編碼過濾器

*/

public class EncodingFilter implements Filter {

private String encoding;

public EncodingFilter() {}

public void destroy() {}

public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)

throws IOException, ServletException {

//設置編碼格式【只對post方式有效】;

request.setCharacterEncoding(encoding);

response.setCharacterEncoding(encoding);

//放行;

chain.doFilter(request, response);

System.out.println("servlet執行完畢,返回到filter");

}

public void init(FilterConfig fConfig) throws ServletException {

//我們把編碼設置在web.xml中,如果需要改編碼在配置文件中更改而不需要更改代碼

encoding = fConfig.getInitParameter("encoding");

}

}

web.xml:

EncodingFilter

EncodingFilter

com.briup.servlet.filter.EncodingFilter

encoding

utf-8

EncodingFilter

/*

訪問:http://127.0.0.1:7778/StudyServlet/HelloWorld或者http://127.0.0.1:7778/StudyServlet/success.html,控制臺都會輸出一句:"servlet執行完畢,返回到filter"。

3.攔截地址的配置

filter我主要想說的就是攔截地址如何配置了。

第一種 【匹配任意】

/*

第二種 【精確匹配】

/test_servlet

表示此攔截器只會攔截/test_servlet這一個路徑

第三種 【擴展名匹配】

*.html

表示此攔截器只會攔截后綴名是.html的路徑

第四種 【路徑匹配】

/test/*

表示此攔截器攔截/test路徑下的所有資源

注意:服務器內部跳轉不會攔截,只會攔截瀏覽器發送的地址。

二:監聽器

Servlet監聽器的作用是監聽Web容器的有效期事件,可以監聽由于Web應用中狀態改變而引起的Servlet容器產生的相應事件,然后接受并處理這些事件。

下面簡單介紹這8個接口和其中的方法。

監聽ServletContent(應用上下文)

1.ServletContentListener接口

Servlet的上下文監聽,它主要實現監聽ServletContext的創建和刪除

(1)contextInitialized(ServletContextEvent event); //通知正在收聽的對象,應用程序已經被加載和初始化。

(2)contextDestroyed(ServletCotextEvent event);? // 通知正在收聽的對象,應用程序已經被載出,即關閉。

2.ServletContextAttributeListener接口

應用上下文存、移除、更改數據進行監聽。

(1)attributeAdded(ServletContextAttributeEvent event); //應用上下文存數據的時候觸發【調用setAttribute方法】

(2)attributeRemoved(ServletContextAttributeEvent event); //ServletContent對象調用removeAttribute方法觸發。

(3)attributeReplaced(ServletContextAttributeEvent event);? //當存數據的時候,key值已經存在,value值被替換的時候觸發。

監聽session接口

3.HttpSessionListener接口

(1)sessionCreated(HttpSessionEvent even); //session被創建的時候觸發。

(2)sessionDestroyed(HttpSessionEvent event); //session過期失效觸發

4.HttpSessionAttributeListener

用法和ServletContextAttributeListener接口類似。

監聽request接口

5.ServletRequestListener

6.ServletRequestAttributeListener

用法和上面類似。

7.HttpSessionActivationListener;

該接口實現監聽HTTP會話active和passivate。

(1)attributeAdded(HttpSessionBindingEvent event); // 當有對象加入session的范圍時,通知正在收聽的對象

(2)attributeReplaced(HttpSessionBindingEvent event); //當在session的范圍有對象取代另一個對象時,通知正在收聽的對象。

(3)attributeRemoved(HttpSessionBindingEvent event);? //當有對象從session的范圍有對象取代另一個對象時,通知正在收聽的對象 。

其中HttpSessionBindingEvent類主要有三個方法:getName()、getSession()和getValue()

8.HttpBindingListener;

接口實現監聽HTTP會話中對象的綁定信息。

(1)alueBound(HttpSessionBindingEvent event);?? //當有對象加入session的范圍時會被自動調用

(2)valueUnBound(HttpSessionBindingEvent event);? //當有對象從session的范圍內移除時會被自動調用

注:本文一部分是參考網上資料的。

java基礎 五 java注釋 關鍵字 標識符

一:java有三大注釋: 1:當行注釋: 使用://開始進行注釋. 2:多行注釋: /**/? 在/*和*/之間的內容 會被編譯器忽略. 3:文檔注釋: /***/? /**注釋信息*/和多行注釋是一 ...

Java基礎(五)-Java序列化與反序列化

.output_wrapper pre code { font-family: Consolas, Inconsolata, Courier, monospace; display: block !i ...

java web 三大組件

JavaWeb三大組件 Servlet,Filter,Listener. Servlet Servlet的作用 在Java web b/s架構中,servlet扮演了重要的角色,作為一個中轉處理的容器 ...

java Web三大組件--過濾器

參考博客:http://www.cnblogs.com/coderland/p/5902878.html https://www.cnblogs.com/HigginCui/p/5772514.htm ...

JAVA首選五款開源Web開發框架

Spring Spring是一個開源的Java/Java EE全功能棧應用程序框架,在JavaEE社區中非常受歡迎,以Apache許可證形式發布,也有.NET平臺上的移植版本. Struts2 Str ...

Java Web(五) JSP詳解(四大作用域九大內置對象等)

前面講解了Servlet,了解了Servlet的繼承結構,生命周期等,并且在其中的ServletConfig和ServletContext對象有了一些比較詳細的了解,但是我們會發現在Servlet中編 ...

Java Web之Servlet的三大作用域對象

Servlet的作用域是干嘛的?答案就是共享數據而存在的,如圖: 下面通過代碼演示來具體講解一下三大作用域 我們新建兩個類 package main.com.vae.scope; import jav ...

用 Java 技術創建 RESTful Web 服務--轉載

簡介 JAX-RS (JSR-311) 是為 Java EE 環境下的 RESTful 服務能力提供的一種規范.它能提供對傳統的基于 SOAP 的 Web 服務的一種可行替代. 在本文中,了解 JAX ...

Java和PHP在Web開發方面的比較

比較 PHP和JSP這兩個Web開發技術,在目前的情況是其實是比較PHP和Java的Web開發.以下是我就幾個主要方面進行的比較: 一. 語言比較 PHP是解釋執行的服務器腳本語言,首先php有簡單容 ...

隨機推薦

完美解決,瀏覽器下拉顯示網址問題 | 完美解決,使用原生 scroll 寫下拉刷新

在 web 開發過程中我們經常遇到,不想讓用戶下拉看到我的地址,也有時候在 div 中沒有慣性滾動,就此也出了 iScroll 這種關于滾動條的框架,但是就為了一個體驗去使用一個框架好像又不值得,今天 ...

iOS進階篇索引,標記和自定義的table

一.帶索引目錄的表視圖 ①效果圖 圖1 帶索引的列表 ② 數據源 本想獲取通訊錄中得名字,但為了用模擬器調試方便,就寫死了數據,所以也只寫了部分字母,總之有那么點意思就成 @interface Vie ...

zabbix監控模式、分布式、自動化

適用場景: 1.監控主機多,性能瓶頸 2.多機房,防火墻 zabbix監控模式 針對agent來說 - 被動模式 - 主動模式(主動匯報服務端) 1)當監控主機超過300臺,建議使用主動模式 2)當隊 ...

整除的尾數[HDU2099]

整除的尾數 Time Limit: 1000/1000 MS (Java/Others)????Memory Limit: 32768/32768 K (Java/Others)Total Submi ...

Web版RSS閱讀器(二)——使用dTree樹形加載rss訂閱分組列表

在上一邊博客中已經講過如何讀取rss訂閱文件了.這次就把訂閱的文件讀取到頁面上,使用樹形結構進行加載顯示. 不打算使用 ...

poj 2828 線段樹

http://poj.org/problem?id=2828 學到的思維: 1.變化的或者后來的優先影響前面的,那么從最后一個往前看,最后一個就成了 確定的, 而且后來的也能夠確定----假設從前往后 ...

雜記-python

1.在cmd輸入python -V顯示當前python的版本信息,一定是大寫的V 2.輸入python,進入python解釋器里面 3.在解釋器中,輸入exit()或者quit()會退出,一定要加括號 ...

linux 時間和時區設置

在linux中與時間相關的文件有 /etc/localtime /etc/timezone 其中,/etc/localtime是用來描述本機時間,而 /etc/timezone是用來描述本機所屬的時區 ...

Spring的IOC/DI使用到的技術

一.了解Spring IOC/DI 1:Spring有兩大核心技術,控制反轉(Inversion of Control, IOC)/依賴注入(Dependency Injection,DI)和面向切面 ...

總結

以上是生活随笔為你收集整理的java怎么监听多个组件,java web(五):java web三大组件之另外两个和八大监听器的全部內容,希望文章能夠幫你解決所遇到的問題。

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