專題八 過濾器-Filter_第1頁
專題八 過濾器-Filter_第2頁
專題八 過濾器-Filter_第3頁
專題八 過濾器-Filter_第4頁
專題八 過濾器-Filter_第5頁
已閱讀5頁,還剩18頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

企業(yè)應(yīng)用實(shí)訓(xùn)教程JSP企業(yè)級應(yīng)用案例一過濾器—Filter教學(xué)目標(biāo)1.1Filter簡介1.2Filter的運(yùn)作方式1.3Filter的定義與映射1.4FilterAPI介紹工作任務(wù)在Eclipse3.2IDE+Tomcat6.0環(huán)境中,編寫一個登錄的例子,編寫兩個過濾器,F(xiàn)ilterDemo1過濾器用來對字符編碼進(jìn)行過濾,F(xiàn)ilterDemo2過濾器用來對頁面權(quán)限的過濾。新建項目和開發(fā)目錄

新建一個名為Login的TomcatPorject項目在Login項目的目錄中:創(chuàng)建一個Hello的文件夾,其包括登錄頁面—hello.jsp

創(chuàng)建一個End的文件夾,其包括:登錄成功頁、密碼錯誤頁和用戶名錯誤頁在WEB-INF/src中創(chuàng)建demo.filter和demo.servlet兩個包在WEB-INF中創(chuàng)建web.xml配置文件編寫登錄頁面編寫Hello文件夾中的登錄頁面(hello.jsp):<formname="loginform"method="post" action="../HelloServlet.do"> <tdcolspan="2">用戶名: <inputtype="text"name="username"></td> <tdcolspan="2">密碼: <inputtype="password"name="password"></td> <inputtype="submit"name="Submit"value="提交"> <inputtype="reset"name="Submit2"value="重置"></form>編寫字符編碼過濾器1新建和編寫FilterDemo1類導(dǎo)入需要的類和接口importjava.io.IOException;importjavax.servlet.Filter;importjavax.servlet.FilterChain;importjavax.servlet.FilterConfig;importjavax.servlet.ServletException;importjavax.servlet.ServletRequest;importjavax.servlet.ServletResponse;importjavax.servlet.http.HttpServletRequest;編寫字符編碼過濾器2繼承Filter接口Init()方法中設(shè)置字符編碼filterConfig=filterconfig;targetEncoding=filterconfig.

getInitParameter("encoding");編寫字符編碼過濾器3doFilter()方法中設(shè)置請求的字符編碼setFilterConfig()設(shè)置過濾器配置環(huán)境destroy()銷毀過濾器HttpServletRequest

httpservletrequest= (HttpServletRequest)request;httpservletrequest.setCharacterEncoding(targetEncoding);filterchain.doFilter(request,response);編寫驗證權(quán)限過濾器新建和編寫FilterDemo2類繼承Filter接口編寫doFilter()方法username=(String)session.getAttribute("username");if(username!=null&&username.equals("handson")){

chain.doFilter(request,response);}else{ httpRequest.getRequestDispatcher("/Hello/hello.jsp"). forward(httpRequest,httpResponse);}編寫HelloServlet類繼承HttpServlet類編寫doGet()方法編寫doPost()方法if(username!=""&&username.equals("handson")){

if(pwd!=""&&pwd.equals("handson")){

session.setAttribute("username",username);

response.sendRedirect("./End/success.html"); }else{

response.sendRedirect("./End/error.html"); }}else{

response.sendRedirect("./End/faild.html");}配置過濾器1配置FilterDemo1過濾器<filter> <filter-name>FilterDemo1</filter-name> <filter-class>demo.filter.FilterDemo1</filter-class> <init-param> <param-name>encoding</param-name> <param-value>GB2312</param-value> </init-param></filter><filter-mapping> <filter-name>FilterDemo1</filter-name>

<url-pattern>/*</url-pattern></filter-mapping>配置過濾器2配置FilterDemo2過濾器<filter> <filter-name>FilterDemo2</filter-name> <filter-class>demo.filter.FilterDemo2</filter-class></filter><filter-mapping> <filter-name>FilterDemo2</filter-name> <url-pattern>/End/*</url-pattern></filter-mapping>配置Servlet配置HelloServlet類<servlet> <servlet-name>HelloServlet</servlet-name> <servlet-class>demo.servlet.HelloServlet</servlet-class></servlet><servlet-mapping> <servlet-name>HelloServlet</servlet-name> <url-pattern>/HelloServlet.do</url-pattern></servlet-mapping>創(chuàng)建頁面創(chuàng)建success.html頁面創(chuàng)建error.html頁面創(chuàng)建faild.html頁面總結(jié)Filter的運(yùn)作方式Filter的定義與映射FilterAPI介紹過濾器簡介Filter是在Servlet2.3和JSP1.2才新增加進(jìn)來的功能。過濾器可附加到一個或多個servlet或JSP頁面上,并且可以檢查進(jìn)入這些資源的請求信息。過濾器可以做到:以常規(guī)的方式調(diào)用資源(即,調(diào)用servlet或JSP頁面)利用修改過的請求信息調(diào)用資源調(diào)用資源,但在發(fā)送響應(yīng)到客戶機(jī)前對其進(jìn)行修改阻止該資源調(diào)用,代之以轉(zhuǎn)到其他的資源,返回一個特定的狀態(tài)代碼或生成替換輸出過濾器的運(yùn)作方式攔截從客戶端發(fā)來的請求,對請求進(jìn)行相應(yīng)處理,根據(jù)配置,發(fā)送到下一個過濾器在下一個過濾器中,進(jìn)行進(jìn)一步的處理,發(fā)送到下一個過濾器如此循環(huán),直到傳遞到Servlet、頁面或者發(fā)送響應(yīng)到客戶端Filter接口1一個執(zhí)行過濾器的Java類必須實(shí)現(xiàn)javax.servlet.Filter接口。接口中含有三個過濾器必須執(zhí)行的方法:init():容器所調(diào)用的初始化方法。它保證了在第一次調(diào)用doFilter()前由容器調(diào)用。能獲取在web.xml文件中指定的初始化參數(shù)。該方法接受一個FilterConfig類型的對象作為輸入Filter接口2doFilter():完成過濾行為的方法。過濾器擁有單個用于處理請求和響應(yīng)的方法doFilter()。這個方法接受三個輸入?yún)?shù):一個ServletRequest、一個ServletResponse和一個FilterChain對象。引入的FilterChain對象提供了后續(xù)過濾器所要調(diào)用的信息destroy():方法執(zhí)行任何清理操作,這些操作需要在自動垃圾收集之前進(jìn)行Filter的定義與映射1所有配置包含在<filter>和</filter>中元素名必需/可選描述filter-name必需給過濾器分配一個選定的名字display-name可選過濾器別名description可選描述過濾器功能,及其它注釋filter-class必需指定過濾器實(shí)現(xiàn)類的完全限定名init-param可選定義可利用FilterConfig的getInitParameter方法讀取的初始化參數(shù)。單個過濾器元素可包含多個init-param元素Filter的定義與映射2過濾器配置基本格式如下:<filter> <filter-name>過濾器名稱</filter-name> <filter-class>實(shí)際類</filter-class> <init-param> <param-name>

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論