💡 핵심 요약 (TL;DR)
Servlet구매하기4 : 주문 상세정보페이지의 동작 원리를 이해하고 실제 프로젝트에 적용하기 위한 실무 가이드다.
* var이름은 해당 페이지에서 사용 할 변수명이다.
OrderFrontController.java의 doProcess()의 주소비교 후 처리부분에 코드 추가
- 구매했던 내역의 정보를 상세히 확인하는 페이지를 만들어보자
1 2 3 4 5 6 7
| }else if(command.equals("/OrderDetail.or")){ System.out.println("C: /OrderDetail.or 호출"); action = new OrderDetailAction(); try { forward = action.execute(request, response); } catch (Exception e) { e.printStackTrace(); } }
|
OrderDetailAction.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 31 32
| public class OrderDetailAction implements Action {
@Override public ActionForward execute(HttpServletRequest request, HttpServletResponse response) throws Exception { System.out.println("M : OrderDetailAction의 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; }
String trade_num = request.getParameter("trade_num"); OrderDAO odao = new OrderDAO(); request.setAttribute("orderDetailList", odao.getOrderDetail(trade_num)); forward.setPath("./goods_order/order_detail.jsp"); forward.setRedirect(false); return forward; } }
|
OrderDAO.java 생성 후 getOrderDetail()메서드 코드 추가
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
| public List<OrderDTO> getOrderDetail(String trade_num) { List<OrderDTO> orderDetailList = new ArrayList<OrderDTO>(); try { getCon(); sql="select * from itwill_order wehre o_trade_num=?"; pstmt = con.prepareStatement(sql); pstmt.setString(1, trade_num); 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"));
orderDetailList.add(odto); } } catch (Exception e) { System.out.println("getOrderDetail() 여기서 오류발생"); e.printStackTrace(); } finally { closeDB(); } return orderDetailList; }
|
order_detail.jsp 생성 (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 31 32 33 34 35 36
| <% //저장 //request.setAttribute("orderDetailList", ordao.getOrderDetail(trade_num)); List<OrderDTO> orderDetailList = (List<OrderDTO>)request.getAttribute("orderDetailList"); %>
<table border="1"> <tr> <td>상품명</td> <td>상품크기</td> <td>상품색상</td> <td>주문개수</td> <td>주문금액</td> </tr> <% int total =0; for(OrderDTO ordto :orderDetailList){ total += ordto.getO_sum_money(); // total = total + ordto.getO_sum_money(); %> <tr> <td><%=ordto.getO_g_name() %></td> <td><%=ordto.getO_g_size() %></td> <td><%=ordto.getO_g_color() %></td> <td><%=ordto.getO_g_amount() %></td> <td><%=ordto.getO_sum_money() %></td> </tr> <%} %> <tr> <td colspan="5"> 총 주문 금액 : <%=total %> 원</td> </tr> </table>
<a href="./Main.me">메인페이지</a> <a href="./GoodsList.go">계속 구매하기</a>
|
order_detail.jsp 생성 (EL표현식사용)
<c:forEach var="i" items="${orderDetailList}"> 사용시 주의사항
- var이름은 해당 페이지에서 사용 할 변수명이다.
- items는 request.setAttribute객체로 담아온 이름을 써야한다.
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
| <% System.out.println("V : 주문목록상세 출력페이지"); %> <table border="1"> <tr> <th>상품명</th> <th>상품사이즈</th> <th>상품색상</th> <th>주문개수</th> <th>주문금액</th> </tr> <c:forEach var="i" items="${orderDetailList }"> <tr> <td>${i.o_g_name}</td> <td>${i.o_g_size }</td> <td>${i.o_g_color }</td> <td>${i.o_g_amount }</td> <td>${i.o_sum_money }</td> </tr> </c:forEach> <tr> <td colspan="5"> 총 주문 금액 : <c:set var="total" value="0"/> <c:forEach var="list" items="${orderDetailList }"> <c:set var="total" value="${total + list.o_sum_money }" /> </c:forEach> ${total }원 </td> </tr> </table> <input type="button" class="btn" value="메인페이지로" onclick="location.href='./Main.me'"> <input type="button" class="btn" value="계속 구매하기" onclick="location.href='./GoodsList.go'">
|
#TILITWILL(JAVA)