Java Web 之Filter

一俭正、JSP是什么

JSP全稱是Java Server Pages,它和servle技術(shù)一樣移怯,都是SUN公司定義的一種用于開(kāi)發(fā)動(dòng)態(tài)web資源的技術(shù)

JSP這門(mén)技術(shù)的最大的特點(diǎn)在于琉闪,寫(xiě)jsp就像在寫(xiě)html,但它相比html而言删窒,html只能為用戶提供靜態(tài)數(shù)據(jù)裂垦,而Jsp技術(shù)允許在頁(yè)面中嵌套java代碼,為用戶提供動(dòng)態(tài)數(shù)據(jù)肌索。

二蕉拢、關(guān)于Filter

1、什么是Filter

它使用戶可以改變一個(gè) request和修改一個(gè)response. Filter 不是一個(gè)servlet,它不能產(chǎn)生一個(gè)response,它能夠在一個(gè)request到達(dá)servlet之前預(yù)處理request,也可以在離開(kāi) servlet時(shí)處理response诚亚。

一個(gè)Filter包括:

1)晕换、在servlet被調(diào)用之前截獲;

2)、在servlet被調(diào)用之前檢查servlet request;

3)站宗、根據(jù)需要修改request頭和request數(shù)據(jù);

2闸准、如何借助Filter實(shí)現(xiàn)攔截功能

編寫(xiě)java類實(shí)現(xiàn)Filter接口,并實(shí)現(xiàn)其doFilter方法梢灭。

在web.xml文件中對(duì)編寫(xiě)的filter類進(jìn)行注冊(cè)夷家,并設(shè)置它所能攔截的資源

Filter接口的doFilter方法,當(dāng)開(kāi)發(fā)人員編寫(xiě)好Filter敏释,并配置對(duì)哪個(gè)web資源進(jìn)行攔截后瘾英,Web服務(wù)器每次在調(diào)用web資源的service方法之前,都會(huì)先調(diào)用一下filter的doFilter方法

3颂暇、web.xml配置各節(jié)點(diǎn)介紹

    <filter>   <!-- 指定一個(gè)過(guò)濾器 -->
        <filter-name>TestFilter</filter-name>   <!-- 過(guò)濾器名字 -->
        <filter-class>TestFilter</filter-class>   <!-- 指定過(guò)濾器的完整的限定類名 -->
        <init-param>                            <!-- 過(guò)濾器指定初始化參數(shù) -->
            <param-name>islogin</param-name>
            <param-value>true</param-value>
        </init-param>
    </filter>
    <filter-mapping><!-- 設(shè)置一個(gè)Filter所負(fù)責(zé)攔截的資源-->
        <filter-name>TestFilter</filter-name> <!-- 過(guò)濾器名字,和上面的一致 -->
        <url-pattern>/*</url-pattern> <!-- 設(shè)置 filter 所攔截的請(qǐng)求路徑 -->
        <servlet-name>TestServlet</servlet-name><!-- 設(shè)置 filter 所攔截的Servlet名稱缺谴。 -->
    </filter-mapping>  

三、創(chuàng)建一個(gè)Filter過(guò)濾器

@WebFilter(filterName = "TestFilter")
public class TestFilter implements Filter {

    //初始化配置參數(shù)耳鸯,在doFilter()方法之前被調(diào)用
    public void init(FilterConfig config) throws ServletException {

    }


    //該方法在客戶端請(qǐng)求及服務(wù)器端回復(fù)時(shí)都將被自動(dòng)調(diào)用
    public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain)
            throws ServletException, IOException {
        chain.doFilter(req, resp);
    }


    //結(jié)束過(guò)濾器湿蛔,doFilter()方法完成后被調(diào)用
    public void destroy() {
    }

FilterConfig接口
用戶在配置filter時(shí),可以使用為filter配置一些初始化參數(shù)县爬,當(dāng)web容器實(shí)例化Filter對(duì)象阳啥,調(diào)用其init方法時(shí),會(huì)把封裝了filter初始化參數(shù)的filterConfig對(duì)象傳遞進(jìn)來(lái)财喳。因此開(kāi)發(fā)人員在編寫(xiě)filter時(shí)察迟,通過(guò)filterConfig對(duì)象的方法斩狱,就可獲得以下內(nèi)容:

String getFilterName();//得到filter的名稱。 
String getInitParameter(String name);//返回在部署描述中指定名稱的初始化參數(shù)的值扎瓶。如果不存在返回null. 
Enumeration getInitParameterNames();//返回過(guò)濾器的所有初始化參數(shù)的名字的枚舉集合所踊。 
public ServletContext getServletContext();//返回Servlet上下文對(duì)象的引用。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末概荷,一起剝皮案震驚了整個(gè)濱河市秕岛,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌误证,老刑警劉巖继薛,帶你破解...
    沈念sama閱讀 219,188評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異愈捅,居然都是意外死亡遏考,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,464評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)蓝谨,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)灌具,“玉大人,你說(shuō)我怎么就攤上這事像棘』鳎” “怎么了壶冒?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,562評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵缕题,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我胖腾,道長(zhǎng)烟零,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,893評(píng)論 1 295
  • 正文 為了忘掉前任咸作,我火速辦了婚禮锨阿,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘记罚。我一直安慰自己墅诡,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,917評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布桐智。 她就那樣靜靜地躺著末早,像睡著了一般。 火紅的嫁衣襯著肌膚如雪说庭。 梳的紋絲不亂的頭發(fā)上然磷,一...
    開(kāi)封第一講書(shū)人閱讀 51,708評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音刊驴,去河邊找鬼姿搜。 笑死寡润,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的舅柜。 我是一名探鬼主播梭纹,決...
    沈念sama閱讀 40,430評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼业踢!你這毒婦竟也來(lái)了栗柒?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,342評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤知举,失蹤者是張志新(化名)和其女友劉穎瞬沦,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體雇锡,經(jīng)...
    沈念sama閱讀 45,801評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡逛钻,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,976評(píng)論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了锰提。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片曙痘。...
    茶點(diǎn)故事閱讀 40,115評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖立肘,靈堂內(nèi)的尸體忽然破棺而出边坤,到底是詐尸還是另有隱情,我是刑警寧澤谅年,帶...
    沈念sama閱讀 35,804評(píng)論 5 346
  • 正文 年R本政府宣布茧痒,位于F島的核電站,受9級(jí)特大地震影響融蹂,放射性物質(zhì)發(fā)生泄漏旺订。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,458評(píng)論 3 331
  • 文/蒙蒙 一超燃、第九天 我趴在偏房一處隱蔽的房頂上張望区拳。 院中可真熱鬧,春花似錦意乓、人聲如沸樱调。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,008評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)笆凌。三九已至,卻和暖如春伙窃,著一層夾襖步出監(jiān)牢的瞬間菩颖,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,135評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工为障, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留晦闰,地道東北人放祟。 一個(gè)月前我還...
    沈念sama閱讀 48,365評(píng)論 3 373
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像呻右,于是被迫代替她去往敵國(guó)和親跪妥。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,055評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容