티스토리 뷰

jsp

chap18 MVC 패턴 구현

일상다반ㅅㅏ 2018. 7. 22. 16:24

모델1 구조

웹 브라우저의 요청을 JSP가 직접 처리한다. 웹 브라우저의 요청을 받은 JSP는 자바빈이나 서비스 클래스를 사용해서 웹 브라우저가 요청한 작업을 처리하고 그 결과를 클라이언트에 출력한다.


모델2 구조

웹 브라우저의 요청을 하나의 서블릿이 받는다. 서블릿은 웹 브라우저의 요청을 알맞게 처리한 후 그 결과를 보여줄 JSP 페이지로 포워딩한다. 포워딩을 통해 요청 흐름을 받은 JSP 페이지는 결과 화면을 클라이언트에 전송한다.


MVC(Model-View-Controller) 패턴

모델 == 로직 처리 클래스, 자바빈 : 비즈니스 영역의 로직을 처리한다.

뷰 == JSP : 비즈니스 영역에 대한 프레젠테이션 뷰(즉, 사용자가 보게 될 화면)를 담당한다.

컨트롤러 == 서블릿 : 사요자의 입력 처리와 흐름 제어를 담당한다.


명령어 전달

컨트롤러 서블릿이 해야할 두번째 작업은 사용자가 어떤 기능을 요청했는지 분석하는 것이다.

- 특정 이름의 파라미터에 명령어 정보를 전달한다.

예) http://localhost:8080/chap18/controllerUsingFile?cmd=hello

단점은 컨트롤러 URL이 사용자에게 노출되어 명령어 변경을 통해 악용이 가능하다.

- 요청 URI 자체를 명령어로 사용한다.

예) http://localhost:8080/chap18/hello.do

파라미터로 명령어를 전달할 때 발생하는 사용자의 악의적인 잘못된 명령어 입력을 일차적 예방이 가능하다.

또한, URL 자체가 의미가 있으므로 자연스럽게 기능을 설명할 수도 있다.


모델1과 모델2의 장단점

모델 

장점 

단점 

모델1 

- 배우기 쉽다.

- 자바언어를 몰라도 어느 정도 구현 가능하다.

- 기능과 JSP가 직관적으로 연결된다.

- 로직 코드와 뷰 코드가 혼합되어 JSP 코드가 복잡해진다.

- 뷰 변경 시 논리 코드의 빈번한 복사가 발생해서 코드 중복이 발생하가 쉽다. 즉, 유지보수가 힘드어진다.

모델2 

- 로직 코드와 뷰 코드를 분리해서 유지보수가 쉬워진다.

- 컨트롤러 서블릿에서 권한 검사나 인증과 같은 공통 기능 처리가 가능하다.

- 확자잉 용이하다.

- 자바 언어에 친숙하지 않으면 접근하기가 쉽지 않다.

- 작업량이 많다. (커맨드 클래스 + 뷰 JSP)


18장 실습소스 : https://github.com/KihyunLim/chap18.git

'jsp' 카테고리의 다른 글

chap21, chap22 회원제 게시판 구현  (0) 2018.11.25
chap19 필터  (0) 2018.10.09
chap 17 서블릿 기초  (0) 2018.06.09
chap16 커스텀 태그 만들기  (0) 2018.06.09
chap15 웹어플리케이션의 일반적인 구성 및 방명록 구현  (0) 2018.06.03