実現したいこと
Paliaというゲームで使用する魚と虫のトラッキングツールを作成しています。
Fish.javaはFishSearch.jspからのPOSTリクエストを受けてFishLogic.javaを通してFishDAO.javaで入力内容をもとに検索を行ってそれをFishResult.jspで出力するプログラムです。
発生している問題・分からないこと
検索を行うサーブレットへ遷移を行う際に404ステータスが発生してしまいます。
eclipseでの開発段階ではエラーは発生しておらず、tomcatへ配備を行ってから発生するようになりました。
エラーメッセージ
error
1要求されたリソース [/PaliaSearch/Fish] は利用できません。
該当のソースコード
FishSearch.jsp
1<%@ page language="java" contentType="text/html; charset=UTF-8" 2 pageEncoding="UTF-8"%> 3<!DOCTYPE html> 4<html lang="en"> 5<head> 6<meta charset="UTF-8"> 7<meta name="viewport" content="width=device-width, initial-scale=1.0"> 8<title>Palia check</title> 9<style> 10 body { 11 font-family: Arial, sans-serif; 12 margin: 0; 13 padding: 0; 14 display: flex; 15 justify-content: center; 16 align-items: center; 17 height: 100vh; 18 background-color: #f0f0f0; 19 } 20 21 .container { 22 max-width: 400px; 23 padding: 20px; 24 background-color: #fff; 25 border-radius: 8px; 26 box-shadow: 0 0 10px rgba(0, 0, 0, 0.1); 27 } 28 29 h2 { 30 text-align: center; 31 } 32 33 input[type="text"], 34 select { 35 width: 100%; 36 padding: 10px; 37 margin-top: 10px; 38 border: 1px solid #ccc; 39 border-radius: 5px; 40 box-sizing: border-box; 41 } 42 43 .button { 44 width: 100%; 45 padding: 10px; 46 margin-top: 20px; 47 border: none; 48 display : inline-block; 49 border-radius : 5%; /* 角丸 */ 50 font-size : 18pt; /* 文字サイズ */ 51 text-align : center; /* 文字位置 */ 52 cursor : pointer; /* カーソル */ 53 padding : 12px 12px; /* 余白 */ 54 background : #ffffff; /* 背景色 */ 55 color : #000000; /* 文字色 */ 56 line-height : 1em; /* 1行の高さ */ 57 transition : .3s; /* なめらか変化 */ 58 box-shadow : 4px 4px 3px #666666; /* 影の設定 */ 59 border : 2px solid #ffffff; /* 枠の指定 */ 60 } 61 .button:hover { 62 box-shadow : none; /* カーソル時の影消去 */ 63 color : #ffffff; /* 背景色 */ 64 background : #000000; /* 文字色 */ 65 } 66</style> 67</head> 68<body> 69 <form action="/PaliaSearch/Fish" method="post"> 70 <div class="container"> 71 <h2>palia check</h2> 72 73 <p>エリアを選択<br> 74 <input type="radio" name="erea" value="未選択" checked> 未選択 75 <input type="radio" name="erea" value="キリマ"> キリマ 76 <input type="radio" name="erea" value="バハリ"> バハリ 77 </p> 78 79 <input type="text" name= "name" placeholder="魚の名前(カタカナ)を入力"> 80 81 <label for="bahari">時間帯を選択</label> 82 <select name="time"> 83 <option value="未選択">未選択</option> 84 <option value="早朝 3:00~5:59">早朝 3:00~5:59</option> 85 <option value="日中 6:00~17:59">日中 6:00~17:59</option> 86 <option value="夕 18:00~20:59">夕 18:00~20:59</option> 87 <option value="夜 21:00~2:59">夜 21:00~2:59</option> 88 </select> 89 <label for="bahari">場所を選択</label> 90 <select name="location"> 91 <option value="未選択">未選択</option> 92 <option value="湖畔">湖畔</option> 93 <option value="池">池</option> 94 <option value="川">川</option> 95 <option value="海">海</option> 96 <option value="洞窟">洞窟</option> 97 </select> 98 <label for="bahari">餌を選択</label> 99 <select name="feed"> 100 <option value="未選択">未選択</option> 101 <option value="なし">餌なし</option> 102 <option value="ワーム">ワーム</option> 103 <option value="発光ミミズ">発光ミミズ</option> 104 </select> 105 <input type="submit" value="検索" class="button"> 106 <button type="button" onclick="history.back()" class="button">戻る</button> 107 </div> 108 </form> 109</body> 110</html>
Fish.java
1package servlet; 2 3import java.io.IOException; 4import java.util.List; 5 6import jakarta.servlet.ServletException; 7import jakarta.servlet.annotation.WebServlet; 8import jakarta.servlet.http.HttpServlet; 9import jakarta.servlet.http.HttpServletRequest; 10import jakarta.servlet.http.HttpServletResponse; 11import model.FishLogic; 12import model.FishModel; 13 14/** 15 * Servlet implementation class PaliaSearch 16 */ 17@WebServlet("/Fish") 18public class Fish extends HttpServlet { 19 private static final long serialVersionUID = 1L; 20 21 /** 22 * @see HttpServlet#HttpServlet() 23 */ 24 public Fish() { 25 super(); 26 // TODO Auto-generated constructor stub 27 } 28 29 /** 30 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) 31 */ 32 /*protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 33 // TODO Auto-generated method stub 34 response.getWriter().append("Served at: ").append(request.getContextPath()); 35 request.getRequestDispatcher("jsp/FishResult.jsp").forward(request, response); 36 }*/ 37 38 /** 39 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) 40 */ 41 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 42 request.setCharacterEncoding("UTF-8"); 43 String name = request.getParameter("name"); 44 String erea = request.getParameter("erea"); 45 String time = request.getParameter("time"); 46 String location = request.getParameter("location"); 47 String feed = request.getParameter("feed"); 48 49 FishModel fishModel = new FishModel("魚",erea,time,location,feed,name); 50 FishLogic fishLogic = new FishLogic(); 51 List<FishModel> fishList = fishLogic.execute(fishModel); 52 53 request.setAttribute("fish", fishList); 54 55 request.getRequestDispatcher("jsp/FishResult.jsp").forward(request, response); 56 } 57 58} 59
FishLogic.java
1package model; 2 3import java.io.Serializable; 4 5public class FishModel implements Serializable { 6 private String fish; 7 private String area; 8 private String time; 9 private String location; 10 private String feed; 11 private String name; 12 13 public FishModel(String fish,String area, Object object, Object object2, Object object3, String name) { 14 this.fish = fish; 15 this.area = area; 16 this.time = (String) object; 17 this.location = (String) object2; 18 this.feed = (String) object3; 19 this.name = name; 20 } 21 22 public String getFish() { return fish; } 23 public void setFish(String fish) { this.fish = fish; } 24 25 public String getArea() { return area; } 26 public void setArea(String area) { this.area = area; } 27 28 public String getTime() { return time; } 29 public void setTime(String time) { this.time = time; } 30 31 public String getLocation() { return location; } 32 public void setLocation(String location) { this.location = location; } 33 34 public String getFeed() { return feed; } 35 public void setFeed(String feed) { this.feed = feed; } 36 37 public String getName() { return name; } 38 public void setName(String name) { this.name = name; } 39 40} 41
FishResult.jsp
1<%@ page language="java" contentType="text/html; charset=UTF-8" 2 pageEncoding="UTF-8"%> 3<%@ page import="model.FishModel,java.util.List" %> 4<% 5List<FishModel> fishList = (List<FishModel>) request.getAttribute("fish"); 6 7%> 8<!DOCTYPE html> 9<html> 10<head> 11<meta charset="UTF-8"> 12<title>Palia Check</title> 13<style> 14.button { 15 width: 100%; 16 padding: 10px; 17 margin-top: 20px; 18 border: none; 19 display : inline-block; 20 border-radius : 5%; /* 角丸 */ 21 font-size : 18pt; /* 文字サイズ */ 22 text-align : center; /* 文字位置 */ 23 cursor : pointer; /* カーソル */ 24 padding : 12px 12px; /* 余白 */ 25 background : #ffffff; /* 背景色 */ 26 color : #000000; /* 文字色 */ 27 line-height : 1em; /* 1行の高さ */ 28 transition : .3s; /* なめらか変化 */ 29 box-shadow : 4px 4px 3px #666666; /* 影の設定 */ 30 border : 2px solid #ffffff; /* 枠の指定 */ 31 } 32 .button:hover { 33 box-shadow : none; /* カーソル時の影消去 */ 34 color : #ffffff; /* 背景色 */ 35 background : #000000; /* 文字色 */ 36</style> 37</head> 38<body> 39<% for(FishModel fish : fishList){ %> 40<p><%= fish.getName() %><br>(<%= fish.getArea() %>、<%= fish.getTime() %>、 <%= fish.getLocation() %>、 <%= fish.getFeed() %>)</p> 41<% } %> 42<button type="button" onclick="history.back()" class="button">戻る</button> 43</body> 44</html>
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
Google検索などに通してみても同様のパターンが見つかりませんでした。
補足
java version 17.0.10
tomcatバージョン Apache Tomcat/8.5.96
あなたの回答
tips
プレビュー