WEB開發時,在前端通過get / post 方法傳遞參數的時候 如果實參附帶特殊符號,后端接收到的值中特殊符號就會被轉義
例如該請求: http://localhost:10001/demo/index.do?name=張三(1)
注:中文()不會出現此種情況
后台就收到的實際 name 值為: 張三(1)
(其實為html中 ( 符號的十進制編碼
)其實為html中 ) 符號的十進制編碼
方法1:
檢查web.xml里是否配置了過濾特殊字符的filter,若不需要可以關掉此filter
方法2:
java中可以使用 org.apache.commons.lang3 包中的 StringEscapeUtils.unescapeHtml4(String str) 方法來進行解碼。
方法3:
在controerl接收的參數前加上@RequestBody注解,具體可百度@RequestBody的用法,此方法局限性比較大
例如 :
@RequestMapping(value = "/index.do")
@ResponseBody
public String addQbzl(HttpSession session, @RequestBody String name) {
}
前端則需要 聲明dataType 和 contentType,傳遞的參數並用JSON.stringify()轉為json字符串
1 $.ajax({ 2 url: CONTEXTPATH + "/index.do", 3 type: 'POST', 4 dataType: 'JSON', 5 contentType : 'application/json', 6 data: JSON.stringify(Data), 7 success: function (data) { 8 } 9 })