Servlet구매하기4 : 주문 상세정보페이지

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;
}

// 주문번호 (trade_num) 저장(파라미터)
String trade_num = request.getParameter("trade_num");

// DAO - 주문번호에 해당하는 정보 전부 가져오기
OrderDAO odao = new OrderDAO();
request.setAttribute("orderDetailList", odao.getOrderDetail(trade_num));

// 페이지 이동("./goods_order/order_detail.jsp")
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;
}//end of getOrderDetail()




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'">