JSP/JSP: 정리

[JSP] MVC 패턴 정리

데브마우스 2023. 12. 26. 09:07

MVC 패턴이란 무엇인가요?

MVC는 Model, View, Controller의 약자로써 웹 애플리케이션을 비즈니스 로직, 프레젠테이션 로직, 데이터로 분리하는 디자인 패턴입니다. 실무에서 제일 많이 사용하는 '틀'이라고 할 수 있습니다.

패턴의 구성 요소 해당 요소 설명
Model DAO DB
애플리케이션의 데이터(DAO)와 비즈니스 로직을 담는 객체입니다.
View HTML JSP
사용자에게 모델의 정보(데이터)를 보여주는 역할을 합니다.
Controller 흐름제어
모델과 뷰 사이에 어떤 동작이 있을 때 조정하는 역할을 합니다.

 

MVC 패턴의 구조

  MVC 패턴의 구조와 요청 처리 흐름도  
  클라이언트
(웹 브라우저)

1. 요청 → web.xml(전처리) 후
(서블릿)
컨트롤러
2. → 모델
(자바빈즈)
3. ←→
데이터베이스
 
  4. ←  
    ↓ 5          
  6. 응답 ←
(JSP 페이지)
         
               

 

MVC 패턴의 처리 흐름을 풀어서 설명하면 아래와 같습니다.

  1. 웹 브라우저가 웹 서버에 웹 애플리케이션 실행을 요청하면 웹 서버는 요청을 처리할 수 있는 컨트롤러(서블릿)를 찾아서 요청을 전달합니다.
  2. 컨트롤러(서브릿)는 모델 자바 객체의 메소드를 호출합니다
  3. 데이터를 가공하여 값 객체를 생성하거나 JDBC를 사용하여 데이터베이스와의 인터렉션을 통해 값 객체를 생성합니다.
  4. 업무 수행을 마친 결과 값을 컨트롤러에 반환합니다.
  5. 컨트롤러는 모델로부터 받은 결과 값을 뷰에 전달합니다.
  6. JSP는 전달받은 값을 참조해서 출력할 결과를 만들어 웹 서버에 전달하고, 웹 브라우저는 웹 서버로부터 결과 값을 받아 화면에 출력합니다.

MVC 패턴의 프로그램 개발 시 코드 작성 순서

MVC 패턴의 프로그램 개발 시 MVC 패턴 6단계 동작 원리처럼 코드를 작성하면 됩니다. 첫번째 요청을 시작으로 여섯번째 응답까지의 과정대로 코드를 작성하시는걸 기준으로 삼고 프로그램 개발하시는걸 추천합니다.

MVC 패턴의 장단점

장점 단점
- 뷰와 로직 처리에 대한 분업이 용이합니다.
- 기능에 따라 분리되어 있기 때문에 유지 보수가 용이합니다.
- 확장이 용이합니다.
- 구조가 복잡하여 습득하기 어렵고 작업량이 많습니다.
- 코드가 분리됨으로써 관리해야 할 파일이 많아집니다.

 

JSP에서 MVC 패턴의 구현 방법

JSP에서 MVC 패턴의 구현 방법으로는 2가지 방법이 있습니다.

  1. web.xml 파일로 서블릿 구성하기
  2. annotaiton을 @Override하여 사용하기

web.xml 파일로 서블릿 구성하기

[<servlet> 요소로 서블릿 클래스 등록하기]
<servlet>    
 
<servlet-name>서블릿 이름</servlet-name>
 
 
<servlet-class>서블릿 클래스(패키지 이름.클래스)</servlet-class>
 
  [<init-param>  
   
<param-name>매개변수 이름</param-name>
   
<param-value>매개변수 값</param-value>
  </init-param>]  
</servlet>    
     
[<servlet-mapping> 요소로 요청 URL 패턴 설정하기]
<servlet-mapping>
   
 
<servlet-name>서블릿 이름</servlet-name>
 
 
<url-pattern>요청할 URL 패턴</url-pattern>
 
</servlet-mapping>
   
<url-pattern>에서 *은 모든 이름 다 포함을 의미합니다.
   

@WebServlet("경로") annotation을 @Override하여 사용하기

@WebServlet("/first")
public class test1 extends HttpServlet{
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		doPost(req, resp);
	}
	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		System.out.println("퍼스트입니다.");
	}
}

 

Controller의 3가지 역할

MVC 패턴에서 Controller는 3가지 역할을 수행합니다.

Controller 프로그래밍을 작성할 때 3가지 역할에 부합하는지 생각하며 프로그래밍을 작성해야합니다.

3가지 역할은 아래와 같습니다.

  1. 전처리
  2. DAO
  3. 페이지 이동