怎么处理get传递的参数带有
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎么处理get传递的参数带有相关的知识,希望对你有一定的参考价值。
参考技术A 在浏览器地址栏
中输入某个URL地址或单击网页上的一个
超链接
时,浏览器发出的
HTTP请求
消息的请求方式为GET。如果网页中的
表单元素的method属性被设置为“GET”,浏览器提交这个FORM表单时生成的HTTP请求消息的请求方式也为GET。
springMvc通过url向后台传递带有#井号的参数处理
井号释义
1、HTTP请求不包括#
#是用来指导浏览器动作的,对服务器端完全无用。所以,HTTP请求中不包括#。
比如,访问下面的网址,
http://www.example.com/index.html#print
浏览器实际发出的请求是这样的:
GET /index.html HTTP/1.1
Host: www.example.com
可以看到,只是请求index.html,根本没有"#print"的部分。
2、#后的字符
在第一个#后面出现的任何字符,都会被浏览器解读为位置标识符。这意味着,这些字符都不会被发送到服务器端。
比如,下面URL的原意是指定一个颜色值:
http://www.example.com/?color=#fff
但是,浏览器实际发出的请求是:
GET /?color= HTTP/1.1
Host: www.example.com
可以看到,"#fff"被省略了。只有将#转码为%23,浏览器才会将其作为实义字符处理。也就是说,上面的网址应该被写成:
http://example.com/?color=%23fff
前台代码
当我们不能确定传入的参数中是否包含井号时,就需要对参数进行转码,一定是两次转码,因为spring会自己抵消一次,如果只写一次转码,则后台的处理逻辑就不能使用我接下来的代码
param = param + "&targetName="+encodeURIComponent(encodeURIComponent(targetName));
后台代码
String targetNameStr =java.net.URLDecoder.decode(bean.getTargetName(),"UTF-8");
注意
正常的post请求,不需要将特殊字符转码,后台也能正常接收,上述代码主要用于通过url直接请求的情况下,例如以下的请求发起方式,则param需要注意转码,否则就会被截断
var url = "/follow/followThread/toEditJsp.do?" + param;
以上是关于怎么处理get传递的参数带有的主要内容,如果未能解决你的问题,请参考以下文章