前提・実現したいこと
selectで取得した値をリストに格納して、servletを介してJSPに出力する。
<詳細>
ソースコード内のslListをservletで取得したい。
servlet内のコードの書き方についてご教示いただけないでしょうか。
発生している問題・エラーメッセージ
・正常に値を取得できない。
該当のソースコード
DAO
1public List<t_productBean> select(t_productBean t_productBean) { 2 3 Connection conn = null; 4 List<t_productBean>slList = new ArrayList<t_productBean>(); 5 try { 6 //データベースへ接続 7 conn = DriverManager.getConnection(url,user,password); 8 9 //select文の準備 10 String sql = "SELECT * FROM t_product WHERE product_id = ?"; 11 12 13 PreparedStatement pstmt = conn.prepareStatement(sql); 14 15 //SELECT文中の?に使用する値を設定しSQL完成 16 pstmt.setInt(1, t_productBean.getproduct_id()); 17 18 //SElECT文を実行し、結果を取得 19 ResultSet rs = pstmt.executeQuery(); 20 21 while(rs.next()) { //select文の結果をArrayListに格納 22 int product_id = rs.getInt("product_id"); 23 String product_genre_code = rs.getString("product_genre_code"); 24 String product_name = rs.getString("product_name"); 25 String product_maker = rs.getString("product_maker"); 26 int product_price = rs.getInt("product_price"); 27 int product_stock = rs.getInt("product_stock"); 28 int product_sales = rs.getInt("product_sales"); 29 String product_remarks = rs.getString("product_remarks"); 30 31 if(product_genre_code.equals("1")) { 32 product_genre_code ="指定なし"; 33 }else if(product_genre_code.equals("2")) { 34 product_genre_code = "時計"; 35 }else if(product_genre_code.equals("3")) { 36 product_genre_code = "電子機器"; 37 }else if(product_genre_code.equals("4")) { 38 product_genre_code = "携帯"; 39 }else{product_genre_code ="error";} 40 41 t_productBean pb = new t_productBean(product_id,product_genre_code,product_name 42 ,product_maker,product_price,product_stock,product_sales,product_remarks); 43 pb.setproduct_id(product_id); 44 pb.setproduct_genre_code(product_genre_code); 45 pb.setproduct_name(product_name); 46 pb.setproduct_maker(product_maker); 47 pb.setproduct_price(product_price); 48 pb.setproduct_stock(product_stock); 49 pb.setproduct_sales(product_sales); 50 pb.setproduct_remarks(product_remarks); 51 52 System.out.println("sl"+product_id); 53 System.out.println("sl"+product_genre_code); 54 System.out.println("sl"+product_name); 55 System.out.println("sl"+product_maker); 56 System.out.println("sl"+product_price); 57 System.out.println("sl"+product_stock); 58 System.out.println("sl"+product_sales); 59 System.out.println("sl"+product_remarks); 60 61 t_productBean t_product = new t_productBean(product_id,product_genre_code,product_name 62 ,product_maker,product_price,product_stock,product_sales,product_remarks); 63 64 System.out.println( 65t_product.getproduct_id()); 66 67 slList.add(t_product); 68 } 69 70 }catch(SQLException e) { //例外SQL例外あり 71 e.printStackTrace(); 72 return null; 73 }finally { //catchがなくても必ず実行 74 //データベース切断 75 if(conn != null) { 76 try { 77 conn.close(); 78 }catch(SQLException e) { 79 e.printStackTrace(); 80 return null; 81 } 82 } 83 } 84 return slList; 85 } 86}
servlet
1package servlet; 2 3import java.io.IOException; 4import java.util.ArrayList; 5import java.util.List; 6 7import javax.servlet.RequestDispatcher; 8import javax.servlet.ServletException; 9import javax.servlet.annotation.WebServlet; 10import javax.servlet.http.HttpServlet; 11import javax.servlet.http.HttpServletRequest; 12import javax.servlet.http.HttpServletResponse; 13 14import model.Selectlogic; 15import model.Updatelogic; 16import model.t_productBean; 17 18@WebServlet("/ProductUpdate") 19public class ProductUpdate extends HttpServlet { 20 private static final long serialVersionUID = 1L; 21 22 public ProductUpdate() { 23 super(); 24 } 25 26 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 27 response.setCharacterEncoding("UTF-8"); 28 29 String product_id_parameter = request.getParameter("product_id"); 30 String product_name = ""; 31 String product_genre_code = ""; 32 String product_maker = ""; 33 int product_price = 0; 34 int product_stock= 0; 35 int product_sales= 0; 36 String product_remarks = ""; 37 38 Integer product_id = Integer.parseInt(product_id_parameter); 39 40 41 t_productBean T_product = new t_productBean(product_id,product_genre_code,product_name 42 ,product_maker,product_price,product_stock,product_sales,product_remarks); 43 44 Selectlogic.execute(T_product); 45 46 List<t_productBean>productList = new ArrayList<t_productBean>(); 47 productList.add(new t_productBean(product_id,product_genre_code,product_name,product_maker,product_price,product_stock,product_sales,product_remarks)); 48 49 request.setAttribute("productList", productList); 50 RequestDispatcher rd = request.getRequestDispatcher("/ProductUpdate.jsp" ); 51 rd.forward(request,response); 52 } 53 54 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 55 request.setCharacterEncoding("UTF-8"); 56 57 //formの値を取得 58 String product_id_parameter = request.getParameter("product_id"); 59 String product_genre_code = request.getParameter("product_genre_code"); 60 String product_name = request.getParameter("product_name"); 61 String product_maker = request.getParameter("product_maker"); 62 String product_price_parameter = request.getParameter("product_price"); 63 String product_stock_parameter = request.getParameter("product_stock"); 64 String product_sales_parameter = request.getParameter("product_sales"); 65 String product_remarks = request.getParameter("product_remarks"); 66 67 switch (product_genre_code) { 68 case "指定なし": 69 product_genre_code ="1"; 70 break; 71 72 case "時計": 73 product_genre_code ="2"; 74 break; 75 76 case "電子機器": 77 product_genre_code ="3"; 78 break; 79 80 case "携帯": 81 product_genre_code ="4"; 82 break; 83 } 84 85 //String型をintに変換 86 Integer product_id = Integer.parseInt(product_id_parameter); 87 Integer product_price = Integer.parseInt(product_price_parameter); 88 Integer product_stock = Integer.parseInt(product_stock_parameter); 89 Integer product_sales = Integer.parseInt(product_sales_parameter); 90 91 92 93 //インスタンス化 94 t_productBean T_product = new t_productBean(product_id,product_genre_code,product_name 95 ,product_maker,product_price,product_stock,product_sales,product_remarks); 96 97 Updatelogic.execute(T_product); 98 99 RequestDispatcher dispatcher = request.getRequestDispatcher("/ProductList" ); 100 dispatcher.forward(request,response); 101 102 } 103 }
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 <link rel="stylesheet" type="text/css" href="css/ProductInfo.css"> 10 </head> 11 <body> 12 <form action="" method="post" name="product"> 13 <table><c:forEach var="productList" items="${productList}"> 14 <!--商品IDジャンルコード--> 15 <tr> 16 <th align = "left">商品ID</th><th align = "left">ジャンル</th> 17 </tr> 18 <tr> 19 <td><input name ="product_id" type="text" value="" placeholder="${productList.product_id }"></td><td> 20 <select name = "product_genre_code" > 21 <option selected>${productList.product_genre_code }</option> 22 <option>指定なし</option><option>時計</option><option>電子機器</option><option>携帯</option> 23 </select> 24 </td> 25 </tr> 26 <!--商品名メーカー品--> 27 <tr> 28 <th align = "left">商品名</th><th align = "left">メーカー品</th> 29 </tr> 30 <tr> 31 <td><input name = "product_name" type="text" placeholder=${productList.product_name }></td> 32 <td><select name = "product_maker"> 33 <option selected>${productList.product_maker }</option> 34 <option>指定なし</option><option>パナソニック</option><option>ソニー</option><option>シャープ</option> 35 </select> 36 </td> 37 </tr> 38 <!--金額と在庫--> 39 <tr> 40 <th align = "left">金額</th><th align = "left">在庫数</th> 41 </tr> 42 <tr> 43 <td><input name = "product_price" type="text" placeholder=${productList.product_price }></td> 44 <td><input name = "product_stock" type="text" placeholder=${productList.product_stock }></td> 45 </tr> 46 <!--販売個数--> 47 <tr> 48 <th align="left">販売個数</th> 49 </tr> 50 <tr> 51 <td><input name="product_sales" type="text" placeholder=${productList.product_sales }></td> 52 </tr> 53 <!--備考テキストエリア--> 54 <tr><!--備考--> 55 <th align="left">備考</th> 56 </tr> 57 </c:forEach> 58 </table> 59 <table> 60 <tr><!--テキストエリア--> 61 <td><textarea name="product_remarks"></textarea></td> 62 </tr> 63 </table> 64 <input class="sctn" type="image" alt="登録" width="50" height="30" src="img/sc.png" /> 65 </form> 66 </body> 67</html>
試したこと
・DAOの時点でslListに値が格納されていない可能性を考慮してコンソール出力したが問題なかった。
補足情報
このソースコードはクラスの一部であり、ほかにもメソッドがあります。

回答2件
あなたの回答
tips
プレビュー