Servlet관리자용주문목록3 : 고객주문목록에서 주문 상태 및 운송장정보 변경
주문상태,운송장번호 수정 시나리오
- 페이지 요청 : /AdminOrderDetail.ao?trade_num=20200917-1
- 주문상태, 운송장 번호 입력
- 주문번호 저장해서 이동 (hidden)
- ‘수정하기’ 버튼 클릭 -> submit
- 수정할 페이지 이동 (+ 가상주소)
- 주문상태, 운송장번호, 주문번호
- 컨트롤러 -> Action -> DAO
- DAO 이동시 (주문상태, 운송장번호, 주문번호 )포함 이동
- update 구문사용 (주문상태,운송장번호 수정) 주문번호 - 조건절
- 페이지 이동 (관리자 주문 리스트)
AdminOrderFrontController.java
의 doProcess()의 주소비교 후 처리부분에 코드 추가
1 | //주문상태와 운송장번호 변경 |
AdminOrderModifyAction.java
생성
1 | public class AdminOrderModifyAction implements Action { |
AdminOrderDAO.java
에 updateOrder()메서드 코드 추가
1 | public interface AdminOrderDAO { |
AdminOrderDAOImpl.java
에 updateOrder()메서드 오버라이딩하여 코드 추가
updateOrder(String trade_num)
메서드는 pstmt.setInt(1, 1)` 이렇게 작성하면 다른 옵션들은 처리를 고민해야한다.- 1~5번까지(1-“발송준비” 2 - “발송완료” 3 - “배송중” 4 - “배송완료” 5 - “주문취소”) 모든 버튼을 다 만들어야할까? 따라서 이 코드는 매우 비효율적이다.
- 따라서
updateOrder(OrderDTO odto)
메서드를 작성해야한다.
1 | //주문목록에서 주문상태만 단순 변경 |
admin_order_list.jsp
링크 수정
- 수정버튼의 기존 코드
'./AdminOrderModify.ao?trade_num=<%=odto.getO_trade_num()%>'
에서'./AdminOrderDetail.ao?trade_num=<%=odto.getO_trade_num()%>'
로 변경
1 | <td> <input type="button" class="btn" value="수정" |
AdminOrderDetailAction.java
생성
1 | public class AdminOrderDetailAction implements Action { |
AdminOrderDAO.java
에 getAdminOrderDetail()메서드 코드 추가
1 | public interface AdminOrderDAO { |
AdminOrderDAOImpl.java
에 getAdminOrderDetail()메서드 오버라이딩하여 코드 추가
1 | //주문번호에 해당하는 주문정보(리스트 전체)를 가져오는 동작을 처리 |
admin_order_modify.jsp
생성
- 금액에 천의 단위를 입력하고 싶으면 DecimalFormat 클래스를 사용하면 된다.
DecimalFormat dc = new DecimalFormat("###,###,###,###,###원");
- 테이블전체를 form태그로 감싸야한다.
- AdminOrderDAO 객체 생성 -> 폼태그로 전달받은 파라미터값을 리퀘스트파라미터로 받는다. -> 배송지 수정들을 가능하게 하면 받아야할 파라미터가 많아져서 비효율적이다. 인자가 많아질수록 성능이 비효율적이다 => DTO를 사용하면 한번에 들고 다닐 수 있다.
- 보통 인자는 4~5까지는 파라미터로 받고 그 이상인 경우는 DTO나 BEAN을 이용해야 성능이 좋다.
1 | //전달정보 파라미터값 저장 |
- 전체태그
1 | <% |