@Override publicActionForwardexecute(HttpServletRequest request, HttpServletResponse response) throws Exception { System.out.println("M : AdminOrderModifyAction의 execute() 호출"); //한글처리 request.setCharacterEncoding("UTF-8"); // 로그인 정보 (로그인 처리필요) HttpSessionsession= request.getSession(); Stringid= (String) session.getAttribute("id"); ActionForwardforward=newActionForward(); if(id == null || !id.equals("admin")){ forward.setPath("./MemberLogin.me"); forward.setRedirect(true); return forward; } //전달정보 파라미터값 저장 Stringtrade_num= request.getParameter("trade_num"); intstatus= Integer.parseInt(request.getParameter("status")); Stringtrans_num= request.getParameter("trans_num"); //AdminOrderDAO 객체 생성 -> 배송지 수정등을 가능하게 하면 받아야할 파라미터가 많아져서 비효율적이다. //=> DTO를 사용하면 한번에 들고 다닐 수 있다. OrderDTOodto=newOrderDTO(); odto.setO_trade_num(request.getParameter("trade_num")); odto.setO_status(Integer.parseInt(request.getParameter("status"))); odto.setO_trans_num(request.getParameter("trans_num")); AdminOrderDAOaodao=newAdminOrderDAOImpl(); //aodao.updateOrder(trade_num); //주문상태만 단순변경하는 메서드 aodao.updateOrder(odto); //주문상태와 운송번호 같이 변경하는 메서드 +a 가능 //페이지이동 forward.setPath("./AdminOrderList.ao"); forward.setRedirect(true); return forward; }
}
AdminOrderDAO.java에 updateOrder()메서드 코드 추가
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
publicinterfaceAdminOrderDAO { // 인터페이스안의 추상메서드이기때문에 // 관리자가 주문목록을 확인하는 기능 getAdminOrderList() publicListgetAdminOrderList();
// 주문번호를 이용하여 주문상태만 변경 publicvoidupdateOrder(String trade_num); // 주문번호를 사용해서 주문상태,운송장번호 변경 가능 publicvoidupdateOrder(OrderDTO odto); // 주문번호에 해당하는 주문정보(리스트 전체)를 가져오는 동작을 처리 publicabstractListgetAdminOrderDetail(String trade_num); }
AdminOrderDAOImpl.java에 updateOrder()메서드 오버라이딩하여 코드 추가
updateOrder(String trade_num)메서드는 pstmt.setInt(1, 1)` 이렇게 작성하면 다른 옵션들은 처리를 고민해야한다.
1~5번까지(1-“발송준비” 2 - “발송완료” 3 - “배송중” 4 - “배송완료” 5 - “주문취소”) 모든 버튼을 다 만들어야할까? 따라서 이 코드는 매우 비효율적이다.
// trade_num 파라미터값 저장 Stringtrade_num= request.getParameter("trade_num"); // 주문번호에 해당하는 정보를 전부 가져오는 동작을 처리 AdminOrderDAOaodao=newAdminOrderDAOImpl(); // 주문정보를 저장 request.setAttribute("adminOrderdetailList", aodao.getAdminOrderDetail(trade_num)); // 페이지 이동 ("./adminorder/admin_order_modify.jsp") forward.setPath("./adminorder/admin_order_modify.jsp"); forward.setRedirect(false); return forward; } }
AdminOrderDAO.java에 getAdminOrderDetail()메서드 코드 추가
1 2 3 4 5 6 7 8 9 10 11 12 13
publicinterfaceAdminOrderDAO { // 인터페이스안의 추상메서드이기때문에 // 관리자가 주문목록을 확인하는 기능 getAdminOrderList() publicListgetAdminOrderList();
// 주문번호를 이용하여 주문상태 변경 publicvoidupdateOrder(String trade_num);
// 주문번호에 해당하는 주문정보(리스트 전체)를 가져오는 동작을 처리 publicabstractListgetAdminOrderDetail(String trade_num); }
AdminOrderDAOImpl.java에 getAdminOrderDetail()메서드 오버라이딩하여 코드 추가
DecimalFormat dc = new DecimalFormat("###,###,###,###,###원");
테이블전체를 form태그로 감싸야한다.
AdminOrderDAO 객체 생성 -> 폼태그로 전달받은 파라미터값을 리퀘스트파라미터로 받는다. -> 배송지 수정들을 가능하게 하면 받아야할 파라미터가 많아져서 비효율적이다. 인자가 많아질수록 성능이 비효율적이다 => DTO를 사용하면 한번에 들고 다닐 수 있다.
보통 인자는 4~5까지는 파라미터로 받고 그 이상인 경우는 DTO나 BEAN을 이용해야 성능이 좋다.
1 2 3 4 5 6 7 8 9 10 11
//전달정보 파라미터값 저장 String trade_num = request.getParameter("trade_num"); int status = Integer.parseInt(request.getParameter("status")); String trans_num = request.getParameter("trans_num");
//AdminOrderDAO 객체 생성 -> 배송지 수정들을 가능하게 하면 받아야할 파라미터가 많아져서 비효율적이다. //=> DTO를 사용하면 한번에 들고 다닐 수 있다. OrderDTO odto = new OrderDTO(); odto.setO_trade_num(request.getParameter("trade_num")); odto.setO_status(Integer.parseInt(request.getParameter("status"))); odto.setO_trans_num(request.getParameter("trans_num"));