現在、Javaを勉強中で、jsp、servlet、mySQLを使ってショッピングサイト風なものを作っています。
お聞きしたいことが、MySQLに登録してある商品データを一覧として表示しているんですが、現状は全て表示されます。この全て表示されるんではなくて5件なり、10件なりで表示して、ページング処理をしたいと思っています。このページング処理がわからなくてお聞きしたいです。
以下、コードです。
itemList.jsp
Java
1<%@ page import="java.util.ArrayList"%> 2<%@ page import="bean.ItemBean"%> 3<%@ page language="java" contentType="text/html; charset=UTF-8" %> 4 5<!DOCTYPE html> 6<html> 7 <head> 8 <title>ECサイト</title> 9 <link href="/ecsite/css/shopping.css" rel="stylesheet" type="text/css" /> 10 </head> 11 <body> 12 <jsp:include page="header.jsp"/> 13 <h1>商品一覧</h1> 14 <% ArrayList<ItemBean> itemList = (ArrayList<ItemBean>)request.getAttribute("itemList"); %> 15 <form action="./BuyItemServlet_ans"> 16 <table class="table_list"> 17 <tbody> 18 <tr> 19 <th>商品画像</th> 20 <th>商品名</th> 21 <th>価格</th> 22 <th>在庫数</th> 23 <th>数量</th> 24 </tr> 25 26 <%-- Beanの要素数分(商品の種類分)テーブルを作成 --%> 27 <% for(ItemBean bean : itemList) { %> 28 <tr> 29 <%-- 商品ID --%> 30 <!-- <td><%= bean.getItemId() %></td> --> 31 <%-- 商品画像 --%> 32 <td><img src ="<%= bean.getItemImage() %>" width="100" height="auto"></td> 33 <%-- 商品名 --%> 34 <td><%= bean.getItemName() %></td> 35 <%-- 価格 --%> 36 <td class="int"><%= bean.getPrice() %></td> 37 <%-- 数量(在庫) --%> 38 <td class="int"><%= bean.getQuantity() %></td> 39 40 <% if(bean.getQuantity() != 0) { %> 41 <td> 42 <select class="list" name="<%= bean.getItemId() %>list"> 43 <% for(int i = 0; i <= bean.getQuantity(); i++) { %> 44 <option value=<%=i%>><%=i%></option> 45 <% } %> 46 </select> 47 </td> 48 <td class="button"> 49 <input class="common_button" type="submit" value="購入" name="<%= bean.getItemId() %>"> 50 </td> 51 <% } else { %> 52 <td></td> 53 <td class="button">売り切れ!</td> 54 <% } %> 55 </tr> 56 <% } %> 57 </tbody> 58 </table> 59 <input class="common_button" type="button" onclick="location.href='./index.jsp'" value="戻る"> 60 </form> 61 </body> 62</html>
shopDao.java
java
1public ResultSet selectItem() throws SQLException { 2 3 try { 4 5 6 Class.forName("com.mysql.jdbc.Driver"); 7 8 9 con = DriverManager.getConnection("jdbc:mysql://localhost:3306/sample", 10 "root", 11 "XXXXXXXX"); 12 // SQL文を生成 13 ps = con.prepareStatement("select item.item_id, item.item_image, item.item_name, item.price, stok.quantity from item inner join stok on item.item_id = stok.item_id"); 14 15 // SQLを実行 16 rs = ps.executeQuery(); 17 18 } catch(ClassNotFoundException ce) { 19 20 // JDBCドライバが見つからなかった場合 21 ce.printStackTrace(); 22 } 23 24 return rs; 25 }
shop.java
java
1public ArrayList<ItemBean> getItem() { 2 3 ArrayList<ItemBean> beanList = new ArrayList<ItemBean>(); 4 ShoppingDao dao = null; 5 ResultSet rs = null; 6 7 try { 8 9 // DAOクラスをインスタンス化 10 dao = new ShoppingDao(); 11 // 現在の商品一覧を検索 12 rs = dao.selectItem(); 13 14 // 検索結果を1レコードずつ処理 15 while(rs.next()) { 16 17 // 商品一覧を格納するBeanクラスをインスタンス化 18 ItemBean bean = new ItemBean(); 19 20 // 商品IDを設定 21 bean.setItemId(rs.getString("item_id")); 22 // 商品画像を設定 23 bean.setItemImage(rs.getString("item_image")); 24 // 商品名を設定 25 bean.setItemName(rs.getString("item_name")); 26 // 商品価格を設定 27 bean.setPrice(rs.getInt("price")); 28 // 商品数を設定 29 bean.setQuantity(rs.getInt("quantity")); 30 31 // Beanクラスをリストに追加 32 beanList.add(bean); 33 } 34 35 } catch (SQLException e) { 36 37 e.printStackTrace(); 38 39 } finally { 40 41 // 処理終了時に各接続を解除 42 dao.close(); 43 } 44 45 return beanList; 46 }
以上になります。拙いコードですが、よろしくお願いします。
なんとなくDAOクラスのDB周りで制御するのかなと思うのですが、よくわかりません。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。