cart.jsp(장바구니 보기 화면)에서 사용자가 주문하기를 누르면(submit) 주문화면으로 이동하게
되는데 이때 호출되는 Action은 CartToOrderAction 입니다.
오라클자바커뮤니티에서 설립한 오엔제이프로그래밍 실무교육센터
(오라클SQL, 튜닝, 힌트,자바프레임워크, 안드로이드, 아이폰, 닷넷 실무전문 강의)
이 액션이 별다르게 하는 일은 없으며 단지 cart.jsp에서 order.jsp로 제어를 넘기는 (forward 하는) 행위만 처리 합니다.
이때 cart.jsp에서 히든 값으로 fwd라는 이름으로 order를 값으로 넘기면 BaseAction이 이를 받아 order.jsp로 넘기는 forward를 처리 합니다.
아래는 CartToOrderAction 입니다.
================================
================================
CartToOrderAction.java
================================
================================
//============================================================================
/**
* 시스템명 : goods / 장바구니
* 작 성 일 : 2005-05-27
* 작 성 자 : Lee, Jong-Cheol
* 수 정 자 :
* 파 일 명 : goods.action.CartToOrderAction
* 버 전 : 1.0
* 개 요 : 쇼핑카트에서 주문서로 넘어가는 Action
* 특별한 비지니스 로직의 처리는 없으며 order.jsp로 forward 함
* 이 력 : 2005-05-27 : 초기 작성
*
*/
//============================================================================
package goods.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 yfarm.Constants;
import yfarm.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);
}
}
================================
================================
아래는 order.jsp 입니다.
================================
================================
다중배송지의 처리는 구현되지 않았으며 단일 배송처리를 위한 화면 입니다.
(로그인 하지 않은 비회원 구매는 가능하도록 처리 했습니다.)
장바구니의 내용, 포인트 정보, 주문자 정보, 무통장입근일 경우의 정보등이 화면에 나타나며 "주문하기" 버튼을 누르면 최종적으로 주문서의내용을 확인하는 "주분서 확인" 화면이 나타납니다.
<!--================================================================================-->
<%
/**
* 시스템명 : goods > 주문화면
* 작 성 일 : 2005-05-17
* 작 성 자 : Lee, Jong-Cheol
* 수 정 자 :
* 파 일 명 : /goods/order.jsp
* 버 전 : 1.0
* 개 요 : 주문화면(장바구니의 다음화면, 구매하기를 누르면 나타남)
* 이 력 : 2005-05-17 : 초기 작성
*
*/
%>
<!--================================================================================-->
<%@ page import="oraclejava.Constants,
goods.model.*,
java.util.ArrayList,
java.util.Iterator,
oraclejava.Constants
"%>
<%@ page contentType="text/html;charset=euc-kr" %>
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
<%@ taglib prefix="c_rt" uri="http://java.sun.com/jstl/core_rt" %>
<%@ taglib uri="http://java.sun.com/jstl/fmt" prefix="fmt" %>
<%@ taglib uri="/WEB-INF/login_tld/app.tld" prefix="loginChk" %>
<!------------------------------------------------------------------------------------>
<!-- 장바구니에 데이터 없으면 이전 페이지로 보냄 -->
<!------------------------------------------------------------------------------------>
<c:if test="${cart.count == 0 or empty cart}">
<script>
alert("주문하실 상품이 없습니다.");
location.href="/oraclejava/index.jsp";
</script>
</c:if>
<!------------------------------------------------------------------------------------>
<!------------------------------------------------------------------------------------>
<!-- top page include -->
<!------------------------------------------------------------------------------------>
<jsp:include page="/top.jsp"/>
<!------------------------------------------------------------------------------------>
<!------------------------------------------------------------------------------------>
<!-- 주문하기전 Data Check -->
<!------------------------------------------------------------------------------------>
<script>
function chkData() {
//------------------------------------------- 주문자
if (document.orderForm.name1.value == "") {
alert("주문자의 성명은 필수 입력 항목 입니다.");
return;
}
if (document.orderForm.tel11.value == "" ||
document.orderForm.tel21.value == "" ||
document.orderForm.tel31.value == "") {
if (document.orderForm.hp11.value == "" ||
document.orderForm.hp21.value == "" ||
document.orderForm.hp31.value == "") {
alert("주문자의 휴대 전화번호 또는 전화번호 둘 중 하나는 입력되어야 합니다.");
return;
}
}
if (document.orderForm.zip_seq1.value == "" ||
document.orderForm.addr11.value == "" ||
document.orderForm.addr21.value == "" ||
document.orderForm.addr31.value == "" ) {
alert("주문자 주소 정보가 부적절 합니다.");
return;
}
//------------------------------------------- 받는 사람
if (document.orderForm.name2.value == "") {
alert("받는이의 성명은 필수 입력 항목 입니다.");
return;
}
if (document.orderForm.tel12.value == "" ||
document.orderForm.tel22.value == "" ||
document.orderForm.tel32.value == "") {
if (document.orderForm.hp12.value == "" ||
document.orderForm.hp22.value == "" ||
document.orderForm.hp32.value == "") {
alert("받는이의 휴대 전화번호 또는 전화번호 둘 중 하나는 입력되어야 합니다.");
return;
}
}
if (document.orderForm.zip_seq2.value == "" ||
document.orderForm.addr12.value == "" ||
document.orderForm.addr22.value == "" ||
document.orderForm.addr32.value == "" ) {
alert("받는이 주소 정보가 부적절 합니다.");
return;
}
//주문자 전화번호 길이 확인
if (document.orderForm.tel11.value.length > 4 ||
document.orderForm.tel21.value.length > 4 ||
document.orderForm.tel31.value.length > 4 ) {
alert("주문자 전화번호는 4글자를 넘을수 없습니다.");
return;
}
//받는 사람 전화번호 길이 확인
if (document.orderForm.tel12.value.length > 4 ||
document.orderForm.tel22.value.length > 4 ||
document.orderForm.tel32.value.length > 4 ) {
alert("받는 사람 전화번호는 4글자를 넘을수 없습니다.");
return;
}
//주문자 핸드폰번호 길이 확인
if (document.orderForm.hp11.value.length > 4 ||
document.orderForm.hp21.value.length > 4 ||
document.orderForm.hp31.value.length > 4 ) {
alert("주문자 핸드폰 전화번호는 4글자를 넘을수 없습니다.");
return;
}
//주문자 핸드폰번호 길이 확인
if (document.orderForm.hp12.value.length > 4 ||
document.orderForm.hp22.value.length > 4 ||
document.orderForm.hp32.value.length > 4 ) {
alert("받는사람 핸드폰 전화번호는 4글자를 넘을수 없습니다.");
return;
}
if (document.orderForm.payMethod.value == "fromBankAccount") {
if (document.orderForm.mu_name.value == "") {
alert("무통장 입금의 경우 입금자 성명을 기재하셔야 합니다.");
return;
}
}
document.orderForm.submit();
}
</script>
<!------------------------------------------------------------------------------------>
<!-- 상품 삭제 확인 -->
<!------------------------------------------------------------------------------------>
<script language="javascript">
function deleteChk(itemid, gname)
{
vn_con = confirm(gname + '상품을 삭제 하시겠습니까?');
if ( vn_con == true )
{
location.href="/oraclejava/CartDelete.do?run=cartDelete&next=order&itemid="+itemid;
}
}
</script>
<!------------------------------------------------------------------------------------>
<!------------------------------------------------------------------------------------>
<!-------------------- 주문자와 받는 사람이 동일하다고 체크하는 경우---------------------------->
<!------------------------------------------------------------------------------------>
<script>
function openOldBaesongji() {
window.open('/oraclejava/OldBaesongji.do?run=findOldBaesongji', 'Open', 'resizable=no,status=no,scrollbars=yes,top=100,left=60,width=900,height=400');
}
</script>
<!------------------------------------------------------------------------------------>
<!-------------------- 주문자와 받는 사람이 동일하다고 체크하는 경우---------------------------->
<!------------------------------------------------------------------------------------>
<script>
function same() {
//배송지가 주문자의 주소와 동일한 경우
if (document.orderForm.chkSame.checked) {
//성명
document.orderForm.name2.value=document.orderForm.name1.value;
//전화번호
document.orderForm.tel12.value=document.orderForm.tel11.value;
document.orderForm.tel22.value=document.orderForm.tel21.value;
document.orderForm.tel32.value=document.orderForm.tel31.value;
//핸드폰 번호
document.orderForm.hp12.value=document.orderForm.hp11.value;
document.orderForm.hp22.value=document.orderForm.hp21.value;
document.orderForm.hp32.value=document.orderForm.hp31.value;
//주소
document.orderForm.addr12.value=document.orderForm.addr11.value; //우편번호
document.orderForm.addr22.value=document.orderForm.addr21.value; //본주소
document.orderForm.addr32.value=document.orderForm.addr31.value; //세부주소
document.orderForm.zip_seq2.value=document.orderForm.zip_seq1.value; //세부주소
}
else {
//성명
document.orderForm.name2.value="";
//전화번호
document.orderForm.tel12.value="";
document.orderForm.tel22.value="";
document.orderForm.tel32.value="";
//핸드폰 번호
document.orderForm.hp12.value="";
document.orderForm.hp22.value="";
document.orderForm.hp32.value="";
//주소
document.orderForm.addr12.value=""; //우편번호
document.orderForm.addr22.value=""; //본주소
document.orderForm.addr32.value=""; //세부주소
document.orderForm.zip_seq2.value=""; //주소 코드
}
}
</script>
<!------------------------------------------------------------------------------------>
<!------------------------ POINT를 입력시 가용 포인트를 넘는지 확인 --------------------------->
<script>
function chkPoint() {
if (parseInt(document.orderForm.point_use_amount.value) > parseInt(document.orderForm.p_total.value)) {
alert("가용 포인트를 초과 할 수 없습니다...");
return false;
}
if (parseInt(document.orderForm.point_use_amount.value) < 100) {
alert("포인트 사용은 100포인트 이상만 가능 합니다...");
return false;
}
return true;
}
</script>
<!------------------------------------------------------------------------------------>
<!-------------------------------- 결재 버튼을 누르는 경우 --------------------------------->
<!--
<script>
function goOrderConfirm() {
location.href = "/oraclejava/goods/orderconfirm.jsp";
}
</script>
-->
<!------------------------------------------------------------------------------------>
<!---------------------------- 우편번호 검색 버튼을 누르는 경우 ------------------------------>
<script>
function openZip(gubn) {
//아래 구분은 주문자정보에서 넘어 오는지 배송지 정보에서 요청이 오는지를 구분함
window.open("/oraclejava/goods/zip.jsp?gubn="+gubn,"우편번호검색","scrollbars=yes, width=550, height=300, resizable=yes, menubar=no, top=150, left=260");
}
</script>
<!------------------------------------------------------------------------------------>
<!------------------- 무통장 입금을 누르는 경우 계좌를 선택할 수 있는 화면 Display ---------------->
<script>
function BankAccountDisplay(payMethod) {
for(var i = 0; i < document.orderForm.payMethod.length; i++) {
//신용카드 결재인 경우
if (payMethod.value == "fromCard") {
document.all.BankAccount.style.display="none";
}
//무통장 입금인 경우
else {
document.all.BankAccount.style.display="";
}
}
}
</script>
<!------------------------------------------------------------------------------------>
<!------------------------------- 단일/다중 배송지를 클릭하는 경우 --------------------------->
<script>
function selectBaesongji(baesongji) {
if (baesongji.value == "single") {
document.all.singleBaesongji.style.display="";
}
else {
document.all.singleBaesongji.style.display="none";
}
}
</script>
<!------------------------------------------------------------------------------------>
<!------------------------------------------------------------------------------------>
<!-- 상품 수량 UPDATE, 수량 Validation Check -->
<!------------------------------------------------------------------------------------>
<script language="javascript">
function up (inx, cnt)
{
if (cnt == 1)
{
document.orderForm.cnt.value = parseInt (document.orderForm.cnt.value) + 1;
}
else
{
document.orderForm.cnt[inx].value = parseInt (document.orderForm.cnt[inx].value) + 1;
}
}
function down (inx, cnt)
{
if (cnt == 1)
{
if (parseInt(document.orderForm.cnt.value) < 2)
return;
else
document.orderForm.cnt.value = parseInt (document.orderForm.cnt.value) - 1;
}
else
{
if (parseInt(document.orderForm.cnt[inx].value) < 2)
return;
else
document.orderForm.cnt[inx].value = parseInt (document.orderForm.cnt[inx].value) - 1;
}
}
</script>
<!------------------------------------------------------------------------------------>
<table width="927" height="38" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
<td width="843">
<table width="843" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
<td valign="top">
<!--레프트메뉴 시작-->
<!--레프트메뉴 끝-->
<!--left banner시작-->
<!--left banner끝-->
<!--================================================================================-->
<!--================================================================================-->
<!--================================================================================-->
<!-- -->
<!-- 1. 장바구니의 내용 Display -->
<!-- -->
<!--================================================================================-->
<!--================================================================================-->
<!--================================================================================-->
<!------------------------------------------------------------------------------------>
<html:form action="/OrderConfirm.do" method="post">
<!------------------------------------------------------------------------------------>
<!--------- 비회원 주문 여부 ----------->
<c:if test="${empty user}">
<input type="hidden" name="is_bihoiwon" value="Y">
</c:if>
<c:if test="${!empty user}">
<input type="hidden" name="is_bihoiwon" value="N">
</c:if>
<input type="hidden" name="p_total" value='<c:out value="${sessionScope.user.p_total}"/>'>
<input type="hidden" name="run" value="orderConfirm">
<!--------- 로그인 아이디(사용자 id) ------------>
<input type="hidden" name="user_id" value='<c:out value="${sessionScope.user.id}"/>'/>
<table width="927" border="0" align="center" cellpadding="0" cellspacing="0">
<td width="843">
<!--바디시작-->
<table width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<td height="28">
<table width="843" height="28" border="0" cellpadding="0" cellspacing="0">
<tr>
<td width="27" bgcolor="#FFFFFF"><img src="/oraclejava/images/common/depth_icon.gif" width="27" height="28"></td>
<td width="809" background="/oraclejava/images/common/depth_bg.gif" bgcolor="#FFFFFF">Home > 마이페이지 > 장바구니 </td>
<td width="6" bgcolor="#FFFFFF"><img src="/oraclejava/images/common/depth_right.gif" width="6" height="28"></td>
</tr>
</table>
</td>
</tr>
<tr>
<td height="82" align="center" valign="top" background="/oraclejava/goods/images/shoping_topbg.gif">
<table width="800" height="75" border="0" cellpadding="0" cellspacing="0">
<tr>
<td width="357" valign="bottom">
<img src="/oraclejava/goods/images/shoping_subject02.gif" width="128" height="25" vspace="5">
</td>
<td width="465" align="right" valign="bottom">
<img src="/oraclejava/goods/images/shoping_topicon01.gif" width="97" height="66">
<img src="/oraclejava/goods/images/shoping_topicon02over.gif" width="104" height="66">
<img src="/oraclejava/goods/images/shoping_topicon03.gif" width="113" height="66">
<img src="/oraclejava/goods/images/shoping_topicon04.gif" width="97" height="66">
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td valign="top">
<table width="790" height="46" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
<td valign="bottom"><img src="/oraclejava/goods/images/oder_subject01.gif" width="81" height="15" vspace="3"></td>
</tr>
</table>
<table width="790" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
<td width="2" height="26" align="left" valign="top" background="/oraclejava/goods/images/board_topbg.gif"><img src="/oraclejava/goods/images/board_lefti.gif" width="2" height="26"></td>
<td width="390" height="26" align="center" valign="bottom" background="/oraclejava/goods/images/board_topbg.gif"><img src="/oraclejava/goods/images/board_subject01.gif" width="30" height="17"></td>
<td width="1" align="center" valign="bottom" background="/oraclejava/goods/images/board_topbg.gif"><img src="/oraclejava/goods/images/board_topline.gif" width="1" height="9"> </td>
<td width="120" align="center" valign="bottom" background="/oraclejava/goods/images/board_topbg.gif"><img src="/oraclejava/goods/images/board_subject02.gif" width="31" height="17"></td>
<td width="1" align="center" valign="bottom" background="/oraclejava/goods/images/board_topbg.gif"><img src="/oraclejava/goods/images/board_topline.gif" width="1" height="9"></td>
<td width="120" align="center" valign="bottom" background="/oraclejava/goods/images/board_topbg.gif"><img src="/oraclejava/goods/images/board_subject03.gif" width="20" height="17"></td>
<td width="1" align="center" valign="bottom" background="/oraclejava/goods/images/board_topbg.gif"><img src="/oraclejava/goods/images/board_topline.gif" width="1" height="9"></td>
<td width="120" align="center" valign="bottom" background="/oraclejava/goods/images/board_topbg.gif"><img src="/oraclejava/goods/images/board_subject04.gif" width="20" height="17"></td>
<td width="1" align="center" valign="bottom" background="/oraclejava/goods/images/board_topbg.gif"><img src="/oraclejava/goods/images/board_topline.gif" width="1" height="9"></td>
<td width="42" align="center" valign="bottom" background="/oraclejava/goods/images/board_topbg.gif"><img src="/oraclejava/goods/images/board_subject05.gif" width="19" height="17"></td>
<td width="2" align="right" valign="top" background="/oraclejava/goods/images/board_topbg.gif"><img src="/oraclejava/goods/images/board_righti.gif" width="2" height="24"></td>
</tr>
<tr>
<td colspan="11" valign="top">
<!--상품등록 게시판시작-->
<table width="790" border="0" cellpadding="0" cellspacing="0">
<!-- 택배비는 받는 것으로 set -->
<c:set var="is_taekbae_price_inc" value="Y"/>
<!-- 장바구니내의 상품 개수 --->
<%
oraclejava.BaseAction b = new oraclejava.BaseAction();
Cart cart = b.getCart(request);
int cnt = cart.getCount();
%>
<c_rt:set var="cnt" value="<%=new Integer(cnt)%>"/>
<!-- ################################################################### -->
<!-- 장바구니의 상품이 있는 동안 반복 -->
<!-- ################################################################### -->
<c:set var="discount_amt" value="0"/>
<c:forEach items="${sessionScope.cartlist}" var="item">
<!-- ################################################################### -->
<!---------------------------------------------------------------------------------------->
<!-- 택배비 할인 상품인지 확인 -->
<!---------------------------------------------------------------------------------------->
<c:if test="${item.is_taekbae_discount == 'Y'}">
<c:set var="is_taekbae_discount" value="Y"/>
</c:if>
<!---------------------------------------------------------------------------------------->
<!---------------------------------------------------------------------------------------->
<!-- 택배비 포함 상품인지 확인 -->
<!---------------------------------------------------------------------------------------->
<c:if test="${is_taekbae_price_inc == 'Y'}">
<c:if test="${item.is_taekbae_price_inc == 'N'}">
<c:set var="is_taekbae_price_inc" value="N"/>
</c:if>
</c:if>
<!---------------------------------------------------------------------------------------->
<!---------------------------------------------------------------------------------------->
<!-- 카운트용 변수 Setting -->
<!---------------------------------------------------------------------------------------->
<c:if test="${not empty count}">
<c:set var="count" value="${count+1}"/>
</c:if>
<c:if test="${empty count}">
<c:set var="count" value="1"/>
</c:if>
<!---------------------------------------------------------------------------------------->
<tr>
<td width="56" height="47">
<p>
<img src='/oraclejava/webmaster/mgoods/upload/<c:out value="${item.image_path3}"/>' height="42" align="absmiddle">
</p>
</td>
<td width="336" class="productname">
<c:out value="${item.gname}"/>(<c:out value="${item.default_cnt}"/> <c:out value="${item.unit}"/>)
<c:if test="${!empty item.gname2}">
- <c:out value="${item.gname2}"/>
</c:if>
</td>
댓글 없음:
댓글 쓰기