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

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

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

Java Development Kit(JDK)とは、Javaでの開発のために要するソフトウェアをまとめたパッケージです。コンパイラの「Javac」やクラスライブラリの「jar」など、Java開発者向けツールが含まれています。

DAO(Data Access Object)

DAO(Data Access Object)とは、データベースなどに保存するための操作を実装したオブジェクトのことです。データの永続化機構に抽象化されたインタフェースを提供し、データベースの詳細を隠蔽。ビジネスロジックとデータ操作も分離できます。

JSP

JSP(Java Server Pages)とは、ウェブアプリケーションの表示レイヤーに使われるサーバーサイドの技術のことです。

servlet

Servletとは、Webページの動的な生成やデータ処理などをサーバ上で実行するために、Javaで作成されたプログラムです。 ショッピングサイトやオンラインバンキングといった、動的なウェブサイトの構築に用いられています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

0回答

189閲覧

servlet,modelクラス,DAO,JSPを使って結果を表示させることについて

route27

総合スコア0

Java Development Kit

Java Development Kit(JDK)とは、Javaでの開発のために要するソフトウェアをまとめたパッケージです。コンパイラの「Javac」やクラスライブラリの「jar」など、Java開発者向けツールが含まれています。

DAO(Data Access Object)

DAO(Data Access Object)とは、データベースなどに保存するための操作を実装したオブジェクトのことです。データの永続化機構に抽象化されたインタフェースを提供し、データベースの詳細を隠蔽。ビジネスロジックとデータ操作も分離できます。

JSP

JSP(Java Server Pages)とは、ウェブアプリケーションの表示レイヤーに使われるサーバーサイドの技術のことです。

servlet

Servletとは、Webページの動的な生成やデータ処理などをサーバ上で実行するために、Javaで作成されたプログラムです。 ショッピングサイトやオンラインバンキングといった、動的なウェブサイトの構築に用いられています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2024/05/13 13:01

実現したいこと

servlet,modelクラス,DAO,JSPを使って、データベースから受け取った表をJSPで表示させたい。

発生している問題・分からないこと

JSPで実行をした際、URLのアドレスを変えて、JSPで作ったタイトルは合っていたため、上手くページには飛べているとの思うのですが、データベースを表示させることができず、ページが真っ白になってしまいます。DAOクラスで上手くデータベースには繋げていると思うのですが、なぜ表示されないのか原因が分かりません。ちなみにEclipse、データベースはSQL developerを使っています。また、プロジェクト名はMVCrelearnです。

該当のソースコード

package Servlet; import java.io.IOException; import java.util.List; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import Dao.Dao; import model.User; /** * Servlet implementation class Main */ @WebServlet("/Main") public class Main extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#HttpServlet() */ public Main() { super(); // TODO Auto-generated constructor stub } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub response.setContentType("text/html; charset=UTF-8"); //Daoクラスの生成 Dao dao = new Dao(); List<User> list = dao.getAllUsers(); for(User user : list) { System.out.println(user.getId()+";"+user.getName()); } //jspにlistを持っていくために、setAttributeメソッドで”list”にいれる request.setAttribute("list",list); request.getRequestDispatcher("index.jsp").forward(request,response); } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub doGet(request, response); } }

Userクラス(model)

1package model; 2 3public class User { 4 private int id; 5 private String name; 6 7 8 public int getId() { 9 return id; 10 } 11 public void setId(int id) { 12 this.id = id; 13 } 14 public String getName() { 15 return name; 16 } 17 public void setName(String name) { 18 this.name = name; 19 } 20 21 public User(int id, String name) { 22 this.id = id; 23 this.name = name; 24 } 25} 26

DAO

