顧客登録画面の作成途中で新規の登録と登録した内容をデータベース(以下 DB)からSELECTし一覧表示させたいです。
下記にコードを示していますがmain.jspで画面の表示をしています。
が、DBの内容一覧が表示されません。
新規登録のボタンも押下することで404のページに移動し原因は記載されていません。
DBの内容をデフォルトパッケージを利用し取り出すことは出来ました。
(javaアプリケーション内)
jspでのListの取り出し方や変数の置き方が間違っているのでしょうか?
コードが長く読みずらいとは思いますが、ご教授願います。
Mutter.java
1package model; 2 3import java.io.Serializable; 4 5public class Mutter implements Serializable { 6 private int id; //id 7 private String name; //名前 8 private String tel; //電話番号 9 private String gender; //性別 10 11 public Mutter(){} 12 public Mutter(String name, String tel, String gender){ 13 this.name = name; 14 this.tel = tel; 15 this.gender = gender; 16 } 17 public Mutter(int id, String name, String tel, String gender) { 18 this.id = id; 19 this.name = name; 20 this.tel = tel; 21 this.gender = gender; 22 } 23 public int getId() { return id; } 24 public String getName() { return name; } 25 public String getTel() { return tel; } 26 public String getGender() { return gender; } 27}
Main.java
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.GetMutterListLogic; 14import model.Mutter; 15import model.PostMutterLogic; 16 17@WebServlet("/Main") 18public class Main extends HttpServlet { 19 private static final long serialVersionUID = 1L; 20 21 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 22 //MutterList(全件)を取得しリクエストスコープへ保存 23 GetMutterListLogic getMutterListLogic = new GetMutterListLogic(); 24 List<Mutter> mutterList = getMutterListLogic.execute(); 25 request.setAttribute("mutterList", mutterList); 26 27 //フォワード 28 RequestDispatcher dispatcher = request.getRequestDispatcher("/WEB-INF/jsp/main.jsp"); 29 dispatcher.forward(request, response); 30 } 31 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 32 //リクエストパラメータを取得 33 request.setCharacterEncoding("UTF-8"); 34 String name = request.getParameter("name"); 35 String tel = request.getParameter("tel"); 36 String gender = request.getParameter("gender"); 37 38 //登録リストに追加 39 Mutter mutter = new Mutter(name, tel, gender); 40 PostMutterLogic postMutterLogic = new PostMutterLogic(); 41 postMutterLogic.execute(mutter); 42 43 //MutterList(全件)を取得しリクエストスコープへ保存 44 GetMutterListLogic getMutterListLogic = new GetMutterListLogic(); 45 List<Mutter> mutterList = getMutterListLogic.execute(); 46 request.setAttribute("mutterList", mutterList); 47 48 //フォワード 49 RequestDispatcher dispatcher = request.getRequestDispatcher("/WEB-INF/jsp/main.jsp"); 50 dispatcher.forward(request, response); 51 } 52 }
main.jsp
1<%@ page import="servlet.Main" 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<%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql" %> 5<%@ page import="model.Mutter,java.util.List" %> 6<% 7 //リクエストスコープに保存されたMutterリストを取得 8 List<Mutter>mutterList= (List<Mutter>)request.getAttribute("mutterList"); 9%> 10 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 11 <html lang="ja"> 12 13 <head> 14 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 15 <title>『お客様情報』登録画面</title> 16 17 --<中略>-- 18 19 </head> 20 <body> 21 <div id="header"> 22 <h1>『お客様情報』登録画面</h1> 23 </div> 24 <form method="post" action="Main.java"> 25 <table class="up"> 26 <tr> 27 <th>NO.</th> 28 <th>お名前</th> 29 <th>携帯電話番号</th> 30 <th>性別</th> 31 <th class="hide"></th> 32 </tr> 33 <tr> 34 <td><input type="number" name="id" value=" " disabled="disabled" style=background-color:#ffe0ed ></td> 35 <td><input type="text" maxlength="20" name="name" placeholder="20字以内で名前を入力"></td> 36 <td><input type="tel" name="tel" pattern="[0-9]{3}-[0-9]{4}-[0-9]{4}" placeholder="090-1234-5678(半角数字で入力)"></td> 37 <td><select name="gender"> 38 <option value=""> </option> 39 <option value="1">男性</option> 40 <option value="2">女性</option> 41 <option value="3">その他</option></select></td> 42 <td><input type="submit" value="新規登録" style="border:2px solid #7b3cff; background-color:#ffd700" onmouseover="this.style.background='#ffff00'" onmouseout="this.style.background='#ffd700'" onclick="location:href='./Main.java'" class="up-butt"></td> 43 </tr> 44 <tr><td align="left" style="border:2px solid #fcc2c8; background-color:#ffe0ed; color:#ff69b4; font-size: 20px" colspan="4"> メッセージ:</td> 45 </tr> 46 </table> 47 <table class="dow"> 48 <thead> 49 <tr> 50 <th>NO.</th> 51 <th>お名前</th> 52 <th>携帯電話番号</th> 53 <th>性別</th> 54 <th class="hide"></th> 55 </tr> 56 </thead> 57 <tbody> 58 <c:forEach var="mutterList" items="${mutterList}"> 59 <tr> 60 <td><c:out value="${mutter.id}" /></td> 61 <td><c:out value="${mutter.name}"/></td> 62 <td><c:out value="${mutter.tel}"/></td> 63 <td><c:out value="${mutter.gender}"/></td> 64 <td><input type="submit" value="更新" style="border:2px solid #00ff00; background-color:#32cd32" onmouseover="this.style.background='#00ff00'" onmouseout="this.style.background='#32cd32'" onclick="location:href='./Update.java'"class="update" name="update"> </td> 65 <td><input type="submit" value="削除" style="border:2px solid #ff0000; background-color:#ff6347" onmouseover="this.style.background='#ff0000'" onmouseout="this.style.background='#ff6347'" onclick="location:href='./.delete.java'"class="delate" name="delate"></td> 66 </tr> 67 </c:forEach> 68 </tbody> 69 </table> 70 </form> 71 </body> 72 </html>
MutterDAO.java
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.Mutter; 12 13public class MutterDAO { 14 //データベース接続に使用する情報 15 private final String JDBC_URL ="jdbc:h2:tcp://localhost/~/kadai/kadai"; 16 private final String DB_USER = "sa"; 17 private final String DB_PASS = " "; 18 19public List<Mutter> findAll() { 20 List<Mutter> mutterList = new ArrayList<>(); 21 22 //データベースへ接続 23 try (Connection conn = DriverManager.getConnection(JDBC_URL, DB_USER, DB_PASS)) { 24 25 //select文を追加 26 String sql = "SELECT ID, NAME, TEL, GENDER FROM MUTTER ORDER BY ID DESC"; 27 PreparedStatement pStmt = conn.prepareStatement(sql); 28 29 //select文を実行し、結果表を取得 30 ResultSet rs = pStmt.executeQuery(); 31 32 //結果表に格納されたレコードの内容を 33 //Mutterインスタンスに設定し、ArrayListインスタンスに追加 34 while (rs.next()) { 35 int id = rs.getInt("ID"); 36 String name = rs.getString("NAME"); 37 String tel = rs.getString("TEL"); 38 String gender = rs.getString("GENDER"); 39 Mutter mutter = new Mutter(id, name, tel, gender); 40 mutterList.add(mutter); 41 } 42 } catch (SQLException e) { 43 e.printStackTrace(); 44 return null; 45 } 46 return mutterList; 47 } 48 49 public boolean create(Mutter mutter) { 50 //データベースへ接続 51 try (Connection conn = DriverManager.getConnection(JDBC_URL, DB_USER, DB_PASS)) { 52 53 //INSERT文の準備 54 String sql = "INSERT INTO MUTTER(NAME,TEL,GENDER)VALUES(?, ?, ?)"; 55 PreparedStatement pStmt = conn.prepareStatement(sql); 56 57 //INSERT文中の「?」に使用する値を設定しSQLを完成 58 pStmt.setString(1, mutter.getName()); 59 pStmt.setString(2, mutter.getTel()); 60 pStmt.setString(3, mutter.getGender()); 61 62 //INSERT文を実行(resultには追加された行数が代入される) 63 int result = pStmt.executeUpdate(); 64 if (result !=1) { 65 return false; 66 } 67 } catch (SQLException e) { 68 e.printStackTrace(); 69 return false; 70 } 71 return true; 72 } 73}
GetMutterListLogic.java
1package model; 2 3import java.util.List; 4 5import DAO.MutterDAO; 6 7public class GetMutterListLogic { 8 public List<Mutter> execute() { 9 MutterDAO dao = new MutterDAO(); 10 List<Mutter> mutterList = dao.findAll(); 11 return mutterList; 12 } 13}
PostMutterListLogic.java
1package model; 2 3import DAO.MutterDAO; 4 5public class PostMutterLogic { 6 public void execute(Mutter mutter) { 7 MutterDAO dao = new MutterDAO(); 8 dao.create(mutter); 9 } 10}
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/07/11 07:00
2019/07/11 07:09
2019/07/11 07:23
2019/07/11 07:32
2019/07/11 07:46
2019/07/11 08:03
2019/07/11 08:06
2019/07/11 08:12
2019/07/11 08:15
2019/07/11 08:19
2019/07/11 08:25
2019/07/11 08:28
2019/07/11 08:28
2019/07/11 08:46 編集
2019/07/11 08:48
2019/07/11 08:57
2019/07/11 08:57
2019/07/11 09:01
2019/07/11 09:02
2019/07/11 09:17
2019/07/12 02:19
2019/07/12 02:21
2019/07/12 02:24
2019/07/12 02:35 編集
2019/07/12 02:33
2019/07/12 02:52
2019/07/12 02:54