91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

javaweb之Filter生命周期和FilterConfig

發布時間:2020-06-12 21:56:59 來源:網絡 閱讀:201 作者:凱哥Java 欄目:編程語言

Filter聲明周期和FilterConfig

我們前面學習過Servlet的生命周期,同樣FilterConfig的生命周期也差不多。這篇來學習Filter的生命周期和FilterConfig這兩個知識點。


Filter的生命周期


我們先來復習下Servler的生命周期:實例化->初始化-> 服務->銷毀

Servlet是這樣,只有在第一次訪問該servlet的時候,才會進行實例化,然后初始化,然后執行service方法中的代碼,最后app卸載或者tomcat服務關機,才會銷毀。


Filter的生命周期有點類似:

??服務器啟動,會創建Filter對象,并調用init方法,只調用一次。

??當訪問資源時,路徑與Filter的攔截路徑匹配,會執行Filter中的doFilter方法,這個方法時真正攔截操作的方法。

??當服務器關閉,會調用Filter的destory方法進行銷毀操作。


這里我們來代碼練習一下,利用前面這個MyFilter.java來修改下代碼。

package?com.kaigejava.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;


public?class?MyFilter?implements?Filter {

????public?MyFilter() {

????????System.out.println("MyFilter對象實例化了");

????}

????

????@Override

????public?void?destroy() {

????????System.out.println("MyFilter對象銷毀了");

????}


????@Override

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

????????????throws?IOException,?ServletException?{

????????System.out.println("doFilter執行了攔截");

????????//?放行

????????chain.doFilter(request,?response);

????}


????@Override

????public?void?init(FilterConfig?filterConfig)?throws?ServletException?{

????????System.out.println("MyFilter對象初始化了");

????}

}



重新部署下Tomcat,看看控制臺這幾句話是否打印出來。

1.%2?先看看啟動Tomcat的時候實例化和初始化是否執行

javaweb之Filter生命周期和FilterConfig

2.%2?執行攔截操作

我們訪問一下/servletDemo1,應該會執行攔截,打印消息

javaweb之Filter生命周期和FilterConfig

這里的doFilter方法,訪問一次servlet就好執行一次doFilter中代碼。

3.%2?關閉tomcat服務器,執行銷毀方法

在Servers Tab,右鍵Tomcat服務器,點擊stop,相當于關閉tomcat服務器。

javaweb之Filter生命周期和FilterConfig


2.FilterConfig

在Filter生命周期方法中init()方法有一個參數就是FilterConfig,我們來學習下這個對象的功能的基本使用。

javaweb之Filter生命周期和FilterConfig

FilterConfig它時Filter的配置對象,它可以完成下列功能

??獲取Filter名稱

??獲取Filter初始化參數

??獲取ServletContext對象

下面我們來代碼演示下第二個獲取初始化參數的功能。

這里新建一個FilterConfigTest.java,也需要實現Filter接口。

先在web.xml中配置一下Filter和初始化參數。

<filter>

?????<filter-name>FilterConfigTest</filter-name>

?????<filter-class>com.anthony.filter.FilterConfigTest</filter-class>

?????<init-param>

?????????<param-name>encoding</param-name>

?????????<param-value>UTF-8</param-value>

?????</init-param>

?</filter>

?

?<filter-mapping>

?????<filter-name>FilterConfigTest</filter-name>

?????<url-pattern>/*</url-pattern>

?</filter-mapping>


在原有基礎上加上上面配置,保存web.xml文件,然后在FilterConfigTest.java寫入如下代碼。

package?com.anthony.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;


public?class?FilterConfigTest?implements?Filter {

????

????private?FilterConfig?filterConfig;


????@Override

????public?void?init(FilterConfig?filterConfig)?throws?ServletException?{

????????this.filterConfig?=?filterConfig;

????}

????

????@Override

????public?void?destroy() {

????????

????}


????@Override

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

????????????throws?IOException,?ServletException?{

????????String?encoding?=?filterConfig.getInitParameter("encoding");

????????System.out.println(encoding);

????????

????????chain.doFilter(request,?response);

????}


}


在瀏覽器刷新之后訪問

控制臺是可以打印UTF-8這個值。


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

珲春市| 磐石市| 措勤县| 洱源县| 阜阳市| 永泰县| 临夏县| 建平县| 乌拉特后旗| 忻城县| 巫溪县| 吉林省| 宜州市| 大邑县| 东乌珠穆沁旗| 东乡族自治县| 罗定市| 丰原市| 阳原县| 宁津县| 德格县| 隆尧县| 湖州市| 桑植县| 郑州市| 高密市| 嵊州市| 临海市| 蛟河市| 图木舒克市| 长顺县| 德化县| 阜宁县| 芒康县| 上饶县| 中阳县| 中江县| 谢通门县| 张家港市| 威海市| 永城市|