現在、サーブレットの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>
回答1件
あなたの回答
tips
プレビュー