netbeans過(guò)濾器編程過(guò)程教程_第1頁(yè)
netbeans過(guò)濾器編程過(guò)程教程_第2頁(yè)
netbeans過(guò)濾器編程過(guò)程教程_第3頁(yè)
netbeans過(guò)濾器編程過(guò)程教程_第4頁(yè)
netbeans過(guò)濾器編程過(guò)程教程_第5頁(yè)
已閱讀5頁(yè),還剩32頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、Netbeans過(guò)濾器編程1.什么是過(guò)濾器?什么是過(guò)濾器?過(guò)濾器過(guò)濾器的生命周期與web容器相同,當(dāng)web容器啟動(dòng)時(shí),就會(huì)讀取應(yīng)用的web.xml配置文件,如果這里配置了過(guò)濾器過(guò)濾器,容器就會(huì)執(zhí)行實(shí)例化,并調(diào)用過(guò)濾器過(guò)濾器的init方法。之后用戶(hù)的每一次請(qǐng)求都會(huì)執(zhí)行過(guò)濾器過(guò)濾器的doFilter方法。destroy當(dāng)web方法,釋放資源。容器銷(xiāo)毀時(shí),就會(huì)執(zhí)行過(guò)濾器過(guò)濾器的執(zhí)行過(guò)程過(guò)濾器過(guò)濾器看名字就能知道大概的用法,它就像一個(gè)篩子,可以篩選特定的數(shù)據(jù)或請(qǐng)求。執(zhí)行過(guò)程如下圖所示用戶(hù)在發(fā)送請(qǐng)求后,如果該請(qǐng)求滿(mǎn)足過(guò)濾器過(guò)濾器的過(guò)濾規(guī)則,web容器就會(huì)執(zhí)行過(guò)濾器過(guò)濾器中的doFilter方法進(jìn)行特定的

2、操作;然后通過(guò)調(diào)用FilterChain.doFilter轉(zhuǎn)交給web容器。web容器執(zhí)行完成后把資源返回給過(guò)濾器過(guò)濾器,再展現(xiàn)給用戶(hù)。簡(jiǎn)單的過(guò)濾器實(shí)例:簡(jiǎn)單的過(guò)濾器實(shí)例:將將get請(qǐng)求提交的數(shù)據(jù)重新編碼為請(qǐng)求提交的數(shù)據(jù)重新編碼為UTF-8軟件:NetBeans IDE8.0.2打開(kāi)NetBeans IDE8.0.21.首先建立首先建立一個(gè)新項(xiàng)目一個(gè)新項(xiàng)目2下一步下一步輸入項(xiàng)目名稱(chēng)和位置之后點(diǎn)擊下一步?復(fù)制以下文字到主頁(yè)index.html里面?登錄界面姓名:新建一個(gè)success.jsp 復(fù)制以下內(nèi)容到里面?登錄成功?歡迎!?效果如圖:我們嘗試直接運(yùn)行 查看效果這是index.html 輸入

3、中文之后提交?跳轉(zhuǎn)到success.jsp就會(huì)出現(xiàn)亂碼我們嘗試吧get方法改成post方法提交查看一下效果這是index_1.html 輸入中文之后提交?也出現(xiàn)了亂碼可見(jiàn)沒(méi)有經(jīng)過(guò)過(guò)濾器直接提交 ,無(wú)論是get還是post方法,即使你所有網(wǎng)頁(yè)默認(rèn)都是UTF-8編碼,提交的數(shù)據(jù)只要出現(xiàn)中文,得到的結(jié)果還是會(huì)亂碼我們下面通過(guò)新建過(guò)濾器來(lái)解決這個(gè)問(wèn)題注意:若在新建按鈕對(duì)應(yīng)的彈出菜單沒(méi)看到過(guò)濾器,則點(diǎn)擊該彈出菜單的“其他”,會(huì)出現(xiàn)“過(guò)濾器”這一項(xiàng)填寫(xiě)好類(lèi)名和包名就可以下一步1.點(diǎn)擊將過(guò)濾器信息添加到web.xml2.點(diǎn)擊新建過(guò)濾器映射3.我們作用的URL是success.jsp4.我們選擇過(guò)濾器的分類(lèi):

4、REQUEST代表直接請(qǐng)求FORWARD代表跳轉(zhuǎn)頁(yè)面這里我們不需要初始化參數(shù) 直接完成在EncodingFilter里面增加這句:private String encoding=UTF-8;(UTF-8)代表我們要轉(zhuǎn)換成的格式在dofilter里面增加下面這幾句:HttpServletRequest httpReq=(HttpServletRequest) request;if(GET.equalsIgnoreCase(httpReq.getMethod()EncodingHttpServletRequestWrapper wrap=new EncodingHttpServletRequest

5、Wrapper(httpReq,encoding);response.setContentType(text/html;charset=+encoding);chain.doFilter(wrap, response);elserequest.setCharacterEncoding(encoding);response.setCharacterEncoding(encoding);chain.doFilter(request, response);代碼為:?HttpServletRequest httpReq=(HttpServletRequest) request;if(GET.equal

6、sIgnoreCase(httpReq.getMethod()?EncodingHttpServletRequestWrapper wrap=new EncodingHttpServletRequestWrapper(httpReq,encoding);response.setContentType(text/html;charset=+encoding);chain.doFilter(wrap, response);elserequest.setCharacterEncoding(encoding);response.setCharacterEncoding(encoding);?chain

7、.doFilter(request, response);該代碼的含義為:如果提交的為GET請(qǐng)求(本案例使用的就是GET請(qǐng)求)那么就新建一個(gè)EncodingHttpServletRequestWrapper實(shí)例把GET默認(rèn)提交的以ISO8859-1格式編碼的數(shù)據(jù)轉(zhuǎn)換成UTF-8格式編碼如果以post方式提交的數(shù)據(jù)則直接使用:request.setCharacterEncoding(“UTF- 8”);response.setCharacterEncoding(“UTF- 8”);就可以把編碼轉(zhuǎn)換成UTF-8下面我們介紹一下新建一個(gè)EncodingHttpServletRequestWrappe

8、r的java類(lèi)來(lái)處理GET請(qǐng)求新建一個(gè)JAVA類(lèi)類(lèi)名為:EncodingHttpServletRequestWrapper復(fù)制以下內(nèi)容到EncodingHttpServletRequestWrapper類(lèi)里面:?package com.filter;import java.io.UnsupportedEncodingException;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletRequestWrapper;public class EncodingHttpServletRe

9、questWrapper extends HttpServletRequestWrapper private HttpServletRequest request;private String encoding;public EncodingHttpServletRequestWrapper(HttpServletRequest request) super(request);this.request=request;public EncodingHttpServletRequestWrapper(HttpServletRequest request,String encoding) supe

10、r(request);this.request = request;this.encoding = encoding;?Override?public String getParameter(String name) String value = request.getParameter(name);if (null != value)? try / tomcat默認(rèn)以ISO8859-1處理GET傳來(lái)的參數(shù)。把tomcat上的值用ISO8859-1獲取字節(jié)流,再轉(zhuǎn)換成UTF-8字符串value = new String(value.getBytes(ISO8859-1), encoding); catch (UnsupportedEncodingException e)?e.printStackTrace();?return value;如圖所示:關(guān)鍵語(yǔ)句為:?String value = request.getParameter(name);value = new String(val

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論