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

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

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

Java ME(Java Platform, Micro Edition)はリソースが制限されたデバイス(携帯電話、PDA、テレビなど)用につくられたJavaプラットフォームである。

JSP

JSP(Java Server Pages)とは、ウェブアプリケーションの表示レイヤーに使われるサーバーサイドの技術のことです。

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

servlet

Servletとは、Webページの動的な生成やデータ処理などをサーバ上で実行するために、Javaで作成されたプログラムです。 ショッピングサイトやオンラインバンキングといった、動的なウェブサイトの構築に用いられています。

Q&A

解決済

1回答

19679閲覧

javaでのショッピングカート作成についての質問

ShinnosukeOmura

総合スコア11

Java ME

Java ME(Java Platform, Micro Edition)はリソースが制限されたデバイス(携帯電話、PDA、テレビなど)用につくられたJavaプラットフォームである。

JSP

JSP(Java Server Pages)とは、ウェブアプリケーションの表示レイヤーに使われるサーバーサイドの技術のことです。

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

servlet

Servletとは、Webページの動的な生成やデータ処理などをサーバ上で実行するために、Javaで作成されたプログラムです。 ショッピングサイトやオンラインバンキングといった、動的なウェブサイトの構築に用いられています。

0グッド

0クリップ

投稿2014/10/21 04:37

現在プログラミングを学ぶ為に、Eclipse Tomcat phpMyAdmin を使用した開発環境で、MVCモデルでの簡単なECサイトを作成しております。
そこで質問なのですが、カートを作成する際にHttpSessionを使用して作りたいと考えているのですが、商品一覧画面から「購入」ボタンを押下し、カートページに移行。ここまではできたのですが、商品のidと、テキストボックスに入力する購入数がうまく取れず、カートページ「買い物を続ける」のボタンで商品一覧画面に戻り、再び別の商品をクリックすると、その商品しか表示されません。どのような記述をすれば自由に追加や削除が出来ますでしょうか?どなたか是非ご教授お願い致します。

lang

1コード 2 3「CartServlet」 4 5public class CartServlet extends HttpServlet { 6 7 private static final long serialVersionUID = 1L; 8 9 public void doGet (HttpServletRequest req, HttpServletResponse res) 10 throws IOException, ServletException { 11 12 HttpSession session = req.getSession(); 13 String count = req.getParameter("count"); 14 String id = req.getParameter("id"); 15 16 CartLogic logic = new CartLogic(); 17 List<SyohinBean> items = logic.execute("id"); 18 session.setAttribute("id", logic.execute(id)); 19 session.setAttribute("item", items); 20 21 CartBean cb = new CartBean(); 22 session.setAttribute("cartbean", cb); 23 24 RequestDispatcher rd = req.getRequestDispatcher("/jsp/cart.jsp"); 25 rd.forward (req, res); 26 return; 27 } 28}

lang

1コード 2 3「CartLogic」 4 5 public List<SyohinBean> execute (String id) { 6 7 Connection con = null; 8 Statement smt = null; 9 ResultSet rs = null; 10 List<SyohinBean> items = null; 11 12 try { 13 DBUtil.makeConnection(); 14 DBUtil.makeStatement(); 15 16 String sql = "SELECT id,syohinname,category,stock,price FROM syohin WHERE id="+id; 17 rs = DBUtil.execute(sql); 18 items = new ArrayList<SyohinBean>(); 19 20 if (rs != null) { 21 SyohinBean sb = new SyohinBean(); 22 sb.setId(rs.getString("id")); 23 sb.setSyohinname(rs.getString("syohinname")); 24 sb.setCategory(rs.getString("category")); 25 sb.setStock(rs.getString("stock")); 26 sb.setPrice(rs.getString("price")); 27 items.add(sb); 28 29 CartBean cb = new CartBean(); 30 cb.setSyohinBean(sb); 31 } 32 } 33 catch (Exception e) { 34 e.printStackTrace(); 35 } 36 finally{ 37 if(smt !=null){ 38 try{ 39 smt.close(); 40 }catch(SQLException e){ 41 e.printStackTrace(); 42 } 43 } 44 if(con !=null){ 45 try{ 46 con.close(); 47 }catch(SQLException e){ 48 e.printStackTrace(); 49 } 50 } 51 } 52 return items; 53 } 54} 55

lang

