
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も見ています
-
JSPからJSPへ情報を渡せる?
Java
-
リクエストに応じたselectedの初期値設定方法
Java
-
JSPの処理の途中で、JavaScriptの処理をしたい
JavaScript
-
-
4
フォーム上で押されたボタンによってサーブレットの処理を変えたい
Java
-
5
servletからjspへオブジェクトの配列情報を送る方法
Java
-
6
外部参照してるキーを主キーにすることは可能?
その他(データベース)
-
7
JSPからServletへの遷移
Java
-
8
サーブレットからパラメータをPOST形式で送信するには。
Java
-
9
配列のメソッド
Java
-
10
『列名 '担当者CD' があいまいです。』
Microsoft ASP
-
11
テーブルの位置を細かく指定したい。
HTML・CSS
-
12
jspからServletを呼び、元のjspページに戻るにはどうしたらよいですか?
Java
-
13
正しいURL指定しているにもかかわらずJSPファイルにアクセスできず「404エラー」が発生
Java
-
14
サーブレットコンテキストの意味がわからなくて困っています。
Java
-
15
Eclipseで、プロジェクト名のところに赤いバッテンのエラーマークが
Java
-
16
「value」に2つの値をセットする方法
HTML・CSS
-
17
<input>の選択肢をプルダウンメニューから受け取り、hiddenで
JavaScript
-
18
テーブルに主キーを作らないデメリットは?
その他(Microsoft Office)
-
19
jspにcssを反映させるには
HTML・CSS
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
三菱GOTの画面切り替えについて
-
C言語で今まで表示していた画面...
-
ボタンを押したあとに画像を表...
-
ServletからHTMLページへの遷移...
-
遷移元を判定したい!
-
非アクティブな画面を操作する...
-
VBA超初心者
-
JSPで画面を更新するには
-
JSPにてDB登録処理
-
プログラミングで例えばゲーム...
-
JSPから出力されたHTML画面のcl...
-
画面を隠す・消す方法を教えて...
-
トークンプロセッサとは
-
java初心者です。 画面Aで情報...
-
【swing】ボタンクリックにより...
-
ブラウザアドレスバーからのURL...
-
ServletからServletへの値渡し
-
Sessionがnullになりません。
-
VBAでAというExcelのbookをBと...
-
サーブレットによるpostデータ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
三菱GOTの画面切り替えについて
-
C言語で今まで表示していた画面...
-
Java-jspの画面入力値保持について
-
登録後、呼び出し元ページに戻...
-
C# ログイン画面からメイン画面...
-
【C#】 FormClosingのイベント...
-
FormのsubmitでFormの内容がnull
-
location.hrefでページ切替時の...
-
ASP.NET 画面遷移前の状態を保...
-
Javaプログラミングの質問にな...
-
java初心者です。 画面Aで情報...
-
遷移元を判定したい!
-
セッション切れでのリクエスト...
-
画面を隠す・消す方法を教えて...
-
window.open()使用サブウィンド...
-
【JavaScriptわからない】1クリ...
-
MFCプログラミング
-
javaのstrutsを使った画面遷移...
-
子画面でもう一つ教えて下さい
-
CSVダウンロードでウィンド...
おすすめ情報