0

データベースにクエリを実行し、結果をJSPに返すJavaサーブレットを作成しました。URLから渡されたパラメータに基づいてSQLステートメントを実行しています

//Reading Parameter
String User = request.getParameter("userid");

//Executing the SQL
String sqluser = "SELECT 1  FROM <table name> WHERE username = ?

pstmt = con.prepareStatement(sqluser);
pstmt.setString(1, User);
rset = pstmt.executeQuery();

サンプルURL:http:\ testenv.com \ test?userid = tana

上記のURLは、user ='tana'であるため、正しい結果を表示します。

ただし、ユーザー名に「#」が含まれているユーザーもいます。

例:http:\ testenv.com \ test?userid = la#na

上記の場合、URLに「la#na」が含まれていても、User ='la'であるため、SQLステートメントは値を返しません。getParameterを使用して値「la#na」を取得できますか?もしそうなら、私は何をする必要がありますか?

ありがとう。

4

2 に答える 2

1

ハッシュ文字は通常、内部リンクとして使用されるため、適切にエンコードする必要があります。

http://testenv.com/test?userid=la%23na
于 2012-06-26T19:35:00.890 に答える
0

「#」は URL で役割を果たし、通常の文字ではありません。これはアンカーと呼ばれ、要求されたページ内の特定の場所をマークします。アンカーの後の部分はブラウザのみが使用するため、クエリ文字列の一部ではなく、サーバーには送信されません。したがって、サーバーは を取得しlanaはブラウザにとどまります。

送信される URL を制御できる場合は、エンコードしてください。そうでなければ、できることはあまりありません。

于 2012-06-26T19:39:20.307 に答える