- ベストアンサー
getParameter と getAttributeの違いについて
Servletで、Form内の任意の項目を取得する場合には、 「getParameter」 と 「getAttribute」があります。 この二つの違いとしては getParameter 戻り値:String なのに対して getAttribute 戻り値:Object という違いがあります。 感覚的には getParameterも、getAttributeも、 Form内の任意の項目の値を取得する場合に getParameter("項目名"); getAttribute("項目名"); という使い方で 「どちらでもHTML(JSP)のフォーム内のデータを取得できる」という感覚がありあます。 ちょっと上手く纏められず、前提が長くなってしまったのですが 【ご質問1】 getParameterとgetAttributeの、 決定的な違いとはなんなのでしょうか? 参考のURLにもあるように 「Parameter は request にユーザが乗せてきたもの。 」であり、 「Attribute は request 生成後に Servlet だか JSP だかがくっつけたもの。」であるという違いが決定的な違いでしょうか? 言い換えれば Parameter は フォーム内のリクエストデータを受け、渡す役割をもつ、担当者であり Attribute は フォーム内のリクエストデータを受け、加工し、渡す役割を持つ担当者である ということでしょうか? 【ご質問2】 getAttributeがあるにも関わらず、 getParameterは何故存在するのでしょうか? getAttributeは戻り値をObject型として戻りますが、String型にキャストしてやれば、それでgetParameterで取得した効果と同じ効果が得られるものだと思われるので getParameterの存在理由が見出せないのですけども、getParameterはgetParameterで何か特別な役割をもっているのでしょうか? 【ご質問3】 フォーム内データを取得する場合、 「getParameter」でなければならないとか「getAttribute」を使用しなければならない、とかそういった決まりはありますでしょうか? [参考URL] http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=403&forum=12
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
その他の回答 (2)
- pcbeginner
- ベストアンサー率46% (261/560)
- choconamacream
- ベストアンサー率44% (152/338)
お礼
ありがとうございます。 ご回答いただきました内容分り易かったです。 >例えば、HTMLのFORMでURL引数に項目名:「hoge_name」、値:「hoge_value」を設定した場合、 >ServletでgetParameter("hoge_name")の戻り値は「"hoge_value"」、getAttribute("hoge_name")の戻り値は「null」。 すみません。 扱い方について勘違いしていたみたいです。 --------------------------------------------- JSP ↓ Formデータ送信 Servlet 1.String aaa = request.getParameter("aaa");出取得 2.request.setAttribute("aaa" aaa); ↓ JSP呼び出し JSP 3.request.getAttribute("aaa"); --------------------------------------------- とフォームのnameと、 setAttributeで設定する名前を同一で受け取りしていたため、 getAttributeはフォーム内のデータを受け取っているものとばかり思い込んでいました^^; >自分の質問に対して「ご」をつけるのはやめた方がいいですよ。 すみません、ご指摘ありがとうございます。 「自分が質問した質問に対して“ご”」をつけるのは、日本語(敬語)として可笑しいということでしょうか?(またはくどいとか・・・(^^;) 私の中では癖になってしまっているみたいなので、 もしよろしければご指南お願いいたします。