MVC 패턴 개요
기존 방식의 문제점

서블릿이나 JSP만을 사용하는 기존 개발 방식으로는 비즈니스 로직과 뷰 렌더링 로직의 구분이 모호하고 유지하기 어려웠습니다.
사실 진짜 문제는 둘 사이의 관계입니다(비즈니스 로직과 뷰 부분). 변경 수명 주기가 다릅니다.그것은 말한다. 예를 들어 사용자 인터페이스 변경과 비즈니스 로직 변경은 다르게 발생할 가능성이 매우 높습니다.
또한 사이 아마도 크게 관련이 없을 것입니다 또한 매우 높다 서로 영향을 미치지 않는 작업그것을 최대한 활용 하나의 코드인 두 부분에서 유지 관리 불량까지.오전.
특히 JSP와 같은 템플릿 엔진은 렌더링 뷰에 최적화되어 있기 때문에 그 부분만 처리하는 것이 가장 효율적이다.
모델 뷰 컨트롤러
이러한 문제를 해결하기 위해 MVC 패턴이 개발되었습니다.
위에서 설명한 것처럼 MVC 패턴을 사용하면 단일 서블릿 또는 JSP가 이전에 자체적으로 수행해야 했던 작업을 수행할 수 있습니다. 역할을 컨트롤러와 뷰라는 영역으로 나누어 구현하는 개발 방식입니다.수단
대부분의 웹 애플리케이션은 일반적으로 MVC 패턴사용해야
- 모델
- 보기에 표시할 데이터를 포함합니다.
- 모델의 역할은 데이터를 저장하고 관리하는 것이고 컨트롤러의 역할은 데이터를 제공하는 것이므로 비즈니스 로직이나 데이터에 접근하는 방법을 몰라도 뷰 부분에서는 문제가 없습니다.
- 보다
- 수신 데이터 화면. 렌더링에 집중(HTML 생성됨)
- 제어 장치
- HTTP 요청을 수신하고 매개변수를 검증하며 비즈니스 로직을 실행합니다.
- 모델에서 받은 데이터는 뷰 구성 요소로 전달됩니다.

일반적으로 MVC 패턴에서 역할이 위와 같이 구분되어 있음을 알 수 있다.
단, 다음과 같이 컨트롤러에서 비즈니스 로직부분적으로 그리고 데이터에 대한 액세스부분도 서비스 및 리포지토리 클래스추가 설계로 담당 역할을 분리하는 것도 가능합니다.

따라서 컨트롤러는 요청의 입력 유효성 검사를 변경하고 서비스 또는 저장소를 호출하는 중간 브리지 역할을 하는 방법입니다.
게다가 요즘 개발 트렌드에서는 프론트엔드가 뷰 로직 구현을 담당하는 것 같습니다.
현재 프로젝트는 MVC 패턴 2처럼 발전하고 있다고 요약할 수 있을 것 같습니다.
MVC 패턴 적용
View as JSP 및 Controller as Servlet을 사용하여 MVC 패턴을 적용해 보겠습니다.
디스패처로 전달
RequestDispatcher는 기존 요청 객체(HttpServletRequest)에서 getRequestDispatcher 메서드를 사용하여 반환될 수 있습니다.
반환된 Dispatcher 객체의 forward() 메서드를 사용하여 다른 서블릿 또는 JSP로 전환할 수 있습니다. (서버 내 콜백 구조)
웹 INF
- 이 경로에 있는 JSP 파일은 직접 액세스할 수 없습니다.
- MVC 패턴에 따라 구현하기 위해서는 컨트롤러에서 항상 JSP를 호출해야 합니다.
- 즉, URL로 요청을 처리하는 서블릿은 JSP와 별도로 구축되어야 한다.
리디렉션 대 전달
- 리디렉션이 실제 클라이언트로 이동한 후 클라이언트가 리디렉션 경로로 다시 요청하는 방법로 작동
- 따라서 사용자가 이를 인지할 수 있고 실제로 URL이 변경되었음을 확인할 수 있다.
- 반면에, 앞으로~이다 내부 서버에서 이루어진 호출그렇기 때문에 고객은 그것을 볼 수 없습니다.
보기만 하는 JSP로 변경
<%
request.getAttribute("member").getId()
%>
->
${member.id};
JSP에서 제공하는 방식 식(${})를 통해 Java 코드를 삽입할 때 쉽게 처리할 수 있습니다.
내부 <%, %> 동봉된 부분은 JSP 파일에 자바 코드가 입력되는 부분을 말한다.
이와 같은 Java 코드를 JSP에 넣을 수 있습니다.주입된 코드는 서블릿으로 변환되어 서블릿 객체의 서비스 메소드(요청에 따라 동작하는 코드)로 변환되어 실행된다.

그래서 JSP는 들어오는 요청에 대해 자체적으로 서블릿을 생성하여 비즈니스 로직을 처리할 수 있다는 장점이 있었지만, 시간이 지나면서 MVC 패턴을 기반으로 한 개발 방식이 대세가 되었고 이 부분이 대세로 자리잡게 되면서 단점이 되었습니다. .
최근에는 Spring과 함께 일반적으로 사용되는 템플릿 엔진입니다. 백리향 잎템플릿 내부에 자바 코드가 포함되어 있지 않습니다. JSP다른 MVC 템플릿 엔진 흐름이 뷰 컴포넌트의 역할에만 집중하기 때문에 매우 적합하다고 생각했습니다.
아마도 이것이 JSP가 아닌 이유 일 것입니다. 백리향 잎추천하고, 많은 분들이 사용하는 흐름으로 바뀌지 않았을까 하는 생각이 들었습니다.

먼저 JSP는 위와 같이 View 부분의 역할만 하도록 수정되었습니다.

위의 코드에서 볼 수 있듯이 서블릿에서 제어 장치의 역할에 초점을 맞춘다. 모델데이터 입력(요청 속성) 보다전송됩니다
하지만 MVC 패턴으로 코드를 개선했음에도 불구하고 중복되는 코드(Dispatcher를 사용하여 요청 및 응답 객체를 전달하는 부분 포함)가 많고 이를 개선하기 위해 만든 Spring MVC 프레임워크라고 합니다.
점진적 개선은 현재 Spring MVC 프레임워크를 생성하는 것을 목표로 합니다.