質問内容
質問を評価する
(0ポイント)
|
GoogleAppEngine向けのサーブレットを開発していますが、下のような現象がおきて詰まっています。 ***.appspot.com/input?foo=3 のように、入力画面にGETパラメータで3を渡しているとします。
入力画面の一部 public void exec(HttpServletRequest req ,HttpServletResponse res) throws Exception { String foo = "0"; Srting var = ""; Hashmap hash = new Hashmap(); if(req.getParameter("foo") != null){ foo = req.getParameter("foo"); } var = "var";
hash.add("foo",foo); hash.add("var",var);
System.out.println(hash.toString());//{foo=3,var=var}と表示 ses.setAttribute("hash",hash); ses.setAttribute("foo",foo);
req.getRequestDispatcher("input.jsp").forward(req, res); }
確認画面の一部 Hashmap hash = (Hashmap)ses.getAttribute("hash",hash); System.out.println(hash.toString());//{foo=0,var=var}と表示 System.out.println((String)ses.getAttribute("foo"));//0と表示
if文の中を通っているのは間違いなく、if文を抜けたあとのfooの値を出力すると3と表示されるのを確認しています。 また初期化せずにString foo;と宣言するとコンパイルエラーになります。 デバッグのため変数の中身をprintするときはJSPにforwardする手前で止めています。
JSPを呼び出すときにGETパラメータがないものとして処理し直しているように見えるのですが、セッションに格納するまでのロジックは変わりませんし、JSPでセッションを操作する記述もありません。
このような現象はJAVAの挙動としては正しいのでしょうか? また確認画面でfoo=3を取得するにはどのようにすればよいでしょうか?
お手数おかけします。よろしくお願いします。
|