1. 程式人生 > >EncodingFilter 全站編碼過濾器 get請求中文編碼過濾

EncodingFilter 全站編碼過濾器 get請求中文編碼過濾

實現了全站的編碼過濾,並且實現了,get請求編碼過濾

public class EncodeFilter implements Filter {

    public void init(FilterConfig filterConfig) throws ServletException {
    }

    public void doFilter(ServletRequest request, ServletResponse response,
            FilterChain chain) throws IOException, ServletException {
        //處理post方式的亂碼
//request.setCharacterEncoding("utf-8"); HttpServletRequest req = (HttpServletRequest) request; MyRequest myReq = new MyRequest(req); chain.doFilter(myReq, response); } public void destroy() { } } //裝飾者模式 實現自定義getParameter函式 實現當返回String的時候進行編碼 class MyRequest extends HttpServletRequestWrapper { ServletRequest r; private
HttpServletRequest req; MyRequest(HttpServletRequest req) { super(req); this.req = req; } // @Override // public String getParameter(String name) { // String value = req.getParameter(name); // try { // return new String(value.getBytes("ISO8859-1"),"utf-8");
// } catch (UnsupportedEncodingException e) { // e.printStackTrace(); // } // return null; // } @Override public String getParameter(String name) { Map<String,String[]> map = getParameterMap(); return map.get(name)[0]; } @Override public String[] getParameterValues(String name) { Map<String,String[]> map = getParameterMap(); return map.get(name); } //因為getParameterMap函式如果使用過一次,再使用的時候就又進行一次編碼,就是亂碼了。所以就定義flag令該函式只能使用一次 boolean flag = true; @Override public Map<String,String[]> getParameterMap() { Map<String,String[]> map = req.getParameterMap(); if(flag){ for(Map.Entry<String, String[]> en:map.entrySet()){ String[] arr = en.getValue(); for(int i=0;i<arr.length;i++){ //陣列中的每個值都要再編碼再解碼處理 try { arr[i] = new String(arr[i].getBytes("ISO8859-1"),"utf-8"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } } } flag = false; } return map; }

相關推薦

EncodingFilter 全站編碼過濾器 get請求中文編碼過濾

實現了全站的編碼過濾,並且實現了,get請求編碼過濾 public class EncodeFilter implements Filter { public void init(FilterConfig filterConfig) thro

get請求中文亂碼問題解決和引數編碼

在web專案中,我們通常的請求方式都是get/post,但get方式有一個問題,就是引數是中文的時候容易亂碼,而且引數在路徑中可以看到,不安全,我的解決辦法是,對引數進行編碼,這樣可以解決如上兩個問題 1、在js中使用 encodeURI(encod

Spring MVC 自帶的字元編碼過濾器以及Tomcat字元編碼設定,徹底解決中文引數亂碼問題

一、Spring MVC字元編碼配置 java Web專案新增Spring支援後,可使用Spring自帶的字元編碼過濾器。原始碼在spring-web-4.1.0.RELEASE.jar包下的org.springframework.web.filter目錄的Characte

使Tomcat以UTF-8的編碼處理get請求

修改tomcat預設編碼格式: 修改tomcat下的conf/server.xml檔案,找到如下程式碼:     <Connector port="8080" protocol="HTTP/

ajax get請求中文引數亂碼解決

問題描述:使用ajax向後臺傳中文引數時出現亂碼 解決方案:   第一種方法: 由於tomcat預設的字符集是ISO-8859-1,修改Tomcat中的server.xml,在port為8080(也可以是不同的埠)的Connector中加入屬性: URIEncoding="

解決SpringMVC的GET請求中文亂碼

進行轉碼 @RequestMapping("querySupplyToJSON") @ResponseBody public List<Supply> querySupplyByJson(Supply supply) throws UnsupportedEncodingExcep

tomcat 7 GET請求中文亂碼

方法一: 修改server.xml: URIEncoding="utf-8" <Connector port="8080"  protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" 

對於get請求中文引數出現亂碼解決方法

對於get請求中文引數出現亂碼解決方法有兩個: 修改tomcat配置檔案新增編碼與工程編碼一致,如下:   <ConnectorURIEncoding="utf-8" connectionTimeout="20000" port="8080" protocol="H

頁面get請求 中文引數方法亂碼問題

位址列中出現漢字的情況有兩種,一種是漢字出現在URL的路徑部分,一種是漢字出現在URL的傳參的部分,第二種情況的時候必須採用編碼後傳參,接受時解碼的方式完成傳參。 js中編碼有escape(),encodeURI(),encodeURIComponent()三個常用的方法, escape()常常用在提交頁

post與get請求中文亂碼問題

首先POST與GET請求的應用場景: 除了form表單提交和ajax指定post請求可以使post,其他都是get請求,比如瀏覽器直接寫URL或者A標籤 POST請求: 配置編碼過濾器:解決post請求中文亂碼 <filter>

jsp中EL表示式顯示時中文亂碼和過濾器解決請求中文亂碼

一,jsp中EL表示式顯示時中文亂碼    我是通過url請求將一個jsp的值傳到另一個jsp,結果在另一個jsp顯示時出現中文亂碼。    分析問題:由於URL請求沒有設定編碼格式所以解析響應時會出現中文亂碼    解決方法:在Tomcat的conf資料夾中的server.

servlet get請求中文引數亂碼

今天無意中突然對get請求時中文亂碼的解決方法有了興趣,以前只是會用,卻不知道其中的原理,於是自己研究了一番,先來看後臺程式碼 protected void doGet(HttpServletRequest request, HttpServletResponse resp

ASP.NET開發過程中遇到GET請求中文引數亂碼問題的解決辦法

直接上程式片碼 頁面請求部分 (使用 encodeURI方法轉換中文請求內容 ) : var URL = "http://localhost:8080/index.aspx?keyword=" + encodeURI($("#_keyword").val()); 後臺接

HttpClient 傳送Get請求 中文亂碼

使用背景:使用HttpClient傳送Get請求的時候,有中文引數,在Servlet中接收的時候,取出請求的引數,然後在Servlet中轉發Get請求。在Servlet中轉發的Get請求的引數是GBK編碼的。         不管我怎麼設定編碼,總是失敗。        

對實際專案中的get請求中文亂碼以及post請求中文亂碼的解決方案

1.解決post請求的中文亂碼問題 (1)在專案中web.xml配置檔案中加入: <filter> <filter-name>CharacterEncodingFilter&

POST、GET請求中文引數亂碼問題

POST請求中文亂碼問題解決方法: 在web.xml檔案中新增編碼過濾器,如下: <!-- 解決post亂碼 --> <filter>

tomcat中get請求中文亂碼

1 修改tomcat配置檔案conf/server.xml <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000"

中文編碼 1:常見中文編碼格式

為什麼要有中文編碼格式?         最早的ASCII碼只包括了字母、標點符號、特殊字元等127個字元。這些字元對於拉丁語系國家的人使用是足夠的,但是對於非拉丁語系國家(如中國、日本等),ASCII碼就遠遠不夠了。因此就需要編碼來表示大量的漢字字元。 常用的幾種中文編

Spring mvc GET請求中文亂碼問題

最初使用@ResponseBody盡心ajax,很方便,但後來發現請求引數中有中文的話會產生亂碼 第一天太晚了,未解決問題 第二天發現,所有的get請求引數有中文都會出現亂碼,但: <filter>     <filter-name>encoding

tomcat伺服器,url get請求中文亂碼解決方案

解決方法,在tomcat conf/server.xml 中新增 紅色部分,然後重啟服務即可。     <Connector port="8080" protocol="HTTP/1.1"