서블릿, JSP, MVC 패턴

정민교·2022년 12월 8일
0

springmvc1

목록 보기
4/5

📒순수 서블릿으로 웹 애플리케이션 만들기

순수 서블릿 기술만을 이용하여 웹 애플리케이션을 만들 수 있다.

서블릿 기술 덕분에 동적으로 HTML 응답 데이터를 만들어서 응답할 수 있게 되었는데, 자바 코드 안에 HTML 코드를 직접 다 작성해야 하는 불편함이 있다.

📒JSP로 웹 애플리케이션 만들기

자바 코드로 HTML을 만드는 것보다 HTML 문서에 동적으로 변경이 필요한 부분만 자바 코드를 이용해서 바꿀 수 있다면 편리할 것이다.

이게 템플릿 엔진이 나온 이유이고, 템플릿 엔진을 사용하여 HTML 문서에 동적으로 필요한 부분만 코드를 적용해서 동적으로 변경할 수 있다.

JSP도 템플릿 엔진의 한 종류이다.

📒서블릿과 JSP의 한계

서블릿으로 웹 애플리케이션으로 만들 때는 뷰를 만드는 작업이 자바 코드에 섞여있었고,

JSP를 이용하여 웹 애플리케이션을 만들 때는 작성된 HTML 문서에서 필요한 부분만 자바 코드를 적용해 동적으로 뷰를 생성할 수 있었다.

하지만 JSP 파일 하나에 비지니스 로직을 작성하는 부분과 HTML을 생성하는 뷰 부분이 같이 있다. JSP 하나가 너무 많은 역할을 하고 있어 유지보수가 매우 힘들다.

📒MVC 패턴

비지니스 로직은 서블릿처럼 다른 곳에서 처리하고, JSP는 목적에 맞고 HTML로 화면을 그리는 뷰 역할에 집중하도록 하고자 해서 나타나게 된 패턴이 MVC 패턴이다.

✔️Model, View, Controller

📌Controller

HTTP 요청을 받아 요청 데이터를 검증하고 비지니스 로직(서비스 계층)을 호출

📌Model

HTTP 요청을 비지니스 로직을 통해 처리한 결과 데이터

📌View

Model 데이터를 이용해 화면을 그리는 역할

✔️Servlet과 JSP를 이용한 MVC 패턴의 한계

JSP는 단순히 모델에 있는 데이터를 사용해서 화면만 그리는 역할만 하면 되서 깔끔해졌다.

하지만 서컨트롤러에는 viewPath를 생성하는 코드와 RequestDispatcher를 통해 forward를 하는 코드가 중복해서 등장한다.

그리고 현재 코드에서 HttpServletResponse는 사용하지도 않았다.

⚠️이렇게 중복이 많아지면 공통 처리가 힘들어진다.

기능이 복잡해질수록 공통으로 처리해야 하는 부분이 점점 증가할텐데 중복 호출하는 부분을 공통 기능 메소드로 뽑아도 되지만

어쨌든 모든 컨트롤러마다 만든 메소드를 중복해서 호출해야하고 호출하지 않으면 문제가 될 것이다.

📌🌟프론트 컨트롤러

공통 기능 처리가 어렵다는 문제가 있었으니까 컨트롤러를 호출하기 전에 이러한 공통 기능을 처리해야 한다.
Front Controller 패턴(수문장)을 도입해서 문제를 해결해보자
⚠️Spring MVC의 핵심! FrontController

profile
백엔드 개발자

0개의 댓글