model.dao.ConnectionManager.java package model.dao; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class ConnectionManager { private final static String URL = "jdbc:postgresql://localhost:5432/mydb"; private final static String USER = "postgres"; private final static String PASSWORD = "xxxxxxxx"; // private final static String URL = "jdbc:mysql://localhost:3306/sampledb"; // private final static String USER = "userU"; // private final static String PASSWORD = "userP"; public static Connection getConnection() throws SQLException, ClassNotFoundException { // JDBCドライバの読み込み Class.forName("org.postgresql.Driver"); // Class.forName("com.mysql.cj.jdbc.Driver"); return DriverManager.getConnection(URL, USER, PASSWORD); } }
model.dao.EmployeeDAO.java package model.dao; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.ArrayList; import java.util.List; import model.entity.EmployeeBean; public class EmployeeDAO { public List<EmployeeBean> selectAll() throws SQLException, ClassNotFoundException { List<EmployeeBean> employeeList = new ArrayList<EmployeeBean>(); // データベースへの接続の取得、Statementの取得、SQLステートメントの実行 try (Connection con = ConnectionManager.getConnection(); Statement stmt = con.createStatement(); ResultSet res = stmt.executeQuery("SELECT * FROM m_employee")) { // 結果の操作 while (res.next()) { String code = res.getString("code"); String name = res.getString("name"); int age = res.getInt("age"); String section = res.getString("section"); EmployeeBean employee = new EmployeeBean(); employee.setCode(code); employee.setName(name); employee.setAge(age); employee.setSection(section); employeeList.add(employee); } } return employeeList; } public EmployeeBean select(String code) throws SQLException, ClassNotFoundException { EmployeeBean employee = new EmployeeBean(); String sql = "SELECT * FROM m_employee WHERE code = ?"; // データベースへの接続の取得、PreparedStatementの取得 try (Connection con = ConnectionManager.getConnection(); PreparedStatement pstmt = con.prepareStatement(sql);) { // プレースホルダへの値の設定 pstmt.setString(1, code); // SQLステートメントの実行 ResultSet res = pstmt.executeQuery(); // 結果の操作 while (res.next()) { employee.setCode(res.getString("code")); employee.setName(res.getString("name")); employee.setAge(res.getInt("age")); employee.setSection(res.getString("section")); } } return employee; } public int update(EmployeeBean employee) throws SQLException, ClassNotFoundException { int processingNumber = 0; //処理件数 String sql = "UPDATE m_employee SET name = ?, age = ?, section = ? WHERE code = ?"; // データベースへの接続の取得、PreparedStatementの取得 try (Connection con = ConnectionManager.getConnection(); PreparedStatement pstmt = con.prepareStatement(sql)) { // DTOからのデータの取り出し String code = employee.getCode(); String name = employee.getName(); int age = employee.getAge(); String section = employee.getSection(); // プレースホルダへの値の設定 pstmt.setString(1, name); pstmt.setInt(2, age); pstmt.setString(3, section); pstmt.setString(4, code); // SQLステートメントの実行 processingNumber = pstmt.executeUpdate(); } return processingNumber; } }
model.entity.EmployeeBean.java package model.entity; import java.io.Serializable; public class EmployeeBean implements Serializable { private String code; private String name; private int age; private String section; public EmployeeBean() { } public String getCode() { return code; } public void setCode(String code) { this.code = code; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getSection() { return section; } public void setSection(String section) { this.section = section; } }
servlet.EmployeeAlterConfirmServlet.java package servlet; import java.io.IOException; import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @WebServlet("/employee-alter-confirm-servlet") public class EmployeeAlterConfirmServlet extends HttpServlet { private static final long serialVersionUID = 1L; public EmployeeAlterConfirmServlet() { super(); // TODO Auto-generated constructor stub } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub response.getWriter().append("Served at: ").append(request.getContextPath()); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // リクエストの転送 RequestDispatcher rd = request.getRequestDispatcher("employee-alter-confirm.jsp"); rd.forward(request, response); } }
servlet.EmployeeAlterFormServlet.java package servlet; import java.io.IOException; import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @WebServlet("/employee-alter-form-servlet") public class EmployeeAlterFormServlet extends HttpServlet { private static final long serialVersionUID = 1L; public EmployeeAlterFormServlet() { super(); // TODO Auto-generated constructor stub } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub response.getWriter().append("Served at: ").append(request.getContextPath()); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // リクエストの転送 RequestDispatcher rd = request.getRequestDispatcher("employee-alter-form.jsp"); rd.forward(request, response); } }
servlet.EmployeeAlterServlet.java package servlet; import java.io.IOException; import java.sql.SQLException; import javax.servlet.RequestDispatcher; 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 javax.servlet.http.HttpSession; import model.dao.EmployeeDAO; import model.entity.EmployeeBean; @WebServlet("/employee-alter-servlet") public class EmployeeAlterServlet extends HttpServlet { private static final long serialVersionUID = 1L; public EmployeeAlterServlet() { super(); // TODO Auto-generated constructor stub } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub response.getWriter().append("Served at: ").append(request.getContextPath()); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // セッションオブジェクトの取得 HttpSession session = request.getSession(); // セッションスコープからの属性値の取得 EmployeeBean employee = (EmployeeBean) session.getAttribute("employee"); // DAOの生成 EmployeeDAO dao = new EmployeeDAO(); int processingNumber = 0; //処理件数 try { // DAOの利用 processingNumber = dao.update(employee); } catch (ClassNotFoundException | SQLException e) { e.printStackTrace(); } // リクエストスコープへの属性の設定 request.setAttribute("processingNumber", processingNumber); // リクエストの転送 RequestDispatcher rd = request.getRequestDispatcher("employee-alter-result.jsp"); rd.forward(request, response); } }
servlet.EmployeeDetailServlet.java package servlet; import java.io.IOException; import java.sql.SQLException; import javax.servlet.RequestDispatcher; 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 javax.servlet.http.HttpSession; import model.dao.EmployeeDAO; import model.entity.EmployeeBean; @WebServlet("/employee-detail-servlet") public class EmployeeDetailServlet extends HttpServlet { private static final long serialVersionUID = 1L; public EmployeeDetailServlet() { super(); // TODO Auto-generated constructor stub } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub response.getWriter().append("Served at: ").append(request.getContextPath()); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("UTF-8"); String code = request.getParameter("code"); // DAOの生成 EmployeeDAO dao = new EmployeeDAO(); try { EmployeeBean employee = dao.select(code); // セッションオブジェクトの取得 HttpSession session = request.getSession(); // セッションスコープへの属性の設定 session.setAttribute("employee", employee); } catch (ClassNotFoundException | SQLException e) { e.printStackTrace(); } // リクエストの転送 RequestDispatcher rd = request.getRequestDispatcher("employee-detail.jsp"); rd.forward(request, response); } }
servlet.EmployeeListServlet.java package servlet; import java.io.IOException; import java.sql.SQLException; import java.util.List; import javax.servlet.RequestDispatcher; 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.dao.EmployeeDAO; import model.entity.EmployeeBean; @WebServlet("/employee-list-servlet") public class EmployeeListServlet extends HttpServlet { private static final long serialVersionUID = 1L; public EmployeeListServlet() { super(); // TODO Auto-generated constructor stub } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub response.getWriter().append("Served at: ").append(request.getContextPath()); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { List<EmployeeBean> employeeList = null; // DAOの生成 EmployeeDAO dao = new EmployeeDAO(); try { // DAOの利用 employeeList = dao.selectAll(); } catch (SQLException | ClassNotFoundException e) { e.printStackTrace(); } // リクエストスコープへの属性の設定 request.setAttribute("employeeList", employeeList); // リクエストの転送 RequestDispatcher rd = request.getRequestDispatcher("employee-list.jsp"); rd.forward(request, response); } }
employee-alter-confirm.jsp <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" import="java.util.List,model.entity.EmployeeBean"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>従業員情報-変更確認</title> </head> <body> <% request.setCharacterEncoding("UTF-8"); %> 従業員情報を以下の内容に変更します。よろしいですか?<br> <jsp:useBean id="employee" scope="session" class="model.entity.EmployeeBean" /> <jsp:setProperty property="name" name="employee" param="name" /> <jsp:setProperty property="age" name="employee" param="age" /> <jsp:setProperty property="section" name="employee" param="section" /> コード:<jsp:getProperty property="code" name="employee" /><br> 氏名:<jsp:getProperty property="name" name="employee" /><br> 年齢:<jsp:getProperty property="age" name="employee" /><br> 部署:<jsp:getProperty property="section" name="employee" /><br> <form action="employee-alter-servlet" method="POST"> <input type="submit" value="変更する"> </form> <form action="employee-alter-form.jsp" method="POST"> <input type="submit" value="変更フォームに戻る"> </form> </body> </html>
employee-alter-form.jsp <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" import="java.util.List,model.entity.EmployeeBean"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>従業員情報-変更入力フォーム</title> </head> <body> <jsp:useBean id="employee" class="model.entity.EmployeeBean" scope="session"/> <form action="employee-alter-confirm.jsp" method="post"> コード:<jsp:getProperty property="code" name="employee" /><br> 氏名:<input type="text" name="name" value="<jsp:getProperty property="name" name="employee" />"><br> 年齢:<input type="text" name="age" value="<jsp:getProperty property="age" name="employee" />"><br> 部署:<input type="text" name="section" value="<jsp:getProperty property="section" name="employee" />"><br> <input type="submit" value="変更する"> </form> <form action="employee-detail-servlet" method="POST"> <input type="hidden" name="code" value="<%=employee.getCode()%>"> <input type="submit" value="詳細表示画面に戻る"> </form> </body> </html>
employee-alter-result.jsp <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" import="java.util.List,model.entity.EmployeeBean"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>従業員情報-変更登録結果</title> </head> <% int processingNumber = (Integer) request.getAttribute("processingNumber"); if (processingNumber > 0) { %> 次のデータを変更登録しました。<br> <% } else { %> 次のデータを変更登録できませんでした。<br> <% } %> <jsp:useBean id="employee" scope="session" class="model.entity.EmployeeBean" /> コード:<jsp:getProperty property="code" name="employee" /><br> 氏名:<jsp:getProperty property="name" name="employee" /><br> 年齢:<jsp:getProperty property="age" name="employee" /><br> 部署:<jsp:getProperty property="section" name="employee" /><br> <form action="menu.html" method="POST"> <input type="submit" value="メニュー画面に戻る"> </form> <% session.invalidate(); %> </body> </html>
employee-detail.jsp <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>従業員情報-詳細</title> </head> <body> <jsp:useBean id="employee" scope="session" class="model.entity.EmployeeBean"/> コード:<jsp:getProperty name="employee" property="code"/><br> 氏名:<jsp:getProperty name="employee" property="name"/><br> 年齢:<jsp:getProperty name="employee" property="age"/><br> 部署:<jsp:getProperty name="employee" property="section"/><br> <form action="employee-alter-form.jsp" method="POST"> <input type="submit" value="変更する"> </form> <form action="employee-list-servlet" method="POST"> <input type="submit" value="一覧表示"> </form> </body> </html>
employee-list.jsp <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" import="java.util.List,model.entity.EmployeeBean"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>従業員情報 一覧</title> </head> <body> <% List<EmployeeBean> employeeList = (List<EmployeeBean>) request.getAttribute("employeeList"); %> <table> <tr> <th>コード</th> <th>氏名</th> <th></th> </tr> <% for (EmployeeBean employee : employeeList) { %> <tr> <td><%=employee.getCode()%></td> <td><%=employee.getName()%></td> <td> <form action="employee-detail-servlet" method="POST"> <input type="hidden" name="code" value="<%=employee.getCode()%>"> <input type="submit" value="詳細表示"> </form> </td> </tr> <% } %> </table> </body> </html>
menu.html <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>メニュー</title> </head> <body> <form action="employee-list-servlet" method="POST"> <input type="submit" value="一覧表示"> </form> </body> </html>