日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

javaweb 解决请求相应的乱码问题

發(fā)布時間:2024/10/8 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 javaweb 解决请求相应的乱码问题 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

在學(xué)習(xí)javaweb過程中由于軟件設(shè)計者都是外國人,他們所支持的編碼都是ISO8859-1對于我們中國人來講必須是中文,所以我們一般使用的編碼就是utf-8或者GBK,然而開發(fā)工具都是用ISO8859-1編碼,我們用utf-8解碼的話就會產(chǎn)生亂碼。

解決響應(yīng)亂碼一般都很好解決只需要加下面的一段代碼就可以:

response.setContentType("text/html;charset=utf-8");
然而對于請求亂碼的解決根據(jù)請求方式的不同解決亂碼的方式也不同,通常我們常用的是POST和GET這兩種方式。對于POST方式使用下面的代碼就可以解決:

request.setCharacterEncoding("utf-8");
但是對于get方式的請求方式上面的代碼就不能解決了,get的解決方案是將iso8859-1的編碼通過反編碼,再通過utf-8解碼就可以解決:str=new String(str.getByte("iso8859-1"),"utf-8"); 所以在servlet的doGet方法中就可以解決亂碼問題(POST提交方式): <span style="white-space:pre"> </span>public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {request.setCharacterEncoding("utf-8");response.setContentType("text/html;charset=utf-8");}但是在這里就存在一個問題,每創(chuàng)建servlet都需要加上這樣一段代碼,還需要知道是POST提交還是GET提交,這樣就顯得很繁瑣,需要解決這個問題就要用到web開發(fā)中另一個重要的知識點-過濾器。 Filter是Servlet技術(shù)中最實用的技術(shù),WEB開發(fā)人員通過Filter技術(shù),對web服務(wù)器管理的所有web資源:例如Jsp, Servlet, 靜態(tài)圖片文件或靜態(tài) html文件等進(jìn)行攔截,從而實現(xiàn)一些特殊的功能。例如實現(xiàn)URL級別的權(quán)限訪問控制、過濾敏感詞匯、壓縮響應(yīng)信息等一些高級功能。 開發(fā)一個Filter分兩個步驟: 一、寫一個類實現(xiàn)特定的接口Filter; 二、在web.xml文件中注冊這個Filter。<span style="white-space:pre"> </span><filter><description>全局編碼過濾器</description><filter-name>EncodingFilter</filter-name><filter-class>com.ruijie.filter.EncodingFilter</filter-class><init-param><param-name>encode</param-name><param-value>utf-8</param-value></init-param></filter><filter-mapping><filter-name>EncodingFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping> 在實現(xiàn)的類中處理亂碼,當(dāng)所有的資源訪問時都會通過這個過濾器過濾,從而達(dá)到解決亂碼的目的。<span style="white-space:pre"> </span>public void doFilter(ServletRequest request, ServletResponse response,FilterChain chain) throws IOException, ServletException {response.setContentType("text/html;charset="+encode); //解決響應(yīng)亂碼chain.doFilter(new MyHttpServletRequest((HttpServletRequest) request), response);}上文也說了在解決亂碼過程中g(shù)et方式提交的方式是需要主要解決的,在獲取參數(shù)過程中通常是通過以下三個方法獲取:
<span style="white-space:pre"> </span>getParameterMap()getParameterValues(String name)getParameter(String name)
所以問題就轉(zhuǎn)移到解決這三個方法的亂碼問題就可以解決get方式的亂碼問題。解決方案是將ServletRequest進(jìn)行改造成MyHttpServletRequest,可以通過兩種方式進(jìn)行改造一種是裝飾模式,一種是動態(tài)代理;由于為我們提供了HttpServletRequestWrapper,所以在這里我們使用裝飾者模式更加方便<span style="white-space:pre"> </span>class MyHttpServletRequest extends HttpServletRequestWrapper{private HttpServletRequest request = null;private boolean isNotEncode = true;public MyHttpServletRequest(HttpServletRequest request) {super(request);this.request = request;}@Overridepublic Map getParameterMap() {try{if(request.getMethod().equalsIgnoreCase("POST")){//--如果是post提交request.setCharacterEncoding(encode);return request.getParameterMap();}else if(request.getMethod().equalsIgnoreCase("GET")){//--如果是get提交Map<String,String[]> map = request.getParameterMap();if(isNotEncode){//只能在第一次解決亂碼for(Map.Entry<String, String[]> entry : map.entrySet()){String [] vs = entry.getValue();for(int i=0;i<vs.length;i++){vs[i] = new String(vs[i].getBytes("iso8859-1"),encode);}}isNotEncode = false;//設(shè)置為false,第二次就不會再進(jìn)這個代碼塊了}return map;}else{return request.getParameterMap();}}catch (Exception e) {e.printStackTrace();throw new RuntimeException(e);}}@Overridepublic String[] getParameterValues(String name) {return (String[]) getParameterMap().get(name);}@Overridepublic String getParameter(String name) {return getParameterValues(name) == null ? null : getParameterValues(name)[0];}}

點擊下載源碼

總結(jié)

以上是生活随笔為你收集整理的javaweb 解决请求相应的乱码问题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 久久社区视频 | 樱桃国产成人精品视频 | 国产精品久久久久久久久久直播 | 成人av资源在线 | 婷婷黄色网| 国产精品久久一 | 日批免费看| 国产97免费视频 | 国外成人性视频免费 | 神秘马戏团在线观看免费高清中文 | 影音先锋中文字幕在线 | 人妻一区在线 | 国产这里有精品 | 久久精品中文闷骚内射 | 久久久永久久久人妻精品麻豆 | 国产美女主播在线 | 久久9999久久免费精品国产 | 国产午夜不卡 | mm131在线| 免费在线观看你懂的 | 免费在线毛片 | 熟女毛片 | 自拍 偷拍 欧美 | 男人天堂视频在线 | 少妇黄色片 | 午夜av毛片 | 亚洲欧美综合另类自拍 | 青青草视频在线观看 | 成年免费视频黄网站在线观看 | 亚洲一区三区 | 美女扒开下面让男人捅 | 亚洲第一国产 | 老司机午夜福利视频 | 男男一级淫片免费播放 | 午夜资源 | 欧美色图激情小说 | 超碰在线最新地址 | 国产无码精品一区二区 | 欧美黄色一级视频 | 青草视频在线观看视频 | 欧美视频免费看欧美视频 | www.com日本| av三级网| 成色网 | 色屁屁www | 国产哺乳奶水91在线播放 | 一区二区视频国产 | 91禁看片 | 美景之屋电影免费高清完整韩剧 | 在线播放波多野结衣 | 999午夜| 大地资源在线观看免费高清版粤语 | 成 人 黄 色 片 在线播放 | 精品一卡二卡三卡 | 一本色道久久88亚洲精品综合 | 人人射av | 波多野结衣影院 | 亚洲天堂va | 天堂av中文在线 | 亚洲另类在线观看 | 91丝袜呻吟高潮美腿白嫩在线观看 | 91在线视频网址 | 337p日本欧洲亚洲大胆张筱雨 | 在线观看欧美国产 | 欧美成一区二区三区 | 欧美乱码精品一区二区三区 | 黑人巨大精品欧美一区二区蜜桃 | 亚州国产精品 | 黄瓜视频在线播放 | 伊人免费在线观看高清版 | 老熟女高潮一区二区三区 | 色综合中文 | 开心激情网站 | 青青草国产在线视频 | 伊人免费视频二 | 九九99久久| 久久55 | 国产精品tv| 年代下乡啪啪h文 | 午夜小影院| 尤物精品视频 | 国产午夜激情视频 | 一区二区小说 | 人人做人人爱人人爽 | 自拍欧美日韩 | 亚洲欧美精品aaaaaa片 | 天堂影视在线观看 | 狼人综合伊人 | av爱爱网站| 草久久久久久 | 久久久青青 | 免费啪 | 三级大片在线观看 | 精品人妻一区二区三区久久 | 亚洲另类色图 | 在线观看www | 超碰免费在线 | 足交在线观看 | 国产欧美日韩在线播放 |