2013년 8월 11일 일요일

[예제]스트럿츠로 구현한 간단한 장바구니[2]

#################################
7. CartItem.java
#################################



오라클자바커뮤니티에서 설립한 오엔제이프로그래밍 실무교육센터
(오라클SQL, 튜닝, 힌트,자바프레임워크, 안드로이드, 아이폰, 닷넷 실무전문 강의)  




장바구니내의 항목을 나타내는 CartItem.java 입니다.

//============================================================================
/**
  * 시스템명 : goods / 장바구니
  * 작 성 일  : 2005-05-15
  * 작 성 자  : Lee, Jong-Cheol
  * 수 정 자  :
  * 파 일 명  : goods.action.CartInsertAction
  * 버    전  : 1.0
  * 개    요  : 쇼핑카트의 물품 추가 Action
  * 이    력  : 2005-05-15 : 초기 작성
  *     
  */
//============================================================================

package cart.action;

import java.util.ArrayList;

import cart.model.Cart;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.DynaActionForm;

import cart.action.BaseAction;
import cart.model.Constants;


/**
 * @author 이종철
 *
 * TODO To change the template for this generated type comment go to
 * Window - Preferences - Java - Code Style - Code Templates
 */
public class CartInsertAction extends BaseAction{
    public ActionForward cartInsert(ActionMapping mapping,
                                    ActionForm form,
                                    HttpServletRequest request,
                                    HttpServletResponse response)
                    throws Exception {                         
       
                DynaActionForm dForm = (DynaActionForm)form;
                       
                String gName        = dForm.get("gname").toString();               
                String price        = dForm.get("price").toString();
                String cnt          = dForm.get("cnt").toString();
                             
                Cart cart = getCart(request);
                                                                                                                     
                cart.addItem(gName, price, cnt);
               
                ArrayList cartList = (ArrayList)cart.getCartItems();
               
                HttpSession session = request.getSession();
                   
                session.setAttribute(Constants.CART_LIST, cartList);
               
                //return mapping.findForward(Constants.CART);
                //F5를 누르면 장바구니에 계속 담아지므로 URL창에 cart.jsp를 보이기 위해
                //sendRedirecr함
               
                response.sendRedirect("/struts-test/cart-exam/cart.jsp");
               
                return null;
            }
}




##########################
8. Cart.java
##########################

장바구니를 나타내는 Cart.java인데... 이 파일의 메소드를 통해 바구니에 담는다든지, 장바구니의 수량을 수정한다든지, 바구니의 내용물을 삭제하는 등의 기능을 수행합니다.

/********************************************************************************
 * 시스템명 : goods > 장바구니
 * 작 성 일 : 2005-05-11
 * 작 성 자 : Lee, Jong-Cheol
 * 수 정 자 :
 * 파 일 명 : cart.model.Cart.java
 * 버    전 : 1.0
 * 개    요 : 장바구니 MODEL CLASS
 * 이    력 : 2005-05-11 : 초기 작성
 *     
 *******************************************************************************/

package cart.model;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;


/**
* @author 이종철
*
* TODO To change the template for this generated type comment go to
* Window - Preferences - Java - Code Style - Code Templates
*/

public class Cart {
  int count;
 
  private Map myMap = new HashMap();

        /**
        * 쇼핑 카트에 물건 담기
        * @param gcode
        * @param gname
        * @param price
        * @param cnt
        * @param juklip_ratio
        * @param unit
        */
        public void addItem(
                            String gname,                           
                            String price,
                            String cnt
                          ) {
               
            String itemId = null;
           
            if (myMap.isEmpty()) {
                itemId = "1";
            }
            else {             
                int no = myMap.size() + 1;               
                itemId = new Integer(no).toString();
            }
           
            ArrayList myArrayList = new ArrayList();
         
            myArrayList.add(0, gname);          //상품명           
            myArrayList.add(1, price);          //가격
            myArrayList.add(2, cnt);            //개수           

            myMap.put(itemId      , myArrayList);   
           
        }

        /**
        * 쇼핑 카트에서 상품 제거
        * @param itemId
        */
        public void removeItem(String itemId) {
                myMap.remove(itemId);
        }

        /**
        * 쇼핑 카트의 내역 변경
        * @param itemId
        * @param newQty
        */
        public void updateItems(String itemId, String newQty) {               
                if (myMap.containsKey(itemId)) {
                   
                        if (Integer.parseInt(newQty) > 0) {
                            ArrayList temp = (ArrayList)myMap.get(itemId);

                                  temp.remove(2);
                            temp.add(2, newQty);                                                                         
                                                       
                        }
                }       
        }

       
        /**
        * 쇼핑 카트내의 상품 수 파악
        * @return
        */
        public int getCount() {
            count = myMap.size();
                return count;
        }
       
        /**
        * 전체 금액 파악
        * @return
        */
        public long getTotal() {
                int ret = 0;
                Iterator it = getCartItems().iterator();
                for (; it.hasNext();) {
                        CartItem i = (CartItem) it.next();
                        ret += (new Integer(i.getPrice()).intValue() * new Integer(i.getCnt()).intValue());
                }

                return ret;
        }
       
        /**
        * 쇼핑 카트 CLEAR
        *
        */
        public void empty() {
                myMap.clear();
        }

        /**
        * 쇼핑 카트내의 상품을 담고 있는 MAP을 리턴
        * @return
        */
        public Map getDetails() {
                return myMap;
        }

        /**
        * 쇼핑 카트의 상품 받아 냄
        * @return
        */
        public Collection getCartItems() {
                try {                       
                        ArrayList items = new ArrayList();
                        Iterator it = myMap.keySet().iterator();
                        int cnt = 0;
                       
                        while (it.hasNext()) {
                                String key = (String) it.next();
                                ArrayList value = (ArrayList) myMap.get(key);
                                try {
                                        //Item item = petStore.getItem(key);
                                        //Product prod = item.getProduct();
                                    cnt++;

                                        CartItem ci =
                                                new CartItem(
                                                    key,
                                                    value.get(0).toString(),
                                                    value.get(1).toString(),
                                                    value.get(2).toString()
                  );
                 
                                  items.add(ci);
                                       
                                } catch (Exception cce) {
                                        cce.printStackTrace();                                       
                                }
                        }

                        // Sort the items
                        Collections.sort(items, new CartItem.ItemIdComparator());
                        return items;
                } catch (Exception e) {                   
                        return null;
                }
        }
}


############################
9. CartViewAction.java
############################

장바구니의 내용물을 보여주는 Action 입니다.

//============================================================================
/**
  * 시스템명 : cart / 장바구니
  * 작 성 일  : 2005-05-16
  * 작 성 자  : Lee, Jong-Cheol
  * 수 정 자  :
  * 파 일 명  : cart.action.CartViewAction
  * 버    전  : 1.0
  * 개    요  : 쇼핑카트의 내용을 보는 Action
  * 이    력  : 2005-05-16 : 초기 작성
  *     
  */
//============================================================================


package cart.action;

import cart.model.Cart;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

import java.util.ArrayList;

import cart.action.BaseAction;
import cart.model.Constants;


/**
 * @author 이종철
 *
 * TODO To change the template for this generated type comment go to
 * Window - Preferences - Java - Code Style - Code Templates
 */
public class CartViewAction extends BaseAction{
    public ActionForward cartView(ActionMapping mapping,
                                  ActionForm form,
                                  HttpServletRequest request,
                                  HttpServletResponse response)
                    throws Exception {                         
                       
                Cart cart = getCart(request);   
               
                ArrayList cartList = (ArrayList)cart.getCartItems();
               
                HttpSession session = request.getSession();
                   
                session.setAttribute(Constants.CART_LIST, cartList);                   

                return mapping.findForward(Constants.CART);
            }
}


########################
10. CartInsertAction.java
########################

장바구니에 상품을 담는 Action 입니다.

//============================================================================
/**
  * 시스템명 : goods / 장바구니
  * 작 성 일  : 2005-05-15
  * 작 성 자  : Lee, Jong-Cheol
  * 수 정 자  :
  * 파 일 명  : goods.action.CartInsertAction
  * 버    전  : 1.0
  * 개    요  : 쇼핑카트의 물품 추가 Action
  * 이    력  : 2005-05-15 : 초기 작성
  *     
  */
//============================================================================

package cart.action;

import java.util.ArrayList;

import cart.model.Cart;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.DynaActionForm;

import cart.action.BaseAction;
import cart.model.Constants;


/**
 * @author 이종철
 *
 * TODO To change the template for this generated type comment go to
 * Window - Preferences - Java - Code Style - Code Templates
 */
public class CartInsertAction extends BaseAction{
    public ActionForward cartInsert(ActionMapping mapping,
                                    ActionForm form,
                                    HttpServletRequest request,
                                    HttpServletResponse response)
                    throws Exception {                         
       
                DynaActionForm dForm = (DynaActionForm)form;
                       
                String gName        = dForm.get("gname").toString();               
                String price        = dForm.get("price").toString();
                String cnt          = dForm.get("cnt").toString();
                             
                Cart cart = getCart(request);
                                                                                                                     
                cart.addItem(gName, price, cnt);
               
                ArrayList cartList = (ArrayList)cart.getCartItems();
               
                HttpSession session = request.getSession();
                   
                session.setAttribute(Constants.CART_LIST, cartList);
               
                //return mapping.findForward(Constants.CART);
                //F5를 누르면 장바구니에 계속 담아지므로 URL창에 cart.jsp를 보이기 위해
                //sendRedirecr함
               
                response.sendRedirect("/struts-test/cart-exam/cart.jsp");
               
                return null;
            }
}



