Spring/Spring MVC27 MVC 프레임워크 만들기 (4) - 단순하고 실용적인 컨트롤러 MVC 프레임워크 만들기 (3)에서 이어지는 내용입니다. 앞서 만든 v3 컨트롤러는 서블릿 종속성을 제거하고, 뷰 경로의 중복을 제거하는 등, 잘 설계된 컨트롤러이다. 그런데 실제 컨트롤러 인터페이스를 구현하는 개발자 입장에서 보면, 항상 ModelView객체를 생성하고 반환해야 하는 부분이 조금은 번거롭게 느껴진다. 좋은 프레임워크는 아키텍처도 중요하지만, 그와 더불어 실제 개발하는 개발자가 단순하고 편리하게 사용할 수 있어야한다. 이번 포스팅에서는 앞전의 단계를 변경하여, 실제 구현하는 개발자들이 편리하게 개발할 수있도록 리팩토링 해볼 것이다. 구조 기본적인 구조는 앞전과 같지만 이번에는 컨트롤러가 ModelView를 반환하지 않고, ViewName만 반환한다. ControllerV4 import j.. 2023. 7. 18. MVC 프레임워크 만들기 (3) - Model 추가 MVC 프레임워크 만들기 (2)에서 이어지는 내용입니다. 이전의 포스팅에서 MyView라는 클래스를 생성하여서, View를 분리하였다. 따라서, 각 컨트롤러는 뷰객체만 반환하고 뷰객체를 반환받은 프론트컨트롤러에서 모두 JSP에 각자의 뷰의 경로에 맞는 JSP에 foward되면서, 클라이언트에게 응답페이지가 반환되게 된다. 하지만, 아직까지 코드를 살펴보면 각각의 컨트롤러는, "/WEB-INF/view"와 같은 경로를 담고 있어서, 만약 경로가 변경되는 일이 발생한다면, 해당 경로를 각각의 컨트롤러에 모두 설정해 주어야 할 것이다. 또한, process메서드에 파라미터로 불필요한 HttpServletRequest와 HttpServletResponse가 파라미터로 들어오는 문제점도 있다. 예시) 회원 폼 컨.. 2023. 7. 18. MVC 프레임워크 만들기 (2) - View 분리 MVC 프레임워크 만들기 (1) 에서 이어집니다. 앞전 포스팅에서는 프론트 컨트롤러 패턴을 적용하여서, 클라이언트 요청의 창구를 하나로 만들고, 공통처리에 용이하도록 만들었다. 하지만 아직까지 아래와 같은 중복되는 코드들이 존재한다. String viewPath = "/WEB-INF/views/new-form.jsp"; RequestDispatcher dispatcher = request.getRequestDispatcher(viewPath); dispatcher.forward(request, response); 이번에는 뷰를 별도로 처리하는 객체를 생성하여, 중복코드를 제거하고 분리해보자. 앞전 구조에 이어 View 분리 구조는 아래와 같다. 앞의 V1 구조에서 추가로 프론트 컨트롤러에서 매핑된 컨트.. 2023. 7. 17. MVC 프레임워크 만들기 (1) - 프론트 컨트롤러 도입 오늘 포스팅에서는 지난 포스팅에서 다뤘던 MVC 패턴의 한계를 프론트 컨트롤러 패턴을 사용하여서 리팩토링 할 것이다. 우선 프론트 컨트롤러 패턴이란 무엇인가? 프론트 컨트롤러 패턴이란 하나의 서블릿으로 모든 클라이언트 요청을 받는 것을 의미한다. 프론트 컨트롤러는 클라이언트의 요청을 받고 그에 맞는 컨트롤러를 찾아서 호출 해주게 된다. 프론트컨트롤러를 둠으로써 모든 클라이언트 요청 입구가 하나로 처리되게 되어 공통 처리가 가능하다. 프론트 컨트롤러를 제외한 나머지 컨트롤러는 서블릿을 사용하지 않아도 된다. 스프링 웹 MVC의 핵심은 바로 FrontController이다. 스프링 웹 MVC의 DispatcherServlet이 바로 FrontController 패턴으로 구현되어 있다! 프론트 컨트롤러 구조 .. 2023. 7. 17. MVC 패턴의 한계 앞의 포스팅에서 나온 MVC패턴을 적용하지 않은 서블릿과 JSP코드들은 비효율적이고, 유지보수가 어렵다. 그렇다면, 이번에는 앞의 코드들을 MVC패턴을 적용하여, 리팩토링 해보자. 아래는 MVC패턴을 적용한 간단한 회원 전체 조회 소스코드이다. MvcMemberListServlet (회원 전체 조회 컨트롤러) import hello.servlet.domain.member.Member; import hello.servlet.domain.member.MemberRepository; import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; impor.. 2023. 7. 17. MVC 패턴이란 MVC 패턴이란, 하나의 서블릿이나, JSP로 처리하던 것을 컨트롤러(Controller)와 뷰(View)라는 영역으로 서로 역할을 나눈 것을 말한다. 오늘날의 웹 애플리케이션은 일반적으로 MVC 패턴을 사용한다. MVC 패턴의 요소 컨트롤러(Controller) : HTTP 요청을 받아서 파라미터를 검증하고, 비즈니스 로직을 실행한다. 그리고 뷰에 전달할 결과 데이터를 조회해서 모델에 담는다. 모델(Model) : 뷰에 출력할 데이터를 담아둔다. 뷰가 필요한 데이터를 모두 모델에 담아서 전달해주는 덕분에 뷰는 비즈니스 로직이나 데이터 접근을 몰라도 되고, 화면을 렌더링 하는 일에 집중할 수 있다. 뷰(View) : 모델에 담겨있는 데이터를 사용해서 화면을 그리는 일에 집중한다. 참고 컨트롤러에 비즈니스.. 2023. 7. 17. 이전 1 2 3 4 5 다음