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

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

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

問答社區(qū)

什么是java過濾器! 它的功能和作用是什么???

*皮蛋就是蛋 2009-01-03 20:29:18 898  瀏覽
  • 老師讓弄什么是java過濾器,我也不太了解啊! 大家?guī)蛶兔?

參與評論

全部評論(2條)

  • dsw_123 2009-01-04 00:00:00
    filter 自己上google 搜就知道了 可以過濾漢字編碼,還可以過濾 登陸session 就這樣

    贊(11)

    回復(0)

    評論

  • 土布袋丿 2017-11-29 09:39:47
    Filter 技術(shù)是servlet 2.3 新增加的功能.servlet2.3是sun公司與2000年10月發(fā)布的,它的開發(fā)者包括許多個人和公司團體,充分體現(xiàn)了sun公司所倡導的代碼開放性原則.由于眾多的參與者的共同努力,servlet2.3比以往功能都強大了許多,而且性能也有了大幅提高. 它新增加的功能包括: 1. 應用程序生命周期事件控制; 2. 新的國際化; 3. 澄清了類的裝載規(guī)則; 4. 新的錯誤及安全屬性; 5. 不贊成使用HttpUtils 類; 6. 各種有用的方法; 7. 闡明并擴展了幾個servlet DTD; 8. filter功能. 其中Z重要的就是filter功能.它使用戶可以改變一個request和修改一個 response. Filter 不是一個servlet,它不能產(chǎn)生一個response,它能夠在一個request到達servlet之前預處理request,也可以在離開 servlet時處理response.換種說法,filter其實是一個”servlet chaining”(servlet 鏈).一個filter 包括: 1. 在servlet被調(diào)用之前截獲; 2. 在servlet被調(diào)用之前檢查servlet request; 3. 根據(jù)需要修改request頭和request數(shù)據(jù); 4. 根據(jù)需要修改response頭和response數(shù)據(jù); 5. 在servlet被調(diào)用之后截獲. 你能夠配置一個filter 到一個或多個servlet;單個servlet或servlet組能夠被多個filter 使用.幾個實用的filter 包括:用戶辨認filter,日志filter,審核filter,加密filter,符號filter,能改變xml內(nèi)容的XSLT filter等. 一個filter必須實現(xiàn)javax.servlet.Filter接口并定義三個方法: 1.void setFilterConfig(FilterConfig config) //設置filter 的配置對象; 2. FilterConfig getFilterConfig() //返回filter的配置對象; 3. void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) //執(zhí)行filter 的工作. 服務器每次只調(diào)用setFilterConfig方法一次準備filter 的處理;調(diào)用doFilter方法多次以處理不同的請求.FilterConfig接口有方法可以找到filter名字及初始化參數(shù)信息.服務器可以設置 FilterConfig為空來指明filter已經(jīng)終結(jié). 每一個filter從doFilter()方法中得到當前的request及 response.在這個方法里,可以進行任何的針對request及response的操作.(包括收集數(shù)據(jù),包裝數(shù)據(jù)等).filter調(diào)用 chain.doFilter()方法把控制權(quán)交給下一個filter.一個filter在doFilter()方法中結(jié)束.如果一個filter想停止 request處理而獲得對response的完全的控制,那它可以不調(diào)用下一個filter. 一個filter可以包裝request 或response以改變幾個方法和提供用戶定制的屬性.Api2.3提供了HttpServletRequestWrapper 和HttpServletResponseWrapper來實現(xiàn).它們能分派Z初的request和response.如果要改變一個方法的特性,必須繼承wapper和重寫方法.下面是一段簡單的日志filter用來記錄所有request的持續(xù)時間. public class LogFilter implements Filter { FilterConfig config; public void setFilterConfig(FilterConfig config) { this.config = config; } public FilterConfig getFilterConfig() { return config; } public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) { ServletContext context = getFilterConfig().getServletContext(); long bef = System.currentTimeMillis(); chain.doFilter(req, res); // no chain parameter needed here long aft = System.currentTimeMillis(); context.log("Request to " + req.getRequestURI() + ": " + (aft-bef)); } } 當server調(diào)用setFilterConfig(),filter保存config信息. 在doFilter()方法中通過config信息得到servletContext.如果要運行這個filter,必須去配置到web.xml中.以 tomcat4.01為例: <filter> <filter-name> log //filter 名字 </filter-name> <filter-class> LogFilter //filter class(上例的servlet) </filter-class> </filter> <filter-mapping> <filter-name>log</filter-name> <servletname>servletname</servlet-name> </filter-mapping> <servlet> <servlet-name>servletname</servletname> <servletclass>servletclass</servlet-class> </servlet> <servlet-mapping> <servlet-name>servletname</servlet-name> <url-pattern>*</url-pattern> </servlet-mapping> 把這個web.xml放到web-inf中(詳請參考tomcat幫助文檔). 當每次請求一個request時(如index.jsp),先到LogFilter中去并調(diào)用doFilter()方法,然后才到各自的servlet中去.如果是一個簡單的servlet(只是一個頁面,無任何輸出語句),那么可能的輸出是: Request to /index.jsp: 10 Filter是一個COM組件,由一個或多個Pin組成。Pin也是一個COM組件。 Filter文件的擴展名為.ax,但也可以是.dll。Filter根據(jù)其包含Input pin或Output pin的情況(或在Filter Graph的位置),大致可分為三類:Source Filter(僅有Output pin)、Transform Filter(同時具有Input pin和Output pin)和Renderer Filter(僅有Input pin)。 一般情況下,創(chuàng)建Filter使用一個普通的Win32 DLL項目。而且,一般Filter項目不使用MFC。這時,應用程序通過CoCreateInstance函數(shù)Filter實例;Filter與應用程序在二進制級別的協(xié)作。另外一種方法,也可以在MFC的應用程序項目中創(chuàng)建Filter。這種情況下,F(xiàn)ilter不需注冊為COM組件,F(xiàn)ilter與應用程序之間的協(xié)作是源代碼級別的;創(chuàng)建Filter實例,不再使用CoCreateInstance函數(shù),而是直接new出一個Filter對象,如下: m_pFilterObject = new CFilterClass(); // make the initial refcount 1 to match COM creation m_pFilterObject ->AddRef(); 因為Filter的基類實現(xiàn)了對象的引用計數(shù),所以即使在第二種情況下,對創(chuàng)建后的Filter對象的操作也完全可以遵循COM標準。 Filter是一個獨立功能模塊,Z好不要將Filter依賴于其他第三方的DLL。因為 Filter具有COM的位置透明性特點,F(xiàn)ilter文件可以放在硬盤的任何位置,只要位置移動后重新注冊。但此時,如果Filter依賴其他DLL,則Filter對該DLL的定位就會出現(xiàn)問題。 Filter不能脫離Filter Graph單獨使用。所以,如果你想繞過Filter Graph直接使用Filter實現(xiàn)的模塊功能,請將你的Filter移植成DMO(DirectX Media Object)。對于DirectShow應用程序開發(fā)者來說,還有一點,請不要忘記使用OleInitialize進行初始化。 2. Filter的注冊 Filter是COM組件,所以在使用前一定要注冊。Filter的注冊程序為 regsvr32.exe。如果帶上命令行參數(shù)/u,表示注銷;如果帶上是/s,表示不彈出任何注冊/注銷成功與否的提示對話框。如果你想在Build Filter項目的時候進行自動注冊,請在VC的Project settings的Custom Build頁如下設置: Description: Register filter Commands: regsvr32 /s /c $(TargetPath) echo regsvr32 exe.time > $(TargetDir)\$(TargetName).trg Outputs: $(TargetDir)\$(TargetName).trg Filter的注冊信息包括兩部分:基本的COM信息和Filter信息。注冊信息都存放在注冊表中。前者的位置為:HKEY_CLASSES_ROOT\CLSID\Filter Clsid\,后者的位置為:HKEY_CLASSES_ROOT\CLSID\Category\Instance\ Filter Clsid\。COM信息標示了Filter是一個標準的可以通過CoCreateInstance函數(shù)創(chuàng)建的COM組件,F(xiàn)ilter信息標示了我們通過Graphedit看到的描述這個Filter的信息。如果你不想讓Graphedit看到(或者讓Filter枚舉器找到)你寫的Filter,你完全可以不注冊Filter信息。而且不用擔心,你這么做也完全不會影響Filter的功能。 屏蔽注冊Filter信息的方法也很簡單。因為CBaseFilter實現(xiàn)了IAMovieSetup接口的兩個函數(shù):Register和Unregister。我們只需重載這兩個函數(shù),直接return S_OK就行了。 Filter的Merit值。這個值是微軟的“智能連接”函數(shù)使用的。在Graphedit中,當我們加入一個Source Filter后,在它的pin上執(zhí)行“Render”,會自動連上一些Filter。Merit的值參考如下: MERIT_PREFERRED = 0x800000, MERIT_NORMAL = 0x600000, MERIT_UNLIKELY = 0x400000, MERIT_DO_NOT_USE = 0x200000, MERIT_SW_COMPRESSOR = 0x100000, MERIT_HW_COMPRESSOR = 0x100050 Merit值只有大于MERIT_DO_NOT_USE的時候才有可能被“智能連接”使用;Merit的值越大,這個Filter的機會就越大。 3. Filter之間Pin的連接過程 Filter只有加入到Filter Graph中并且和其它Filter連接成完整的鏈路后,才會發(fā)揮作用。Filter之間的連接(也就是Pin之間的連接),實際上是連接雙方的一個 Media type的協(xié)商過程。連接的方向總是從Output pin指向Input pin。連接的大致過程為:如果調(diào)用連接函數(shù)時已經(jīng)指定了完整的Media type,則用這個Media type進行連接,成功與否都結(jié)束連接過程;如果沒有指定或不完全指定了Media type,則進入下面的枚舉過程。枚舉欲連接的Input pin上所有的Media type,逐一用這些Media type與Output pin進行連接(如果連接函數(shù)提供了不完全Media type,則要先將每個枚舉出來的Media type與它進行匹配檢查),如果Output pin也接受這種Media type,則Pin之間的連接宣告成功;如果所有Input pin上枚舉的Media type,Output pin都不支持,則枚舉Output pin上的所有Media type,并逐一用這些Media type與Input pin進行連接。如果Input pin接受其中的一種Media type,則Pin之間的連接到此也宣告成功;如果Output pin上的所有Media type,Input pin都不支持,則這兩個Pin之間的連接過程宣告失敗。 每個Pin都可以實現(xiàn)GetMediaType函數(shù)來提供該Pin上支持的所有 Preferred Media type(但一般只在Output pin上實現(xiàn),Input pin主要實現(xiàn)CheckMediaType看是否支持當前提供的Media type就行了)。連接過程中,Pin上枚舉得到的所有Media type就是這里提供的。 在CBasePin類中有一個protected的成員變量 m_bTryMyTypesFirst,默認值為false。在我們定制Filter的Output pin中改變這個變量的值為true,可以定制我們自己的連接過程(先枚舉Output pin上的Media type)。 當Pin之間的連接成功后,各自的pin上都會調(diào)用CompleteConnect函數(shù)。我們可以在這里取得一些連接上的Media type的信息,以及進行一些計算等。在Output pin的CompleteConnect實現(xiàn)中,還有一個重要的任務,就是協(xié)商Filter Graph運行起來后Sample傳輸使用的內(nèi)存配置情況。這同樣是一個交互過程:首先要詢問一下Input pin上的配置要求,如果Input pin提供內(nèi)存管理器(Allocator),則優(yōu)先使用Input pin上的內(nèi)存管理器;否則,使用Output pin自己生成的內(nèi)存管理器。我們一般都要實現(xiàn)DecideBufferSize來決定存放Sample的內(nèi)存大小。注意:這個過程協(xié)商完成之后,實際的內(nèi)存并沒有分配,而要等到Output pin上的Active函數(shù)調(diào)用。 4. Filter Media type概述 Media type一般可以有兩種表示:AM_MEDIA_TYPE和CMediaType。前者是一個Struct,后者是從這個Struct繼承過來的類。 每個Media type有三部分組成:Major type、Subtype和Format type。這三個部分都使用GUID來唯yi標示。Major type主要定性描述一種Media type,比如指定這是一個Video,或Audio或Stream等;Subtype進一步細化Media type,如果Video的話可以進一步指定是UYVY或YUY2或RGB24或RGB32等;Format type用一個Struct更進一步細化Media type。 如果Media type的三個部分都是指定了某個具體的GUID值,則稱這個Media type是完全指定的;如果Media type的三個部分中有任何一個值是GUID_NULL,則稱這個Media type 是不完全指定的。GUID_NULL具有通配符的作用。 常用的Major type: MEDIATYPE_Video; MEDIATYPE_Audio; MEDIATYPE_AnalogVideo; // Analog capture MEDIATYPE_AnalogAudio; MEDIATYPE_Text; MEDIATYPE_Midi; MEDIATYPE_Stream; MEDIATYPE_Interleaved; // DV camcorder MEDIATYPE_MPEG1SystemStream; MEDIATYPE_MPEG2_PACK; MEDIATYPE_MPEG2_PES; MEDIATYPE_DVD_ENCRYPTED_PACK; MEDIATYPE_DVD_NAVIGATION; 常用的Subtype: MEDIASUBTYPE_YUY2; MEDIASUBTYPE_YVYU; MEDIASUBTYPE_YUYV; MEDIASUBTYPE_UYVY; MEDIASUBTYPE_YVU9; MEDIASUBTYPE_Y411; MEDIASUBTYPE_RGB4; MEDIASUBTYPE_RGB8; MEDIASUBTYPE_RGB565; MEDIASUBTYPE_RGB555; MEDIASUBTYPE_RGB24; MEDIASUBTYPE_RGB32; MEDIASUBTYPE_ARGB32; // Contains alpha value MEDIASUBTYPE_Overlay; MEDIASUBTYPE_MPEG1Packet; MEDIASUBTYPE_MPEG1Payload; // Video payload MEDIASUBTYPE_MPEG1AudioPayload; // Audio payload MEDIASUBTYPE_MPEG1System; // A/V payload MEDIASUBTYPE_MPEG1VideoCD; MEDIASUBTYPE_MPEG1Video; MEDIASUBTYPE_MPEG1Audio; MEDIASUBTYPE_Avi; MEDIASUBTYPE_Asf; MEDIASUBTYPE_QTMovie; MEDIASUBTYPE_PCM; MEDIASUBTYPE_WAVE; MEDIASUBTYPE_dvsd; // DV MEDIASUBTYPE_dvhd; MEDIASUBTYPE_dvsl; MEDIASUBTYPE_MPEG2_VIDEO; MEDIASUBTYPE_MPEG2_PROGRAM; MEDIASUBTYPE_MPEG2_TRANSPORT; MEDIASUBTYPE_MPEG2_AUDIO; MEDIASUBTYPE_DOLBY_AC3; MEDIASUBTYPE_DVD_SUBPICTURE; MEDIASUBTYPE_DVD_LPCM_AUDIO; MEDIASUBTYPE_DVD_NAVIGATION_PCI; MEDIASUBTYPE_DVD_NAVIGATION_DSI; MEDIASUBTYPE_DVD_NAVIGATION_PROVIDER; 常用的Format type: FORMAT_None FORMAT_DvInfo DVINFO FORMAT_MPEGVideo MPEG1VIDEOINFO FORMAT_MPEG2Video MPEG2VIDEOINFO FORMAT_VideoInfo VIDEOINFOHEADER FORMAT_VideoInfo2 VIDEOINFOHEADER2 FORMAT_WaveFormatEx WAVEFORMATEX 5. Filter之間的數(shù)據(jù)傳送 Filter之間的數(shù)據(jù)是通過Sample來傳送的。Sample是一個COM組件,擁有自己的一段數(shù)據(jù)緩沖。Sample由Allocator統(tǒng)一管理。如下圖所示: Filter之間數(shù)據(jù)傳送的方式有兩種:Push模式和Pull模式。

    贊(8)

    回復(0)

    評論

