将表单中的 url 从页面传递到 servlet 会删除部分查询字符串

发布于 2024-12-07 19:40:52 字数 612 浏览 0 评论 0原文

如果我在 JSP 上有一个像这样的表单:

<form action = "/myApp/myServlet?rssFeedURL=${rssFeedURL}' />" method = "post">
    <input type = "button" value = "See data for this RSS feed."/>
</form>   

我发现如果变量 ${rssFeedURL} 没有查询字符串,那么服务器会正​​确接收它,例如:

http://feeds.bbci.co.uk/news/rss.xml

但是如果存在查询字符串,例如:

http://news.google.com/news?ned=us&topic=m&output=rss  

我希望它与“&”的编码有关特点。有人可以建议吗?

服务器仅接收:

http://news.google.com/news?ned=us

我的页面是 charset=UTF-8 编码的。

If I have a form on a JSP like this:

<form action = "/myApp/myServlet?rssFeedURL=${rssFeedURL}' />" method = "post">
    <input type = "button" value = "See data for this RSS feed."/>
</form>   

What I find is that if the variable ${rssFeedURL} has no query string, then the server receives it properly, e.g.:

http://feeds.bbci.co.uk/news/rss.xml

But if a query string exists, e.g.:

http://news.google.com/news?ned=us&topic=m&output=rss  

I expect that it is to do with the encoding of the '&' character. Can anyone advise?

The server receives only:

http://news.google.com/news?ned=us

My pages are charset=UTF-8 encoded.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

奶茶白久 2024-12-14 19:40:53

您需要对请求参数进行 URL 编码。否则它们将被解释为初始请求 URL 的一部分。

JSTL 为此提供了

<c:url var="formActionURL" value="/myApp/myServlet">
    <c:param name="rssFeedURL" value="${rssFeedURL}" />
</c:url>

<form action= "${formActionURL}" method="post">
    ...

另一种方法是创建一个 EL 函数,该函数委托给 URLEncoder#encode()

You need to URL-encode request parameters. Otherwise they will be interpreted as part of the initial request URL.

JSTL offers you the <c:url> for this.

<c:url var="formActionURL" value="/myApp/myServlet">
    <c:param name="rssFeedURL" value="${rssFeedURL}" />
</c:url>

<form action= "${formActionURL}" method="post">
    ...

An alternative is to create an EL function which delegates to URLEncoder#encode().

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文