質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

解決済

1回答

4423閲覧

Java servlet jsp MySQLでのページング処理

akamarukun

総合スコア27

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

1クリップ

投稿2018/06/26 08:42

現在、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周りで制御するのかなと思うのですが、よくわかりません。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

わかりやすい構成としては、
・画面にページング部品(« ‹ 123...10 › »)を表示する
・パラメータにページ番号を追加する(http://localhost:8080?p=2)
・SQLにページングを追加する:limit文とかoffset文とか使います、探してみてください
くらいですかね。limitで表示件数を、offsetで表示開始位置(2ページ目なら6件目から表示するなど)を制御します。

投稿2018/06/26 08:50

perpouh

総合スコア299

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問