SpringMvc接受特殊符號參數被轉義


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 })

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM