🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Java

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

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

Tomcat

TomcatはApache Software Foundation (ASF)で開発されたオープンソースのWebコンテナです。

Q&A

解決済

2回答

2205閲覧

JSPとservletのページ変遷時に404が出る

mimi_129

総合スコア63

Java

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

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

Tomcat

TomcatはApache Software Foundation (ASF)で開発されたオープンソースのWebコンテナです。

0グッド

0クリップ

投稿2019/11/02 10:23

編集2019/11/02 10:25

前提・実現したいこと

JSPとサーブレットでフォワードを使ってページの変遷を行いたいです。
流れとしてはpost.jsp→Post.java→post_check.jspとです。

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

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

該当のソースコード

Java

1package servlet; 2 3import java.io.IOException; 4 5import javax.servlet.RequestDispatcher; 6import javax.servlet.ServletException; 7import javax.servlet.annotation.WebServlet; 8import javax.servlet.http.HttpServlet; 9import javax.servlet.http.HttpServletRequest; 10import javax.servlet.http.HttpServletResponse; 11import javax.servlet.http.HttpSession; 12 13@WebServlet("/Post") 14public class Post extends HttpServlet { 15 private static final long serialVersionUID = 1L; 16 17// doGet 18 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 19 20 RequestDispatcher dispatcher = request.getRequestDispatcher("/jsp/index.jsp"); 21 dispatcher.forward(request, response); 22 } 23 24// doPost 25 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 26 27 request.setCharacterEncoding("UTF-8"); 28 29 String title = request.getParameter("title"); 30 String honbun = request.getParameter("honbun"); 31 32 HttpSession session = request.getSession(); 33 34 session.setAttribute("postTitle", title); 35 session.setAttribute("postHonbun", honbun); 36 37 RequestDispatcher dispatcher = request.getRequestDispatcher("/jsp/post_check.jsp"); 38 dispatcher.forward(request, response); 39 40 } 41} 42

Java

1<%@ page language="java" contentType="text/html; charset=UTF-8" 2 pageEncoding="UTF-8"%> 3<!DOCTYPE html> 4<html> 5<head> 6 <meta charset="UTF-8"> 7 <link rel="stylesheet" href="../css/stylesheet.css" type="text/css"> 8 <title>投稿|ペット移動トリミングサイト</title> 9</head> 10<body> 11 <div id="main"> 12 <div id="header"> 13 <p><a href="../index.jsp">ロゴ</a> 14 <ul> 15 <li>投稿画面へ</li> 16 <li>業者検索</li> 17 </ul> 18 </div> 19 <div id="content"> 20 <form method="POST" action="../src/servlet/Post"> 21 <input type="text" name="title"><br> 22 <textarea name="honbun" id="" cols="30" rows="10"></textarea><br> 23 <input type="submit" value="送信"> 24 </form> 25 </div> 26 <div id="side"></div> 27 <div id="footer"> 28 </div> 29</div> 30</body> 31</html>

Java

1<%@ page language="java" contentType="text/html; charset=UTF-8" 2 pageEncoding="UTF-8"%> 3<%@ page import="model.PostMaster" %> 4<% 5 6request.setCharacterEncoding("UTF-8"); 7 8%> 9<!DOCTYPE html> 10<html> 11<head> 12 <meta charset="UTF-8"> 13 <link rel="stylesheet" href="../css/stylesheet.css" type="text/css"> 14 <title>投稿確認|ペット移動トリミングサイト</title> 15</head> 16<body> 17 <div id="main"> 18 <div id="header"> 19 <p><a href="../index.html">ロゴ</a> 20 <ul> 21 <li>投稿画面へ</li> 22 <li>業者検索</li> 23 </ul> 24 </div> 25 <div id="content"> 26 <ul> 27 <li>【タイトル】</li> 28 <li> 29 <% 30 out.println(session.getAttribute("postTitle")); 31 %> 32 </li> 33 <li>【本文】</li> 34 <li> 35 <% 36 out.println(session.getAttribute("postHonbun")); 37 %> 38 </li> 39 </ul> 40 <form method="POST" action="post_finish.jsp"> 41 <input type="hidden" name="title" value="<%= session.getAttribute("postTitle") %>"> 42 <input type="hidden" name="honbun" value="<%= session.getAttribute("postHonbun") %>"> 43 <input type="submit" value="送信"> 44 </form> 45 </div> 46 <div id="side"></div> 47 <div id="footer"> 48 </div> 49</div> 50</body> 51</html>

試したこと

jspからサーブレットに変遷する際に見つけられていないのが原因だと思うのですが。。
nameとアノテーションのURLも一致しているので。。
初歩的な質問ですいません。。
わかる方いればよろしくお願いします。

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

イメージ説明

イメージ説明

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

サーブレットのURLは記述された @WebServlet に指定した値でパスが構成されます。

つまり @WebServlet("/Post") ならば
http://localhost:8080/(コンテキスト名)/Post です。

ですが、絶対パスで指定するのもあまりないので、通常はコンテキストパスないしはドメインからの相対パスで記載します。

スタイルシート(css)やJavascriptといったJavaサーブレットから出力しない(つまり影響しない)ファイルやフォルダはプロジェクトのディレクトリ構成そのままで扱えますが、サーブレットなどのWebアプリケーションでは、ソース階層が深くなるためそのままの階層をURLにせず、サーブレット用のアノテーションや、web.xmlにてクラス名に対応したURLを宣言します。

投稿2019/11/02 14:05

A-pZ

総合スコア12011

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

<form method="POST" action="../src/servlet/Post">

明らかにこのパスはおかしいです。
ブラウザからアクセスするパスと、プログラム階層上のパスは同じではありません。
ブラウザからアクセスするパスなので、そのパスでブラウザからアクセス可能である必要がありますし、JSPであればきちんとTOMCAT上のWebRootがあるはずです。
それからのパスにする必要があります。
Javaプログラムファイルに直接アクセスするのではなく、ルーティングで振られるリクエストURLに対応したプログラムを実行させる形になります。

何を参考に作られたかわかりませんが、もし本当にそのように書いてある書籍や資料なのであれば今すぐ切り替えてください。

「アノテーション」などキーワードはご存知のようなので、そこで調べはつくとは思うのですが・・・

たいていは {プロジェクト名}/{サーブレット名(WebServletアノテーションの属性値)}でアクセスします。
また、サイト内リンクの生成についてはコンテキストパスを利用したほうが確実です。

投稿2019/11/02 11:52

m.ts10806

総合スコア80875

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問