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"