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

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

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

HibernateとはJava言語のobject-relational mapping (ORM)ライブラリであり、Object/Relational Mappingよりはるか多くの方法でアプリケーションをPOJOで機能付けることができます。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

JSP

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

Java

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

Spring

Spring Framework は、Javaプラットフォーム向けのオープンソースアプリケーションフレームワークです。 Java Platform上に、 Web ベースのアプリケーションを設計するための拡張機能が数多く用意されています。

Q&A

解決済

1回答

4921閲覧

Java ショッピングカートシステムについて

minty

総合スコア13

Hibernate

HibernateとはJava言語のobject-relational mapping (ORM)ライブラリであり、Object/Relational Mappingよりはるか多くの方法でアプリケーションをPOJOで機能付けることができます。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

JSP

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

Java

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

Spring

Spring Framework は、Javaプラットフォーム向けのオープンソースアプリケーションフレームワークです。 Java Platform上に、 Web ベースのアプリケーションを設計するための拡張機能が数多く用意されています。

0グッド

1クリップ

投稿2017/10/03 06:25

###質問内容
まず初めてこちらに質問するので何か不手際が御座いましたら教えて頂けると有難いです。
よろしくお願いします。

-Javaを勉強していて今ショッピングカートのシステムを構築しています。
機能的にはDBに登録しているユーザー情報、商品情報を取得してログインまた商品一覧画面に表示。
商品一覧画面でselectで個数選択し「カートへ入れる」でカート内の商品確認画面へsubmit。
カート内の商品確認画面で「購入」ボタンを押すと購入完了画面を表示し商品一覧へ戻ると予めDBに登録していた在庫数から購入数を引いて表示するといった感じです。

今現在、DBから商品を取得し商品一覧画面で個数を選択しカート画面を表示するところまでは実装出来ています。最後のDBに登録している在庫数から購入数を引くという操作をどうコーディングするのかが分かりません。

下記に必要と思われるコードを載せますので皆様のお知恵をお貸しください。
初心者故にぐちゃぐちゃなコーディングだと思います。
すみませんが宜しくお願いいたします。

###Javaコントローラー

package com.jissyu.shopping2.controller; ※import文は省略します。 @Controller public class ItemController { private static final int NUM_PER_PAGE = 5; @Autowired private LocationDao locationDao; @Autowired private ItemDao itemDao; @InitBinder public void initBinder(WebDataBinder binder) { SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); format.setLenient(false); binder.registerCustomEditor(Date.class, new CustomDateEditor(format, true)); } @RequestMapping(value = { "/", "/listItem" }) public String list(@RequestParam(name = "p", defaultValue = "1") Integer page, Model model) throws Exception { List<Item> itemList = itemDao.findByPage(page, NUM_PER_PAGE); model.addAttribute("itemList", itemList); int totalPages = itemDao.totalPages(NUM_PER_PAGE); model.addAttribute("totalPages", totalPages); model.addAttribute("currentPage", page); return "listItem"; } @RequestMapping(value = "/addItem", method = RequestMethod.GET) public String addGet(Model model) throws Exception { List<Location> locationList = locationDao.findAll(); model.addAttribute("locationList", locationList); Item item = new Item(); model.addAttribute("item", item); return "addItem"; } @RequestMapping(value = "/addItem", method = RequestMethod.POST) public String addPost(@Valid Item item, Errors errors, Model model) throws Exception { List<Location> locationList = locationDao.findAll(); model.addAttribute("locationList", locationList); if (!errors.hasErrors()) { itemDao.insert(item); return "addItemDone"; } else { return "addItem"; } } @RequestMapping(value = "/buyItem", method = RequestMethod.POST) public String buyItem(@RequestParam Integer id, @RequestParam Integer count, Model model, HttpSession session) throws Exception { @SuppressWarnings("unchecked") List<Cart> cartList = (List<Cart>) session.getAttribute("cartList"); if (cartList == null) { cartList = new ArrayList<>(); } boolean itemFound = false; for (Cart cart : cartList) { Integer cartId = cart.getId(); if (id == cartId) { cart.setCount(cart.getCount() + count); itemFound = true; break; } } if (!itemFound) { Cart cartA = new Cart(); cartA.setId(id); Item itemdb = itemDao.findById(id); cartA.setCount(count); cartA.setName(itemdb.getName()); cartA.setPrice(itemdb.getPrice()); cartList.add(cartA); } session.setAttribute("cartList", cartList); return "buyItem"; } //ここにDBの在庫数から購入数を引く計算をするコードを書こうとしています } }

###jsp