1コード 2 3「cartjsp」 4 5<%@ page language="java" contentType="text/html; charset=UTF-8" 6 pageEncoding="UTF-8"%> 7<%@ page import="jp.co.so.beans.CartBean" %> 8 <jsp:useBean id="item" scope="request" class="jp.co.so.beans.SyohinBean"/> 9 <jsp:useBean id="CartBean" scope="request" class="jp.co.so.beans.CartBean"/> 10<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> 11 12<!DOCTYPE html> 13<html> 14 <head> 15 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 16 <title>買い物カゴ</title> 17 </head> 18 <body> 19 <h1>商品の購入/決済</h1> 20 <hr> 21 <table border="1" width="90%" class="list"> 22 <tr> 23 <th> 商品名 </th> 24 <th> 種類 </th> 25 <th> 在庫 </th> 26 <th> 価格 </th> 27 <th> 購入数 </th> 28 <th colspan="2"></th> 29 </tr> 30 <c:forEach var="item" items="${items}" varStatus="status"> 31 <form action="" method="get"> 32 <tr> 33 <td><c:out value="${item.syohinname}"/></td> 34 <td><c:out value="${item.category}"/></td> 35 <td style="text-align:right">あと<c:out value="${item.stock}"/>個</td> 36 <td style="text-align:right"><c:out value="${item.price}"/>円</td> 37 <form action="" method="get"> 38 <td align="center"> 39 <input type="text" name="count" value="<jsp:getProperty name="CartBean" property="count"/>" 40 size="4" id="count"> 41 </td> 42 <td align="center"> 43 <input name= "id" type="hidden" value="${item.id}"> 44 <input type="submit" name="update" value="更新"> 45 </td> 46 <td align="center"> 47 <input name= "id" type="hidden" value="${item.id}"> 48 <input type="submit" name="delete" value="削除"> 49 </td> 50 </form> 51 </tr> 52 </form> 53 </c:forEach> 54 </table> 55 <table border="0" cellpadding="3" cellspacing="1" bgcolor="#666666"> 56 <tr bgcolor="#FFFFFF"> 57 <td width="137" align="right" bgcolor="#FCF9EB"><strong>商品数</strong></td> 58 <td width="174" align="right" bgcolor="#FFFFFF"><strong>1個</strong></td> 59 </tr> 60 <tr bgcolor="#FFFFFF"> 61 <td width="137" align="right" bgcolor="#FCF9EB"><strong>商品合計</strong></td> 62 <td width="174" align="right" bgcolor="#FFFFFF"><strong>23,760円</strong></td> 63 </tr> 64 <tr bgcolor="#FFFFFF"> 65 <td align="right" bgcolor="#FCF9EB">消費税</td> 66 <td align="right"> 67 1,901円 </td> 68 </tr> 69 <tr bgcolor="#FFFFFF"> 70 <td align="right" bgcolor="#FCF9EB"><strong>合計金額</strong></td> 71 <td align="right"><strong>25,661円</strong></td> 72 </tr> 73 </table> 74 <hr> 75 <table width="100%" border="0" cellspacing="1" cellpadding="2"> 76 <tr> 77 <td valign="top" width="90"><a href="top"><input type="submit" value="買い物を続ける"></a></td> 78 <td valign="top"><a href=""><input type="submit" value="買い物カゴを空にする" border="0" onClick="return CartAllDelete();"></td> 79 <td valign="top" align="right"> 80 <form name="send" method="get" action=""> 81 <input type="submit" value="決済画面へ" border="0"> 82 </form> 83 </td> 84 </tr> 85</table> 86 </body> 87</html> 88

拙いコードで恥ずかしい限りですが、何卒よろしくお願いします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

記載されていないクラスがありますので、全体が正常に動作するかどうかは分かりませんが、
ご質問の、セッション(HttpSession)にCartBeanを保存する方法について説明します。

初回はCartBeanが無いので、セッションに新規CartBeanを保存します。
次回のリクエストではセッションにCartBeanが保存されていますので、それを復元する処理が必要になります。
下記の例では、getCartメソッドで、保存と復元の処理を行っています。

lang

1// Servletの抜粋 2 @Override 3 public void doGet(HttpServletRequest req, HttpServletResponse res) throws IOException, ServletException { 4 CartBean cart = getCart(req); 5 List<SyohinBean> items = logic.execute(id); 6 cart.getItems().addAll(items); // 取得した全てのitemsを追加 7 RequestDispatcher rd = req.getRequestDispatcher("/jsp/cart.jsp"); 8 rd.forward(req, res); 9 } 10 11 CartBean getCart(HttpServletRequest req) { 12 final String attrId = "CartBean"; 13 HttpSession session = req.getSession(true); // true=HttpSession が無ければ新規セッションを返す 14 Object o = session.getAttribute(attrId); 15 if (o == null) { 16 final CartBean bean = new CartBean(); 17 // CartBeanをsessionスコープに設定 18 session.setAttribute(attrId, bean); 19 return bean; 20 } else { 21 return (CartBean) o; 22 } 23 }

JSPのuseBeanは、scope"session"にします。

lang

1 <jsp:useBean id="CartBean" scope="session" class="jp.co.so.beans.CartBean"/>

これで、セッションが有効の間は、画面遷移後もカートの内容が維持できると思います。

投稿2014/10/21 15:32

argius

総合スコア9388

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

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

ShinnosukeOmura

2014/10/22 03:27

回答ありがとうございます。 早速試してみたいと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問