No.7ベストアンサー
- 回答日時:
こんにちは。
world99です。 sin-da4のご認識の通りでした。doGet()で呼び出されたサーブレットから次のサーブレットに遷移する時は、doGet()が実行されます。同じように、doPost()で呼び出されたサーブレットは、doPost()で次のサーブレットを呼び出します。
実は、私が試したサンプルは、doGet()とdoPost()のどちらが呼び出されても、doProcess()というメソッドを実行するように、実装しています。文章を短くするための、それを端折っていました。という訳で、この事に気がつきませんでした。
教えているつもりだった私が逆に、教えて頂きましたねありがとうございます。orz
あるServletから別のServeltに遷移する時に、値を引き渡すという本題の質問は、これで解決ですね♪
いえいえ、こちらこそありがとうございました!
問題も解決しましたので助かりました♪
またなにかありましたらよろしくお願いします。
No.6
- 回答日時:
こんにちは。
world99です。私の環境で、先に紹介した「(1) ServletContext.getRequestDispatcher()」と、
「(2) HttpResponse.sendRedirect()」を実行してみて、パスの設定の違いを確認してみました。
sv1、sv2という名前でマッピングしたサーブレットを用意し、sv1からsv2へ遷移させました。
(1)の方法だと、"/sv2"になります。
public void doPost(HttpServletRequest req, HttpServletResponse res) throws IOException, ServletException
{
ServletContext sc = getServletContext();
RequestDispatcher dispatcher = sc.getRequestDispatcher("/sv2");
dispatcher.forward(req, res);
}
(2)ですと、"sv2"で、画面遷移できました。
public void doPost(HttpServletRequest req, HttpServletResponse res) throws IOException, ServletException
{
res.sendRedirect("sv2");
}
sin-da4さんは、「"/パス名","./パス名","パス名"」でエラーになったとおっしゃっていますが、その状態で、画面遷移に成功していたsendRedirect()を利用した(2)の方法で、画面名は遷移していますでしょうか?もし遷移しないのならば、先ずはTomcatを起動し忘れていないか確認してみて下さい。
この回答への補足
回答ありがとうございます。
Tomcatは必ず再起動していますので大丈夫です。
今気づいたのですが私の場合、送信元メソッドはdoPostで受信元はdoGetです。
もしかしてdoGet同士、doPost同士じゃないとダメなんでしょうか。
No.5
- 回答日時:
こんにちは。
world99です。1つ目ですが、Sessionスコープの方法は、別に実装する必要はありません。RequestとSessionの2通りの渡し方があるので、例としてあげさせて頂きました。
2つ目は、パスの設定が間違っているためにエラーが発生しています。
"/servlets-examples/パス名"のように"/"から入力するとServletコンテナのルートパスからの絶対パスで参照になります。"パス名"ですと参照中のパスからの相対パスからの参照になります。
この回答への補足
回答ありがとうございます。
パス設定が解決できません。。。
「"/パス名","./パス名","パス名"」,「"/servlet/パス名","./servlet/パス名"」,「"/servlets-examples/パス名","./servlets-examples/パス名"」
以上のやり方はすべてエラーになります。
パス設定は関係ないような気がしてきたのですが違うのでしょうか。。。
No.4
- 回答日時:
こんにちは。
サンプルを記述しましたので、参考にして下さい。
public class TestServlet1 extends HttpServlet
{
public void doPost(HttpServletRequest req, HttpServletResponse res)
throws IOException, ServletException
{
// Requestスコープ
req.setAttribute("param1", "abc");
req.setAttribute("param2", new Integer(1));
// Sessionスコープ
HttpSession session = req.getSession();
session.setAttribute("param3", "あいうえお");
session.setAttribute("param4", new Integer(2));
// 次のServletに遷移させる
ServletContext sc = getServletContext();
RequestDispatcher dispatcher = sc.getRequestDispatcher("/sv2");
dispatcher.forward(req, res);
}
}
public class TestServlet2 extends HttpServlet
{
public void doPost(HttpServletRequest req, HttpServletResponse res)
throws IOException, ServletException
{
// Requestスコープの値を取得
Object obj1 = req.getAttribute("param1");
Object obj2 = req.getAttribute("param2");
// Sessionスコープの値を取得
HttpSession session = req.getSession();
Object obj3 = session.getAttribute("param3");
Object obj4 = session.getAttribute("param4");
}
}
この回答への補足
サンプルありがとうございます。
2点程質問させてください。
・一つ目
値を渡すのはひとつだけでいいのですが、必ずSessionスコープを使用しなければいけないのでしょうか??
・二つ目
このサンプルを元に組みなおしたら、
----------------------------------------------------------------
HTTPステータス 404 - /servlets-examples/パス名
type ステータスレポート
メッセージ /servlets-examples/パス名
説明 The requested resource (/servlets-examples/パス名) is not available.
----------------------------------------------------------------
というのが出ました。
response.sendRedirect("パス名");
で、値を渡さず遷移させていたときはちゃんと動いていたのですがなぜでしょう。。。
以上よろしくお願いします。
No.2
- 回答日時:
sessionならば
void session.setAttribute(String name,Object object);
でsessionオブジェクトにsetして
Object session.getAttribute(String name);
でsessionオブジェクトからgetする。
requestでも場合によりOKでしょう。
Session impossible!!!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(Microsoft Office) Microsoft Edgeの「ニュースと関心事項」についてお聞きします。 3 2023/05/22 12:08
- IT・エンジニアリング プログラマの仕事内容 4 2022/08/13 00:34
- 宇宙科学・天文学・天気 銀河のハビタブルゾーンを確率的セルオートマトンという数値的にシミュレーションした結果、「群島」の様な 2 2023/06/06 23:10
- 工学 順序回路と状態遷移表 1 2022/07/07 10:49
- PowerPoint(パワーポイント) パワーポイントのアニメーションについて 4 2023/06/14 16:25
- 片思い・告白 気づいてるのかな 2 2023/08/10 21:28
- PHP $_SESSIONに渡した後はそのまま使っても問題ありませんか? 3 2022/11/08 22:17
- 武道・柔道・剣道 リーチが長めの一刀流とリーチ短めの二刀流どちらが有利ですか? リーチと手数 4 2023/01/24 15:09
- 高校 対数方程式につきまして 4 2022/05/05 07:55
- X(旧Twitter) Twitterで一度完全削除したアカウントで同じ人が同じアカウントで最近復活 1 2023/03/30 18:02
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教える店舗&オフィスのセキュリティ対策術
中・小規模の店舗やオフィスのセキュリティセキュリティ対策について、プロにどう対策すべきか 何を注意すべきかを教えていただきました!
-
フォーム上で押されたボタンによってサーブレットの処理を変えたい
Java
-
jspからServletを呼び、元のjspページに戻るにはどうしたらよいですか?
Java
-
JSPの処理の途中で、JavaScriptの処理をしたい
JavaScript
-
-
4
JSPファイルで生じるエラーをどのように修正するか分かりません
Java
-
5
サーブレットからパラメータをPOST形式で送信するには。
Java
-
6
servletからjspへオブジェクトの配列情報を送る方法
Java
-
7
a href=..." とServlet"
Java
-
8
count(*)で取得した値をJAVAの変数に代入するには?
Java
-
9
正しいURL指定しているにもかかわらずJSPファイルにアクセスできず「404エラー」が発生
Java
-
10
jsp~jspにhiddenを使って変数を飛ばしたい
JavaScript
-
11
リクエストに応じたselectedの初期値設定方法
Java
-
12
JSPでリンクを利用してパラメータを次画面に渡す方法について。
Java
-
13
JSPやサーブレットでSystem.out.println()などでコンソールに出力できますでしょうか?
Java
-
14
レコード件数の表示
Java
-
15
JSPでのArrayListの表示について困っています
Java
-
16
送信ボタン押下時に値が未入力だとエラーにしたい
HTML・CSS
-
17
Java サーブレット間の値の受渡について
Java
-
18
jspからjavascriptの変数引継ぎ
JavaScript
-
19
JSPからServletに、テーブルに格納された値を渡したい
Java
-
20
JSPからServletへの遷移
Java
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
三菱GOTの画面切り替えについて
-
C言語で今まで表示していた画面...
-
Java-jspの画面入力値保持について
-
ホームページビルダーが遅い!...
-
遷移元を判定したい!
-
C# ログイン画面からメイン画面...
-
SessionとViewStateについて
-
javaでプリントスクリーン(ス...
-
"+"文字が" (スペース)"に文字...
-
Javascriptのhistory.back()が...
-
GUIとは何でしょうか?(定義)
-
プログラミングで例えばゲーム...
-
Strutsで画面遷移させない。
-
system("cls")について
-
ASP.NET 画面遷移前の状態を保...
-
ブラウザ表示しない設定のPDFの...
-
画面を隠す・消す方法を教えて...
-
URLはそのままで、リンクをクリ...
-
alertでHTMLのコードが出て...
-
モーダル画面の親をクリック時...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
三菱GOTの画面切り替えについて
-
画面遷移を行わずに同一ページ...
-
プログラミングで例えばゲーム...
-
フロントエンドフレームワーク...
-
Java-jspの画面入力値保持について
-
遷移元を判定したい!
-
ASP.NET 画面遷移前の状態を保...
-
Googleキーワードについて キー...
-
Javaプログラミングの質問にな...
-
C言語で今まで表示していた画面...
-
ボタンを押したあとに画像を表...
-
セッション切れでのリクエスト...
-
C# ログイン画面からメイン画面...
-
JavaScriptでページが更新され...
-
ServletからServletへの値渡し
-
ZOOMでオンラインミーティング
-
登録後、呼び出し元ページに戻...
-
サブミット後、自動的に画面を...
-
アドレスバーに引数を表示させ...
-
Beautiful Soupのインストール...
おすすめ情報