본문 바로가기
programming/web

[jsp]mvc pattern

by 힐무새 2017. 5. 23.

MVC 패턴?

Model-View-Contorller

  • Model: 비즈니스 영역의 상태 정보를 처리한다
  • Controller: 사용자의 입력 및 흐름 제어를 담당한다.
  • View: 비즈니스 영역에 대한 프레젠테이션 뷰(즉, 사용자가 보게 될 결과 화면)을 담당한다

    특징

  • 로직을 처리하는 모델과 결과 화면을 보여주는 뷰가 분리됨
  • 흐름 제어나 사용자의 처리 요청은 컨트롤러에 집중

모델 2 구조와 매핑: 컨트롤러-서블릿, 뷰-jsp




모델 1 구조



모델 2 구조


서블릿이 요청을 처리하고 jsp가 뷰를 생성





목표

servlet을 사용하여 화면 구현을 할 수 있다

mvc에 각 기능적 분리를 알고 해당 기능 내용에 맞게 구현할 수 있다

controller에서 사용하는 기능 내용에 대한 코딩 내용과 활용되는 클래스들을 안다

model 단에서 이용되는 개념을 알고, view 단에서 넘기는 객체와 view단에서 전달 받은 내용을 처리하는 방법을 안다

mvc를 활용하여 db에 접속하여 화면단에서 출력할 수 있다.



생각해보자

웹 프로그램에서 기능적 분리는 어느 단계에서 그 효율성을 발휘할 수 있을까??

: 요청 내용의 범위, 재활용성의 필요

핵심 데이터라는 개념과 model이란 어떤 연관 관계가 있는가??

view단을 model을 재활용하는 경우는 어떤 것들이 있는가?

servlet에서 url 패턴은 ~


MVC

  • jsp에서 웹 어플리케이션 구조를 Model, View, Controller로 분리시켜 기능적 분리를 통해 보다 효율적인 개발 방법을 만들어가는 패턴을 말한다. Model 2라고도 지칭한다.
  • 모델1
    - jsp 화면에서 요청, db 접속, 화면단 처리를 모두하는 것을 말한다. 재활용성과 업무분담에서 취약하여, 작은 page를 만들 때만 주로 활용된다

  • 모델 2
    - 기능적 분리(Servlet-Controller, 비즈니스로직-Model, 화면단구현(jsp)-View)

Servlet

  • 웹 브라우저의 요청과 해당 내용에 자바로 처리하는 자바프로그램으로된 웹처리 클래스를 말한다.
  • 처리 과정
    1. 클라이언트가 url을 통해 요청을 하면 servlet에서 요청 내용 doGet(), doPost() 메서드를 통해서 받는다. HttpServletRequest를 통해서 요청 내용을 parameter 값으로 받는다.
    2. 요청 내용을 조건을 통해서 분석하여, view단에 넘겨질 모델 객체를 만드는 요청을 한다.
    3. service단에서 넘겨온 핵심 Model 객체 내용을 jsp(view)로 전달한다. 요청 내용을 처리한다.

MVC 패턴과 모델2 구조

  • server(웹어플리케이션 서버)
    • controller: 서블릿
    • 모델: ejb 내지 비즈니스 로직 처리 클래스, javabean
    • 뷰: jsp
  • client(사용자)
    • 웹 브라우저 내지 휴대폰과 같은 기기

Controller단 처리

  • servlet으로 구현
  • service(HttpServletRequest request)
    • request: 요청 처리
  • model 구현
    • view단에 넘겨줄 핵심 데이터 처리(VO, ArrayList<VO>)
  • request, session.setAttribute("뷰단 호출 key", 모델 객체);
  • view 호출
    • .jsp 호출 처리

MVC 패턴 확인예제 1

1단계
  • Controller: A02_MVC.java
  • Model: favFood="짜장면"
  • View: c02_mvc.jsp
    내가 가장 좋아하는 음식: @@@

2단계

  • model: Product("사과",4000,3)
  • view:
    상품 상세내용
    물건명: 사과, 가격:4000, 갯수:3

MVC Proc

  • 브라우저
    • http://localhost:5080/jspexp/mvc02
    • mvc02 : servlet 호출
      • web.xml(저장된 servlet)
        <url-pattern>/mvc01</url-pattern>
      • annotation
과제
  • wep.xml을 통한 servlet 호출하기
    jspexp.b01_servlet.A05_CallingMe.java
    url-pattern:/callingMe
    -화면:  ^^ 불렀어요?
  • annotation을 통한 servlet 호출하기
    jspexp.b01_servlet.A06_SendDream.java
    @WebServlet(name="a06_snd", urlPatterns={"/sendDream"})
    화면: 개발자로 MVC 시작!
  • mvc에 요청값을 받아서 처리
    jspexp.c01_mvc.A05_MVC
    urlPatterns: /mvc05
    요청값: name=apple&price=3000&cnt=3
    출력처리(System.out.println)으로 물건명, 가격, 갯수, 총계 출력


MVC 패턴으로 DB list 처리하기

  • Controller (Servlet)
    - 요청 처리, service(모델 호출 처리), view단 호출
    - 조정자(요청 내용 확인 후 상황에 맞게 model 처리 로직 호출, view 호출)
  • Model
    - view단으로 넘길 핵심 data를 연결 후 결과값
    - 비즈니스 로직 처리한 후의 결과값
  • View(화면 처리)
    - html, css, javascript와 넘겨온 model 데이터에 대한 처리

Controller에서 처리할 내용

  1. 요청값 받기
    - request.getParameter("name값");
    ( url:  ?name=himan&age=25 )
  2. model 호출하기 및 view단 처리를 위한 작업
    - service단(package, service 클래스) 호출
        if, loop, database 연결을 통해 핵심 비즈니스 로직을 처리
    - request.setAttribute("view단에서 호출될 key", 넘길 객체 혹은 변수);
    - session.setAttribute("key", value);
  3. view단 호출
    - RequestDispatcher의 forward( request,response)
        request.getRequestDispatcher("호출할 jsp page path");
    - view단에 model을 넘기면서 jsp page를 호출

실습- MVC를 통한 login

view단

  • <form
    - action




'programming > web' 카테고리의 다른 글

[jsp] 쿠키  (0) 2017.05.25
[jsp] 액션 태그, 에러 페이지  (2) 2017.05.24
[jsp]JSTL  (0) 2017.05.19
[jsp]EL(Expression Language)  (6) 2017.05.19
[jsp]Session  (6) 2017.05.17