############################
11. CartUpdateAction.java
############################

장바구니내 상품의 수량을 수정 하는 Action 입니다.

//============================================================================
/**
  * 시스템명 : goods / 장바구니
  * 작 성 일  : 2005-05-18
  * 작 성 자  : Lee, Jong-Cheol
  * 수 정 자  :
  * 파 일 명  : goods.action.CartUpdateAction
  * 버    전  : 1.0
  * 개    요  : 쇼핑카트 변경 Action
  *         
  * 이    력  : 2005-05-18 : 초기 작성
  *     
  */
//============================================================================


package cart.action;

import java.util.ArrayList;

import cart.model.Cart;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

import cart.action.BaseAction;
import cart.model.Constants;

/**
 * @author 이종철
 *
 * TODO To change the template for this generated type comment go to
 * Window - Preferences - Java - Code Style - Code Templates
 */
public class CartUpdateAction extends BaseAction{
    public ActionForward cartUpdate(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response)
                    throws Exception {
               
            Cart cart = getCart(request);
           
            /* Cart items */
            String itemid = request.getParameter("itemid");
            String newQty = request.getParameter("newQty");
            String next  = request.getParameter("next");

                    cart.updateItems(itemid, newQty);
                   
                    ArrayList cartList = (ArrayList)cart.getCartItems();
               
                HttpSession session = request.getSession();
                   
                session.setAttribute(Constants.CART_LIST, cartList);
       
                return mapping.findForward(Constants.CART);
            }
}



#######################
12. CartDeleteAction.java
#######################

장바구니안의 상품을 삭제하는 Action 입니다.

//============================================================================
/**
  * 시스템명 : goods / 장바구니
  * 작 성 일  : 2005-05-15
  * 작 성 자  : Lee, Jong-Cheol
  * 수 정 자  :
  * 파 일 명  : goods.action.CartDeleteAction
  * 버    전  : 1.0
  * 개    요  : 쇼핑카트의 물품 삭제 Action
  * 이    력  : 2005-05-15 : 초기 작성
  *     
  */
//============================================================================


package cart.action;

import java.util.ArrayList;

import cart.model.Cart;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

import cart.action.BaseAction;
import cart.model.Constants;


/**
 * @author 이종철
 *
 * TODO To change the template for this generated type comment go to
 * Window - Preferences - Java - Code Style - Code Templates
 */
public class CartDeleteAction extends BaseAction{
    public ActionForward cartDelete(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response)
                    throws Exception {
               
            Cart cart = getCart(request);
           
            /* Cart items */
            String itemid = request.getParameter("itemid");
            String next  = request.getParameter("next");
       
                    cart.removeItem(itemid);
                   
                    ArrayList cartList = (ArrayList)cart.getCartItems();
               
                HttpSession session = request.getSession();
                   
                session.setAttribute(Constants.CART_LIST, cartList);
       
                    return mapping.findForward(Constants.CART);
                   
            }
}



########################
13. CartToOrderAction.java
########################

cart.jsp에서 submit 했을때 주분서 화면으로 넘기기 위한 Action 입니다.

본 예제에서는 order.jsp는 제작하지 않았으니 참고 바랍니다.

이 액션을 통해 하나의 JSP에서 다른 JSP로 forward 시키는 것으로 실제 Action은 별일을 하지않고 단지 order.jsp로 forward만 처리 합니다.

//============================================================================
/**
  * 시스템명 : cart / 장바구니
  * 작 성 일  : 2005-05-27
  * 작 성 자  : Lee, Jong-Cheol
  * 수 정 자  :
  * 파 일 명  : cart.action.CartToOrderAction
  * 버    전  : 1.0
  * 개    요  : 쇼핑카트에서 주문서로 넘어가는 Action
  *          특별한 비지니스 로직의 처리는 없으며 order.jsp로 forward 함
  * 이    력  : 2005-05-27 : 초기 작성
  *     
  */
//============================================================================


package cart.action;


import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import cart.model.Constants;
import cart.action.BaseAction;



/**
 * @author 이종철
 *
 * TODO To change the template for this generated type comment go to
 * Window - Preferences - Java - Code Style - Code Templates
 */
public class CartToOrderAction extends BaseAction{
    public ActionForward defaultAction(
                    ActionMapping mapping,
                    ActionForm form,
                    HttpServletRequest request,
                    HttpServletResponse response) throws Exception
            {               
                return mapping.findForward(Constants.ORDER);
            }
}


댓글 없음:

댓글 쓰기