http請求無非就是get和post請求,分下面四種場景java
一、URL方式直接訪問。(get請求)jquery
二、頁面連接。(get請求)web
三、表單get提交(get請求)ajax
四、表單post提交(post請求)tomcat
參數傳遞有兩種,一種是經過url傳參,一種是經過body傳參。服務器
1.表單get提交其實就是將參數拼接到url後面,若是是中文必需要轉換爲ascii再拼接提交,例如:"我 愛 你" 轉換爲 "%E6%88%91%20%E7%88%B1%20%E4%BD%A0",也就是用encodeURI函數編碼函數
2.post提交表單時,參數經過body傳遞,傳遞時根據請求頭contentType類型編碼處理再提交到服務器。post
3.值得注意的一個坑:用ajax.post提交數據時候中文亂碼編碼
a)當含有中文的參數拼接在post的url後面會亂碼,中文參數必須以js對象放在ajax的data屬性上;url
b)當含有中文的參數以序列化的形式放在ajax的data屬性上會中文亂碼,必須以js對象的形式放在ajax的data屬性上(以序列化的形式ajax會把參數拼接到url後面jquery.ajax是這樣的)
js編碼函數區別
js對文字進行編碼涉及3個函數:escape,encodeURI,encodeURIComponent,相應j3個java解碼函數:unescape,decodeURI,decodeURIComponent
附帶escape,decodeURI,decodeURIComponent之間的區別
escape對0-255之外的unicode值進行編碼時輸出%u****格式,
其它狀況下escape,encodeURI,encodeURIComponent編碼結果相同。
escape不編碼字符有69個:*,+,-,.,/,@,_,0-9,a-z,A-Z
encodeURI不編碼字符有82個:!,#,$,&,',(,),*,+,,,-,.,/,:,;,=,?,@,_,~,0-9,a-z,A-Z
encodeURIComponent不編碼字符有71個:!, ',(,),*,-,.,_,~,0-9,a-z,A-Z
web.xml中配置的過濾器只能針對post 請求的數據進行編碼轉換,對於get 提交的數據亂碼是處理不了的.(get請求編碼設置tomcat的server.xml文件)