게으른 완벽주의자의 개발자 도전기
servlet 파일 하나로 jsp 데이터 주고 받기(MVC) 본문
jsp에서 servlet으로 파일을 보낼 때는
jsp -> servlet -> jsp -> servlet ->jsp 이런식으로 파일을 여러개 만들었어야 했다.
servlet에 if문을 활용하여 파일 하나로 지정할 수 있도록 만들고자 한다.
앞에 사용했던 치킨 주문 데이터를 servlet 하나로 만들어 보자
1. servlet에 doProcess라는 새로운 클래스 만들기
1) *.do
자바에서 *는 전부(all)를 의미한다.
action= "asdf.do"
action= "bbb.do"
action= "aaaaa.do"
action= "bbbee.do"
즉, 앞에 어떤 단어가 나오든 뒤에 .do가 있다면 실행시키겠다는 의미이다.
(.do는 네이버가 쓰기에 대세를 따르는거라고 쌤이 그러셨음)
@WebServlet( " *.do " )
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doProcess(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doProcess(request, response);
}
doProcess라고 다시 메소드를 만든 이유는 doGet(), doPost()을 부르면 안에 doProcess가 실행되는데
안에 같은 내용이 실행되도록 할 때 둘 다 같은 내용을 넣으면 번거로우니
새로운 메소드를 만들어서 거기서 수정이나 내용을 추가할 수 있도록 하기 위함이다.
protected void doProcess(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
1) 한글 인코딩
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");
2) form action = " " 값 가져오기
(이것도 복붙하여 사용하면 편함!)
String requestURI = request.getRequestURI();
String contextPath = request.getContextPath();
String command = requestURI.substring(contextPath.length());
3) page 변수 설정하여 jsp 이동 시 조건에 맞는 jsp로 이동하도록 함
String page ="";
4) if문 사용하기
if(command.equals("/order.do")) {
i) order객체 생성
OrderDTO order= new OrderDTO();
ii) 자료 받기
order.setType(request.getParameter("type"));
int cnt= Integer.parseInt(request.getParameter("cnt"));
order.setCnt(cnt);
String[] extra = request.getParameterValues("extra");
order.setExtra(extra);
order.setAsk(request.getParameter("ask"));
iii)자료 보내기
request.setAttribute("orderInfo", order);
iv) 해당 페이지 이동
page= "delivery.jsp";
}
5) else If로 조건 추가
else if(command.equals("/delivery.do")) {
i) 전에 받았던 데이터 추가하기
OrderDTO order= new OrderDTO();
order.setType(request.getParameter("type"));
int cnt= Integer.parseInt(request.getParameter("cnt"));
order.setCnt(cnt);
String[] extra = request.getParameterValues("extra");
order.setExtra(extra);
order.setAsk(request.getParameter("ask"));
request.setAttribute("orderInfo", order);
ii) delivery 객체 생성
deliveryDTO delivery = new deliveryDTO();
iii) 데이터 받기
delivery.setName(request.getParameter("name"));
delivery.setTel(request.getParameter("tel"));
delivery.setAddr(request.getParameter("addr"));
iv) 데이터 보내기
request.setAttribute("deliveryInfo", delivery);
v) 페이지 이동
page= "order_info.jsp";
}
RequestDispatcher dispatcher = request.getRequestDispatcher(page);
dispatcher.forward(request, response);
}
'servlet jsp' 카테고리의 다른 글
학생성적정보시스템만들기 1(DTO, index, controller.java, 기본 페이지 만들기.jsp) (0) | 2022.07.30 |
---|---|
servlet -> jsp에서 계산 데이터 가져오기 (0) | 2022.07.25 |
taglibs와 DTO를 활용하여 jsp에서 servlet으로 데이터 넘기고 jsp로 받기 (0) | 2022.07.24 |
jsp에서 servlet 다시 jsp로 데이터 받기(기초) (0) | 2022.07.24 |
톰캣에서 taglibs 4가지 다운 받기 (0) | 2022.07.24 |