前提・実現したいこと
ここに質問の内容を詳しく書いてください。
独学でJavaを勉強して一か月ほどです。
ログイン機能を実装しようとしていますが、jspからサーブレットに推移できません。
login.jspを実行すると実行するとIDとパスワードを入力する画面は出てきますが、そこからいざIDとパスワードを入力すると以下のエラーメッセージが表示されます。
login.jspを実行すると実行するとIDとパスワードを入力する画面に移動し、そこからMySQLで登録したデータベースと照合し、次の処理に進むといった流れにしたいです。
Eclipse Version: 2019-12 (4.14.0)
Tomcat 9を使用しています。
どなたかご教授いただければ幸いです。
発生している問題・エラーメッセージ
HTTPステータス 404 – 見つかりません。 タイプ ステータスレポート メッセージ /schoo/WEB-sample13_14/LoginServletShopping 説明 オリジンサーバーは、ターゲットリソースの現在の表現を見つけられなかったか、またはそれが存在することを開示するつもりはありません。 Apache Tomcat/9.0.30
該当のソースコード
<%@ page language="java" contentType="text/html; charset=UTF-8" %> <jsp:useBean id="user_db" scope="session" class="websample13_14.LoginUserBean" /> <%-- Java入門 ログイン画面 --%> <!DOCTYPE html> <html> <head> <title>Java入門</title> <link href="/schoo/WEB-sample13_14/css/shopping.css" rel="stylesheet" type="text/css" /> </head> <body> <div class="login_pane"> <h1>ようこそショッピング風サイトへ!</h1> <p>ログインIDとパスワードを入力して下さい</p> <form action="../LoginServletShopping" method="post"> <table class="table_form"> <tbody> <tr> <%-- ログイン済みの場合はIDを表示 --%> <th>ログインID</th> <td><input type="text" name="id" value="<%=user_db.getId()%>"/></td> </tr> <tr> <th>パスワード</th> <td><input type="password" name="pass"/></td> </tr> </tbody> </table> <input class="common_button" type="submit" name="submit" value="ログイン"/> <%-- ログイン済みの場合はログアウトボタンを表示 --%> <% if("login".equals(session.getAttribute("login_db"))) { %> <input class="common_button" type="submit" name="submit" value="ログアウト"/> <% } %> </form> </div> </body> </html> <%@ page language="java" contentType="text/html; charset=UTF-8" %> <jsp:useBean id="user_db" scope="session" class="websample13_14.LoginUserBean" /> <%-- Java入門 ログイン画面 --%> <!DOCTYPE html> <html> <head> <title>Java入門</title> <link href="/schoo/WEB-sample13_14/css/shopping.css" rel="stylesheet" type="text/css" /> </head> <body> <div class="login_pane"> <h1>ようこそショッピング風サイトへ!</h1> <p>ログインIDとパスワードを入力して下さい</p> <form action="../LoginServletShopping" method="post"> <table class="table_form"> <tbody> <tr> <%-- ログイン済みの場合はIDを表示 --%> <th>ログインID</th> <td><input type="text" name="id" value="<%=user_db.getId()%>"/></td> </tr> <tr> <th>パスワード</th> <td><input type="password" name="pass"/></td> </tr> </tbody> </table> <input class="common_button" type="submit" name="submit" value="ログイン"/> <%-- ログイン済みの場合はログアウトボタンを表示 --%> <% if("login".equals(session.getAttribute("login_db"))) { %> <input class="common_button" type="submit" name="submit" value="ログアウト"/> <% } %> </form> </div> </body> </html> package websample13_14; import java.sql.ResultSet; import java.sql.SQLException; /** * Java入門 ログイン処理クラス.<br/> * Loginクラスを親にしています */ public class LoginDB extends Login { @Override public LoginUserBean getUserData(String id, String pass) { LoginUserBean bean = null; LoginDao dao = null; ResultSet rs = null; try { // DAOクラスをインスタンス化 dao = new LoginDao(); // 画面で入力されたIDとパスワードを基にDB検索を実行 rs = dao.selectUser(id, pass); while(rs.next()) { // 検索結果が存在する場合はbeanに値をセット(結果が1件しか返らないことを想定) bean = new LoginUserBean(); // ID(IDは引数のものをセット) bean.setId(id); // 名前 bean.setName(rs.getString("name")); // 年齢 bean.setAge(rs.getInt("age")); } } catch (SQLException e) { e.printStackTrace(); } finally { // 処理終了時に各接続を解除 dao.close(); } return bean; } } package websample13_14; import java.sql.ResultSet; import java.sql.SQLException; /** * Java入門 ログイン処理クラス.<br/> * Loginクラスを親にしています */ public class LoginDB extends Login { @Override public LoginUserBean getUserData(String id, String pass) { LoginUserBean bean = null; LoginDao dao = null; ResultSet rs = null; try { // DAOクラスをインスタンス化 dao = new LoginDao(); // 画面で入力されたIDとパスワードを基にDB検索を実行 rs = dao.selectUser(id, pass); while(rs.next()) { // 検索結果が存在する場合はbeanに値をセット(結果が1件しか返らないことを想定) bean = new LoginUserBean(); // ID(IDは引数のものをセット) bean.setId(id); // 名前 bean.setName(rs.getString("name")); // 年齢 bean.setAge(rs.getInt("age")); } } catch (SQLException e) { e.printStackTrace(); } finally { // 処理終了時に各接続を解除 dao.close(); } return bean; } }
試したこと
他の方の質問を参考に
form actionのパスの変更
フォルダ配置の変更
補足情報(FW/ツールのバージョンなど)
フォルダの配置は以下の添付画像の通りでございます。
jsp
Servlet
DB処理クラス
Daoを掲載しております。
あなたの回答
tips
プレビュー