💡 핵심 요약 (TL;DR)
Servlet구매하기3 : 주문목록 및 주문 상세정보 자세히의 동작 원리를 이해하고 실제 프로젝트에 적용하기 위한 실무 가이드다.
* var이름은 해당 페이지에서 사용 할 변수명이다.
OrderFrontController.java의 doProcess()의 주소비교 후 처리부분에 코드 추가
- 구매했던 내역의 정보를 확인하는 페이지를 만들어보자
1 2 3 4 5 6 7
| }else if(command.equals("/OrderList.or")){ System.out.println("C: /OrderList.or 호출"); action = new OrderListAction(); try { forward = action.execute(request, response); } catch (Exception e) { e.printStackTrace(); } }
|
OrderListAction.java 생성
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| public class OrderListAction implements Action {
@Override public ActionForward execute(HttpServletRequest request, HttpServletResponse response) throws Exception { System.out.println("M : OrderListAction의 execute() 호출"); request.setCharacterEncoding("UTF-8"); 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; }
OrderDAO odao = new OrderDAO(); request.setAttribute("orderList", odao.getOrderList(id)); forward.setPath("./goods_order/order_list.jsp"); forward.setRedirect(false); return forward; }
}
|
OrderDAO.java 생성 후 getOrderList()메서드 코드 추가
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
| public List<OrderDTO> getOrderList(String id) { List<OrderDTO> orderList = new ArrayList<OrderDTO>(); try { getCon(); sql="select o_trade_num,o_g_name,o_g_amount,o_g_size,o_g_color," + "sum(o_sum_money) as o_sum_money," + "o_trade_type,o_trans_num,o_date,o_status " + "from itwill_order where o_m_id=? " + "group by o_trade_num " + "order by o_trade_num"; pstmt = con.prepareStatement(sql); pstmt.setString(1, id); rs = pstmt.executeQuery(); while(rs.next()){ OrderDTO odto = new OrderDTO(); odto.setO_trade_num(rs.getString("o_trade_num")); odto.setO_g_name(rs.getString("o_g_name")); odto.setO_g_amount(rs.getInt("o_g_amount")); odto.setO_g_size(rs.getString("o_g_size")); odto.setO_g_color(rs.getString("o_g_color")); odto.setO_sum_money(rs.getInt("o_sum_money")); odto.setO_trade_type(rs.getString("o_trade_type")); odto.setO_trans_num(rs.getString("o_trans_num")); odto.setO_date(rs.getDate("o_date")); odto.setO_status(rs.getInt("o_status"));
orderList.add(odto); } } catch (Exception e) { e.printStackTrace(); }finally { closeDB(); } return orderList; }
|
order_list.jsp 생성 (jsp사용)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62
| <% System.out.println("V : 주문목록 출력페이지"); // OrderListAction에서 전달된 // orderList 정보를 저장사용 List orderList = (List)request.getAttribute("orderList"); %> <table border="1"> <tr> <td>주문번호</td> <td>상품명</td> <td>결재 방법</td> <td>주문금액</td> <td>주문상태</td> <td>주문일시</td> <td>운송장번호</td> </tr> <% for(int i=0;i<orderList.size();i++){ OrderDTO ordto = (OrderDTO)orderList.get(i); %> <tr> <td> <a href="./OrderDetail.or?trade_num=<%=ordto.getO_trade_num() %>"> <%=ordto.getO_trade_num() %> </a> </td> <td><%=ordto.getO_g_name() %></td> <td><%=ordto.getO_trade_type() %></td> <td><%=ordto.getO_sum_money() %></td> <% // 주문상태 // 0 - "대기중" // 1 - "발송준비" // 2 - "발송완료" // 3 - "배송중" // 4 - "배송완료" // 5 - "주문취소" String status=""; switch(ordto.getO_status()){ case 0: status="대기중"; break; case 1: status="발송준비"; break; case 2: status="발송완료"; break; case 3: status="배송중"; break; case 4: status="배송완료"; break; case 5: status="주문취소"; break; default: status="관리자 문의"; } %> <td><%=status %></td> <td><%=ordto.getO_date() %></td> <td><%=ordto.getO_trans_num() %></td> </tr> <%} %> </table> <h2><a href="./Main.me"> 메인페이지 </a></h2>
|
order_list.jsp 생성 (EL표현식사용)
<c:forEach var="orderList" items="${orderList}"> 사용시 주의사항
- var이름은 해당 페이지에서 사용 할 변수명이다.
- items는 request.setAttribute객체로 담아온 이름을 써야한다.
- EL같은 경우 DecimalFormat 클래스가 대신 fmt:formatNumber태그를 이용하여 쉽게 천의 단위로 포맷팅할 수 있다.
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> 임포트해줘야한다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
| <% System.out.println("V : 주문목록 출력페이지"); // OrderListAction에서 전달된 // orderList 정보를 저장사용 - EL표현식사용하려면 아래 코드없이 바로 사용가능 // List orderList =(List)request.getAttribute("orderList"); %> <table border="1"> <tr> <th>주문번호</th> <th>상품명</th> <th>결제 방법</th> <th>주문금액</th> <th>주문상태</th> <th>주문일시</th> <th>운송장번호</th> </tr> <c:forEach var="orderList" items="${orderList}"> <tr> <td><a href="./OrderDetail.or?trade_num=${orderList.o_trade_num }">${orderList.o_trade_num }</a></td> <td>${orderList.o_g_name }</td> <td>${orderList.o_trade_type }</td> <td><fmt:formatNumber value="${orderList.o_sum_money }" pattern="#,###원" /></td> <td> <c:choose> <c:when test="${orderList.o_status == 0}"> <b><font color="blue">대기중</font></b> </c:when> <c:when test="${orderList.o_status == 1}"> <b>발송준비</b> </c:when> <c:when test="${orderList.o_status == 2}"> <b>발송완료</b> </c:when> <c:when test="${orderList.o_status == 3}"> <b><font color="red">배송중</font></b> </c:when> <c:when test="${orderList.o_status == 4}"> <b><font color="green">배송완료</font></b> </c:when> <c:when test="${orderList.o_status == 5}"> <b>주문취소</b> </c:when> <c:otherwise> <b>관리자에게 문의하세요</b> </c:otherwise> </c:choose> </td> <td>${orderList.o_date }</td> <td>${orderList.o_trans_num }</td> </tr> </c:forEach> </table> <input type="button" class="btn" value="메인페이지로" onclick="location.href='./Main.me'">
|
#TILITWILL(JAVA)