前提・実現したいこと
JSPとJavaBeansを利用して簡易注文システムを作成しています。
大枠の部分は出来上がったのでここに合計金額を算出するコードを書き加えたいのですが、
どのように書けばいいのか分かりません。どなたかご教示いただけますと幸いです。
条件、仕組みは以下のようなものです。
・サーブレットは使用せず、JSPとJavaBeansで構築する。
・商品は「1皿」ずつ注文する。処理としては、そのidの商品の注文数を「+1」する。
● 1ページ目
①「画像、商品名、値段、注文数」等を含んだ商品一覧をデータベースから表示する。
②表示された商品のリンクをクリックし、2ページ目で、その商品のidを受け取る。
● 2ページ目
③「1ページ目から受取ったid」を実引数としてメソッドupdateDB()に渡す。
④メソッドupdateDB()の丸括弧内に仮引数(tempid)を宣言し、idを受け取る。
⑤メソッドupdateDB()で、SQLのupdate文を実行し、注文数を「+1」する。
⑥2ページ目の最後に、<jsp:forward page="1ページ目のファイル名.jsp"/>を書き、1ページ目に戻る。
● 戻って来た1ページ目
⑦最新の注文の支払い合計金額を表示する。
該当のソースコード
【driveBean.jsp】 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <% request.setCharacterEncoding("UTF-8"); %> <%@ page import="java.util.*" %> <%@ page import="bean.*" %> <jsp:useBean id="obj" class="bean.BeanAccessDB" /> <!DOCTYPE html> <html><head><title>DBを読む</title></head> <body> <% List<BeanAccessDB> list = obj.DBtoList(); int sum = 0; for(int i = 0; i < list.size(); i++){ obj = list.get(i); %> <a href="driveBean2.jsp?linkdata=<%= obj.getId() %>"> <%= obj.getId() %> </a> <%= obj.getName() %>、 <%= obj.getPrice() %> <img src="images/寿司の画像/<%= obj.getPhoto() %>" width="70" height="70" /> <% out.print("合計:" + sum + "円"); %> <%}%> </body> </html>
【driveBean2.jsp】 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <% request.setCharacterEncoding("UTF-8"); %> <jsp:useBean id="obj" class="bean.BeanAccessDB" /> <!DOCTYPE html> <html> <head> <meta charset="ISO-8859-1"> <title>Insert title here</title> </head> <body> <% String linkdata = request.getParameter("linkdata"); obj.updateDB(linkdata); %> </body>
【BeanAccessDB.java】 package bean; import java.lang.reflect.InvocationTargetException; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; import org.mariadb.jdbc.Driver; public class BeanAccessDB { private String id; private String name; private int price; private String photo; private int number; public BeanAccessDB() { } public BeanAccessDB(String id, String name, int price, String photo, int number) { this.id = id; this.name = name; this.price = price; this.photo = photo; this.number = number; } public String getId() { return id; } public String getName() { return name; } public int getPrice() { return price; } public String getPhoto() { return photo; } public int getNumber() { return number; } public List<BeanAccessDB> DBtoList() { List<BeanAccessDB> list = new ArrayList<BeanAccessDB>(); Connection con = null; PreparedStatement ps = null; try { Driver.class.getDeclaredConstructor().newInstance(); con = DriverManager.getConnection("jdbc:mariadb://localhost/studyDB", "root", ""); String sql = "select * from sushi; "; ps = con.prepareStatement(sql.toString()); ResultSet rs = ps.executeQuery(); while (rs.next()) { String id = rs.getString("id"); System.out.println(id); String name = rs.getString("name"); int price = rs.getInt("price"); String photo = rs.getString("photo"); int number = rs.getInt("number"); list.add(new BeanAccessDB(id, name, price, photo, number)); } } catch (Exception e) { e.printStackTrace(); } finally { try { if (ps != null) { ps.close(); } if (con != null) { con.close(); } } catch (Exception e) { e.printStackTrace(); } } return list; } public void updateDB(String tempid) { Connection con = null; PreparedStatement ps = null; try { Driver.class.getDeclaredConstructor().newInstance(); con = DriverManager.getConnection("jdbc:mariadb://localhost/studyDB", "root", ""); String sql = "update sushi set number = number + 1 where id = ? "; ps = con.prepareStatement(sql.toString()); ps.setString(1, tempid); ps.executeUpdate(); } catch (Exception e) { e.printStackTrace(); } finally { try { if (ps != null) { ps.close(); } if (con != null) { con.close(); } } catch (Exception e) { e.printStackTrace(); } } } }
【SQL TABLE sushi】 select * from sushi; +-----+------------+-------+--------------+--------+ | id | name | price | photo | number | +-----+------------+-------+--------------+--------+ | 001 | えび | 240 | ebi.png | 0 | | 002 | いか | 210 | ika.png | 0 | | 003 | いくら | 300 | ikura.png | 0 | | 004 | まぐろ | 150 | maguro.png | 0 | | 005 | しめさば | 200 | simesaba.png | 0 | | 006 | たまご | 140 | tamago.png | 0 | | 007 | うに | 400 | uni.png | 0 | | 008 | 太巻き | 500 | futomaki.png | 0 | | 009 | 手巻き寿司 | 550 | temaki.png | 0 | | 010 | ちらし寿司 | 1200 | tirasi.png | 0 | +-----+------------+-------+--------------+--------+
試したこと
自分で書ける範囲のコードは書きましたがここまでで限界でした。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
あなたの回答
tips
プレビュー