---listItem.jsp--- <%@ page pageEncoding="UTF-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%> <%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <link href="<spring:url value="/css/bootstrap.min.css" />" rel="stylesheet" /> <link href="<spring:url value="/css/style.css" />" rel="stylesheet" /> <title>ECサイト システム</title> </head> <body> <div class="container"> <c:import url="parts/header.jsp" /> <h1>商品一覧</h1> <div class="row"> <div class="col-md-12"> <c:import url="parts/pagination.jsp" /> <table class="table table-bordered"> <tr> <th>商品コード</th> <th>商品名</th> <th>価格</th> <th>発送地</th> <th>在庫数</th> <th>商品登録日</th> <th>購入</th> </tr> <c:forEach items="${itemList}" var="item"> <tr> <td><c:out value="${item.itemId}" /></td> <td><c:out value="${item.name}" /></td> <td><c:out value="${item.price}" /></td> <td><c:out value="${item.location.name}" /></td> <td><c:out value="${item.stock}" /></td> <td><c:out value="${item.updated}" /></td> <td><c:if test="${item.stock == '0'}" var="flg" /> <c:if test="${flg}" >在庫切れ</c:if> <c:if test="${!flg}"> <form method="POST" action="buyItem"> <input type="hidden" name="id" value="${item.id}" /> <select name="count"> <c:forEach var="stocks" begin="0" end="${item.stock}"> <option value="${stocks}">${stocks}</option> </c:forEach> <c:if test="${item.stock!='0'}" var="check"> <input type="submit" value="カートへ入れる"> </c:if> </select> </form> </c:if> </tr> </c:forEach> </table> <a href="<spring:url value="/addItem" />" class="btn btn-primary">商品の追加</a> </div> </div> </div> <script src="<spring:url value="/js/jquery-3.2.1.min.js" />"></script> <script src="<spring:url value="/js/bootstrap.min.js" />"></script> </body> </html> ---buyItem.jsp--- <%@ page pageEncoding="UTF-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%> <%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <link href="<spring:url value="/css/bootstrap.min.css" />" rel="stylesheet" /> <link href="<spring:url value="/css/style.css" />" rel="stylesheet" /> <title>ECサイト システム</title> </head> <body> <div class="container"> <c:import url="parts/header.jsp" /> <h1>ショッピングカート</h1> <div class="row"> <p>次の商品を購入しますか?</p> <table class="table table-bordered"> <tr> <th>商品ID</th> <th>商品名</th> <th>価格</th> <th>購入数</th> </tr> <c:forEach items="${cartList}" var="item"> <tr> <td><c:out value="${item.id}" /></td> <td><c:out value="${item.name}" /></td> <td><c:out value="${item.price}" /></td> <td><c:out value="${item.count}" /></td> </tr> </c:forEach> </table> </div> <a href="<spring:url value="/listItem" />" class="btn btn-default">買い物を続ける</a> <br> <br> <form method="POST" action="buyItemDone"> <input type="submit" class="btn btn-primary" value="購入する" /> </form> </div> </body> </html>

###補足情報(言語/FW/ツール等のバージョンなど)
・Java SE8
・Spring Framework(MVC) 4.3.11
・Hibernate ORM
・MySQL WorkBench6.3CE
・TomCat8

以上です。何か足りない情報等あると思いますので随時補足していきます。
宜しくお願いいたします

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

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

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

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

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

abs123

2017/10/03 06:58 編集

結局のところ、何がわからないの?「何かがわからないって分かっているから」コーディングできないって言っているんだよね?その何かを教えて?
minty

2017/10/03 07:50 編集

分かりにくい質問内容で申し訳ございません。 購入ボタンを押したあと商品一覧画面へ戻るのですが、その際DBに登録してある(商品一覧に表示されている)在庫数から選択して購入した数を引いた数量を表示したいです。 どのように在庫数を持ってきてDB操作をしたらいいのかがいまいち分からなくて悩んでいます。 説明下手で申し訳ありませんが宜しくお願い致します。
abs123

2017/10/04 00:53 編集

処理するタイミングがわからないのか、処理の流れがわからないのか、在庫数を更新するDB操作がわからないのか、処理は思いついているが正しいか自信が持てない、これら以外のなにか、どれ?(修正は質問内容に直接反映してください。ここに長文を書いても読み辛いだけです。)
t_obara

2017/10/04 03:07 編集

上記を読むと、コーディングというよりは設計に問題があるように見受けられます。慣れている場合には、設計手順を入れずともコーディングしながら実現できると思いますが、慣れていない場合、それなりに全体像を把握できる設計をすべきです。一からカートシステムを作り上げているのか、修正を加えているのかわかりませんが、カートをどのように実現しているのかイメージがついていないように思われます。
guest

回答1

0

自己解決

もう一度勉強しなおします

投稿2018/01/16 02:29

minty

総合スコア13

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問