카테고리 없음

1111 JSP - (funweb) 장바구니 상품 구매하기

jeoniee 2022. 11. 11. 12:14
728x90
반응형

 

basket_list
<div id="table_search"></div>
    <input type="button" value="구매하기" class="btn"
     onclick="location.href='./OrderStart.or';">

     <input type="button" value="쇼핑 계속 하기" class="btn"
     onclick="location.href='./GoodsList.go';">

 

 

 

goods_buy
<h1>상품 구매하기</h1>
    <!-- table 위에 form 태그..?  -->
    <form action="./OrderAddAction.or" method="post">
    <table id="notice">
     <tr>
        <th class="ttitle" colspan="8">
        <h3>주문상세내역</h3>
        </th>

    </tr>
        <tr>
            <th class="tno">번호</th>
            <th class="ttitle">이미지</th>
            <th class="twrite">상품명</th>
            <th class="tdate">가격</th>
            <th class="tdate">수량</th>
            <th class="tdate">색상</th>
            <th class="tdate">크기</th>
            <th class="tdate">관리</th>
        </tr>
        <!--  index 는 size -1인 개념을 활용 -->		
     <c:forEach var="i" begin="1" end="${basketList.size()-1 }">
       <c:set var="bk" value="${basketList[i] }"/>
       <c:set var="goods" value="${goodsList[i] }"/>
          <tr>
             <td class="tread">${bk.b_num }</td>
             <td class="tread">\
                <img src="./upload/${goods.image.split(',')[0] }" 
                   width="60" height="60">   
             </td>
             <td class="tread">상품명</td>
             <td class="tread">가격</td>
             <td class="tread">${bk.b_g_amount }</td>
             <td class="tread">${bk.b_g_color }</td>
             <td class="tread">${bk.b_g_size }</td>
             <td class="tread">
                <a href="./BasketDeleteAction.ba?b_num=${bk.b_num}">삭제</a>
             </td>
          </tr>
    </c:forEach>


        <tr>
            <th class="ttitle" colspan="8">
                <h2>주문자정보</h2>
            </th>
        </tr>

        <tr>
            <td colspan="8">
            <h3>이름 : ${memberDTO.name } </h3>
            </td>
        </tr>
        <tr>
            <td colspan="8">
            <h3>전화번호 : ${memberDTO.tel }</h3>
            </td>
        </tr>
        <tr>
            <td colspan="8">
            <h3>이메일 :${memberDTO.email } </h3>
            </td>
        </tr>

        <tr>
            <th class="ttitle" colspan="8">
                <h2>배송지 정보</h2>   <!-- db에 들어갈 정보들  -->
            </th>
        </tr>
            <tr>
                <td colspan="8">
                <h3>받는사람 : <input type="text" name="o_r_name" value="${memberDTO.name }"></h3>
                </td>
            </tr>

            <tr>
                <td colspan="8">
                <h3>연락처 : <input type="text" name="o_r_phone" value="${memberDTO.tel }"></h3>
                </td>
            </tr>

            <tr>
                <td colspan="8">
                <h3> 배송지 주소 : <input type="text" name="o_r_addr" value="${memberDTO.addr }"></h3>
                </td>
            </tr>

            <tr>
                <td colspan="8">
                <h3> 배송지 상세 주소 : <input type="text" name="o_r_addr2"></h3>
                </td>
            </tr>

            <tr>
                <td colspan="8">
                <h3> 메세지 : <input type="text" name="o_r_msg"></h3>
                </td>
            </tr>
        <tr>
            <th class="ttitle" colspan="8">
                <h2>결제 정보</h2>
            </th>
        </tr>

        <tr>
            <td colspan="2">
                 <input type="radio" name="o_t_type" value="온라인입금">온라인 입금<br>
                 입금자명<input type="text" name="o_t_payer" value="${memberDTO.name }">

            </td>
            <td colspan="2">
            <input type="radio" name="o_r_msg" value="신카"> 신카

            </td>
            <td colspan="2">
             <input type="radio" name="o_r_msg" value="네페">네페

            </td>
            <td colspan="2">
             <input type="radio" name="o_r_msg" value="카페">카페

            </td>
        </tr>

    </table>

    <div id="table_search">
        <input type="submit" value="주문하기" class="btn">

         <input type="reset" value="취소" class="btn">
         </div>
         </form>

 

 

 

