@tatsu-1234 (tatsu)

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

データベースの全レコードを取得しjsp上で表示したい

解決したいこと
データベースの全レコードを取得しjsp上で表示したい

サーブレットJSPで https://github.com/tatsu-1234/employees
と同じ画面イメージのWebアプリをつくっています。データーベースの全レコードを取得しjsp上で表示したいので解決方法をご教授下さい。

発生している問題・エラー
サーブレットクラスでデータが取得できていないためBOもしくはDAOでミスがある

出ているエラーメッセージ
特になし

該当するソースコード

MainServlet.java
package servlet;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletContext;
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 model.Account;
import model.MainLogic;

@WebServlet("/MainServlet")
public class MainServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

    }

    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        request.setCharacterEncoding("UTF-8");
        List<Account> account =new ArrayList<>();
        MainLogic bo = new MainLogic();
        account = (List<Account>) bo.execute();

        if (account != null) {
            ServletContext application = getServletContext();
            application.setAttribute("AllData", account);
            RequestDispatcher dispatcher = request.getRequestDispatcher("/WEB-INF/jsp/Main.jsp");
            dispatcher.forward(request, response);
        } else {
            response.sendRedirect("/employee/MainServlet");
        }
    }

}
MainLogic.java
package model;

import java.util.List;

import dao.MainDAO;

public class MainLogic {
    public List<Account> execute() {
        MainDAO dao = new MainDAO();
        List<Account> account = dao.findAll();
        return (List<Account>) account;
    }
}
MainDAO.java
package dao;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import model.Account;

public class MainDAO {
    public List<Account> findAll() {
        Connection con = null;
        PreparedStatement pstmt = null;
        ResultSet rs = null;
        Account account2 = null;
        List<Account> account= new ArrayList<Account>();
        String sql = "SELECT * FROM employee";

        try {
            String url = "jdbc:mysql://localhost/system?characterEncoding=UTF-8&serverTimezone=Japan&useSSL=false";
            Class.forName("com.mysql.cj.jdbc.Driver");
            con = DriverManager.getConnection(url, "root", "pass");
            pstmt = con.prepareStatement(sql);
            rs = pstmt.executeQuery();

            while (rs.next()) {

                String employeeId = rs.getString("employee_id");
                String name = rs.getString("name");
                int age = rs.getInt("age");
                String sex = rs.getString("sex");
                String address = rs.getString("address");
                String department = rs.getString("department");
                account2 = new Account(employeeId, name, age, sex, address, department);
                account.add(account2);
            }
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            try {
                if (rs != null)
                    rs.close();
                if (pstmt != null)
                    pstmt.close();
                if (con != null)
                    con.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        return account;
    }
}
Main.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="java.util.List"%>
<%@ page import="model.Account"%>
<%
List<Account> account = (List<Account>) application.getAttribute("AllData");
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>社員管理一覧</title>
</head>
<body>
    <%
    for (Account accountAll : account) {
    %>
    <p>
        <%=accountAll.getEmployeeId()%>
        <%=accountAll.getName()%>
        <%=accountAll.getAge()%>
        <%=accountAll.getSex()%>
        <%=accountAll.getAddress()%>
        <%=accountAll.getDepartment()%><br>
    </p>
    <%
    }
    %>
</body>
</html>

自分で試したこと
スッキリわかるサーブレット&JSP入門やネットでのデータ取得の方法を調べて試したがうまくできなかった。
すでにログイン機能を実装し別のサーブレットクラスからはレコード取得が出来ていたのでデータベース上の問題ではなさそうです。
単純にデータ取得のやり方自体が間違えているとは思いますが、ご覧の通りコードもぐちゃぐちゃの素人ですので詳しくご教授いただきたいです。よろしくお願い致します。追加で必要な情報があればお聞かせください。

0 likes

No Answers yet.

Your answer might help someone💌