2009-05-08 10 views
1

URL変数を使用して別のサーブレットにカテゴリを渡す単純なJavaサーブレットを構築しています。javaサーブレット:空白変数変数値を渡す

Adobe 
Adobe Acrobat 
IBM 
IBM - Workstations 

私は1つをクリックすると、リンクのようにURLになります::

http://localhost/getItems?getItems?manufacturer=Adobe%20Acrobat 

次のコード

ResultSet rs = qw.DBquery("select distinct manufacturer from Products order by manufacturer asc"); 
try { 
    while (rs.next()) { 
     table+= "<tr><td><a href=\"getItems?manufacturer=" 
       + rs.getString("Manufacturer") + "\">" 
       + rs.getString("Manufacturer") + "</a></td></tr>\n"; 
    } 
} 

にその出力を含む。例えば

、しかし、メーカーの変数とその値を取得すると、

String manufacturer = request.getParameter("manufacturer"); 
ResultSet rs1 = qw.DBquery("select * from products where Manufacturer like '" 
          + manufacturer + "'"); 

クエリ出力が失敗し、製造元の値にスペースが含まれていると何も生成されません。これを変換する方法に関するアイデアや回避策はありますか?私は何らかの種類のurldecodeを行う必要がありますか?予め

答えて

3

URL内の空間のエンコーディング20%が正しいこと、およびウェブ・アプリケーション・コンテナはURL復号化の世話をするように

おかげ。あなたのプログラムで

String manufacturer = request.getParameter("manufacturer"); 

文字列manufacturerは、したがって、(スペース付き) 'は、Adobe Acrobat' を含める必要があります。それを(どこかにログオンすることによって)確認できますか?

"select * from products where Manufacturer like '"+ manufacturer + "'" 

また、バインド変数を使用してください。 クエリのパラメータをSQLに直接補間することで、SQLインジェクション攻撃を完全に防ぐことができます。パフォーマンスも悪いです。

"select * from products where Manufacturer like ? " 
関連する問題