OrderFrontController
public class OrderFrontController extends HttpServlet {
	
	
	protected void doProcess(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		System.out.println(" C : doProcess() 호출");

		// 1 가상주소 계산
		String requestURI = request.getRequestURI();
		System.out.println(" C : requestURI : " + requestURI);
		String ctxPath = request.getContextPath();
		System.out.println(" C : ctxPath : " + ctxPath);
		String command = requestURI.substring(ctxPath.length());
		System.out.println(" C : command : " + command);

		System.out.println(" C : 1. 가상주소 계산 끝 \n");

		Action action = null;
		ActionForward forward = null;
		
		// 2 가상주소 매핑(패턴 1,2,3)
		if(command.equals("/OrderStart.or")) {
			System.out.println(" C : /OrderStart.or 호출");
			//유저 정보기입 패턴1(정보받는거없음) ,  정보 보여주는건 패턴2, 정보 받아서 출력까지 패턴3(정보받음->view 출력)
			System.out.println(" C : [패턴3] ");
			
			//OrderStartAction()
			action = new OrderStartAction();
			try {
				forward = action.execute(request, response);
			} catch (Exception e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		else if(command.equals("/OrderAddAction.or")) {
			System.out.println(" C : /OrderAddAction.or 호출");
			System.out.println(" C : [패턴2] list 로 움직이기 ");
			
			//OrderAddAction()
			action = new OrderAddAction();
			try {
				forward = action.execute(request, response);
			} catch (Exception e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		
		System.out.println(" C : 2. 가상주소 매핑 끝 \n");

		// 3 페이지 이동
		if (forward != null) { // 이동정보가 있을때 (티켓이 있을때)

			if (forward.isRedirect() == true) { // true
				System.out.println(" C : sendRedirect() : " + forward.getPath());
				response.sendRedirect(forward.getPath());

			} else { // false
				System.out.println(" C : forward() : " + forward.getPath());

				RequestDispatcher dis = request.getRequestDispatcher(forward.getPath());
				dis.forward(request, response);
			}

		}

		System.out.println(" C : 3. 페이지 이동 끝 \n");

	}

	@Override
	protected void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		System.out.println(" C : doGet() 호출");
		doProcess(request, response);
	}

	@Override
	protected void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		System.out.println(" C : doPost() 호출");
		doProcess(request, response);
	}
	
	

}

 

 

 

OrderStartAction
public class OrderStartAction implements Action {

	@Override
	public ActionForward execute(HttpServletRequest request, HttpServletResponse response) throws Exception {
		System.out.println("M : OrderStartAction_execute()");
		
		//사용자 정보를 확인-> (세션제어)
		HttpSession session = request.getSession();
		String id = (String)session.getAttribute("id");
		
		ActionForward forward = new ActionForward();
		if(id == null) {
			forward.setPath("./MemberLogin.me");
			forward.setRedirect(true);
			return forward;
		}
		//구매 정보 확인 (장바구니 정보)
		BasketDAO bkDAO = new BasketDAO();
		
		//장바구니 list 보는거 
		Vector totalList = bkDAO.getBasketList(id); //
		ArrayList basketList = (ArrayList) totalList.get(0); //totlList에서 제일 첫번쨰 
		ArrayList goodsList = (ArrayList) totalList.get(1);
		
		//사용자 정보 (user) - itwill_member테이블에 잇음 
		MemberDAO mDAO = new MemberDAO();
		MemberDTO memberDTO = mDAO.getMember(id); //뷰페이지넘기자
		
		
		//저장해서 view출력-> view 페이지 만들기
		request.setAttribute("basketList", basketList);
		request.setAttribute("goodsList", goodsList);
		request.setAttribute("memberDTO", memberDTO);
		
		//./order/goods_buy.jsp (페이지 이동)
		forward.setPath("./order/goods_buy.jsp");
		forward.setRedirect(false);
		
		return forward;
	}

}

 

 

 

Workbench 테이블 만들기
itwill_order

 

 

 

 

 

OrderDTO
package com.itwillbs.order.db;

import java.sql.Timestamp;

import lombok.Data;

@Data
public class OrderDTO {
	private int o_num;
	private String o_trade_num;

	private int o_g_num;
	private String o_g_name;
	private int o_g_amount;
	private String o_g_size;
	private String o_g_color;
	private String o_m_id;
	
	private String o_r_name;
	private String o_r_phone;
	private String o_r_addr1;
	private String o_r_addr2;
	private String o_r_msg;
	
	private int o_sum_money;
	private String o_trade_type;
	private String o_trade_payer;

	private Timestamp o_trade_date;
	private String o_trans_num;
	
	private Timestamp o_date;
	
	private int o_status;
	
}

 

 

 

OrderAddAction
public class OrderAddAction implements Action {

	@Override
	public ActionForward execute(HttpServletRequest request, HttpServletResponse response) throws Exception {
		System.out.println(" M :  OrderAddAction_execute() ");
		
		// 세션제어(로그인체크)
		HttpSession session = request.getSession();
		String id = (String)session.getAttribute("id");
		
		ActionForward forward = new ActionForward();
		if(id == null) {
			forward.setPath("./MemberLogin.me");
			forward.setRedirect(true);
			return forward;
		}
		// 한글처리(생략)
		
		//Thread는 작업단위 < Process (이클립스같은) - 멀티스레딩이 존재함 
		
		// 전달 된 주문 정보 (배송지 + 결제)
		
		// 	주문 상품 정보 (장바구니 + 상품정보)
		
		// 결제 호출 (JAVA 코드)
		
		// 주문 정보 저장 
		
		// 메일, 문자 전송 
		new Thread(new Runnable() {
			public void run() {
				
				//(메일 보내기 전)일종의 텀 만들고 출력을 제어하기 위한 동작
				for(long i=0;i<100000000L;i++);
				System.out.println("메일 전송 완료");
			}
			
		}).start();
		
		System.out.println("주문정보 저장완료");
		// 상품 개수 수정 (판매량)
		
		// 장바구니 정보 삭제 
		
		// 페이지 이동
		return null;
	}

}
728x90
반응형