2010-06-02 52 views
2

我将queryString,我传递给servlet的doGet()方法,看起来像这样的问题:#字符似乎导致了GET请求

数= 9 & preId0 = -99 & objId0 = - 99 & preId1 = -99 & objId1 = -99 & preId2 = 69 & objId2 = 16#!78 & preId3 = -99 & objId3 = -99 & preId4 = -99 & objId4 = -99 & preId5 = -99 & objId5 = -99 & preId6 = -99 & objId6 = -99 & preId7 = -99 & objId7 = -99 & preId8 = -99 & objId8 = -99

后并包括#一切都是零,所以我假设#有一些特殊的意义。这是真的?还有其他这样的角色会这样做吗?

回答

4

是的,#表示哈希值。例如,这用于跳转到页面中的锚定标记。无论何时将数据放入URL中,都需要对其进行网址编码。在JavaScript中,您可以使用encodeURIComponent()。在其他语言中,您将需要查找文档。

2

#指示URL的锚点部分,该部分用于标识由URL的其余部分返回的文档中的特定位置。它在技术上被称为Fragment portion of the URI.

#之后的所有内容都是其中的一部分。由于只有在文件被退回和处理时才重要(再次,它代表了该文件中的一个位置),因此它只对客户有意义。它对服务器没有任何意义或价值,客户端会将整个值视为单个值(除非您提供额外的自定义代码来分解值并从中提取额外的含义)。

如果需要的字符#通过在URL中的价值的一部分,%23取代它 - 你可以做到这一点编程方式使用URL Encoding,将与那些通过是可以接受的运输全部替换“特”字URI。

2

作为一般的经验法则,在将您的查询字符串参数发送到服务器之前,最好对其进行URLENCODE查询。网址中的#用于表示您当前所在的锚点,并在尝试将其发送到服务器时导致问题。对URL编码

更多信息可以在这里找到:http://www.w3schools.com/tags/ref_urlencode.asp

2

“#”是一个特殊字符。它引用通常用于页面锚点的散列。你可以简单地在URL中编码这个字符%23,这将消除这个问题。其他有意义的角色是? [space] &

相关问题