GET與POST的區別,以及GET中文亂碼


get方式與post方式:
  • get方式提交最大能提交8192個字符,執行效率高,但不安全;pos方式t提交沒有大小限制,效率比get低,安全
  • post是傳輸信息內容,get是傳輸url值
GET -- 這是缺省方式,填充form的內容將被附在 URL 的後面,就好象它是一個普通的查詢請求.
POST -- 這種方式把 form 的內容放在HTTP 請求的消息實體中發送給服務器,而不是作爲 URL 的一部分.
  • POST 在HTTP請求的主體內 Request.Form讀取數據. GET 標識在URL的最後 Request.QueryString讀取數據 GET 有一個缺點就是URL字符的長度被瀏覽器及服務器使用時有一些限制, 還有一個就是把HTTP請求中通過WEB傳遞的數據暴露出來


自從Tomcat5.x開始,GET和POST方法提交的信息,Tomcat採用了不同的方式來處理編碼,對於POST請求,Tomcat會仍然使用request.setCharacterEncoding方法所設置的編碼來處理,如果未設置,則使用默認的iso-8859-1編碼。而GET請求則不同,Tomcat對於GET請求並不會考慮使用request.setCharacterEncoding方法設置的編碼,而會永遠使用iso-8859-1編碼

即使你的頁面設置了
<%@page language="java" pageEncoding="utf-8" %>
使用get方式,name、表單等數據會附在URL 請求裏面,pageEncoding只對POST實體起作用,對URL不起作用,所以jsp頁面傳遞的時候URL仍然使用ISO-8859-1編碼,如果URL中包含中文,就會產生亂碼

$.ajax({//默認 type:'get'
 url:url,
 async: false,
 data:{time:(new Date()).toString(),name:name},
 success: function(result){
  $("#main").html(result);
 }
});

解決這種亂碼問題可以對name進行加密,需要的時候在進行解密
name:encodeURI(encodeURI(name))
在新的jsp中進行解密
<%@ page import="java.net.URLDecoder"%>
var name= '<%=URLDecoder.decode(request.getParameter("name"), "UTF-8")%>';
....

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章