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

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

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

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

servlet

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

Tomcat

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

Q&A

解決済

1回答

1788閲覧

tomcatサーバーに複数のプロジェクトを追加すると404エラーになる

lvngk

総合スコア0

JSP

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

servlet

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

Tomcat

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

0グッド

0クリップ

投稿2021/10/01 13:26

編集2021/10/02 02:50

現在、サーブレットのsessionの勉強をしています。
形だけのユーザー登録のコードを書き、sessionServletという名前を付け、サーバーに追加しました。

しかし、ブラウザでsessionServletをリクエストすると404エラーになってしまいます。
そのサーバー内にexampleという名前で他のプロジェクトを追加しているのですが、そのプロジェクトは正常に動作します。このことから、サーバーに追加ができてないのかと思いserver.xmlでcontextを確認しましたが追加されていました。
プロジェクトの追加、サーバーの再起動は正確に行っていると思っています。
原因が分からなく、解決方法が載っているサイトを見つけることができなかったため、質問を投稿させていただきました。ご教授いただければ幸いです。

使用しているのはeclipseVersion: 2020-12 (4.18.0),tomcatVersion9.0です。

問題点:二つ目に追加したsessionServletだけ404エラーになってしまう。

確認したこと:サーバーへの追加、サーバーの再起動、サーバーのserver.xmlのコンテキストの確認

実現させたいこと:sessionServletプロジェクトをブラウザで閲覧可能にしたい。

ResisterUser

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 13import example.ResisterUserLogic; 14import example.User; 15 16/** 17 * Servlet implementation class ResisterUser 18 */ 19@WebServlet("/ResisterUser") 20public class ResisterUser extends HttpServlet { 21 private static final long serialVersionUID = 1L; 22 23 /** 24 * @see HttpServlet#HttpServlet() 25 */ 26 public ResisterUser() { 27 super(); 28 // TODO Auto-generated constructor stub 29 } 30 31 /** 32 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) 33 */ 34 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 35// フォワード先 36 37 String fowardPath = null; 38 39//サーブレットクラスの動作を決定する「action」の値をリクエストパラメータから取得 40 41 String action = request.getParameter("action"); 42 43//「登録開始」のリクエストをされた時の処理 44 if(action == null) { 45 46//フォワード先を設定 47 48 fowardPath = "/WEB-INF/jsp/registerForm.jsp"; 49 50 } 51//登録確認画面から「登録実行」をリクエストされた時の処理 52 53 else if(action.equals("done")) { 54 55//セッションスコープに保存された登録ユーザーを取得 56 57 HttpSession session = request.getSession(); 58 59 User registerUser = (User)session.getAttribute("registerUser"); 60 61//登録処理の呼び出し 62 63 ResisterUserLogic logic = new ResisterUserLogic(); 64 65 logic.execute(registerUser); 66 67// 不要となったセッションスコープ内のインスタンスを削除 68 69 session.removeAttribute("registerUser"); 70 71 fowardPath = "/WEB-INF/jsp/registerDone.jsp"; 72 73 } 74 75// 設定されたフォワード先にフォワード 76 77 RequestDispatcher dispatcher = request.getRequestDispatcher(fowardPath); 78 79 dispatcher.forward(request, response); 80 81 } 82 83 /** 84 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) 85 */ 86 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 87 88// リクエストパラメータの取得 89 90 request.setCharacterEncoding("UTF-8"); 91 92 String id = request.getParameter("id"); 93 94 String name = request.getParameter("name"); 95 96 String pass = request.getParameter("pass"); 97 98// 登録するユーザーの情報を設定 99 100 User registerUser = new User(id,name,pass); 101 102// セッションスコープに登録ユーザーを保存 103 104 HttpSession session = request.getSession(); 105 106 session.setAttribute("registerUser", registerUser); 107 108// フォワード 109 110 RequestDispatcher dispatcher = request.getRequestDispatcher("/WEB-INF/jsp/registerConfirm.jsp"); 111 112 dispatcher.forward(request, response); 113 114 } 115 116} 117

registerForm

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<title>ユーザー登録</title> 8</head> 9<body> 10<form action="/servlet/ResisterUser" method = "post"> 11ログインID:<input type="text" name="id"><br> 12パスワード:<input type="password" name="pass"><br> 13名前:<input type="text" name="name"><br> 14<input type="submit" value="確認"> 15</form> 16 17</body> 18</html>

registerConfirm

1<%@ page language="java" contentType="text/html; charset=UTF-8" 2 pageEncoding="UTF-8"%> 3<%@ page import="example.User" %> 4 5<% 6User registerUser = (User)session.getAttribute("registerUser"); 7%> 8 9<!DOCTYPE html> 10<html> 11<head> 12<meta charset="UTF-8"> 13<title>ユーザー登録</title> 14</head> 15<body> 16<p>下記のユーザーを登録します</p> 17<p> 18ログインID:<%= registerUser.getId() %><br> 19名前:<%= registerUser.getName() %><br> 20</p> 21<a href="/servlet/ResisterUser">戻る</a> 22<a href="/servlet/ResisterUser?action=done">登録</a> 23</body> 24</html>

registerDone

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<title>ユーザー登録</title> 8</head> 9<body> 10<p>登録完了しました</p> 11<a href="/servlet/ResisterUser">戻る</a> 12</body> 13</html>

ResisterUserLogic

1package example; 2 3public class ResisterUserLogic { 4 5 public boolean execute(User user) { 6 7// 登録処理、サンプルでは行わない 8 9 return true; 10 11 } 12 13} 14

User

1package example; 2import java.io.Serializable; 3 4public class User implements Serializable{ 5 6 private String id; 7 private String name; 8 private String pass; 9 10 public User() { 11 12 } 13 14 public User(String id, String name, String pass) { 15 16 this.id = id; 17 this.name = name; 18 this.pass = pass; 19 20 } 21 22 public String getId() {return id;} 23 public String getName() {return name;} 24 public String getPass() {return pass;} 25 26} 27
server.xml デフォルト設定 <Context docBase="example" path="/example" reloadable="true" source="org.eclipse.jst.jee.server:example"/><Context docBase="sessionServlet" path="/sessionServlet" reloadable="true" source="org.eclipse.jst.jee.server:sessionServlet"/></Host>

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

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

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

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

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

m.ts10806

2021/10/01 19:33

この内容だけだとxmlの内容もどういうアプリケーションを作ったのかもサーバーの状態もバージョンも何もかも赤の他人には分かりません。
lvngk

2021/10/02 02:26

申し訳ありません。ソースコードとxmlの情報を乗せさせていただきます。
guest

回答1

0

自己解決

解決できました。

解決方法:プロジェクトを削除して、server.xmlのコンテキストを編集した

投稿2021/10/02 04:06

lvngk

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問