2016-05-25 5 views
-1

私のプロジェクトでは、UIからHTTP postメソッドを使用してaccount<sのような文字列をサーバーに渡しています。この値はHTTPServletのrequest.getParameter()メソッドを使用してバックエンドで取得されます。 getParameter()は、エンコードされた文字列を返します。 account<sの値はaccount& lt;srequest.getParameter()は破損したデータを返します - Java

としてフェッチされました。現在、UIではaccount<sと表示する必要があります。値がaccount&lt;sとしてエンコードされている場合は、UI部分でhtmlデコードを使用できます。しかし、エンコードされた文字列にはさらにスペースがあります。 &lt;の代わりに、& lt;を取得しています。

のjQueryコード:

var params = {}; 
params.passVal = "account<s"; 
//ajax call 
$.ajax({ 
    type:"POST", 
    url:url, 
    data:params, 
    datatype:"json", 
    async:false 
}).success(function(json){ 
    //success notification 
}); 

Javaコード:私はすべてのエンコードされた文字のためのApache Tomcat 7とjqueryのv2.1.3

を使用しています

String receivedVal = request.getParameter("passVal"); //account& lt;s 

、スペースは第1文字と第2文字の間に追加されます。なぜそれはこのように振る舞うのですか?そして、元のデータをJavaでどのように入手できますか?

+0

Hmm。 'request.getParameter()'はかなり信頼できます。パラメータを正しく送信してもよろしいですか?これはブラウザのフォームからですか?またはクライアントコード? – Thilo

+0

パラメータはブラウザフォームから渡されます。 UIで渡された値をチェックしたところ、 'account

+0

コードを投稿できますか? 'HTML'とjava'サーブレット 'のように – emotionlessbananas

答えて

2

この問題は、エンコーディングプロセスが定義されているサーブレットフィルタクラスのために発生しました。 &lt;の代わりに、& ltとコードされています。根本的な原因を指摘してくれてありがとう@ tak3shi。

1

HTMLエンティティ(&LT;)はURLエンコーディングではありません。 <をとエンコードする必要があります。

+0

ありがとうございます。しかし、私は値をエンコードしていません。 UIから '<'を渡すと、バックエンドでは '& lt;'になります –

関連する問題