2017-10-10 14 views
0

入力値とともにsetAttribute()メソッドを使用してJSPからサーブレットに値を送信するフォームを作成したいとします。JSPでsetAttributeをサーブレットで取得する

demo1.jsp

<form method="POST" action="DEMO1"> 
<% request.setAttribute("value",1); %> 
<input type="submit" value="Add" /> 
</form> 

DEMO1

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException 
{ 
    PrintWriter pw=response.getWriter(); 
    pw.println(request.getAttribute("value")); 
} 

それは私が私のページを投稿するために使用するnull値を出力します。サーブレットでのsetAttribute()の値をjspにアクセスできるプロセスはありますか。

答えて

1

ここでの処理の順序を理解する必要があります。 request.setAttribute("value",1);を実行すると、現在のリクエストオブジェクトに属性valueを設定するだけで、HTMLフォームをユーザーに返すとすぐに存在しなくなります。ユーザーがフォームを送信すると、フォームに 'value'という属性がありません。そのため、サーブレットがリクエストオブジェクトからリクエストを取得しようとすると、サーブレットは存在しないため、nullとして返されます。

ユーザーフォームを送信したときにサーバーが受信する値を格納する隠し入力。

<input type="hidden" name="value" value="1" />

だからあなたのデモJSPは次のよ​​うになります。

<form method="POST" action="DEMO1"> 
    <input type="hidden" name="value" value="1" /> 
    <input type="submit" value="Add" /> 
</form> 
+0

は、その値にアクセスする方法はありません... –

+0

ありがとうございました。私はまだページ内にテキストまたは隠された値の中になぜ値があるのか​​、そしてsetAttribute()がそれを行うことができない理由を理解する上で問題があります。リクエストスコープが実際にどのように機能するかなどです。あなたは私を説明してください...助けが必要ですか? –

+0

無効になっていないフォーム上の入力属性は、フォームと共に送信されます。属性は属性の 'name'としてキーを、属性の' value'として値を持つ 'request'オブジェクトに自動的に設定されます。 – VHS

関連する問題