mvcPage
css
폴더의 layout.css
하단에 다음의 내용을 추가/* 카트 */
form[id="cart_order"] {
border: none;
}
/* 주문 */
form[id="order_modify"],form[id="order_form"] {
width: 860px;
}
WEB-INF
폴더의 shop.properties
하단에 다음의 내용을 추가/cart/modifyCart.do=kr.cart.action.ModifyCartAction
/cart/deleteCart.do=kr.cart.action.DeleteCartAction
table.sql
하단에 다음의 내용을 추가/* 주문 */
CREATE TABLE zorder(
order_num NUMBER NOT NULL,
item_name VARCHAR2(600) NOT NULL,
order_total NUMBER(9) NOT NULL,
payment NUMBER(1) NOT NULL,
status NUMBER(1) DEFAULT 1 NOT NULL,
receive_name VARCHAR2(30) NOT NULL,
receive_post VARCHAR2(5) NOT NULL,
receive_address1 VARCHAR2(90) NOT NULL,
receive_address2 VARCHAR2(90) NOT NULL,
receive_phone VARCHAR2(15) NOT NULL,
notice VARCHAR2(4000),
reg_date DATE DEFAULT SYSDATE NOT NULL,
modify_date DATE,
mem_num NUMBER NOT NULL,
CONSTRAINT zorder_pk PRIMARY KEY (order_num),
CONSTRAINT zorder_fk1 FOREIGN KEY (mem_num) REFERENCES zmember (mem_num)
);
CREATE SEQUENCE zorder_seq;
CREATE TABLE zorder_detail(
detail_num NUMBER NOT NULL,
item_num NUMBER NOT NULL,
item_name VARCHAR2(30) NOT NULL,
item_price NUMBER(8) NOT NULL,
item_total NUMBER(8) NOT NULL,
order_quantity NUMBER(7) NOT NULL,
order_num NUMBER NOT NULL,
CONSTRAINT zdetail_pk PRIMARY KEY (detail_num),
CONSTRAINT zdetail_fk1 FOREIGN KEY (order_num) REFERENCES zorder (order_num)
);
CREATE SEQUENCE zdetail_seq;
ModifyCartAction
생성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;
import kr.item.dao.ItemDAO;
import kr.item.vo.ItemVO;
public class ModifyCartAction 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");
// 전송된 데이터 반환
int item_num = Integer.parseInt(request.getParameter("item_num"));
int item_quantity = Integer.parseInt(request.getParameter("order_quantity"));
// 현재 구매하고자 하는 상품의 재고 수를 구함
ItemDAO itemDao = ItemDAO.getInstance();
ItemVO item = itemDao.getItem(item_num);
if(item.getStatus()==1) { // 상품 미표시의 경우
mapAjax.put("result", "noSale");
}
else if(item.getQuantity()<item_quantity) { // 재고 부족
mapAjax.put("result", "noQuantity");
}
else { // 상품 수량 변경 가능
CartVO cart = new CartVO();
cart.setCart_num(Integer.parseInt(request.getParameter("cart_num")));
cart.setOrder_quantity(item_quantity);
CartDAO cartDao = CartDAO.getInstance();
cartDao.updateCart(cart);
mapAjax.put("result", "success");
}
}
ObjectMapper mapper = new ObjectMapper();
String ajaxData = mapper.writeValueAsString(mapAjax);
request.setAttribute("ajaxData", ajaxData);
// JSP 경로 반환
return "/WEB-INF/views/common/ajax_view.jsp";
}
}
DeleteCartAction
생성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.controller.Action;
public class DeleteCartAction 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");
CartDAO dao = CartDAO.getInstance();
dao.deleteCart(Integer.parseInt(request.getParameter("cart_num")));
mapAjax.put("result", "success");
}
ObjectMapper mapper = new ObjectMapper();
String ajaxData = mapper.writeValueAsString(mapAjax);
request.setAttribute("ajaxData", ajaxData);
// JSP 경로 반환
return "/WEB-INF/views/common/ajax_view.jsp";
}
}
src/main/java
오른쪽 클릭하고 새 패키지 kr.order.vo
생성 후 새 클래스 OrderVO
생성package kr.order.vo;
import java.sql.Date;
public class OrderVO {
private int order_num; // 주문 번호
private String item_name; // 주문 상품명
private int order_total; // 총 구매 금액
private int payment; // 지불 방식; 1. 통장 입금, 2. 카드 결제
private int status; // 배송 상태; 1. 배송 대기, 2. 배송 준비 중, 3. 배송 중, 4. 배송 완료, 5. 배송 취소
private String receive_name; // 받는 사람 이름
private String receive_post; // 받는 사람 우편번호
private String receive_address1; // 받는 사람 주소
private String receive_address2; // 받는 사람 상세 주소
private String receive_phone; // 받는 사람 전화번호
private String notice; // 남길 말
private Date reg_date; // 주문일
private Date modify_date; // 배송 상태 수정일
private int mem_num; // 구매자 회원 번호
private String id; // 구매자 아이디
public int getOrder_num() {
return order_num;
}
public void setOrder_num(int order_num) {
this.order_num = order_num;
}
public String getItem_name() {
return item_name;
}
public void setItem_name(String item_name) {
this.item_name = item_name;
}
public int getOrder_total() {
return order_total;
}
public void setOrder_total(int order_total) {
this.order_total = order_total;
}
public int getPayment() {
return payment;
}
public void setPayment(int payment) {
this.payment = payment;
}
public int getStatus() {
return status;
}
public void setStatus(int status) {
this.status = status;
}
public String getReceive_name() {
return receive_name;
}
public void setReceive_name(String receive_name) {
this.receive_name = receive_name;
}
public String getReceive_post() {
return receive_post;
}
public void setReceive_post(String receive_post) {
this.receive_post = receive_post;
}
public String getReceive_address1() {
return receive_address1;
}
public void setReceive_address1(String receive_address1) {
this.receive_address1 = receive_address1;
}
public String getReceive_address2() {
return receive_address2;
}
public void setReceive_address2(String receive_address2) {
this.receive_address2 = receive_address2;
}
public String getReceive_phone() {
return receive_phone;
}
public void setReceive_phone(String receive_phone) {
this.receive_phone = receive_phone;
}
public String getNotice() {
return notice;
}
public void setNotice(String notice) {
this.notice = notice;
}
public Date getReg_date() {
return reg_date;
}
public void setReg_date(Date reg_date) {
this.reg_date = reg_date;
}
public Date getModify_date() {
return modify_date;
}
public void setModify_date(Date modify_date) {
this.modify_date = modify_date;
}
public int getMem_num() {
return mem_num;
}
public void setMem_num(int mem_num) {
this.mem_num = mem_num;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
}