JSP - MVC 패턴 구현
모델 1 구조
- JSP에서 요청 처리 및 뷰 생성 처리
- 장점 : 구현이 쉬움
- 단점 : 요청 처리 및 뷰 생성 코드가 뒤섞여 코드가 복잡함(유지보수↓)
모델 2 구조
- 서블릿이 요청을 처리하고 JSP가 뷰를 생성
- 모든 요청을 단일 서블릿에서 처리
- 요청 처리 후 결과를 보여줄 JSP로 이동
MVC패턴 (Model-View-Controller)
- 모델(Model) : 비즈니스 영역의 상태 정보를 처리한다.
- 뷰 : 사용자가 보게 될 결과 화면을 담당
- 컨트롤러 : 사용자의 입력 및 흐름 제어를 담당
특징
- 로직을 처리하는 모델과 같은 화면을 보여주는 뷰가 분리됨
- 흐름 제어나 사용자의 처리 요청은 컨트롤러에 집중
MVC의 컨트롤러 : 서블릿
MVC의 모델 : 로직 수행 클래스
MVC 패턴 컨트롤러 기본 구현 예제
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 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 | import java.io.IOException; import java.util.Date; import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; //MVC 컨트롤러 구현 //요청이들어오면 서블릿 실행 /*@WebServlet("/page")*/ @WebServlet("/") public class SimpleController extends HttpServlet { private static final long serialVersionUID = 1L; protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub //1, HTTP 요청 받음 processRequest(request, response); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub processRequest(request, response); } private void processRequest(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { // 2. 사용자 요청 분석 // String command = request.getParameter("type"); String command = request.getRequestURI(); if(command.indexOf(request.getContextPath()) == 0){ command = command.substring(request.getContextPath().length()); } // 3. 요청처리 --> 결과 데이터 만들기 (Model 구조) // 요청한 기능을 수행 Object resultObject = null; /* * if (command == null || command.equals("greeting")) { resultObject = "안녕하세여"; * }else if(command.equals("date")) { resultObject = new java.util.Date(); }else * { resultObject = "Invalid Type"; } */ //requestURI 가 greeting 인경우 = 안녕하세요 출력 if (command.equals("/greeting")) { resultObject = "안녕하세요"; } else if (command.equals("/date")) { //requestURI 가 date 인경우 = 현재시간출력 resultObject = new Date(); } else { //requestURI 가 그 외 인 겨우 resultObject = "Invalid Type"; } //4. 결과 데이터를 request 객체에 속성으로 저장 //request나 session에 처리 결과 저장 request.setAttribute("result", resultObject); //5. 지정된 뷰(jsp 파일)로 포워딩 : 응답처리 // RequestDispatcher를 사용하여 알맞은 뷰로 포워딩 RequestDispatcher dispathcer = request.getRequestDispatcher("/simpleView.jsp"); dispathcer.forward(request,response); } } | cs |
'프로그래밍 > JSP' 카테고리의 다른 글
필터 - 캐릭터 인코딩 (0) | 2018.07.21 |
---|---|
파일 업로드 (0) | 2018.07.20 |
필터 - 로그인 검사 필터 (0) | 2018.07.19 |
JSP 환경구축2 (이클립스 설정) (0) | 2018.06.09 |
JSP 환경구축 1(이클립스+Tomcat설치 + 설정) (0) | 2018.06.09 |