




版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度養(yǎng)老護(hù)理院老人存款安全保管服務(wù)合同
- 二零二五年度不離婚各自生活安排協(xié)議書
- 2025年度高新技術(shù)園區(qū)擔(dān)保借款合同范本
- 二零二五年度物業(yè)公司股權(quán)轉(zhuǎn)讓及社區(qū)健康管理中心合同
- 二零二五年度咖啡廳轉(zhuǎn)讓定金及特色飲品開發(fā)協(xié)議
- 酒店與客戶2025年度團(tuán)隊建設(shè)活動住宿合同
- 科技企業(yè)的工作場所安全戰(zhàn)略
- 科技產(chǎn)品的用戶體驗與現(xiàn)代設(shè)計關(guān)系
- 水庫引水渠道坍塌應(yīng)急搶險工程項目可行性研究報告-渠道安全關(guān)乎供水穩(wěn)定搶險刻不容緩
- 校車購銷合同范本
- 家庭清潔課件教學(xué)課件
- 2024-2025學(xué)年北師版八年級生物上學(xué)期 第18章 生物圈中的微生物(知識清單)
- 汽車坡道腳手架施工方案
- 2021中國靜脈血栓栓塞癥防治抗凝藥物的選用與藥學(xué)監(jiān)護(hù)指南(2021)解讀
- 2024年重慶客運(yùn)駕駛員考試卷及答案
- API設(shè)計與文檔規(guī)范
- 民兵知識小常識
- 圖形的平移與旋轉(zhuǎn)壓軸題(7個類型55題)-【常考壓軸題】2023-2024學(xué)年八年級數(shù)學(xué)下冊壓軸題攻略(解析版)
- TDALN 033-2024 學(xué)生飲用奶安全規(guī)范入校管理標(biāo)準(zhǔn)
- 各地分布式光伏項目電價對比
- JT-T-775-2016大跨度斜拉橋平行鋼絲拉索
評論
0/150
提交評論