![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
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も見ています
-
「環境が人を育てる」って本当?環境によって人格や生き方は本当に変わるのか
環境が人生に与える影響は実際どれほどのものなのか、専門家の田宮由美さんに伺った。
-
フォーム上で押されたボタンによってサーブレットの処理を変えたい
Java
-
tableタグとformタグの組み合わせ
HTML・CSS
-
JSPやサーブレットでSystem.out.println()などでコンソールに出力できますでしょうか?
Java
-
-
4
レコード件数の表示
Java
-
5
getParameterで値が取得できず、困ってます
HTML・CSS
-
6
JSPでのArrayListの表示について困っています
Java
-
7
Eclipseで、プロジェクト名のところに赤いバッテンのエラーマークが
Java
-
8
JSPでリンクを利用してパラメータを次画面に渡す方法について。
Java
-
9
送信ボタン押下時に値が未入力だとエラーにしたい
HTML・CSS
-
10
system.out.printが出力されない
Java
-
11
getStringの値がNULLの時の処理
Java
-
12
Java-jspの画面入力値保持について
Java
-
13
リクエストに応じたselectedの初期値設定方法
Java
-
14
日付型のフィールドに空白を入れる方法を教えてください
その他(データベース)
-
15
JSPで<SELECT>の中にDBから持ってきたデータを反映させたい
Java
-
16
JSPの処理の途中で、JavaScriptの処理をしたい
JavaScript
-
17
<a href=**?***=***>をGET方式で
HTML・CSS
-
18
外部参照してるキーを主キーにすることは可能?
その他(データベース)
-
19
jasper.exceptionとは?
Java
-
20
javaScriptの変数をJavaの変数に代入する。
JavaScript
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
データ数をカウントしたいのですが
-
VB.NETで DataRow()を利用して...
-
count(*)で取得した値をJAVAの...
-
VBAでActiveDirectoryのユーザ...
-
ListViewで複数選択された項目...
-
VBA:小数点以下の数字を取得で...
-
ListView 項目の選択/選択解除...
-
指定のURLのタイトルを取得...
-
Excel VBA でログインしてい...
-
JSP+Servletでのページングの常識
-
ディスプレイの表示可能な解像...
-
VBA Shapesの座標からセル位置...
-
ActiveWorkbook.Path取得できない
-
like演算子内に変数って使えな...
-
JFreeChartの折れ線グラフの太...
-
Yahoo! JAPANのID取得について
-
Active directoryの全グループ取得
-
Accessで期間抽出方法
-
コンボボックス表示文字列を取...
-
時間を分に変換するプログラム
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VB.NETで DataRow()を利用して...
-
count(*)で取得した値をJAVAの...
-
データ数をカウントしたいのですが
-
VBA:小数点以下の数字を取得で...
-
VBAでActiveDirectoryのユーザ...
-
ListView 項目の選択/選択解除...
-
Flexgridで選択行の列の値を取...
-
getParameter と getAttribut...
-
like演算子内に変数って使えな...
-
ListViewで複数選択された項目...
-
JavaScriptでWindowsログオンID...
-
時間を分に変換するプログラム
-
エクセルVBAで複数選択できるよ...
-
Spreadの選択行の取得について
-
JavaScriptにおいてコンピュー...
-
コンボボックス表示文字列を取...
-
VBA リストボックス内の値を複...
-
利用者側のMACアドレスを取得し...
-
「Excel VBA」 Webクエリ マク...
-
Yahoo! JAPANのID取得について
おすすめ情報