【问题标题】:Get parameter with the character '#' from a query string on java从java上的查询字符串中获取带有字符'#'的参数
【发布时间】:2011-08-23 18:30:37
【问题描述】:

我正在尝试获取具有字符# 的请求字符串,并且我的参数仅在# 之前获得。但问题是我需要这个角色,不能删除它。

有什么想法吗?

【问题讨论】:

  • # 是片段标识符。如果它是查询字符串中参数的一部分,则必须先对查询字符串进行 url 编码。如果您只想获取片段,我相信您使用的任何包装器都可以以与获取查询字符串类似的方式完成它

标签: java servlets query-string http-request


【解决方案1】:

Encode # 如果它必须在那里。文字 # 表示 fragment id 并且不能在 URI 中用于任何其他目的。 w3schools 有 encoding tables,因此您也可以自己查找值。

【讨论】:

  • 对,完美运行! URLEncodeURLDecode。我不想使用它,因为生成它的系统部分应该是最通用的,并且并非所有数据都是 url。但是对所有数据进行编码是没有问题的。谢谢
【解决方案2】:

您需要正确编码参数值。

如果 URL 是由 JSP 生成的,请确保使用 JSTL c:url 标签:

<c:url value="/path/to/myServlet">
    <c:param name="param1" value="#paramValue"/>
</c:url>

如果您使用的是纯 Java,请使用 URLEncoder.encode()

如果 URL 是静态的,请使用 %23paramValue 而不是 #paramValue

【讨论】:

    猜你喜欢
    • 2017-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-20
    • 1970-01-01
    • 2021-05-24
    • 1970-01-01
    • 2015-06-09
    相关资源
    最近更新 更多