国产三级在线看完整版-内射白嫩大屁股在线播放91-欧美精品国产精品综合-国产精品视频网站一区-一二三四在线观看视频韩国-国产不卡国产不卡国产精品不卡-日本岛国一区二区三区四区-成年人免费在线看片网站-熟女少妇一区二区三区四区

儀器網(wǎng)(yiqi.com)歡迎您!

| 注冊2 登錄
網(wǎng)站首頁-資訊-話題-產(chǎn)品-評測-品牌庫-供應(yīng)商-展會-招標(biāo)-采購-知識-技術(shù)-社區(qū)-資料-方案-產(chǎn)品庫-視頻

問答社區(qū)

java項目和web項目中的過濾器文件怎么使用?

網(wǎng)絡(luò)紅人陳勇ok 2016-07-27 01:46:18 691  瀏覽
  • Filter過濾器文件的設(shè)置和使用要注意什么問題??它是基于什么來運行的?越詳細越好

參與評論

全部評論(1條)

  • lushan12207 2016-07-27 15:39:14
    過濾器是一個程序,它先于與之相關(guān)的servlet或JSP頁面運行在服務(wù)器上。過濾器可附加到一個或多個servlet或JSP頁面上,并且可以檢查進入這些資源的請求信息。在這之后,過濾器可以作如下的選擇: 1. 以常規(guī)的方式調(diào)用資源(即,調(diào)用servlet或JSP頁面)。 2.利用修改過的請求信息調(diào)用資源。 3. 調(diào)用資源,但在發(fā)送響應(yīng)到客戶機前對其進行修改 4. 阻止該資源調(diào)用,代之以轉(zhuǎn)到其他的資源,返回一個特定的狀態(tài)代碼或生成替換輸出。 1. 建立基本過濾器 建立一個過濾器涉及下列五個步驟: 1)建立一個實現(xiàn)Filter接口的類。這個類需要三個方法,分別是:doFilter、init和destroy。 doFilter方法包含主要的過濾代碼(見第2步),init方法建立設(shè)置操作,而destroy方法進行清楚。 2)在doFilter方法中放入過濾行為。doFilter方法的diyi個參數(shù)為ServletRequest對象。此對象給過濾器提供了對進入的信息(包括表單數(shù)據(jù)、cookie和HTTP請求頭)的完全訪問。第二個參數(shù)為ServletResponse,通常在簡單的過濾器中忽略此參數(shù)。Z后一個參數(shù)為FilterChain,如下一步所述,此參數(shù)用來調(diào)用servlet或JSP頁。 3)調(diào)用FilterChain對象的doFilter方法。Filter接口的doFilter方法取一個FilterChain對象作為它的一個參數(shù)。在調(diào)用此對象的doFilter方法時,激活下一個相關(guān)的過濾器。如果沒有另一個過濾器與servlet或JSP頁面關(guān)聯(lián),則servlet或JSP頁面被激活。 4)對相應(yīng)的servlet和JSP頁面注冊過濾器。在部署描述符文件(web.xml)中使用filter和filter-mapping元素。 5)禁用激活器servlet。防止用戶利用缺省servlet URL繞過過濾器設(shè)置。 1.1 建立一個實現(xiàn)Filter接口的類 所有過濾器都必須實現(xiàn)javax.servlet.Filter。這個接口包含三個方法,分別為doFilter、init和destroy。 public void doFilter(ServletRequset request, ServletResponse response, FilterChain chain) thows ServletException, IOException 每當(dāng)調(diào)用一個過濾器(即,每次請求與此過濾器相關(guān)的servlet或JSP頁面)時,就執(zhí)行其doFilter方法。正是這個方法包含了大部分過濾邏輯。diyi個參數(shù)為與傳入請求有關(guān)的ServletRequest。對于簡單的過濾器,大多數(shù)過濾邏輯是基于這個對象的。如果處理HTTP請求,并且需要訪問諸如getHeader或getCookies等在ServletRequest中無法得到的方法,就要把此對象構(gòu)造成HttpServletRequest。 第二個參數(shù)為ServletResponse。除了在兩個情形下要使用它以外,通常忽略這個參數(shù)。首先,如果希望完全阻塞對相關(guān)servlet或JSP頁面的訪問。可調(diào)用response.getWriter并直接發(fā)送一個響應(yīng)到客戶機。其次,如果希望修改相關(guān)的servlet或JSP頁面的輸出,可把響應(yīng)包含在一個收集所有發(fā)送到它的輸出的對象中。然后,在調(diào)用serlvet或JSP頁面后,過濾器可檢查輸出,如果合適就修改它,之后發(fā)送到客戶機。 DoFilter的Z后一個參數(shù)為FilterChain對象。對此對象調(diào)用doFilter以激活與servlet或JSP頁面相關(guān)的下一個過濾器。如果沒有另一個相關(guān)的過濾器,則對doFilter的調(diào)用激活servlet或JSP本身。 public void init(FilterConfig config) thows ServletException init方法只在此過濾器diyi次初始化時執(zhí)行,不是每次調(diào)用過濾器都執(zhí)行它。對于簡單的過濾器,可提供此方法的一個空體,但有兩個原因需要使用init。首先,F(xiàn)ilterConfig對象提供對servlet環(huán)境及web.xml文件中指派的過濾器名的訪問。因此,普遍的辦法是利用init將FilterConfig對象存放在一個字段中,以便doFilter方法能夠訪問servlet環(huán)境或過濾器名.其次,F(xiàn)ilterConfig對象具有一個getInitParameter方法,它能夠訪問部署描述符文件(web.xml)中分配的過濾器初始化參數(shù)。 public void destroy( ) 大多數(shù)過濾器簡單地為此方法提供一個空體,不過,可利用它來完成諸如關(guān)閉過濾器使用的文件或數(shù)據(jù)庫連接池等清除任務(wù)。 1.2 將過濾行為放入doFilter方法 doFilter方法為大多數(shù)過濾器地關(guān)鍵部分。每當(dāng)調(diào)用一個過濾器時,都要執(zhí)行doFilter。對于大多數(shù)過濾器來說,doFilter執(zhí)行的步驟是基于傳入的信息的。因此,可能要利用作為doFilter的diyi個參數(shù)提供的ServletRequest。這個對象常常構(gòu)造為HttpServletRequest類型,以提供對該類的更特殊方法的訪問。 1.3 調(diào)用FilterChain對象的doFilter方法 Filter接口的doFilter方法以一個FilterChain對象作為它的第三個參數(shù)。在調(diào)用該對象的doFilter方法時,激活下一個相關(guān)的過濾器。這個過程一般持續(xù)到鏈中Z后一個過濾器為止。在Z后一個過濾器調(diào)用其FilterChain對象的doFilter方法時,激活servlet或頁面自身。 但是,鏈中的任意過濾器都可以通過不調(diào)用其FilterChain的doFilter方法中斷這個過程。在這樣的情況下,不再調(diào)用JSP頁面的serlvet,并且中斷此調(diào)用過程的過濾器負責(zé)將輸出提供給客戶機。 1.4 對適當(dāng)?shù)膕ervlet和JSP頁面注冊過濾器 部署描述符文件的2.3版本引入了兩個用于過濾器的元素,分別是:filter和filter-mapping。filter元素向系統(tǒng)注冊一個過濾對象,filter-mapping元素指定該過濾對象所應(yīng)用的URL。 下面是一個完整的例子: //建立一個實現(xiàn)Filter接口的類。這個類需要三個方法,分別是:doFilter、init和destroy。 //doFilter方法包含主要的過濾代碼,init方法建立設(shè)置操作,而destroy方法進行清 package filterpkg; import javax.servlet.*; import javax.servlet.http.*; import java.io.*; public class testFilter implements Filter{ public void init(FilterConfig filterConfig) throws ServletException { } //在doFilter方法中放入過濾行為。doFilter方法的diyi個參數(shù)為ServletRequest對象。 //此對象給過濾器提供了對進入的信息(包括表單數(shù)據(jù)、cookie和HTTP請求頭)的完全訪問。 //第二個參數(shù)為ServletResponse,通常在簡單的過濾器中忽略此參數(shù)。 //Z后一個參數(shù)為FilterChain,如下一步所述,此參數(shù)用來調(diào)用servlet或JSP頁。 public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain) { PrintWriter wout=null; try { wout=response.getWriter(); } catch(IOException e) { } HttpServletRequest req=(HttpServletRequest)request;//將request轉(zhuǎn)化為它的子類HttpServletRequest String uri=req.getRequestURI();//獲得傳入的URI if (uri.indexOf("MyJsp.jsp")>0 ||uri.indexOf("MainForm.do")>0 )//如果是我們指定的登錄頁面或驗證頁面 { try { //調(diào)用FilterChain對象的doFilter方法。Filter接口的doFilter方法取一個FilterChain對象作為它的一個參數(shù)。 //在調(diào)用此對象的doFilter方法時,激活下一個相關(guān)的過濾器。如果沒有另一個過濾器與servlet或JSP頁面關(guān)聯(lián),則servlet或JSP頁面被激活。 filterChain.doFilter(request, response); } catch(Exception e) { } return; } if (req.getSession()!=null) if (req.getSession().getAttribute("USERID")==null) { wout.write("<HTML><BODY> Check error! <br/> </BODY> </HTML>"); wout.flush(); return; } try { filterChain.doFilter(request, response); } catch(Exception e) { } } public void destroy() { } } web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> <filter> <filter-name>CHECKCODE</filter-name> <filter-class>filterpkg.testFilter</filter-class> </filter> <filter-mapping> <filter-name>CHECKCODE</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <servlet> <description>This is the description of my J2EE component</description> <display-name>This is the display name of my J2EE component</display-name> <servlet-name>ControlServlet</servlet-name> <servlet-class>filterpkg.ControlServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>ControlServlet</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping> </web-app>

    贊(20)

    回復(fù)(0)

    評論