熱門問答

什么是java過濾器! 它的功能和作用是什么啊?
 
2014-10-23 18:49:00 543 2
什么是java過濾器! 它的功能和作用是什么?。?
老師讓弄什么是java過濾器,我也不太了解?。?大家?guī)蛶兔?
2009-01-03 20:29:18 898 2
java 中的過濾器filter 都有什么作用
我想知道過濾器一般都用來干什么 簡明的說一下 謝謝
2013-05-05 19:34:47 460 3
過濾器上為什么要用到差壓變送器,它起什么作用啊
 
2011-09-25 01:17:56 543 2
什么是系統(tǒng)它的作用是什么?
 
2013-09-19 12:49:15 799 4
什么是邏輯分析儀?它的作用是什么?
說明一下它的作用、用途和原理。這是關(guān)于數(shù)字電路方面的。謝謝大家
2017-09-14 16:26:14 600 1
什么是音頻振蕩器?它的作用是什么?
音頻振蕩器的LV、180度、0度代表什么意義?... 音頻振蕩器的LV、180度、0度代表什么意義? 展開
2009-01-05 02:32:32 834 2
純化水系統(tǒng)中,微孔過濾器的功能是什么?起什么作用?
 
2012-07-18 19:19:25 566 2
什么是OTDR!它的基本作用是什么!
 
