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

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

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

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

JSP

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

Java

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

servlet

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

Q&A

解決済

1回答

7912閲覧

【jsp&Servlet】DBから取得しているはずの値が表示されない

nyan_engineer

総合スコア30

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

JSP

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

Java

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

servlet

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

0グッド

0クリップ

投稿2018/11/01 12:44

編集2018/11/01 23:05

#はじめに
いつもお世話になっております。
現在、jsp/Servlet/MySQLを使って
ログイン機能を持つ社員管理リストを作成しています。

MySQL8.0
Tomcat7

#困ったこと
ServletでDBから値を取得し、jspに投げて表示させたいのですが
値が出てきません。。(エラーはなく、問題なくページ遷移できています)

#皆様にお聞きしたいこと
なぜ表示されないのか、ご教授願いたいです。
作成したDaoクラス、Beansクラス、Servletクラス、Jspファイルを載せておきます。
宜しくお願い致します。

EmployeeListServlet

1package servlet; 2 3import java.io.IOException; 4import java.util.List; 5 6import javax.servlet.RequestDispatcher; 7import javax.servlet.ServletException; 8import javax.servlet.annotation.WebServlet; 9import javax.servlet.http.HttpServlet; 10import javax.servlet.http.HttpServletRequest; 11import javax.servlet.http.HttpServletResponse; 12 13import model.EmployeeList; 14import model.GetEmployeeListLogic; 15 16/** 17 * Servlet implementation class LoginServlet 18 */ 19@WebServlet("/EmployeeListServlet") 20public class EmployeeListServlet extends HttpServlet { 21 private static final long serialVersionUID = 1L; 22 23 24 protected void doPost(HttpServletRequest request, 25 HttpServletResponse response) 26 throws ServletException, IOException { 27 28 29 //社員リストを取得して、リクエストスコープに保存 30 GetEmployeeListLogic getEmployeeListLogic = new GetEmployeeListLogic(); 31 List<EmployeeList> employeeList = getEmployeeListLogic.execute(); 32 request.setAttribute("employeeList", employeeList); 33 34 //フォワード 35 RequestDispatcher dispatcher = request.getRequestDispatcher("/WEB-INF/jsp/loginOK.jsp"); 36 dispatcher.forward(request, response); 37 } 38 39} 40

EmployeeListDao

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.EmployeeList; 12 13public class EmployeeListDAO { 14 15 private final String DRIVER_NAME = "com.mysql.jdbc.Driver"; 16 private final String JDBC_URL = "jdbc:mysql://localhost:3306/kadai?characterEncoding=UTF-8&serverTimezone=JST&useSSL=false"; 17 private final String DB_USER = "root"; 18 private final String DB_PASS = "naoto7010"; 19 20 Connection conn = null; 21 List<EmployeeList> empList = new ArrayList<EmployeeList>(); 22 23 public List<EmployeeList> findAll(){ 24 //ドライバの読み込み 25 try { 26 Class.forName(DRIVER_NAME); 27 conn = DriverManager.getConnection(JDBC_URL, DB_USER, DB_PASS); 28 29 30 String sql = "SELECT EMPLOYEE_ID, NAME, NAME_HIRAGANA FROM EMPLOYEE_INFO"; 31 PreparedStatement pStmt = conn.prepareStatement(sql); 32 33 //SELECTを実行 34 ResultSet rs = pStmt.executeQuery(); 35 36 //SELECT文の結果をArrayListに格納 37 while(rs.next()) { 38 int employee_id = rs.getInt("EMPLOYEE_ID"); 39 String name = rs.getString("NAME"); 40 String name_hiragana = rs.getString("NAME_HIRAGANA"); 41 EmployeeList employeeList = new EmployeeList(employee_id,name,name_hiragana) ; 42 empList.add(employeeList); 43 44 } 45 46 }catch(SQLException e){ 47 e.printStackTrace(); 48 }catch(ClassNotFoundException e) { 49 e.printStackTrace(); 50 }finally { 51 //データベース切断 52 if(conn != null) { 53 try { 54 conn.close(); 55 }catch(SQLException e) { 56 e.printStackTrace(); 57 return null; 58 } 59 } 60 } 61 return empList; 62 } 63} 64

GetEmployeeListLogic

1package model; 2 3import java.util.List; 4 5import dao.EmployeeListDAO; 6 7public class GetEmployeeListLogic { 8 9 public List<EmployeeList> execute(){ 10 11 EmployeeListDAO dao = new EmployeeListDAO(); 12 List<EmployeeList> employeeList = dao.findAll(); 13 return employeeList; 14 } 15 16} 17

EmployeeList

1package model; 2 3import java.io.Serializable; 4 5public class EmployeeList implements Serializable{ 6 7 private int employee_id; 8 private String name; 9 private String name_hiragana; 10 11 public EmployeeList() { 12 13 } 14 15 public EmployeeList(int employee_id, String name, String name_hiragana) { 16 17 this.employee_id = employee_id; 18 this.name = name; 19 this.name_hiragana = name_hiragana; 20 } 21 22 public int getNumber() { 23 return employee_id; 24 } 25 public String getName() { 26 return name; 27 } 28 public String getName_hiragana() { 29 return name_hiragana; 30 } 31 32 33 public void setNumber(int employee_id) { 34 this.employee_id = employee_id; 35 } 36 public void setName(String name) { 37 this.name = name; 38 } 39 public void setName_hiragana(String name_hiragana) { 40 this.name_hiragana = name_hiragana; 41 } 42 43 44} 45

jsp

1<%@ page language="java" contentType="text/html; charset=UTF-8" 2 pageEncoding="UTF-8"%> 3<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> 4<!DOCTYPE html> 5<html> 6<head> 7<meta charset="UTF-8"> 8<title>社員データ</title> 9</head> 10<body> 11 社員データを表示 12 <br> 13 <table> 14 <tr> 15 <th>No</th> 16 <th>名前</th> 17 <th>ひらがな</th> 18 </tr> 19 20 <c:forEach items="${empList}" var="empList"> 21 <tr> 22 <td><c:out value="${empList.employee_id}" /></td> 23 <td><c:out value="${empList.name}" /></td> 24 <td><c:out value="${empList.name_hiragana}" /></td> 25 </tr> 26 </c:forEach> 27 28 </table> 29</body> 30</html> 31

2018/11/02 追記
ご回答いただいた内容を受け、jspを一部修正しました。

jsp

1<%@ page language="java" contentType="text/html; charset=UTF-8" 2 pageEncoding="UTF-8"%> 3<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> 4<!DOCTYPE html> 5<html> 6<head> 7<meta charset="UTF-8"> 8<title>社員データ</title> 9</head> 10<body> 11 社員データを表示 12 <br> 13 <table> 14 <tr> 15 <th>No</th> 16 <th>名前</th> 17 <th>ひらがな</th> 18 </tr> 19 20 <c:forEach items="${employeeList}" var="emp"> 21 <tr> 22 <td><c:out value="${empList.employee_id}" /></td> 23 <td><c:out value="${empList.name}" /></td> 24 <td><c:out value="${empList.name_hiragana}" /></td> 25 </tr> 26 </c:forEach> 27 28 </table> 29</body> 30</html>

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

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

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

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

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

m.ts10806

2018/11/01 13:25

jspのコードも記載してください。またサーブレット側のコードでList<EmployeeList>がきちんと想定通りの情報が受け取れているかはデバッグされましたか?
nyan_engineer

2018/11/01 13:42

コード記載しました。失礼いたしました。情報は受け取れております。
guest

回答1

0

ベストアンサー

サーブレットで

java

1request.setAttribute("employeeList", employeeList);

と、empolyeeListの名前でバインドしているのですから、JSPの

html

1<c:forEach items="${empList}" var="empList">

これと合致しません。

html

1<c:forEach items="${employeeList}" var="empList">

とすべきでしょうし。var属性にはもうListで入っていない値なので

html

1<c:forEach items="${employeeList}" var="emp">

が一番シンプルではないでしょうか。

投稿2018/11/01 18:04

A-pZ

総合スコア12011

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

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

nyan_engineer

2018/11/01 23:02

ご回答ありがとうございます。 上記の通り修正しました!基本的なところが間違っていました。。 しかし、修正しても値は表示されません。。。 エラーも特に出ていません。。
A-pZ

2018/11/02 00:45

<c:forEach items="${employeeList}" var="emp"> としたのですから、その子要素である <td><c:out value="${empList.employee_id}" /></td> も、empList ではなく、emp とするべきでしょう。
nyan_engineer

2018/11/02 03:36

無事に表示されました! ありがとうございます!! 基礎事項がまだまだ身に付いてないので、もう一度復習しようと思います。
A-pZ

2018/11/02 05:46

d(・ω・
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問