熱門問答

java項目和web項目中的過濾器文件怎么使用?
Filter過濾器文件的設(shè)置和使用要注意什么問題??它是基于什么來運行的?越詳細越好
2016-07-27 01:46:18 691 1
java web 過濾器跟的區(qū)別和使用
 
2018-04-17 04:54:51 349 2
用于農(nóng)業(yè)項目中的機器視覺識別軟件開發(fā)
目前國內(nèi)哪家公司能做農(nóng)業(yè)項目中機器視覺識別軟件的開發(fā),有沒有已投入使用的這種軟件。
2013-12-09 20:22:32 320 1
線材測試項目中絕緣指什么
測試是項目里的絕緣指什么
2013-10-18 06:47:44 470 4
java中 過濾器 都有什么區(qū)別?尤其是和過濾器
 
2017-11-24 17:11:13 407 1
java過濾器的3、include過濾器
 
2018-11-27 18:29:27 308 0
如何搭建java web測試環(huán)境
 
2016-12-17 17:12:36 396 2
如何在住宅建筑項目中引進光纖入戶
 
2018-06-19 09:08:45 573 1
Java框架Struts2的和過濾器有什么區(qū)別?
 
2013-11-06 00:38:44 366 2
java如何創(chuàng)建過濾器
 
2013-07-10 07:52:23 372 2
用maven的web 項目單元測試找不到類
頭一次用maven項目 有很多不明白的地方 完全按照視頻的步驟去做還出現(xiàn)很多錯誤 求老師解答
2014-02-09 11:51:51 209 1
java中裝飾器和過濾器的概念是什么?
 
