Servlet관리자용주문목록4 : 고객주문목록에서 삭제

주문 목록 삭제

  1. /AdminOrderList.ao
  2. ‘삭제’ 클릭 -> 페이지 이동( 가상주소 )
    • 주문번호 가지고 이동
  3. 컨트롤러 -> Action -> DAO
    • 주문번호 사용해서 정보 삭제
    • delete 구문 사용
  4. 리스트 페이지로 이동




AdminOrderFrontController.java의 doProcess()의 주소비교 후 처리부분에 코드 추가

1
2
3
4
5
6
7
	//주문목록에서 삭제
}else if(command.equals("/AdminOrderDelete.ao")){
System.out.println("C : AdminOrderDelete.ao 호출");
action = new AdminOrderDeleteAction();
try{ forward = action.execute(request, response);
}catch(Exception e) {e.printStackTrace();}
}




AdminOrderDeleteAction.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 AdminOrderDeleteAction implements Action {

@Override
public ActionForward execute(HttpServletRequest request, HttpServletResponse response)
throws Exception {
//한글처리
request.setCharacterEncoding("UTF-8");

// 관리자 ID해당하는 세션값 제어
HttpSession session = request.getSession();
String id = (String) session.getAttribute("id");
ActionForward forward = new ActionForward();
if(id == null || !id.equals("admin")){
forward.setPath("./MemberLogin.me");
forward.setRedirect(true);
return forward;
}

//전달정보 저장
String trade_num = request.getParameter("trade_num");

//DB처리
AdminOrderDAO aodao = new AdminOrderDAOImpl();
aodao.deleteOrder(trade_num);

//페이지이동
forward.setPath("./AdminOrderList.ao");
forward.setRedirect(true);
return forward;
}

}
  • 여기서 삭제후에 삭제되었다는 알람이 떴으면 좋겠다. 그럴땐 js코드를 넣어주면 된다.
  • 대신 기존에 썼던 페이지이동 코드(forward.setPath와 setRedirect)는 쓰지못한다. 리퀘스트안의 자바코드이기때문에 js보다 먼저 실행되기때문이다. js코드(location.href)를 사용하더라고 주소를 맵핑했기때문에 모델2구조는 유지된다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
//처리결과를 js사용하여 페이지 이동
//인코딩
response.setContentType("text/html; charset=UTF-8");
//출력통로생성
PrintWriter out = response.getWriter();
out.print("<script>");
out.print(" alert('성공적으로 삭제되었습니다');");
out.print(" location.href='./AdminOrderList.ao'"); //모델2유지됨
out.print("</script>");
out.close();

//페이지이동
//forward.setPath("./AdminOrderList.ao");
//forward.setRedirect(true);
//return forward;
return null;




AdminOrderDAO.java 에 deleteOrder()메서드 코드 추가

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public interface AdminOrderDAO {
// 인터페이스안의 추상메서드이기때문에

// 관리자가 주문목록을 확인하는 기능 getAdminOrderList()
public List getAdminOrderList();

// 주문번호를 이용하여 주문상태만 변경
public void updateOrder(String trade_num);

// 주문번호를 사용해서 주문상태,운송장번호 변경 가능
public void updateOrder(OrderDTO odto);

// 주문번호에 해당하는 주문정보(리스트 전체)를 가져오는 동작을 처리
public abstract List getAdminOrderDetail(String trade_num);

// 주문번호를 이용하여 삭제
public void deleteOrder(String trade_num);

}




AdminOrderDAOImpl.java에 deleteOrder()메서드 코드 추가

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// 주문삭제
@Override
public void deleteOrder(String trade_num) {
try{
getCon();
sql="delete from itwill_order where o_trade_num=?";
pstmt = con.prepareStatement(sql);
pstmt.setString(1, trade_num);
pstmt.executeUpdate();
}catch(Exception e){
e.printStackTrace();
}finally{
closeDB();
}
}//end of deleteOrder()