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

下載本文檔

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

文檔簡介

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

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

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

4、REQUEST代表直接請求FORWARD代表跳轉(zhuǎn)頁面這里我們不需要初始化參數(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請求(本案例使用的就是GET請求)那么就新建一個EncodingHttpServletRequestWrapper實例把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下面我們介紹一下新建一個EncodingHttpServletRequestWrappe

8、r的java類來處理GET請求新建一個JAVA類類名為:EncodingHttpServletRequestWrapper復(fù)制以下內(nèi)容到EncodingHttpServletRequestWrapper類里面:?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傳來的參數(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)鍵語句為:?String value = request.getParameter(name);value = new String(val

溫馨提示

  • 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

提交評論