SQL
create table zcart(
cart_num number,
item_num number not null,
order_quantity number(7) not null,
reg_date date default sysdate not null,
mem_num number not null,
constraint zcart_pk primary key (cart_num),
constraint zcart_fk1 foreign key (item_num)
references zitem (item_num),
constraint zcart_fk2 foreign key (mem_num)
references zmember (mem_num)
);
create sequence zcart_seq;
VO
Cart
package kr.cart.vo;
import java.sql.Date;
import kr.item.vo.ItemVO;
public class CartVO {
private int cart_num;
private int item_num;
private int order_quantity;
private Date reg_date;
private int mem_num;
private int sub_total;
private ItemVO itemVO;
public int getCart_num() {
return cart_num;
}
public void setCart_num(int cart_num) {
this.cart_num = cart_num;
}
public int getItem_num() {
return item_num;
}
public void setItem_num(int item_num) {
this.item_num = item_num;
}
public int getOrder_quantity() {
return order_quantity;
}
public void setOrder_quantity(int order_quantity) {
this.order_quantity = order_quantity;
}
public Date getReg_date() {
return reg_date;
}
public void setReg_date(Date reg_date) {
this.reg_date = reg_date;
}
public int getMem_num() {
return mem_num;
}
public void setMem_num(int mem_num) {
this.mem_num = mem_num;
}
public int getSub_total() {
return sub_total;
}
public void setSub_total(int sub_total) {
this.sub_total = sub_total;
}
public ItemVO getItemVO() {
return itemVO;
}
public void setItemVO(ItemVO itemVO) {
this.itemVO = itemVO;
}
}
DAO
Cart
package kr.cart.dao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import kr.cart.vo.CartVO;
import kr.util.DBUtil;
public class CartDAO {
private static CartDAO instance = new CartDAO();
public static CartDAO getInstance() {
return instance;
}
private CartDAO() {}
public void insertCart(CartVO cart)throws Exception{
Connection conn = null;
PreparedStatement pstmt = null;
String sql = null;
try {
conn = DBUtil.getConnection();
sql = "INSERT INTO zcart (cart_num,item_num,order_quantity,"
+ "mem_num) VALUES (zcart_seq.nextval,?,?,?)";
pstmt = conn.prepareStatement(sql);
pstmt.setInt(1, cart.getItem_num());
pstmt.setInt(2, cart.getOrder_quantity());
pstmt.setInt(3, cart.getMem_num());
pstmt.executeUpdate();
}catch(Exception e) {
throw new Exception(e);
}finally {
DBUtil.executeClose(null, pstmt, conn);
}
}
}
Action
Write
package kr.cart.action;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.codehaus.jackson.map.ObjectMapper;
import kr.cart.dao.CartDAO;
import kr.cart.vo.CartVO;
import kr.controller.Action;
public class WriteAction implements Action{
@Override
public String execute(HttpServletRequest request, HttpServletResponse response) throws Exception {
Map<String,String> mapAjax =
new HashMap<String,String>();
HttpSession session = request.getSession();
Integer user_num =
(Integer)session.getAttribute("user_num");
if(user_num==null) {
mapAjax.put("result", "logout");
}else {
request.setCharacterEncoding("utf-8");
CartVO cart = new CartVO();
cart.setItem_num(Integer.parseInt(
request.getParameter("item_num")));
cart.setOrder_quantity(Integer.parseInt(
request.getParameter("order_quantity")));
cart.setMem_num(user_num);
CartDAO dao = CartDAO.getInstance();
dao.insertCart(cart);
mapAjax.put("result", "success");
}
ObjectMapper mapper = new ObjectMapper();
String ajaxData = mapper.writeValueAsString(mapAjax);
request.setAttribute("ajaxData", ajaxData);
return "/WEB-INF/views/common/ajax_view.jsp";
}
}
JS
Shop Item Detail
$(function(){
$('#order_quantity').on('input',function(){
if($('#order_quantity').val()==''){
$('#item_total_txt').text('총주문 금액 : 0원');
return;
}
if($('#order_quantity').val()<=0){
$('#order_quantity').val('');
$('#item_total_txt').text('총주문 금액 : 0원');
return;
}
if(Number($('#item_quantity').val()) <
$('#order_quantity').val()){
alert('수량이 부족합니다!');
$('#order_quantity').val('');
$('#item_total_txt').text('총주문 금액 : 0원');
return;
}
let total = $('#item_price').val() * $('#order_quantity').val();
$('#item_total_txt').text('총주문 금액 : ' +
total.toLocaleString() + '원');
});
$('#item_cart').submit(function(event){
if($('#order_quantity').val()==''){
alert('수량을 입력하세요!');
$('#order_quantity').focus();
return false;
}
let form_data = $(this).serialize();
$.ajax({
url:'../cart/write.do',
type:'post',
data:form_data,
dataType:'json',
success:function(param){
if(param.result == 'logout'){
alert('로그인 후 사용하세요');
}else if(param.result == 'success'){
alert('장바구니에 상품을 담았습니다.');
location.href='../cart/list.do';
}else if(param.result == 'overquantity'){
alert('기존에 주문한 상품입니다. 개수를 추가하면 재고가 부족합니다.');
}else{
alert('장바구니 담기 오류');
}
},
error:function(){
alert('네트워크 오류 발생');
}
});
event.preventDefault();
});
});
Properties
Shop
#상품관리 사용자
/item/detail.do=kr.item.action.UserDetailAction
#장바구니
/cart/write.do=kr.cart.action.WriteAction