카테고리 없음
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
반응형