1package Dao; 2 3import java.sql.Connection; 4import java.sql.DriverManager; 5import java.sql.PreparedStatement; 6import java.sql.ResultSet; 7import java.sql.SQLException; 8import java.util.ArrayList; 9import java.util.List; 10 11import model.User; 12 13//import org.apache.catalina.User; 14 15public class Dao { 16 private static final String URL = "jdbc:mysql://localhost:3306/kensyu"; 17 private static final String USERNAME = "root"; 18 private static final String PASSWORD = "mysql"; 19 20 public Dao() { 21 try { 22 Class.forName("com.mysql.cj.jdbc.Driver"); 23 } catch (ClassNotFoundException e) { 24 // TODO 自動生成された catch ブロック 25 e.printStackTrace(); 26 } 27 } 28//Main.javaの38行目に戻る 29 30 //Main1の39行目からメソッド呼び出し 31 public List<User> getAllUsers() { 32 //リストインスタンス化 33 List<User> users = new ArrayList<>(); 34 //データベースから」getした情報をsqlという変数にいれる 35 String sql = "SELECT * FROM users"; 36 37 try (Connection conn = DriverManager.getConnection(URL, USERNAME, PASSWORD); 38 //sqlを実行 39 PreparedStatement ps = conn.prepareStatement(sql); 40 //結果をデータベースに引き継ぐため 41 ResultSet rs = ps.executeQuery();) { 42 //一行目があればtrue or faulse二行目があればtrue or faulse 43 while (rs.next()) { 44 int id = rs.getInt("id"); 45 String name = rs.getString("name"); 46 47 User user = new User(id, name); 48 users.add(user); 49 } 50 } catch (SQLException e) { 51 e.printStackTrace(); 52 } 53 54 return users; 55 } 56 57 public User getUserById(int userId) throws SQLException { 58 User user = null; 59 String query = "SELECT * FROM users where id = ?"; 60 61 try (Connection conn = DriverManager.getConnection(URL,USERNAME,PASSWORD); 62 PreparedStatement ps = conn.prepareStatement(query);){ 63 64 ps.setInt(1, userId); 65 66 try(ResultSet rs = ps.executeQuery()){ 67 if(rs.next()) { 68 int id = rs.getInt("id"); 69 String name = rs.getString("name"); 70 user = new User(id,name); 71 } 72 73 } 74 }catch (SQLException e) { 75 e.printStackTrace(); 76 throw e; 77 } 78 79 return user; 80 } 81} 82

JSP

1<%@ page language="java" contentType="text/html; charset=UTF-8" 2 pageEncoding="UTF-8" import="java.util.List, model.User"%> 3<!DOCTYPE html> 4<html> 5<head> 6<meta charset="UTF-8"> 7<title>結果表示</title> 8</head> 9<body> 10 <% 11 List<User> list = (List<User>) request.getAttribute("list"); 12 for(User user : list){ 13 out.println(user.getId()+":"+ user.getName() + "<br>"); 14 } 15 %> 16</body> 17</html> 18 19

試したこと・調べたこと

  • teratailやGoogle等で検索した
  • ソースコードを自分なりに変更した
  • 知人に聞いた
  • その他
上記の詳細・結果

JSPを実行すると、
タイプ 例外報告

メッセージ [index.jsp] の処理中に行番号 [12] で例外が発生しました。

説明 サーバーは予期しない条件に遭遇しました。それはリクエストの実行を妨げます。

例外

org.apache.jasper.JasperException: [index.jsp] の処理中に行番号 [12] で例外が発生しました。

9: <body>
10: <%
11: List<User> list = (List<User>) request.getAttribute("list");
12: for(User user : list){
13: out.println(user.getId()+":"+ user.getName() + "<br>");
14: }
15: %>
と表示される画面に飛んでしまうため、そこからURLのアドレスをhttp://localhost:8080/MVCrelearn/Main
と変更したら上手くページには飛べたと思うが、画面表示は真っ白で何も書かれていない状態になる。

また、SQL developerの方でusersテーブルが作られているかも確認したところ、ちゃんとテーブルも作成されていた。

補足

特になし

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

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

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

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

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

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.37%

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

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

質問する

関連した質問