質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
86.12%
JSP

JSP(Java Server Pages)とは、ウェブアプリケーションの表示レイヤーに使われるサーバーサイドの技術のことです。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

servlet

Servletとは、Webページの動的な生成やデータ処理などをサーバ上で実行するために、Javaで作成されたプログラムです。 ショッピングサイトやオンラインバンキングといった、動的なウェブサイトの構築に用いられています。

解決済

jspからサーブレットに遷移できない。

koko122102
koko122102

総合スコア37

JSP

JSP(Java Server Pages)とは、ウェブアプリケーションの表示レイヤーに使われるサーバーサイドの技術のことです。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

servlet

Servletとは、Webページの動的な生成やデータ処理などをサーバ上で実行するために、Javaで作成されたプログラムです。 ショッピングサイトやオンラインバンキングといった、動的なウェブサイトの構築に用いられています。

1回答

0リアクション

0クリップ

310閲覧

投稿2022/09/13 05:26

編集2022/09/13 08:12

前提

jspファイルからサーブレットに遷移するリンクをaタグで作成したのですが、HTTPステータス404エラーが発生し遷移できません。
以下の該当ソースコードの

<form action="<%= request.getContextPath()%>/CheckLoginInfo" method="post">部分ではサーブレットに遷移できています。

実現したいこと

ここに実現したいことを箇条書きで書いてください。

  • リンクを押せばサーブレットに遷移するようにしたい。

発生している問題・エラーメッセージ

HTTPステータス 404 – 見つかりません。 タイプ ステータスレポート 説明 オリジンサーバーは、ターゲットリソースの現在の表現を見つけられなかったか、またはそれが存在することを開示するつもりはありません。

該当のソースコード

Login.jsp

SignUp.java

試したこと

hrefに記述するパスを変えてみました。
・href="/SignUp"
・href="/Portfolio/SignUp"

補足情報(FW/ツールのバージョンなど)

以下にフォルダ構成の写真を添付します。
イメージ説明

以下のような質問にはリアクションをつけましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

リアクションが多い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

m.ts10806

2022/09/13 05:47

forwardとsendRedirect どっちに入ってますか?
koko122102

2022/09/13 07:47

すみません。どっちに入っているというのは、何がどっちに入っているということでしょうか。理解不足で申し訳ございません。
m.ts10806

2022/09/13 07:49

SignUp クラスの doGetメソッドの if(UserOnSession != null) { の分岐です。 どの時点で404になっているかを確認する必要があります。 IDEでしたらデバッグモードで、ブレイクポイントを貼ってどこを通っているか確認できるはずですので、 確認を。
koko122102

2022/09/13 08:14

ご返信ありがとうございます。先ほどデバックと行ったところ、Login.jspの下の方のaタグのところで404のエラーが発生しました。こちらです。→<a href="<%= request.getContextPath()%>/SignUp">新規登録はこちら</a> 
m.ts10806

2022/09/13 08:27

そこだけで404が発生することはないと思います。 404はリクエストURLに対応するソースがないということですから。 というか、SignUp.doGet()には入ってないということですか? 404になったときのURLはどうなっていますか?アドレスバー確認してください。
koko122102

2022/09/13 09:14

重ね重ねご対応いただきありがとうございます。 SignUp.doGet()には入っており、URLを確認した所elseの中のリダイレクトが実行されていました。また、ifの中にリダイレクト、elseの中にフォワードを入れても、elseの中のフォワードが実行されましたが404エラーが出ました。
m.ts10806

2022/09/13 09:15

わかりました。
m.ts10806

2022/09/13 09:21

例えば http://ドメイン/プロジェクト名/view/PortfolioPage.jsp とかで直にアクセスできますか?
m.ts10806

2022/09/13 11:11 編集

確かブラウザからWEB-INFって直接参照できなかった気がするので、 ブラウザから直接参照させたいのでしたら場所移動した方がいいかもしれません。 そのうえでwebappをWebルートとして有効なURLをリダイレクトに記述。 PortfolioPage用のサーブレットがあるなら、URLはサーブレットの@WebServlet設定もしくはweb.xmlの設定に合わせたURLに修正してリダイレクトを。
koko122102

2022/09/13 12:51

ご回答いただきありがとうございます。 色々試したところ、<a href="<%= request.getContextPath()%>/SignUp"></a>とするのではなく、formタグを作りaction="<%= request.getContextPath()%>/SignUp";とすると上手くいきました。 何度も真摯にご対応いただき本当にありがとうございました。
m.ts10806

2022/09/13 22:04

formのmethodをgetもしくは未指定にするならaタグで遷移するのも同じですよ。 URL直打ちと同じくリクエストメソッドはGETです。 ※ちなみにこちらは回答ではなく質問への追記修正依頼のコメント欄で、私もまだ回答は出来ないなと思って色々確認してもらっていました。たまにそれだけで解決することもあるのですけどね。
koko122102

2022/09/14 05:55

aタグとformのgetメソッドの挙動は同じなんですね。勉強になります。 ただそうなると、aタグの時は404エラーでformの時は実行されているというのはどういったことが原因と考えられるのでしょうか。
m.ts10806

2022/09/14 06:22

念のため、両方のコードをもって自身で回答に記載し、いったん解決としてもらって良いですか? サーブレット側の受け方の問題かもしれないですし。とりあえず解決は解決なので・・ https://teratail.com/help#resolve-myself >aタグとformのgetメソッドの挙動は同じなんですね 同じではなく「リクエストメソッドがGETである」という点だけです。 formは「form内のリクエストの送信」の役割があるので、他にも色々とついてきます。
koko122102

2022/09/15 01:44

承知しました。ありがとうございます。

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
86.12%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

JSP

JSP(Java Server Pages)とは、ウェブアプリケーションの表示レイヤーに使われるサーバーサイドの技術のことです。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

servlet

Servletとは、Webページの動的な生成やデータ処理などをサーバ上で実行するために、Javaで作成されたプログラムです。 ショッピングサイトやオンラインバンキングといった、動的なウェブサイトの構築に用いられています。