2013-09-19 00:34:22 740 1
java中裝飾器和過濾器的概念是什么?
 
2009-06-07 04:09:05 472 2
java中 過濾器 都有什么區(qū)別?尤其是和過濾器
 
2017-11-24 17:11:13 407 1
大神 汽車粉塵過濾器的作用是什么啊
 
2016-04-18 04:00:42 360 2
java過濾器的3、include過濾器
 
2018-11-27 18:29:27 308 0
什么是抽提,它的主要作用是什么
 
2016-11-29 06:18:06 753 1
基因肽是什么 它有什么作用和功能
因為之前聽家里親戚說買了一些叫什么基因肽的東西,能讓身體健康一些,但是我不知道這個具體有什么作用和功能
2017-09-05 16:48:00 880 1
什么是帶通濾波器及其ZX頻率?它的作用是什么?
 
2009-05-01 14:17:57 535 5
什么是帶通濾波器及其ZX頻率?它的作用是什么?
 
2016-12-01 11:33:30 515 1
Java中過濾器Filter的父類是什么
 
2008-03-13 17:26:56 416 4
java web 過濾器跟的區(qū)別和使用
 
2018-04-17 04:54:51 349 2
Java框架Struts2的和過濾器有什么區(qū)別?
 
2013-11-06 00:38:44 366 2

4月突出貢獻榜

推薦主頁

最新話題