javeWeb springMvc获取到的参数附带特殊符号,接收后被转义
https://blog.csdn.net/yejingxuan01/article/details/78802340
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/yejingxuan01/article/details/78802340
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字符串
$.ajax({
url: CONTEXTPATH + "/index.do",
type: 'POST',
dataType: 'JSON',
contentType : 'application/json',
data: JSON.stringify(Data),
success: function (data) {
}
})
---------------------
作者:叶菁烜
来源:CSDN
原文:https://blog.csdn.net/yejingxuan01/article/details/78802340
版权声明:本文为博主原创文章,转载请附上博文链接!