如何将带有特殊字符的参数从一个jsp传递到另一个jsp,例如&;

如何将带有特殊字符的参数从一个jsp传递到另一个jsp,例如&;,jsp,Jsp,我有一个showdata.jsp,它以表格格式包含MySQL数据库中的所有数据。表字段为 id,firstname,lastname 数据库中的所有字段都是varchar 在每一行,表格都有更新按钮来编辑行详细信息。我正在将行的id从showdata.jsp传递到updatedata.jsp中,其中updatedata.jsp具有用于检索和编辑数据的文本字段。对于不包含特殊字符的参数(id/string),这可以正常工作,但是对于特殊字符串/id,这不会检索数据。 showdata.jsp上

我有一个
showdata.jsp
,它以表格格式包含MySQL数据库中的所有数据。表字段为

id,firstname,lastname 
数据库中的所有字段都是varchar

在每一行,表格都有更新按钮来编辑行详细信息。我正在将行的id从
showdata.jsp
传递到
updatedata.jsp
中,其中
updatedata.jsp
具有用于检索和编辑数据的文本字段。对于不包含特殊字符的参数(id/string),这可以正常工作,但是对于特殊字符串/id,这不会检索数据。 showdata.jsp上传递的URL为

<a href="updatedata.jsp?id=<%=request.getParameter(1)%>">Update</a>

下面是一个使用JSTL的解决方案

url
标记将自动对参数值进行编码

<c:url value="www.myurl.org" var="mylink">
    <c:param name="arg1" value="Science & technology" />
    <c:param name="arg2" value="Hello" />
    <c:param name="arg3" value="World" />
</c:url>
<a href="${mylink}">The link</a>

注意:没有
JSTL
的解决方案是使用
URLEncoder.encode
URI
(最后一个更安全),但由于这不是最好的解决方案,我只会给出想法;)

不,先生……如果我有一个字符串“science&technology”,并且我想从数据库中搜索包含该字符串的行,那么在这种情况下,我无法获得所需的结果。您无法将
science&technology
传递到参数中,空格不被接受,
&
是保留字符。但是您可以转义这些字符,如果您在参数部分传递这些值,这就是
将要做的。好的,谢谢您,先生。。。以及如何在简单的jsp而不是jstlHum中实现这一点,您不需要;)您不应该在JSP文件中使用JavaScriptlet,使用JSTL更干净,并且可以纠正一些类似的编码问题。但是如果需要的话,您有URLEncoder,但是您不会使用它好的..谢谢您,先生..但是我传递的值不是硬编码的。。我从一个jsp上的数据库接收该值,并将其传递给另一个jsp。。我试过使用url编码器,但效果不太好。@Anju这就是使用jstl的目的,您可以很容易地从名称中获得参数,如param值中的
${my_parameter}
。我只为您的编码问题提供了解决方案,对于如何使用JSTL,您可以找到现有的帖子或好的教程。但您仍然可以使用scriplet将值设置为param值…我在哪里可以获得java和ajax中特殊字符及其url编码表示的完整列表???@Anju好吧,我猜JSTL
c:url
,但您不必担心,以
c:param
值传递每个变量以确保安全,这是正确的方法。在ajax中,您需要调用一个方法(不记得名称)来翻译这些字符。(Ajax与java或jsp无关)
<a href="www.myurl.org?arg1=Science+%26+technology&arg2=Hello&arg3=World">The link</a>