-
[ERMaster] shoppingmall - cartWEB/ERMaster 2022. 9. 10. 12:34
Dto
package com.sam.shop.dto; import java.sql.Timestamp; public class CartVO { private Integer cseq; private String id; private Integer pseq; private String mname; private String pname; private Integer quantity; private Integer price2; private Timestamp indate; private String result; public Integer getCseq() { return cseq; } public void setCseq(Integer cseq) { this.cseq = cseq; } public String getId() { return id; } public void setId(String id) { this.id = id; } public Integer getPseq() { return pseq; } public void setPseq(Integer qseq) { this.pseq = qseq; } public String getMname() { return mname; } public void setMname(String mname) { this.mname = mname; } public String getPname() { return pname; } public void setPname(String pname) { this.pname = pname; } public Integer getQuantity() { return quantity; } public void setQuantity(Integer quantity) { this.quantity = quantity; } public Integer getPrice2() { return price2; } public void setPrice2(Integer price2) { this.price2 = price2; } public Timestamp getIndate() { return indate; } public void setIndate(Timestamp indate) { this.indate = indate; } public String getResult() { return result; } public void setResult(String result) { this.result = result; } }
Dao
package com.sam.shop.dao; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import com.sam.shop.dto.CartVO; import com.sam.shop.util.Dbman; public class CartDao { private CartDao() {} private static CartDao itc = new CartDao(); public static CartDao getInstance() { return itc; } Connection con=null; PreparedStatement pstmt=null; ResultSet rs=null; }
상품 장바구니에 담기
function go_cart(){ if(document.formm.quantity.value==""){ alert("수량을 입력하세요"); document.formm.quantity.focus(); } else{ document.formm.action="shop.do?command=cartInsert"; document.formm.submit(); } }
else if(command.equals("cartInsert")) ac=new CartInsertAction();
package com.sam.shop.controller.action.mypage; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import com.sam.shop.controller.action.Action; import com.sam.shop.dao.CartDao; import com.sam.shop.dto.CartVO; import com.sam.shop.dto.MemberVO; public class CartInsertAction implements Action { @Override public void execute(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // cartvo에 전달 파라미터를 넣고 // cart 테이블에 레코드를 추가함 // cart 관련(mypage 관련) 동작은 // 로그인 이후에 유효한 동작이므로 // 현재 로그인 상태인지 먼저 점검함 HttpSession session =request.getSession(); MemberVO mvo=(MemberVO)session.getAttribute("loginUser"); String url=""; if(mvo==null) { url="shop.do?command=loginForm"; } else { CartVO cvo=new CartVO(); cvo.setId(mvo.getId()); cvo.setPseq(Integer.parseInt(request.getParameter("pseq"))); cvo.setQuantity(Integer.parseInt(request.getParameter("quantity"))); CartDao cdao=CartDao.getInstance(); cdao.insertCart(cvo); url="shop.do?command=cartList"; } response.sendRedirect(url); } }
CartDao에 insertCart 생성
public void insertCart(CartVO cvo) { String sql="insert into cart(cseq, id, pseq, quantity)" + "values(cart_seq.nextVal,?,?,?)"; con=Dbman.getConnection(); try { pstmt=con.prepareStatement(sql); pstmt.setString(1, cvo.getId()); pstmt.setInt(2, cvo.getPseq()); pstmt.setInt(3, cvo.getQuantity()); pstmt.executeUpdate(); } catch (SQLException e) {e.printStackTrace(); } finally { Dbman.close(con, pstmt, rs);} }
else if(command.equals("cartList")) ac=new CartListAction();
package com.sam.shop.controller.action.mypage; import java.io.IOException; import java.util.ArrayList; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import com.sam.shop.controller.action.Action; import com.sam.shop.dao.CartDao; import com.sam.shop.dto.CartVO; import com.sam.shop.dto.MemberVO; public class CartListAction implements Action { @Override public void execute(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String url="mypage/cartList.jsp"; // 최종 목적지 HttpSession session =request.getSession(); MemberVO mvo=(MemberVO)session.getAttribute("loginUser"); if(mvo==null) { url="shop.do?command=loginForm"; } else { // 로그인 유저의 아이디로 // 카트 리스트를 검색해서 리턴 받음 CartDao cdao=CartDao.getInstance(); ArrayList<CartVO> list=cdao.selectCart(mvo.getId()); request.setAttribute("cartList", list); int totalPrice=0; for(CartVO cvo:list) totalPrice+=(cvo.getPrice2()*cvo.getQuantity()); request.setAttribute("totalPrice", totalPrice); } request.getRequestDispatcher(url).forward(request, response); } }
CartDao에 selectCart 생성
public ArrayList<CartVO> selectCart(String id) { ArrayList<CartVO> list=new ArrayList<CartVO>(); String sql="select*from cart_view where id=? and result='1'"; con=Dbman.getConnection(); try { pstmt=con.prepareStatement(sql); pstmt.setString(1, id); rs=pstmt.executeQuery(); while(rs.next()) { CartVO cvo=new CartVO(); cvo.setCseq(rs.getInt("cseq")); cvo.setId(rs.getString("id")); cvo.setMname(rs.getString("mname")); cvo.setPseq(rs.getInt("pseq")); cvo.setPname(rs.getString("pname")); cvo.setQuantity(rs.getInt("quantity")); cvo.setPrice2(rs.getInt("price2")); cvo.setIndate(rs.getTimestamp("indate")); list.add(cvo); } } catch (SQLException e) {e.printStackTrace(); } finally { Dbman.close(con, pstmt, rs);} return list; }
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ include file="../header.jsp" %> <%@ include file="sub_image_menu.jsp" %> <article> <h2>Cart List</h2> <form name="formm" method="post"> <c:choose> <c:when test="${cartList.size()==0}"> <h3 style="color:red; text-align:center;"> 장바구니가 비었습니다</h3> </c:when> <c:otherwise> <table id="cartList"> <tr><th>상품평</th><th>수 량</th><th>가 격</th> <th>주문일</th><th>삭 제</th></tr> <c:forEach items="${cartList }" var="cartVO"> <tr> <td><h3>${cartVO.pname }</h3></td> <td>${cartVO.quantity }</td> <td>${cartVO.price2 }</td> <td><fmt:formatNumber value="${cartVO.price2*cartVO.quantity}" type="currency"/></td> <td><fmt:formatDate value="${cartVO.indate}" type="date"/></td> <td><input type="checkbox" name="cseq" value="${cartVO.cseq }"></td> </tr> </c:forEach> <tr> <th colspan="2">총 액</th> <th colspan="2"> <fmt:formatNumber value="${totalPrice }" type="currency"/></th> <th><a href="#" onClick="go_cart_delete();"> <h3>삭제하기</h3></a></th></tr> </table> </c:otherwise> </c:choose> <div id="buttons" style="float:right"> <input type="button" value="계속 쇼핑" class="cancel" onclick="loction.href='shop.do?command=index'";> <c:if test="${cartList.size()!=0 }"> <input type="button" value="주문하기" class="submit" onclick="go_order_insert();"> </c:if> </div> </form> </article> <%@ include file="../footer.jsp" %>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <meta charset="UTF-8"> <div id="sub_img"> <img src="images/mypage/sub_img.jpg" style="border-radius:20px 20px 20px 20px;"> </div> <div class="clear"></div> <nav id="sub_menu"> <ul> <li><a href="shop.do?command=cartList"> 장바구니(cart)내역</a></li> <li><a href="shop.do?command=mypage"> 진행중인 주문내역</a></li> <li><a href="shop.do?command=orderAll"> 총 주문내역</a></li> <li><a href="#" onclick="withdrawalConfirm();"> 회원탈퇴</a></li> </ul> </nav>
장바구니에 담겨있는 상품 삭제하기
function go_cart_delete(){ // 자바스크립트에서 jsp페이지내에 있는 동일한 name의 두개 이상의 // 입력란(input 태그)를은 하나의 이름의 배열로 인식함 // documnet.formm.cseq() // 그말은 곧 배열의 크기를 나타내는 length 속성이 존재한다는 뜻이며 // 배열내의 요소 갯수를 저장하고 있음 // 만약 input 태그가 여러개가 아니고 한개만 존재하는 상태라면 // length 값은 undefined가 됨 // 혹시라도 사용자가 체크박스를 한개도 체크하지 않고 // 삭제버튼을 틀렸나를 점검함 var count=0; if(document.formm.cseq.length==undefined){ // 체크박스가 한개인 경우 if(document.formm.cseq.checkd==true) count++; }else{ // 체크박스가 두개 이상인 경우 for(var i=0; i<document.formm.cseq.length; i++){ if(document.formm.cseq[i].checked==true) count++; } } if(count==0) alert("삭제할 항목을 선택해주세요"); else{ document.formm.action="shop.do?command=cartDelete"; document.formm.submit(); // jsp파일에 있는 체크된 checkbox들의 value들(cseq 값들)이 // 배열로 전송됨 } }
else if(command.equals("cartDelete")) ac=new CartDeleteAction();
package com.sam.shop.controller.action.mypage; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.sam.shop.controller.action.Action; import com.sam.shop.dao.CartDao; public class CartDeleteAction implements Action { @Override public void execute(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String[] cseqArr=request.getParameterValues("cseq"); CartDao cdao=CartDao.getInstance(); for(String cseq:cseqArr) cdao.deleteCart(Integer.parseInt(cseq)); response.sendRedirect("shop.do?command=cartList"); } }
CartDao에 deleteCart 생성
public void deleteCart(int cseq) { String sql="delete from cart where cseq=?"; con=Dbman.getConnection(); try { pstmt=con.prepareStatement(sql); pstmt.setInt(1, cseq); pstmt.executeUpdate(); } catch (SQLException e) {e.printStackTrace(); } finally { Dbman.close(con, pstmt, rs);} }
상품 삭제 후 'WEB > ERMaster' 카테고리의 다른 글
[ERMaster] shoppingmall - Q&A, paging (0) 2022.09.10 [ERMaster] shoppingmall - order (0) 2022.09.10 [ERMaster] shoppingmall - category (0) 2022.09.10 [ERMaster] shoppingmall - find ID, PW (0) 2022.09.10 [ERMaster] shoppingmall - update (0) 2022.09.10