**************************
package dispa;
import java.io.IOException;
import javax.servlet.*;
import javax.servlet.RequestDispatcher;
import javax.servlet.http.*;
public class Action extends HttpServlet
{
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException,IOException
{
int flag=0;
request.setAttribute("error", "エラーです");
ServletContext sc = getServletContext();
if (flag == 1)
{
request.setAttribute("count","1");
RequestDispatcher disp =
sc.getRequestDispatcher("/servlet/dispa.Login");
disp.forward(request,response);
return;
}
// コンソールコメント1 ここから
System.out.println("Action if文の外");
System.out.println(flag);
// コンソールコメント1 ここまで
RequestDispatcher disp =
sc.getRequestDispatcher("/servlet/dispa.Entry");
disp.forward(request,response);
// コンソールコメント3 ここから
System.out.println("Action Dispatch処理終了ライン");
// コンソールコメント3 ここまで
}
}
**************************
package dispa;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class Entry extends HttpServlet
{
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException,IOException
{
response.setContentType("text/html;charset=Shift_JIS");
PrintWriter out=response.getWriter();
String errorMSG = (String)request.getAttribute("error");
out.println(errorMSG);
// コンソールコメント2 ここから
System.out.println("Entry エラー");
// コンソールコメント2 ここまで
}
}
**************************
package dispa;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class Login extends HttpServlet
{
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException,IOException
{
response.setContentType("text/html;charset=Shift_JIS");
PrintWriter out=response.getWriter();
String Logcount = (String)request.getAttribute("count");
out.println("Login");
// コンソールコメント4 Login ここから
System.out.println("Login内");
// コンソールコメント4 Login ここまで
if (Logcount.equals("1") )
{
out.println("1回目のログインです");
return;
}
}
}
Action からスタート
int flag=0 のときにはif文は実行されず
コンソールコメント1 を表示
ディスパッチャーで Entry へ行き
コンソールコメント2 を表示
その後 コンソールコメント3 を表示 [END]
[質問1]
なぜ、Entryサーブレットへ行ったとき、そこには return などの記述はないのに
(元の)Actionへ戻るのか?
--------------------------------
int flag=1 と可変して同じくAction からスタート
flag=1 のときにはif文は実行され
count を 1 にセット
ディスパッチャーで Login へ行き
コンソールコメント4 を表示
Logcount ←count にて 1なら 「1回目のログインです」 return
[質問2]
なぜ、Loginサーブレットへ行ったとき、そこに わざわざ return の記述をしてるのに
(元の)Actionへ戻らないのか?
この2つの質問です
よろしくお願いします。
A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
サーブレット+JSPに詳しいわけではありませんが。
基本的にサーブレット+JSPはサーブレットコンテナの配下で動作するはずです。
つまり呼び出し元はTomcatなどのコンテナになるはずです。
質問の(1)ですがJavaでも明示的にreturn文がなくてもメソッドの終端に達すれば呼び出し元に帰ります。ただし、メソッドの型がvoidでないとJavaではエラーになるかもしれませんが(ここは自信ありません)。
質問の(2)ですが、すでに述べたように戻る先はサーブレットコンテナです。
この回答への補足
ご回答ありがとうございます。
同じディスパッチャーで飛ばして 到達先も同じvoid なのですが
片方は(Entry) returnなしでも戻り
もう片方は(Login)は return を付けても戻らない???
簡単な条件分岐なのですが、流れがつかめません。
違う点としては
スタートのActionで if文実行中 Loginへ飛ばす後に return を付けている箇所ぐらいですか。
でもこの return を省くと、500エラーでプログラム自体動かない…
(でも、ここが最重要なポイントな気がしてきました)
もう少し考えてみます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Java java 入力 3 4 3 出力 ABC DEFG HIJ このようなプログラムの書き方を教えてくだ 2 2022/07/15 14:18
- Ruby 【JAVA】数字をひし形に出力するプログラムについて 2 2022/07/11 23:32
- C言語・C++・C# C# DatagridviewにExcelシートを反映するとエラーが出る 2 2023/05/06 17:12
- C言語・C++・C# Windows Formアプリからコンソールを呼び出して文字を出力させたい 8 2023/05/09 10:53
- JavaScript フォームが空欄の時にフォームの外をクリックすると、エラーが出るコードを調べています。 1 2023/06/25 11:51
- その他(プログラミング・Web制作) laravel 本番環境でメールが送れません。 1 2023/02/17 17:57
- PHP アコーディオンPHPが上手くいかない 3 2022/07/15 16:29
- PHP PHPの構文で間違えが分からない 5 2022/07/11 16:38
- その他(プログラミング・Web制作) python flask から fastapiへの移行時のエラー対処 1 2023/02/05 12:26
- その他(プログラミング・Web制作) Pythonで会員サイトの自動ログイン ID Nameがない 1 2022/12/16 02:09
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Java初心者です。csvファイルの...
-
JavamailでGmailのお気に入りフ...
-
java シンボルが見つかりません
-
URL\正規表現@java
-
JSPからパラメータを取得してサ...
-
Javaの質問です。テキストファ...
-
VBAで配列の計算
-
配列にnullを代入すると、null...
-
ループ処理の際、最後だけ","を...
-
配列をセッションに割り当てた後で
-
1~100までの数字を表示し、か...
-
Log4jで機能毎に別ファイルへ出...
-
Junitテストでvoid戻り値メッソ...
-
シャットダウンフックが呼ばれない
-
EXCEL VBA で、0から?1から?
-
テキストボックスに入力された...
-
べき乗
-
グレイコードの変換
-
C# ListBoxのインデックスの値...
-
javaで質問です。 文字列2023/2...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
yyyymmddからyyyy/mm/d...
-
equalsの逆
-
csv出力について
-
九九を横に表示する。
-
InputStream.read()でタイムア...
-
テキストファイルから空白行をよむ
-
Java int sum = 0は必要ですか?
-
javaのfor文が機能してないみた...
-
BufferedReaderでのエラー
-
Javaの質問です。テキストファ...
-
以下のJAVAプログラムでご質問...
-
Class.forNameでエラーになる
-
ソケットを使ったサーバとクラ...
-
テキストファイルにおいて任意...
-
テキストファイルの任意の文字...
-
JAVAでエラーがでる。
-
Inputstreamについて
-
ObjectInputStreamとStreamCorr...
-
Windowsでの標準入力の終了の仕方
-
[JAVA]エラーが解決できません。
おすすめ情報