Servlet구매하기3 : 주문목록 및 주문 상세정보 자세히

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 + 전달된 정보를 저장
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;
}//end of getOrderList()




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