2012-04-25 115 views
0

我有一個Web應用程序,其中包含一些超鏈接,將用戶重定向到另一個頁面,其中一些信息作爲參數。更具體地說,我的超鏈接包含sql查詢作爲參數。通過超鏈接傳遞參數

我這樣做像這樣:

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

然而,每當我的sql查詢包含通配符搜索詞,比如%,我在日誌文件中收到以下錯誤信息:

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

所以,我不認爲我可以通過帶有通配符的超鏈接傳遞SQL查詢。我能做些什麼來解決這個問題?

+0

爲什麼你需要傳遞一個完整的sql查詢作爲參數?該用戶應該只提供查詢的參數?這對你的應用程序足夠安全嗎? – jambriz 2012-04-25 22:26:39

回答

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中的固定命令。

1

需要uri encode your parameters.

我想這是你想要什麼:

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

this jsfiddle

此外,通過SQL的通過像這是一個很壞很壞的壞主意 。任何人都可以訪問你的數據庫。

+0

OP使用的是JSP,而不是JavaScript。 – BalusC 2012-04-25 22:31:02

+0

JSP頁面的一大特點是你也可以使用JavaScript:P – stevebot 2012-04-25 22:34:56

+0

我明白這是一個可怕的,可怕的想法,但這是我的教授想要的。 :/ – Waffles 2012-04-25 22:35:10

0

可以傳遞使用超級鏈接

如實施例pamameters或值: 我有一個頁面display.html和傳遞參數a和b分別有值10和20。在錨標籤中,我們將如下所示。

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