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

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

ただいまの
回答率

90.01%

Java Servlet & JSPについて

受付中

回答 0

投稿

  • 評価
  • クリップ 0
  • VIEW 544
退会済みユーザー

退会済みユーザー

前提・実現したいこと

プログラミング初心者です。Javaのサーブレット&JSPについて質問です。
どうしても「HTTPステータス404 - Not Found」エラーが改善されません。

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

HTTPステータス 404 - Not Found
Type ステータスレポート

メッセージ /sample/

説明 The origin server did not find a current representation for the target resource or is not willing to disclose that one exists.

Apache Tomcat/9.0.10

該当のソースコード

言語名 : Java

【Model】

①Userクラス

package model;

import java.io.Serializable;

public class User implements Serializable {

private String id;
private String name;
private String pass;

public User() {}

public User(String id, String name, String pass) {
this.id = id;
this.name = name;
this.pass = pass;
}
public String getId() {
return id;
}
public String getName() {
return name;
}
public String getPass() {
return pass;
}
}

②RegistUserLogicクラス

package model;

public class RegisterUserLogic {

public boolean execute(User user) {
return true;
}
}

【servlet】

①RegisterUserサーブレット

package servlet;

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;
import javax.servlet.http.HttpSession;

import model.RegisterUserLogic;
import model.User;

/**

  • Servlet implementation class RegisterUser
    */
    @WebServlet("/RegisterUser")
    public class RegisterUser extends HttpServlet {
    private static final long serialVersionUID = 1L;

/**

  • @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
    */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    // TODO Auto-generated method stub
    // response.getWriter().append("Served at: ").append(request.getContextPath());
    String forwardPath = null;

String action = request.getParameter("action");

if(action == null) {
forwardPath = "/WEB-INF/jsp/registerForm.jsp";
}
else if(action.equals("done")) {
HttpSession session = request.getSession();

User registerUser = (User) session.getAttribute("registerUser");

RegisterUserLogic logic = new RegisterUserLogic();
logic.execute(registerUser);

session.removeAttribute("registerUser");

forwardPath = "/WEB-INF/jsp/registerDone.jsp";
}
RequestDispatcher dispatcher = request.getRequestDispatcher(forwardPath);
dispatcher.forward(request, response);
}

/**

  • @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
    */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    // TODO Auto-generated method stub
    request.setCharacterEncoding("UTF-8");
    String id = request.getParameter("id");
    String name = request.getParameter("name");
    String pass = request.getParameter("pass");

User registerUser = new User(id, name, pass);

HttpSession session = request.getSession();
session.setAttribute("registerUser", registerUser);

RequestDispatcher dispatcher = request.getRequestDispatcher("/WEB-INF/jsp/registerConfirm.jsp");
dispatcher.forward(request, response);
}
}

【JSP】

①registerForm.jsp(WEB-INF/jspディレクトリ)

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>ユーザー登録</title>
</head>
<body>

<form action="/sample/RegisterUser" method="post">
ログインID:<input type="text" name="id"><br>
パスワード:<input type="password" name="pass"><br>
名前:<input type="text" name="name"><br>
<input type="submit" value="確認">
</form>

</body>
</html>

試したこと

ここまで作った時点でEclipseでAlt+Shift+X, Rでサーバーで起動させましたが、ずっと404が出ます。
ソースコードは『スッキリわかるサーブレット&JSP』の写経で、どこも間違いなく書けてると思います…。
各ソースコードの作り方やフォルダ階層?等も本の通り従っているのに何故エラーが出るのでしょうか?

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

動作環境 : Windows10 64bit
IDE : Eclipse4.8 Photon
Tomcat : ローカルホストのTomcat9(Java10)と出ています。

サーバーを動かすとちゃんと「同期済み」というふうには出ます。
エラーが出てもコンソールには特にエラーメッセージらしきものは出てません。

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

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

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正の依頼

  • 退会済みユーザー

    退会済みユーザー

    2019/01/02 21:40

    asahina1979さん、ありがとうございます。やってみます。

    mts10806
    めんどくせ。こたえないなら絡んでくんな。

    キャンセル

  • m.ts10806

    2019/01/02 21:44 編集

    teratailでの質問の仕方も守らないどころか暴言はく人に幾ら初歩の問題でも答える義務はないですね。asahinaさんも回答に書くのが面倒だからこちらで指摘してるくらい、ちゃんと確認すれば質問するまでもなく解決するレベルの質問です。

    キャンセル

  • m.ts10806

    2019/01/02 21:51

    「写経でどこも間違ってない」と仰る人はよくいますが、本当に間違っていない人を見たことがないです。写すのが目的になってるプログラムが仕事してくれるわけがないですよ。プログラムは指示した通りにしか動きません。動かないのは設定や環境も含めた指示がどこか間違っているからに他なりません。見るべきはコードなり設定であり、本そのものではありません。

    キャンセル

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

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

  • ただいまの回答率 90.01%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる