0

ユーザーをパラメーターとしていくつかの情報を使用して別のページにリダイレクトするハイパーリンクを含む Web アプリがあります。より具体的には、私のハイパーリンクには、パラメーターとして SQL クエリが含まれています。

私はこれを次のようにします:

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

ただし、SQL クエリに検索語として % などのワイルドカードが含まれていると、ログ ファイルに次のエラー メッセージが表示されます。

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

そのため、ワイルドカードを含むハイパーリンクを介して SQL クエリを渡すことはできないと思います。この問題を解決するにはどうすればよいですか?

4

3 に答える 3

1

URLは、許可される文字に制限があります。は%、URLエンコードされた文字の開始を示す予約文字です。

リクエストパラメータはURLエンコードされている必要があります。JSTL <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むしろ、 RESTfulURLの一部または場合によっては保存されている固定コマンドを操作します。

于 2012-04-25T22:34:43.090 に答える
1

パラメータをURIエンコードする必要があります。

これがあなたが望むものだと思います:

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

このjsfiddleを参照してください

また、そのように SQL を渡すことは、悪い悪い悪い考えです。誰でもあなたのDBにアクセスできます。

于 2012-04-25T22:25:08.623 に答える
0

ハイパーリンクを使用してパラメーターまたは値を渡すことができます

例として:私は1ページのdisplay.htmlを持ち、パラメータaとbを渡し、それぞれ値10と20を渡します。アンカー タグでは、次のように href します。

                      href="xyz.html?a=10&b=20"
于 2015-09-22T16:17:38.620 に答える