2009-06-07 04:09:05 472 2
Java編程軟件怎么運行使用?
我學(xué)過c,c++,現(xiàn)在想學(xué)學(xué)java,JDK怎么用阿?什么環(huán)境變量什么的都不懂?path怎么設(shè)置?謝謝大家
2008-07-27 02:25:51 387 3
后綴名為.COD的文件是什么文件,怎么使用?
高手指教,謝謝!
2008-11-16 04:04:50 623 3
java過濾器中的FilterChain對象
過濾器的doFilter()里有三個參數(shù),那FilterChain對象是哪里傳過來的啊它是像request對象一樣是JSP的隱藏對象嗎 如果只有一個過濾器的話filterchain.doFilter()是執(zhí)行要訪問的頁面嗎
2013-04-11 15:03:48 388 2
Java SSI框架項目 怎么在項目里添加一個測試類
在測試類里用Spring注入獲取 數(shù)據(jù)存儲方法接口的對象 自己試了好幾個方法 測試類的main方法都報空指針錯誤 (測試類的功能就是調(diào)用項目里數(shù)據(jù)存儲接口的方法存數(shù)據(jù) 只不過存的字段有點出入)
2016-06-23 20:01:45 471 2
Java 處理ZIP文件的工具包有沒有
 
2016-09-26 23:30:47 444 2
ug6.0過濾器怎么使用
 
2011-10-12 11:25:49 467 1
coreldraw 過濾器怎么使用
 
2018-11-30 10:07:29 316 0
教師資格證體檢項目中的腹部超聲,尿液分析是檢查什么
 
2018-05-07 03:38:11 444 1

4月突出貢獻榜

推薦主頁

最新話題