実現したいこと
以前正常に動作していたJavaの動的Webプロジェクト「一時駐車場管理プログラム」(pauser)が、同じコードのままなのに動作しなくなったので修復したい。
発生している問題・分からないこと
Javaの動的Webプロジェクト「一時駐車場管理プログラム」(pauser)をEclipse2020-12上で完成させ、それはその時正常に動作しました。しかし現在同じコードのままで実行しようとすると、まるで古くなって錆びついたかのように動作しません。スタート画面「一時駐車場利用者登録」は正常に表示されるのですが、下部のメニューの「一時駐車場利用状況一覧」画面等にリンクして、コントローラーのサーブレットController.javaに移ろうとすると、そのサーブレットが見つからないという意味の回答の404エラーになってしまいます。
環境を改善すれば解決するかとも思い、Eclipse2023にプロジェクト全体をコピーしてTomcat10[Java21]を使って実行してみました。しかし同じくコントローラーのサーブレットが見つからないという意味の404エラーが出るだけです。どのように環境他を変化させれば動作するのか、私にはその知識が乏しくまた検索もしきれず解決できません。どうかご存じの方、対処法をご教示下さい。
エラーメッセージ
error
1HTTPステータス 404 – 見つかりません 2タイプ ステータスレポート 3 4メッセージ 要求されたリソース [/Controller] は利用できません。 5 6説明 オリジンサーバーは、ターゲットリソースの現在の表現を見つけられなかったか、またはそれが存在することを開示するつもりはありません。 7 8Apache Tomcat/10.1.13
該当のソースコード
index.jsp
1<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> 2<%@ page import="model.Parked" %> 3<%@ page import="java.util.*" %> 4<% Parked parked = (Parked) request.getAttribute("Parked");%> 5<% 6String year="";String month="";String day=""; 7String thousand="";String hundred="";String ten="";String one=""; 8String msg=""; 9 10if(Objects.isNull(parked)){parked=new Parked();} 11else {msg=parked.getMsg();} 12%> 13<!DOCTYPE html> 14<html lang="ja"> 15<head> 16 <meta charset="UTF-8"> 17 <title>一時駐車場利用車登録</title> 18 <link href="css/index.css" rel="stylesheet" type="text/css"> 19</head> 20<body> 21<h1>一時駐車場利用車登録</h1> 22<div> 23<form action="/Controller" method="post"> 24 <input type="hidden" name="y" value="1"> 25 <p> 26 駐車日20<input type="text" name="year" size="2" maxlength="2" value="<%=year %>" onkeyup="nextfeild(this)">年 27 <input type="text" name="month" size="2" maxlength="2" value="<%=month %>" onkeyup="nextfeild(this)">月 28 <input type="text" name="day" size="2" maxlength="2" value="<%=day %>" onkeyup="nextfeild(this)">日 29 </p> 30 <p> 31 ナンバー <input type="text" name="thousand" size="1" maxLength="1" value="<%=thousand%>" onkeyup="nextfeild(this)"> 32 <input type="text" name="hundred" size="1" maxlength="1" value="<%=hundred %>" onkeyup="nextfeild(this)"> 33 <input type="text" name="ten" size="1" maxlength="1" value="<%=ten%>" onkeyup="nextfeild(this)"> 34 <input type="text" name="one" size="1" maxlength="1" value="<%=one%>" onkeyup="nextfeild(this)" > 35 <input type="submit" name="record" value="登録"> 36 <input type="checkbox" id="delete" name="delete" value="1"> 37 <label for="delete">削除(ナンバーのみ入力)</label> 38 </p> 39</form> 40<p style="color:red"><%=msg %></p> 41</div> 42<div class="bottomMenu"> 43 <ul> 44 <li><a href="/Controller?x=2">一時駐車場リピーター一覧</a></li> 45 <li><a href="/Controller?x=3">一時駐車場利用状況一覧</a></li> 46 </ul> 47</div> 48 49<script type="text/javascript"> 50 function nextfeild(str){ 51 if(str.value.length>=str.maxLength){ 52 for(var i=0,elm=str.form.elements;i<elm.length;i++){ 53 if(elm[i]==str){ 54 (elm[i+1] || elm[0]).focus(); 55 break; 56 } 57 } 58 } 59 } 60</script> 61</body> 62</html> 63
Controller.java
1package servlet; 2 3import java.io.IOException; 4import java.util.LinkedHashMap; 5import java.util.List; 6import java.util.TreeMap; 7 8import jakarta.servlet.RequestDispatcher; 9import jakarta.servlet.ServletException; 10import jakarta.servlet.annotation.WebServlet; 11import jakarta.servlet.http.HttpServlet; 12import jakarta.servlet.http.HttpServletRequest; 13import jakarta.servlet.http.HttpServletResponse; 14 15import model.Parked; 16import model.RecordPausers; 17import model.SelectPausers; 18import model.SelectRepeaters; 19import model.dayOfWeek; 20 21@WebServlet("/Controller") 22public class Controller extends HttpServlet{ 23 private static final long serialVersionUID = 1L; 24 25public Controller() { 26 super(); 27} 28 29 protected void doGet(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException{ 30 String x = request.getParameter("x"); 31 String forwardPath= null; 32 33 if (x==null){ 34 try { 35 Class.forName("org.postgresql.Driver"); 36 } 37 catch(ClassNotFoundException e1) { 38 e1.printStackTrace(); 39 } 40 } 41 if ((x == null) || ("1".equals(x))){forwardPath="index.jsp";} 42 if ("2".equals(x)) { 43 SelectRepeaters sr = new SelectRepeaters(); 44 LinkedHashMap<String,List<String>>map = sr.selectRepeaters(); 45 Parked parked = new Parked(); 46 parked.setMap(map); 47 request.setAttribute("map",map); 48 forwardPath="WEB-INF/jsp/displayRepeaters.jsp"; 49 } 50 if ("3".equals(x)) { 51 SelectPausers sp = new SelectPausers(); 52 TreeMap<String,List<Integer>>map2 = sp.selectPausers(); 53 Parked parked = new Parked(); 54 parked.setMap2(map2); 55 request.setAttribute("map2",map2); 56 forwardPath="WEB-INF/jsp/pausersRecord.jsp"; 57 } 58 59 RequestDispatcher dispatcher = request.getRequestDispatcher(forwardPath); 60 dispatcher.forward(request,response); 61 } 62 63 64 protected void doPost(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException{ 65 String y =request.getParameter("y"); 66 String delete =request.getParameter("delete"); 67 String year = String.format("%2s", request.getParameter("year").trim()).replace(" ", "0"); 68 String month = String.format("%2s", request.getParameter("month").trim()).replace(" ", "0"); 69 String day = String.format("%2s", request.getParameter("day").trim()).replace(" ", "0"); 70 String thousand = String.format("%1s", request.getParameter("thousand")); 71 String hundred = String.format("%1s", request.getParameter("hundred")); 72 String ten = String.format("%1s", request.getParameter("ten")); 73 String one = String.format("%1s", request.getParameter("one")); 74 String date = year+month+day; 75 String number = thousand+hundred+ten+one; 76 String msg =""; 77 78 if("1".equals(y)) { 79 if (((date.matches("^[0-9]{2}((0[1-9])|(1[0-2]))((0[1-9])|([12][0-9])|(3[01]))$")) && 80 (number.matches("([1-9][0-9][0-9][0-9])|(\\s[1-9][0-9][0-9])|(\\s\\s[1-9][0-9])|(\\s\\s\\s[1-9])"))&& 81 (!("1".equals(delete)))) 82 || 83 ((number.matches("([1-9][0-9][0-9][0-9])|(\\s[1-9][0-9][0-9])|(\\s\\s[1-9][0-9])|(\\s\\s\\s[1-9])"))&& 84 ("1".equals(delete)))) { 85 RecordPausers RU = new RecordPausers(); 86 RU.recordPausers(date,number,delete); 87 88 dayOfWeek dOW = new dayOfWeek(); 89 date = date+dOW.DayOfWeek(year,month,day); 90 if(!("1".equals(delete))) {msg="一時駐車を登録しました。";} else {msg="一時駐車の登録を削除しました。";} 91 } 92 else { 93 if (number.matches("([1-9][0-9][0-9][0-9])|(\\s[1-9][0-9][0-9])|(\\s\\s[1-9][0-9])|(\\s\\s\\s[1-9])")){} else {msg="ナンバーを正しく入れてください。";} 94 if (!(date.matches("^[0-9]{2}((0[1-9])|(1[0-2]))((0[1-9])|([12][0-9])|(3[01]))$"))&&(!("1".equals(delete)))){msg="日付を正しく入れてください。";} 95 } 96 Parked parked = new Parked(msg); 97 request.setAttribute("Parked", parked); 98 String forwardPath="index.jsp"; 99 RequestDispatcher dispatcher = request.getRequestDispatcher(forwardPath); 100 dispatcher.forward(request,response); 101 102 } 103 104 105 } 106 107 108
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
1)新旧環境で以前動作したのと同じコードで実行すると、スタート画面は表示されるが、その下部メニューから他画面へリンクしようとすると、コントローラーのサーブレットが見つからないという意味の404エラーが出る。
2)下部メニューの<a href>タグのリンク先へのパスを変更してみた。
例)"/Controller?x=3"
から
"/pauser/src/main/java/servlet/Controller?x=3" または
"../java/servlet/Controller?x=3"
へ
結果。コントローラーのサーブレットが見つからないという意味の404エラーが出る。
補足
プロジェクトを作り以前はそれが動作していた旧環境
Eclipse IDE 2020-12
Tomcat9[Java11]
プロジェクトをコピーして動作させようとしている現環境
Eclipse 2023
Tomcat10[Java21]

回答1件
あなたの回答
tips
プレビュー