DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁腳本 >> HTML基礎知識 >> 關於HTML >> Html的form表單提交到jsp中出現中文亂碼
Html的form表單提交到jsp中出現中文亂碼
編輯:關於HTML     

Html的form表單提交到jsp中出現中文亂碼。

form表單提交有get和post兩種方法,在提交到jsp中時處理中文亂碼時方式不一樣


1.處理post方法提交中文亂碼
用post方法提交時,其實沒什麼特別的方法只要注意html頁面的編碼格式與jsp頁面的編碼格式一致即可。可以都為GBK,也可以都為UTF-8.
如圖:
html頁面
這裡寫圖片描述

 

2.處理get方法提交中文亂碼
如果使用的get方法提交的話,即使你的html頁面和jsp頁面編碼格式一致也會出現亂碼,至於為什麼會這樣我也沒去深入了解。總之在這裡提供解決方式。
方法1:
String value = request.getParameter(“parameterName”);
value = new String(value.getBytes(“ISO859_1”),”UTF-8”);
這種可以解決亂碼問題,但是很明顯這樣很麻煩。推薦用第二種方法。
方法2:
使用過濾器.對於一個web應用程序來說,過濾器是處於web容器內的一個組件,它會過濾特定請求資源請求信息和響應信息。一個請求來到時,web容器會判斷是否有過濾器與該信息資源相關聯,如果有則交給過濾器處理,然後再交給目標資源,響應的時候則以相反的順序交給過濾器處理,最後再返回給用戶浏覽器。
下面是解決亂碼的具體例子:
MyFirstFilter.java:

? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 package com.util;   import java.io.IOException; import java.io.UnsupportedEncodingException;   import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.annotation.WebFilter; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequestWrapper; import javax.servlet.http.HttpServletResponse;   import org.apache.catalina.connector.Request;   /**  * Servlet Filter implementation class MyFirstFilter  */ @WebFilter("/MyFirstFilter") public class MyFirstFilter implements Filter {     class MyRequest extends HttpServletRequestWrapper{         public MyRequest(HttpServletRequest request) {             super(request);             // TODO Auto-generated constructor stub         }           @Override         public String getParameter(String name) {             // TODO Auto-generated method stub             String value =null;             try {                   value = super.getParameter(name);                 if(super.getMethod().equalsIgnoreCase("GET")){                 if(value != null){                     value = new String(value.getBytes("ISO8859_1"), "UTF-8");                 }}             } catch (Exception e) {                 // TODO: handle exception                 e.printStackTrace();             }             return value;         }           }     public void  init(FilterConfig config) throws ServletException {       }     public void  doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws java.io.IOException, ServletException {           HttpServletRequest req = (HttpServletRequest)request;         HttpServletResponse response2 = (HttpServletResponse)response; //      req.setCharacterEncoding("GBK");         request.setCharacterEncoding("UTF-8");         response.setContentType("text/html");         response.setCharacterEncoding("UTF-8");         String path = req.getServletPath();         String param = req.getQueryString();         String uri = req.getRequestURL().toString();         request.setAttribute("uri", uri);         request.setAttribute("ServletPath", path+"?"+param);         request.setAttribute("isFiltered", "是");         // 把請求傳回過濾鏈         chain.doFilter(new MyRequest((HttpServletRequest)request),response);     }     public void destroy( ){         /* 在 Filter 實例被 Web 容器從服務移除之前調用 */     }   }

web.xml:

? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 <!--?xml version="1.0" encoding="UTF-8"?-->  <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemalocation="http://java.sun.com/xml/ns/javaee       http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">         <filter>     <filter-name>MyFirstFilter</filter-name>     <filter-class>com.util.MyFirstFilter</filter-class>     <init-param>     <param-name>secondAttribute</param-name>     <param-value>filterConfig的第二個參數</param-value>     </init-param>     </filter>     <filter-mapping>     <filter-name>MyFirstFilter</filter-name>    <url-pattern>/checkIn.jsp</url-pattern> </filter-mapping></web-app>

主要就是自定義了一個HttpServletRequest類,重寫了裡面的getParameter()方法,其實核心處理方法跟方法1一樣。

XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved