BusinessLogic   ・EmployeeDAOを使った業務処理 package sample; import java.sql.SQLException; import java.util.List; public class BusinessLogic { public static void main(String[] args) { EmployeeDAO dao = new EmployeeDAO(); try { Employee employee = new Employee(); employee.setCode("社員no"); employee.setName("名前"); employee.setAge(30); employee.setSection("所属"); int count = dao.insert(employee); System.out.println(count + "件のデータを登録しました。"); System.out.println("*** すべての従業員情報を表示 ***"); List<Employee> employeeList = dao.selectAll(); for (Employee tempEmp : employeeList) { String code = tempEmp.getCode(); String name = tempEmp.getName(); int age = tempEmp.getAge(); String section = tempEmp.getSection(); System.out.print(code + "\t| "); System.out.print(name + "\t| "); System.out.print(age + "\t| "); System.out.print(section + "\n"); } } catch (SQLException e) { System.out.println("処理結果:異常が発生しました。"); e.printStackTrace(); } } }
ConnectionManager package sample; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class ConnectionManager { private final static String URL = "jdbc:mysql://localhost:3306/sampledb?useSSL=false"; private final static String USER = "userU"; private final static String PASSWORD = "userP"; public static Connection getConnection() throws SQLException { return DriverManager.getConnection(URL, USER, PASSWORD); } }
Employee   ・m_employeeのDTO package sample; public class Employee { private String code; private String name; private int age; private String section; 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; } }
EmployeeDAO   ・m_employeeテーブルのDAO package sample; 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; public class EmployeeDAO { public int insert(Employee employee) throws SQLException { int count = 0; try (Connection con = ConnectionManager.getConnection(); PreparedStatement pstmt = con.prepareStatement("INSERT INTO m_employee VALUES(?, ?, ?, ?)")) { String code = employee.getCode(); String name = employee.getName(); int age = employee.getAge(); String section = employee.getSection(); pstmt.setString(1, code); pstmt.setString(2, name); pstmt.setInt(3, age); pstmt.setString(4, section); count = pstmt.executeUpdate(); } return count; } public List<Employee> selectAll() throws SQLException { List<Employee> employeeList = new ArrayList<Employee>(); 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"); Employee employee = new Employee(); employee.setCode(code); employee.setName(name); employee.setAge(age); employee.setSection(section); employeeList.add(employee); } } return employeeList; } public String getName(String code) throws SQLException { String name = null; //氏名 try (Connection con = ConnectionManager.getConnection(); PreparedStatement pstmt = con.prepareStatement("SELECT name FROM m_employee WHERE code = ?")) { pstmt.setString(1, code); ResultSet res = pstmt.executeQuery(); if (res.next()) { name = res.getString("name"); } } return name; } public List<String> selectName(String section) throws SQLException { List<String> nameList = new ArrayList<String>(); try (Connection con = ConnectionManager.getConnection(); PreparedStatement pstmt = con.prepareStatement("SELECT name FROM m_employee WHERE section = ?")) { pstmt.setString(1, section);// プレースホルダへの値の設定 ResultSet res = pstmt.executeQuery(); while (res.next()) { nameList.add(res.getString("name")); } } return nameList; } public int delete(String code) throws SQLException { int count = 0; //処理件数 try (Connection con = ConnectionManager.getConnection(); PreparedStatement pstmt = con.prepareStatement("DELETE FROM m_employee WHERE code = ?")) { pstmt.setString(1, code); count = pstmt.executeUpdate(); } return count; } }
SampleServlet.java package servlet; import java.io.IOException; 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("/sample") public class SampleServlet extends HttpServlet { private static final long serialVersionUID = 1L; public SampleServlet() { 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 { // TODO Auto-generated method stub doGet(request, response); } }
apply-form.html
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>依頼フォーム</title> </head> <body> <form action="apply" method="POST"> お名前:<input type="text" name="name">
連絡方法: <input type="radio" name="contact" value="郵送">郵送 <input type="radio" name="contact" value="メール">メール
依頼内容: <input type="checkbox" name="apply" value="お見積り">お見積り <input type="checkbox" name="apply" value="資料請求">資料請求
<input type="submit" value="送信"><input type="reset" value="取消"> </form> </body> </html>

ApplyFormServlet.java package servlet; import java.io.IOException; import java.io.PrintWriter; 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("/apply") public class ApplyFormServlet extends HttpServlet { private static final long serialVersionUID = 1L; public ApplyFormServlet() { 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 name = request.getParameter("name"); String contact = request.getParameter("contact"); String[] apply = request.getParameterValues("apply"); // レスポンスのコンテンツタイプおよびエンコーディング方式を指定 response.setContentType("text/html; charset=UTF-8"); // レスポンス書き出し用オブジェクトの取得 PrintWriter pw = response.getWriter(); // レスポンスの書き出し pw.println("<!DOCTYPE html><html>"); pw.println("<head><title>依頼受付完了</title></head>"); pw.println("<body>"); pw.println("依頼を受け付けました<br/>"); pw.println("名前:" + name + "<br/>"); pw.println("連絡方法:" + contact + "<br/>"); pw.print("依頼内容:"); for (String str : apply) { pw.print(str + " "); } pw.println(); pw.println("</body></html>"); } }
ApplyFormServlet.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("/apply") public class ApplyFormServlet extends HttpServlet { private static final long serialVersionUID = 1L; public ApplyFormServlet() { 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("forward"); // リクエストの転送 rd.forward(request, response); } }
ForwardingServlet.java package servlet; import java.io.IOException; import java.io.PrintWriter; 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("/apply") public class ApplyFormServlet extends HttpServlet { private static final long serialVersionUID = 1L; public ApplyFormServlet() { 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 name = request.getParameter("name"); String contact = request.getParameter("contact"); String[] apply = request.getParameterValues("apply"); // レスポンスのコンテンツタイプおよびエンコーディング方式を指定 response.setContentType("text/html; charset=UTF-8"); // レスポンス書き出し用オブジェクトの取得 PrintWriter pw = response.getWriter(); // レスポンスの書き出し pw.println("<!DOCTYPE html><html>"); pw.println("<head><title>依頼受付完了</title></head>"); pw.println("<body>"); pw.println("依頼を受け付けました<br/>"); pw.println("名前:" + name + "<br/>"); pw.println("連絡方法:" + contact + "<br/>"); pw.print("依頼内容:"); for (String str : apply) { pw.print(str + " "); } pw.println(); pw.println("</body></html>"); } }

ApplyFormServlet.java(変更後2) 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("/apply") public class ApplyFormServlet extends HttpServlet { private static final long serialVersionUID = 1L; public ApplyFormServlet() { 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.setAttribute("message", "またのご利用をお待ちしております"); // 転送先のパスを指定して転送処理用オブジェクトを取得 RequestDispatcher rd = request.getRequestDispatcher("forward"); // リクエストの転送 rd.forward(request, response); } }
ForwardingServlet.java(変更後) package servlet; import java.io.IOException; import java.io.PrintWriter; 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("/forward") public class ForwardingServlet extends HttpServlet { private static final long serialVersionUID = 1L; public ForwardingServlet() { 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 name = request.getParameter("name"); String contact = request.getParameter("contact"); String[] apply = request.getParameterValues("apply"); // リクエストスコープからの属性値の取得 String message = (String) request.getAttribute("message"); // レスポンスのコンテンツタイプおよびエンコーディング方式を指定 response.setContentType("text/html; charset=UTF-8"); // レスポンス書き出し用オブジェクトの取得 PrintWriter pw = response.getWriter(); // レスポンスの書き出し pw.println("<!--ForwardingServletによる書き出し-->"); pw.println("<!DOCTYPE html><html>"); pw.println("<head><title>依頼受付完了</title></head>"); pw.println("<body>"); pw.println("依頼を受け付けました<br>"); pw.println("名前:" + name + "<br/>"); pw.println("連絡方法:" + contact + "<br/>"); pw.print("依頼内容:"); for (String str : apply) { pw.print(str + " "); } pw.println("<br>"); pw.println(message); pw.println("</body></html>"); } }
login-form.html <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>ログインフォーム</title> </head> <body> <form action="login" method="POST"> ユーザ名:<input type="text" name="name"><br> パスワード:<input type="password" name="password"><br> <input type="submit" value="ログイン"><input type="reset" value="取消"> </form> </body> </html>
login-failure.html
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>ログイン失敗</title> </head> <body> ログインに失敗しました。 <br> <a href="login-form.html">ログインフォームに戻る</a> </body> </html>
LoginFormServlet.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; import javax.servlet.http.HttpSession; @WebServlet("/login") public class LoginFormServlet extends HttpServlet { public LoginFormServlet() { super(); } 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 name = request.getParameter("name"); String password = request.getParameter("password"); String url; // 転送先 if ("pw".equals(password)) { // セッションオブジェクトの取得 HttpSession session = request.getSession(); // セッションスコープへの属性の設定 session.setAttribute("name", name); // 転送先の設定 url = "login-success"; } else { // 転送先の設定 url = "login-failure.html"; } // リクエストの転送 RequestDispatcher rd = request.getRequestDispatcher(url); rd.forward(request, response); } }
LoginSuccessServlet.java package servlet; import java.io.IOException; import java.io.PrintWriter; 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; @WebServlet("/login-success") public class LoginSuccessServlet extends HttpServlet { public LoginSuccessServlet() { super(); } 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(); // セッションスコープからの属性値の取得 String name = (String) session.getAttribute("name"); // レスポンスのコンテンツタイプおよびエンコーディング方式を指定 response.setContentType("text/html; charset=UTF-8"); // レスポンス書き出し用オブジェクトの取得 PrintWriter pw = response.getWriter(); // レスポンスの書き出し pw.println("<!DOCTYPE html><html><head><title>ログイン成功</title></head>"); pw.println("<body>"); pw.println("ようこそ、" + name + "さん<br>ログインに成功しました。<br>"); pw.println("<form action=\"logout\" method=\"POST\">"); pw.println("<input type=\"submit\" value=\"ログアウト\">"); pw.println("</form>"); pw.println("</body>"); pw.println("</html>"); } }
LogoutServlet.java package servlet; import java.io.IOException; import java.io.PrintWriter; 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; @WebServlet("/logout") public class LogoutServlet extends HttpServlet { public LogoutServlet() { super(); } 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(); // セッションスコープからの属性値の取得 String name = (String) session.getAttribute("name"); // セッションオブジェクトの無効化 session.invalidate(); // レスポンスのコンテンツタイプおよびエンコーディング方式を指定 response.setContentType("text/html; charset=UTF-8"); // レスポンス書き出し用オブジェクトの取得 PrintWriter pw = response.getWriter(); // レスポンスの書き出し pw.println("<!DOCTYPE html><html><head><title>ログアウト</title></head>"); pw.println("<body>"); pw.println( name + "さん、お疲れ様でした。<br>"); pw.println("<a href=\"./login-form.html\">ログインフォームに戻る</a>"); pw.println("</body></html>"); } }
EmployeeNameListServlet.java package servlet; import java.io.IOException; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.ArrayList; 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; @WebServlet("/employee-name-list-servlet") public class EmployeeNameListServlet extends HttpServlet { private static final long serialVersionUID = 1L; public EmployeeNameListServlet() { 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 { final String URL = "jdbc:postgresql://localhost:5432/mydb"; // final String URL = "jdbc:mysql://localhost:3306/sampledb?useSSL=false"; final String USER = "userU"; final String PASSWORD = "userP"; try { // JDBCドライバの読み込み Class.forName("org.postgresql.Driver"); // Class.forName("com.mysql.jdbc.Driver"); List<String> nameList = null; // データベースへの接続の取得、Statementの取得、SQLステートメントの実行 try (Connection con = DriverManager.getConnection(URL, USER, PASSWORD); Statement stmt = con.createStatement(); ResultSet res = stmt.executeQuery("SELECT name FROM m_employee")) { nameList = new ArrayList<String>(); // 結果の操作 while (res.next()) { nameList.add(res.getString("name")); } } catch (SQLException e) { e.printStackTrace(); } // リクエストスコープへの属性の設定 request.setAttribute("nameList", nameList); } catch (ClassNotFoundException e) { e.printStackTrace(); } // リクエストの転送 RequestDispatcher rd = request.getRequestDispatcher("employee-name-list.jsp"); rd.forward(request, response); } }
EmployeeDAO.java package dao; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.ArrayList; import java.util.List; public class EmployeeDAO { public List<String> selectAllName() throws SQLException, ClassNotFoundException { List<String> nameList = new ArrayList<String>(); // データベースへの接続の取得、Statementの取得、SQLステートメントの実行 try (Connection con = ConnectionManager.getConnection(); Statement stmt = con.createStatement(); ResultSet res = stmt.executeQuery("SELECT name FROM m_employee")) { // 結果の操作 while (res.next()) { nameList.add(res.getString("name")); } } return nameList; } }
EmployeeNameListServlet.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 dao.EmployeeDAO; @WebServlet("/employee-name-list-servlet") public class EmployeeNameListServlet extends HttpServlet { private static final long serialVersionUID = 1L; public EmployeeNameListServlet() { 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<String> nameList = null; // DAOの生成 EmployeeDAO dao = new EmployeeDAO(); try { // DAOの利用 nameList = dao.selectAllName(); } catch (SQLException | ClassNotFoundException e) { e.printStackTrace(); } // リクエストスコープへの属性の設定 request.setAttribute("nameList", nameList); // リクエストの転送 RequestDispatcher rd = request.getRequestDispatcher("employee-name-list.jsp"); rd.forward(request, response); } }