記錄

Servlet) "?cmd=~" vs @WebServlet("*.do") 본문

Web/Servlet

Servlet) "?cmd=~" vs @WebServlet("*.do")

surhommejk 2018. 4. 3. 09:54

Model2 방식의 특징은 각자가 잘하는 일을 하도록 만드는 것에 있다. jsp는 표현과 출력에 집중하고 servlet은 연산처리를 전담하도록 하는 것이다. 크게 두 가지 방식이 있는데 하나는 공통의 servlet에 cmd값을 다르게 보내는 방법이고 다른 하나는 @WebServlet("*.do")와 같은 방식으로 주소가 달라도 하나의 servlet으로 보내는 방법이 있다.


정리) Model2 방식 두 가지

1) '?cmd=~'

2) @WebServlet("*.do")



?cmd=~

private void doProcess(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//1. 요청 받기
String command = request.getParameter("cmd");
//2. 요청 판단 처리 (command 방식 : ?cmd=list)
String viewpage="";
if(command.equals("register")) { //?cmd=register
//회원가입 페이지 전달
viewpage = "/WEB-INF/Register/Register.jsp"; //WEB-INF 접근 가능
}else if(command.equals("registerok")) { //?cmd=registerok
//회원가입 처리
//?cmd=registerok&id=hong&pwd=1004&email=hong@naver.com
int id = Integer.parseInt(request.getParameter("id"));
String pwd = request.getParameter("pwd");
String email = request.getParameter("email");
//Controller -> [Service] 생략 -> DAO (DTO)
//DTO 객체
MvcRegister dto = new MvcRegister();
dto.setId(id);
dto.setPwd(pwd);
dto.setEmail(email);
//DAO 객체
MvcRegisterDao dao = new MvcRegisterDao();
int result = dao.writeOk(dto);
String resultdata="";
if(result > 0) {
resultdata = "welcome to kosta " + dto.getId() + "님";
}else {
resultdata = "Insert Fail retry";
}
//3. 결과 저장하기 (여기서 view 생성 태그 만들고 ..... 하지 않고 별도의 jsp)
request.setAttribute("data", resultdata);
viewpage = "/WEB-INF/Register/Register_welcome.jsp";
}
//4. view 지정
RequestDispatcher dis = request.getRequestDispatcher(viewpage);
//5. forward
dis.forward(request, response);
}

}





@WebServlet("*.do")

private void doProcess(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//1. 요청 받기
//String command = request.getParameter("cmd");
//Url 방식은 cmd parameter 사용 안되요
//register.do
//registerok.do
//registerlist.do
//주소각 요청의 판단 근거
String RequestURI = request.getRequestURI();
String ContextPath = request.getContextPath();
String url_command = RequestURI.substring(ContextPath.length());
/*
RequestURI : /WebServlet_8_MVC_Member_Url/Register.do
ContextPath : /WebServlet_8_MVC_Member_Url
url_command : /Register.do
*/
System.out.println("RequestURI : " + RequestURI);
System.out.println("ContextPath : " + ContextPath);
System.out.println("url_command : " + url_command);
//2. 요청 판단 처리 (command 방식 : ?cmd=list)
String viewpage="";
if(url_command.equals("/Register.do")) { //?cmd=register
//회원가입 페이지 전달
viewpage = "/WEB-INF/Register/Register.jsp"; //WEB-INF 접근 가능
}else if(url_command.equals("/ok.do")) { //?cmd=registerok
//회원가입 처리
//?cmd=registerok&id=hong&pwd=1004&email=hong@naver.com
int id = Integer.parseInt(request.getParameter("id"));
String pwd = request.getParameter("pwd");
String email = request.getParameter("email");
//Controller -> [Service] 생략 -> DAO (DTO)
//DTO 객체
MvcRegister dto = new MvcRegister();
dto.setId(id);
dto.setPwd(pwd);
dto.setEmail(email);
//DAO 객체
MvcRegisterDao dao = new MvcRegisterDao();
int result = dao.writeOk(dto);
String resultdata="";
if(result > 0) {
resultdata = "welcome to kosta " + dto.getId() + "님";
}else {
resultdata = "Insert Fail retry";
}
//3. 결과 저장하기 (여기서 view 생성 태그 만들고 ..... 하지 않고 별도의 jsp)
request.setAttribute("data", resultdata);
viewpage = "/WEB-INF/Register/Register_welcome.jsp";
}
//4. view 지정
RequestDispatcher dis = request.getRequestDispatcher(viewpage);
//5. forward
dis.forward(request, response);
}

}


'Web > Servlet' 카테고리의 다른 글

Servlet) 파일 업로드  (0) 2018.04.04
Servlet) Filter  (0) 2018.04.04
Servlet) 커넥션 풀(DBCP)  (0) 2018.03.29
Servlet) 예제(단순 알림 or 객체 전달)  (0) 2018.03.29
Servlet) out.print()에 대한 이해  (0) 2018.03.29
Comments