通过超链接传递参数

时间:2012-04-25 22:21:54

标签: html jsp redirect hyperlink

我有一个网络应用程序,其中包含一些超链接,用于将用户重定向到另一个页面,其中一些信息作为参数。更具体地说,我的超链接包括sql查询作为参数。

我是这样做的:

<a href="somepage.jsp?query=<%=stringSQLQuery%>"></a>

但是,每当我的sql查询包含通配符作为搜索词,如%时,我在日志文件中收到以下错误消息:

Character decoding failed. Parameter [string] with value ...

所以,我不认为我可以通过带有通配符的超链接传递SQL查询。我该怎么做才能解决这个问题?

3 个答案:

答案 0 :(得分:1)

您需要uri encode your parameters.

我认为这就是你想要的:

<a onclick='window.href.location = encodeURI("somepage.jsp?query=<%=stringSQLQuery%>");'>Click me</a>

请参阅this jsfiddle

此外,像这样传递SQL是一个 糟糕的坏主意 。任何人都可以访问您的数据库。

答案 1 :(得分:1)

网址在允许的字符中是限制性的。 %是保留字符,表示URL编码字符的开头。

请求参数必须为URL-encodedJSTL <c:url><c:param>专为此工作而设计。

<c:url var="somepage" value="somepage.jsp">
    <c:param name="query" value="${stringSQLQuery}" />
</c:url>
<a href="${somepage}">link</a>

正如大家所提到的,你在这里犯了一个巨大的设计错误,就是将SQL字符串作为请求参数传递。而是使用存储在某些Map或RESTful URL中的固定命令。

答案 2 :(得分:0)

您可以使用超链接传递参数或值

例如:    我有一个页面display.html并传递参数a和b,其值分别为10和20。在锚标记中我们将href如下。

                      href="xyz.html?a=10&b=20"