怎么处理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传递的参数带有的主要内容,如果未能解决你的问题,请参考以下文章

http GET 请求的参数怎么传递,放在body里用json形式后台request读流获取不到数据。

springMvc通过url向后台传递带有#井号的参数处理

springMvc通过url向后台传递带有#井号的参数处理

springMvc通过url向后台传递带有#井号的参数处理

Ajax中POST/GET参数传递中“+”号的处理

php怎么传递参数