ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [ERMaster] shoppingmall - cart
    WEB/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

    댓글

Designed by Tistory.