実現したいこと
JavaでDB接続するJDBCプログラミングを完全解説https://www.youtube.com/watch?v=wu4YCDyJFPg
で勉強しています。1:55:00辺りからです。
localhost:8080/dbweb/showname.htmlを実行後、画面の「実行」ボタンをクリックして
「noが1の生徒名は菅原です。」と表示されるようにしたい。
発生している問題・分からないこと
localhost:8080/dbweb/showname.htmlを実行後は以下が正常に表示される。
noが1の生徒名を表示します
[実行]
実行ボタンを押すとエラーになる。
http://localhost:8080/dbweb/showname以下が表示される。
HTTPステータス 404 – 見つかりません
タイプ ステータスレポート
メッセージ 要求されたリソース [/dbweb/showname] は利用できません。
説明 オリジンサーバーは、ターゲットリソースの現在の表現を見つけられなかったか、またはそれが存在することを開示するつもりはありません。
Apache Tomcat/11.0.2
エラーメッセージ
error
1HTTPステータス 404 – 見つかりません 2タイプ ステータスレポート 3 4メッセージ 要求されたリソース [/dbweb/showname] は利用できません。 5 6説明 オリジンサーバーは、ターゲットリソースの現在の表現を見つけられなかったか、またはそれが存在することを開示するつもりはありません。 7 8
該当のソースコード
showname.html
1<!DOCTYPE html> 2<html> 3<head> 4 <meta charset="utf-8"/> 5 <title>ボタン画面</title> 6</head> 7<body> 8 <h2>noが1の生徒名を表示します</h2> 9 <form action="/dbweb/showname" method="post"> 10 <input type="submit" value="実行" /> 11 </form> 12</body> 13</html> 14
ShowName.jsp
1<%@page contentType="text/html;charset=utf-8" %> 2<html> 3 <head> 4 <title>表示画面</title> 5 </head> 6<body> 7 <h2>noが1の生徒名は <%= request.getAttribute("name") %> です </h2> 8</body> 9</html> 10
ShowNameServlet.java
1import java.io.*; 2import java.sql.*; 3import javax.servlet.*; 4import javax.servlet.http.*; 5import javax.servlet.annotation.*; 6 7@WebServlet("/showname") 8public class ShowNameServlet extends HttpServlet { 9 public void doPost(HttpServletRequest req, HttpServletResponse res) 10 throws IOException, ServletException { 11 final String URL = "jdbc:mysql://localhost/sampledb"; 12 final String USER = "root"; 13 final String PASS = "pass"; 14 String sql = "SELECT name FROM student WHERE no = 1"; 15 16 Connection con = null; 17 Statement stmt = null; 18 ResultSet rs = null; 19 20 try{ 21 //①DBに接続 22 con = DriverManager.getConnection(URL, USER, PASS); 23 //②ステートメントを生成 24 stmt = con.createStatement(); 25 //③SQLを実行 26 rs = stmt.executeQuery(sql); 27 //④検索結果の処理 28 rs.next(); 29 String name = rs.getString("name"); 30 req.setAttribute("name", name); 31 } catch(Exception e){ 32 e.printStackTrace(); 33 } finally { 34 try{ 35 //⑤リソースを解放 36 if(rs != null) rs.close(); 37 if(stmt != null) stmt.close(); 38 if(con != null) con.close(); 39 } catch(Exception e){ 40 e.printStackTrace(); 41 } 42 } 43 //JSPにフォワード 44 RequestDispatcher rd = req.getRequestDispatcher("/showname.jsp"); 45 rd.forward(req, res); 46 } 47 48 public void doGet(HttpServletRequest req, HttpServletResponse res) 49 throws IOException, ServletException { 50 doPost(req, res); 51 } 52} 53 54 55 56 57 58
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
勉強中のwebを参考にしてTomcat 11.0.2/webapps/dbwebにコードサンプルをコピーして実行しています。
コードはNotepad++で作成しています。
コードの構成はうまく書けませんが次のようになっています。
Tomcat 11.0.2/webapps/dbweb
-WEB-INF-classes-bean
-WEB-INF-classes-ShowNameServlet.java
-showname.html
-showname.jsp
環境変数
変数名:CATALINA_HOME
変数値:C:\Program Files\Apache Software Foundation\Tomcat 11.0
CLASSPATH:.;C:\Program Files\Apache Software Foundation\Tomcat 11.0\lib\servlet-api.jar;C:\Program Files\Apache Software Foundation\Tomcat 11.0\lib\mysql-connector-j-9.2.0.jar;C:\Program Files\Apache Software Foundation\Tomcat 11.0\webapps\dbweb
JAVA_HOME:C:\Program Files\Java\jdk-23.0.2
Path:;%JAVA_HOME%\bin;%CATALINA_HOME%\bin;C:\Program Files\MySQL\MySQL Server 8.0\bin
補足
特になし

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