将表单中的URL从页面传递到servlet会丢弃部分查询字符串

时间:2011-10-02 18:39:15

标签: html jsp url

如果我在这样的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  

我希望它与'&amp;'的编码有关。字符。有人可以建议吗?

服务器仅收到:

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

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

1 个答案:

答案 0 :(得分:2)

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

JSTL为您提供<c:url>

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

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

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