こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

【servlet】フォワードを使った画面遷移

java,サーブレット初学者です。表題の通り、フォワード を使って画面遷移を試みています。
以下のコードを記述しリンクをクリックすると確かに画面遷移はできるのですが、
フォワードが出来ているならURLの最後が【/Test1】になるのではないかと考えました。
ですが実際は【/NewFile2】となっているため、フォワードが出来ていないのかと思います。
どの様にしたら前者のような結果になるでしょうか。
ご教授頂きたいです。
サーブレット↓
package sample;

import java.io.IOException;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet("/Test1")
public class Test1 extends HttpServlet {

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws
ServletException, IOException {

RequestDispatcher br =
request.getRequestDispatcher("html/NewFile2.html");
br.forward(request, response);
}
}

遷移前の画面↓
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>テスト</title>
</head>
<body>
<h2>sample</h2>
<p>テストです</p>
<a href ="/servlet_dayo/html/NewFile2.html">画面遷移する</a>
</body>
</html>

遷移先↓
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>テスト</title>
</head>
<body>
<p>遷移先</p>
</body>
</html>

サーバー:Tomcat8.5
os:macos

を使用しています。どうぞよろしくお願いします。

※OKWAVEより補足:「Webシステム開発」についての質問です。

投稿日時 - 2019-09-08 09:14:30

QNo.9654514

困ってます

質問者が選んだベストアンサー

ソースコードの「遷移前の画面↓」の遷移先がServletではなくHTMLを指定しています。

  <p>テストです</p>
  <a href ="/servlet_dayo/html/NewFile2.html">画面遷移する</a>

この記述の場合、
「遷移前html」 → 「遷移先html」へ遷移したことになります。

servletの遷移するには
htmlのリンク(またはアクション)のURLをServletへ紐付くURLを指定する必要があります。
URLとServletを紐付ける箇所がアノテーション「@WebServlet("/Test1")」の部分になります。
よって、今回のServletクラスへの遷移を行いたい場合、遷移前htmlのリンクには

「<a href ="/servlet_dayo/Test1">」

と指定する必要があります。

URLを変更することで以下の遷移となります。
「遷移前html」 → 「Test1」ServletクラスのdoGet()  -(forward)→ 「遷移先html」

投稿日時 - 2019-09-09 01:07:18

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

-広告-
-広告-

回答(1)

-広告-
-広告-

あなたにオススメの質問

-広告-
-広告-