
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.ph …
No.1ベストアンサー
- 回答日時:
そもそも
>感覚的には
>getParameterも、getAttributeも、
>Form内の任意の項目の値を取得する場合に
>getParameter("項目名");
>getAttribute("項目名");
>
>という使い方で
>「どちらでもHTML(JSP)のフォーム内のデータを取得できる」という感覚がありあます。
という「感覚」が間違ってる。
getParameterはURL引数であり、getAttributeはリクエストに設定できる属性。
例えば、HTMLのFORMでURL引数に項目名:「hoge_name」、値:「hoge_value」を設定した場合、
ServletでgetParameter("hoge_name")の戻り値は「"hoge_value"」、
getAttribute("hoge_name")の戻り値は「null」。
質問1
決定的な違いは、「そもそも違う物。」
質問2
そもそも違うものなのでgetParameterがないと困る。
「特別」な役割かどうかは不明だが、役割としては「URL引数を取得する。」です。
質問3
決まりはないが、getAttributeじゃ取得できません。
その他
自分の質問に対して「ご」をつけるのはやめた方がいいですよ。
ありがとうございます。
ご回答いただきました内容分り易かったです。
>例えば、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はフォーム内のデータを受け取っているものとばかり思い込んでいました^^;
>自分の質問に対して「ご」をつけるのはやめた方がいいですよ。
すみません、ご指摘ありがとうございます。
「自分が質問した質問に対して“ご”」をつけるのは、日本語(敬語)として可笑しいということでしょうか?(またはくどいとか・・・(^^;)
私の中では癖になってしまっているみたいなので、
もしよろしければご指南お願いいたします。
No.3
- 回答日時:
何がどこでどう動いているかがまだよくわかってないのかな?
JSPは所詮サーブレットですよ。
JSPはサーバーでjavaファイルに変換されて、
さらにjavaファイルからclassファイルにコンパイルされます。
で、classファイル(サーブレット)が最終的にHTMLを吐く。と。
…ぜんぜん質問とは関係ないですが…。
今回の「ご質問」の場合、「質問」という行為をするのは質問者様ご自身ですよね?
その自分自身の「質問」という行為に対して、自分で「ご」をつけるのは…。
ということです。
例えば、自分が物を食べるときに「召し上がります。」とは言いいませんよね?
ご回答ありがとうございます。
>JSPは所詮サーブレットですよ。
>JSPはサーバーでjavaファイルに変換されて、
>さらにjavaファイルからclassファイルにコンパイルされます。
>で、classファイル(サーブレット)が最終的にHTMLを吐く。と。
どうもありりがとうございます。
この点、存じています。
ああ。そうなるのですね。
自分がする行為に対して「ご」をつけるのは可笑しいと。
私はてっきり
質問というのは相手に向けるものであるため、
そして教わる立場であるから敬意として「ご」をつけるものだと思っていました。^^;
No.2
- 回答日時:
Servletには、そもそも3つのスコープが存在します。
(JSPは、4つ。)Javaの道 > Servlet・JSP > Servlet -4.スコープ
http://www.javaroad.jp/servletjsp/sj_servlet4.htm
で、リクエストスコープ内で「データの共有」をしたい場合(主に、Servlet→JSPなど。)には、getAttributeメソッドを使用します。
そうではなく、ただ単にリクエストパラメータ(クエリストリングやHTMLフォームを使用。)を取得したいだけの場合は、getParameterメソッドを使用します。
参考URL:http://www.stackasterisk.jp/tech/javaClassref/ja …
ご回答ありがとうございます。
getAttributeって
あくまで「データ共有」を目的とした場合にしようするものだったのですね。
いま思ってみれば
「編集されたデータを保管する」などの役割からもそうといえますよね。
URLの方参考にさせていただきます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) 入力フォームへ、データを自動的に入力するプログラム。どうやって作る? 4 2023/01/16 10:24
- Java javaのCSVデータ読込についてです 6 2022/07/02 10:58
- 法学 全部取得条項付株式の取得と引換えにする株式の発行 申請書について 1 2022/12/21 17:32
- PHP クエリObjectをforeachで回す時に、次のレコードへ移動せずに次のレコードを取得したい 2 2022/07/28 15:29
- PHP php 入力画面から確認表示画面へ情報の受け渡しについて。 1 2023/06/07 18:00
- オープンソース Python openpyxlを使用したセル番地の使用について 1 2023/08/03 22:05
- Visual Basic(VBA) batからexeを実行し戻り値を受け取る バッチからEXEの結果を受け取りたいのですが、 下記のバッ 1 2023/07/04 15:13
- Visual Basic(VBA) batからexeを実行し戻り値を受け取る EXEの実行内容の結果によって、戻り値を0か1かで返したい 1 2023/07/04 16:40
- JavaScript セレクトを全て選択されていないと、文字によるエラーメッセージを表示させるコードを調べています 2 2023/06/22 15:48
- JavaScript sessionStorageを調べています。 1 2023/06/20 12:41
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VB.NETで DataRow()を利用して...
-
count(*)で取得した値をJAVAの...
-
ListView 項目の選択/選択解除...
-
VBAでActiveDirectoryのユーザ...
-
Flexgridで選択行の列の値を取...
-
getParameter と getAttribut...
-
利用者側のMACアドレスを取得し...
-
データ数をカウントしたいのですが
-
DataGridView 複数選択で行番...
-
VBA:小数点以下の数字を取得で...
-
PHP8でWarning:Undefined varia...
-
like演算子内に変数って使えな...
-
C#でネットワーク(LAN)上のPC...
-
自動的に高さ指定していないt...
-
outlookでメールのフォルダパス...
-
ASPでユーザのグループ名取得
-
リストビュー:先頭行のアイテ...
-
NTPサーバから時刻を取得する
-
URIでのページの移動について
-
VBA リストボックス内の値を複...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VB.NETで DataRow()を利用して...
-
ListView 項目の選択/選択解除...
-
VBA:小数点以下の数字を取得で...
-
VBAでActiveDirectoryのユーザ...
-
Spreadの選択行の取得について
-
PHP8でWarning:Undefined varia...
-
Flexgridで選択行の列の値を取...
-
count(*)で取得した値をJAVAの...
-
VBA Shapesの座標からセル位置...
-
データ数をカウントしたいのですが
-
JavaScriptにおいてコンピュー...
-
利用者側のMACアドレスを取得し...
-
VBA リストボックス内の値を複...
-
like演算子内に変数って使えな...
-
EXCELのリストボックスを選択し...
-
「Excel VBA」 Webクエリ マク...
-
JavaScriptでWindowsログオンID...
-
gethostbyaddrでのホスト名取得...
-
現在時刻をミリ秒まで取得
-
vbaで、オートシェイプ文字幅と...
おすすめ情報