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 패턴의 처리 흐름을 풀어서 설명하면 아래와 같습니다.
- 웹 브라우저가 웹 서버에 웹 애플리케이션 실행을 요청하면 웹 서버는 요청을 처리할 수 있는 컨트롤러(서블릿)를 찾아서 요청을 전달합니다.
- 컨트롤러(서브릿)는 모델 자바 객체의 메소드를 호출합니다
- 데이터를 가공하여 값 객체를 생성하거나 JDBC를 사용하여 데이터베이스와의 인터렉션을 통해 값 객체를 생성합니다.
- 업무 수행을 마친 결과 값을 컨트롤러에 반환합니다.
- 컨트롤러는 모델로부터 받은 결과 값을 뷰에 전달합니다.
- JSP는 전달받은 값을 참조해서 출력할 결과를 만들어 웹 서버에 전달하고, 웹 브라우저는 웹 서버로부터 결과 값을 받아 화면에 출력합니다.
MVC 패턴의 프로그램 개발 시 코드 작성 순서
MVC 패턴의 프로그램 개발 시 MVC 패턴 6단계 동작 원리처럼 코드를 작성하면 됩니다. 첫번째 요청을 시작으로 여섯번째 응답까지의 과정대로 코드를 작성하시는걸 기준으로 삼고 프로그램 개발하시는걸 추천합니다.
MVC 패턴의 장단점
장점 | 단점 |
- 뷰와 로직 처리에 대한 분업이 용이합니다. - 기능에 따라 분리되어 있기 때문에 유지 보수가 용이합니다. - 확장이 용이합니다. |
- 구조가 복잡하여 습득하기 어렵고 작업량이 많습니다. - 코드가 분리됨으로써 관리해야 할 파일이 많아집니다. |
JSP에서 MVC 패턴의 구현 방법
JSP에서 MVC 패턴의 구현 방법으로는 2가지 방법이 있습니다.
- web.xml 파일로 서블릿 구성하기
- 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가지 역할은 아래와 같습니다.
- 전처리
- DAO
- 페이지 이동