码迷,mamicode.com
首页 > 其他好文 > 详细

请求(Request)的参数(Parameter)里包含特殊字符(#等)的正确处理方式

时间:2015-01-22 23:16:12      阅读:375      评论:0      收藏:0      [点我收藏+]

标签:

遇到一个问题

在一个地址链接(URL)里使用  url?param1=val1&param2=val2  的方式传递参数,结果在获取参数值时发现不是当初设定的值。

 

具体案例

以特殊字符井号(#)为例。

 

部分参数值丢了

JS里设置参数

window.location="some_web_project/xxx.jsp?param_key=abc#xyz";

 

Java中取参数值

Sting paramVal = request.getParameter("param_key");

 

你会发现在 Java 中取到的值,不是设定的  abc#xyz ,而是  abc 。井号后面的值没了,包括井号本身。

为什么呢?

网上查了下,URL中的井号(#)有其特殊的含义,表示位置(锚点)。

那怎么办呢?参数里就是有特殊字符,怎么才能拿到数据呢?

解决之道

先给参数值编码,再传递即可。

将上面的JS代码改为

1 var param_val = encodeURIComponent("abc#xyz");
2 window.location="some_web_project/xxx.jsp?param_key=" + param_val;

 

 

小结

如果请求(Request)的参数(Parameter)里包含特殊字符,记得将参数值编码  encodeURIComponent(SPECIAL_VALUE) 

 

请求(Request)的参数(Parameter)里包含特殊字符(#等)的正确处理方式

标签:

原文地址:http://www.cnblogs.com/memory4young/p/special-character-in-parameter-with-url.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!