總結解決JSP參數(shù)傳遞亂碼的方法_第1頁
總結解決JSP參數(shù)傳遞亂碼的方法_第2頁
總結解決JSP參數(shù)傳遞亂碼的方法_第3頁
總結解決JSP參數(shù)傳遞亂碼的方法_第4頁
全文預覽已結束

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、總結解決JSP參數(shù)傳遞亂碼的方法計算機生于美國,英語是他的母語,而英語以外的其它語言對他來說都是外語。他跟我們一樣,不管外語掌握到什么程度,也不會像母語那樣使用得那么好,時常也會出一些“拼寫錯誤”問題。亂碼的出現(xiàn)根本原因在于編碼和解碼使用了不同的編碼方案。比如用GBK編碼的文件,用UTF-8去解碼結果肯定都是火星文。所以要解決這個問題,中心思想就在于使用統(tǒng)一的編碼方案。jsp頁面間的參數(shù)傳遞有以下幾種方式:1、表單(form)的提交。2、直接使用URL后接參數(shù)的形式(超級鏈接。3、如果兩個jsp頁面在兩個不同的窗口中,并且這兩個窗口是父子的關系,子窗口中的jsp也可以使用javascript和

2、DOM()來取得父窗口中的jsp的輸入元素的值。下面就前兩種方式中出現(xiàn)的亂碼問題做一下剖析。1、表單(form)的提交實現(xiàn)參數(shù)頁面間的傳遞在介紹表單傳遞參數(shù)的內(nèi)容之前,先來了解一些預備知識。表單的提交方式和請求報文中對漢字的處理。表單的提交方式:通常使用的表單的提交方式主要是:post和get兩種。兩者的區(qū)別在于:post方式是把數(shù)據(jù)內(nèi)容放在請求的數(shù)據(jù)正文部分,沒有長度的限制;get方式則是把數(shù)據(jù)內(nèi)容直接跟在請求的頭部的URL后面,有長度的限制。下面是同一個頁面兩種方式的請求報許文。Requesttest.jsp代碼1. <% page language="

3、java" contentType="text/html; charset=UTF-8"   2.     pageEncoding="UTF-8"%>    3. >    4. <html>    5. <head>    6. <meta http-equiv="Content-T

4、ype" content="text/html; charset=UTF-8">    7. <title>Insert title here title>    8. head>    9. <body>    10. <%- post方式提交表單 -%>    11. <form ac

5、tion="http:/localhost:8888/EncodingTest/requestresult.jsp" method="post">    12.     UserName:<input type="text" name="username"/>    13.     Password:<input 

6、type="password" name="password"/>    14.     <input type="submit" value="Submit">    15. form>    16. body>    17. html>   1. <%&

7、#160;page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> > <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

8、 <title>Insert title here title>  head> <body> <%- post方式提交表單 -%> <form action="http:/localhost:8888/EncodingTestb/requestresult.jsp" method="post"> UserName:<input type="text&q

9、uot; name="username"/> Password:<input type="password" name="password"/> <input type="submit" value="Submit">  form>  body>  html>  Post方式的請求報文代碼1. POST /Encodin

10、gTest/requestresult.jsp HTTP/1.1   2. Accept: image/gif, image/jpeg, image/pjpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*    3. Referer:

11、0;http:/localhost:8080/TomcatJndiTest/requesttest.jsp    4. Accept-Language: zh-cn    5.  6. Content-Type: application/x-www-form-urlencoded    7. Accept-Encoding: gzip, deflate    8. Host: localhost:8888 

12、  9. Content-Length: 49   10. Connection: Keep-Alive    11. Cache-Control: no-cache    12.    13. username=%E4%B8%96%E7%95%8C%E6%9D%AF&password=123   14. POST /EncodingTest/requestresult.jsp HTTP/1.1 A

13、ccept: image/gif, image/jpeg, image/pjpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */* Referer: http: 以上報文內(nèi)容,可以看出post方式的請求報文是有專門的數(shù)據(jù)部的。,下面的同一請求頁面的get提交方式的請求報文:1

14、. GET /EncodingTest/requestresult.jsp?username=%E4%B8%96%E7%95%8C%E6%9D%AF&password=123 HTTP/1.1   2. Accept: image/gif, image/jpeg, image/pjpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerp

15、oint, application/msword, */*    3. Referer: http:/localhost:8080/TomcatJndiTest/requesttest.jsp    4. Accept-Language: zh-cn    5.  6. Accept-Encoding: gzip, deflate    7. Host: localhost:8888 

16、 8. Connection: Keep-Alive   9. GET /EncodingTest/requestresult.jsp?username=%E4%B8%96%E7%95%8C%E6%9D%AF&password=123 HTTP/1.1 Accept: image/gif, image/jpeg, image/pjpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.

17、ms-excel, application/vnd.ms-powerpoint, application/msword, */* Referer: http: 以上報文內(nèi)容,可以看出get方式的請求報文沒有專門的數(shù)據(jù)部,數(shù)據(jù)是直接跟在url的后面。請求報文中對漢字的處理:這個字符串是“世界杯”這三個漢字對應的"UTF-8”編碼"E4B896E7958CE69DAF"在每個字節(jié)前追加一個"%"后形成的。至于為什么要做這樣的轉化,我的理解是:因為請求報文會以"ISO-8859-1

18、"的編碼方式編碼后,通過網(wǎng)絡流的方式傳送到服務器端。"ISO-8859-1"僅支持數(shù)字、英文字母和一些特殊字符,所以像漢字等這樣的字符"ISO-8859-1"是不認識的。所以就必須先給這些"ISO-8859-1"不支持的字符做個“整形”手術。這樣才能正確的將頁面上的信息傳送到服務器端。這時可能又會有另外一個問題:上面的例子中為什么會選用"UTF-8"編碼,其它的編碼方案可以嗎?答案是可以的。在jsp頁面代碼的頭部有這樣一段代碼"<% page language="java" contentType="text/html; charset=UTF-8" pageEncoding=&

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論