본문 바로가기

프로그래밍/JSP

MVC 패턴 구현

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