質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.32%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

0回答

228閲覧

localhostでshowname.htmlを実行した後に,「実行」ボタンをクリックすると「名前」が表示されるようにしたいがエラーになる

sanchunaka

総合スコア30

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

0クリップ

投稿2025/01/30 06:45

実現したいこと

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

補足

特になし

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

dodox86

2025/01/30 08:28

> Tomcat 11.0.2/webapps/dbweb > -WEB-INF-classes-bean > -WEB-INF-classes-ShowNameServlet.java これは、 Tomcat 11.0.2/webapps/dbweb/WEB-INF/classes/bean Tomcat 11.0.2/webapps/dbweb/WEB-INF/classes/ShowNameServlet.java ですね? classesの下には*.javaファイルではなく、*.classファイルを配置します。 ※お使いのtomcatはtomcat11ですが、YouTubeの動画はtomcat9を使っていますが、大丈夫ですか? サーブレットのソースコードがコンパイルも配置もできないと思いますが。
dodox86

2025/01/30 08:46

> ですね? classesの下には*.javaファイルではなく、*.classファイルを配置します。 YouTubeの動画ではjavaのソースファイルを置いています(動画の1:55:40頃)が、サーブレットの実行用ファイルとして使われるのは*.classファイルです。
sanchunaka

2025/01/30 09:26

ありがとうございます。 おっしゃる通りです。 Tomcat 11.0.2/webapps/dbweb/WEB-INF/classes/beanのように書けばいいんですね。 因みに ShowNameServlet.javaはどこに配置すればうまくいくんでしょうか。 1週間ぐらいウェブサイトを調べまくり、解決できなくて質問させていただきました。 ほかの.Javaファイルがあるところに配置してみます。 順番にShowNameServlet.javaをフォルダに入れて実行してみます。 ヒントありがとうございます。 明日やってみます。
dodox86

2025/01/30 12:55

> ShowNameServlet.javaはどこに配置すればうまくいくんでしょうか。 JSPと違ってサーブレットはソースファイルを"自分で"コンパイルする必要があり、そのように開発ツール等をセッティングします。言い換えればコンパイルできればどこでもいいですし、webアプリとして配置するときは*.javaファイルは必要ありません。
dodox86

2025/01/30 12:56

ご覧になっているYouTube動画で説明されているのではないのでしょうか? (私は全部は観ていません)
sanchunaka

2025/01/30 20:46

tただ張り付けただけでした。やりなおしてみます。
sanchunaka

2025/01/31 12:27

mysql> select *from student; +----+------+-------+ | no | name | score | +----+------+-------+ | 1 | 菅原 | 60 | | 2 | 桜井 | 100 | | 3 | 田原 | 85 | | 4 | 中川 | 90 | | 5 | 鈴木 | 75 | | 6 | 小林 | 95 | | 7 | 藤原 | 90 | | 8 | 草野 | 85 | | 9 | 常田 | 80 | | 10 | 小橋 | 75 | +----+------+-------+ 10 rows in set (0.00 sec) の状態で、ブラウザでhttp://localhost:8080/dbweb/showname.htmlを実行すると、 http://localhost:8080/dbweb/shownameで、 「noが1の生徒名は null です」となりました。 もう一息だと思うのですが、どこがいけないのかわかりません。 それと、情報は何を提示すればいいかも教えてほしいです。
sanchunaka

2025/02/01 01:57

コメントありがとうございます。YouTubeの同じ先生の「JavaWeb入門」で勉強しなおして、tomcatの入れ替え、設定場所、設定変更を試したところ問題が解決しました! 自己解決欄を送信しようとしたらエラーが出ているので送信できませんでした。 teratailに問い合わせ中です。 エラーが解決したら自己解決欄を送信しようと思います。
dodox86

2025/02/01 02:31

> YouTubeの同じ先生の「JavaWeb入門」で勉強しなおして、tomcatの入れ替え、設定場所、設定変更を試したところ問題が解決しました! 解決して良かったです。tomcat11だとサーブレットのコード(importの部分とか)を変更し、コンパイルし直さないと動かないはずで、まずはYouTube動画のとおりにやって内容を理解することが重要だと思っていたので、安心しました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.32%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問