-
(2) MVC 프레임워크 만들기 - Controller 구현체들의 공통로직 처리Spring/MVC1-Servlet vs JSP vs MVC패턴 2023. 6. 13. 17:01728x90
이전 단계 링크
https://hongs429-blog.tistory.com/46
(1) MVC 프레임워크 만들기 - FrontController의 도입
Servlet -> JSP -> 고전 MVC(Servlet + JSP) 의 과정을 거치면서 나름대로 기능별로 나누어 파일을 관리하였다. 하지만, 여전히 중복되는 코드들이 많았다. https://hongs429-blog.tistory.com/44 웹 애플리케이션으
hongs429-blog.tistory.com
앞의 Frontcontroller 의 도입에서 mapping 된 각각의 Controller 구현체들은 다음의 과정을 반복적으로 수행한다.
- 이동할 view 설정
- RequestDispatcher 객체로 알맞은 view로 데이터 보내는 forwarding 작업
위의 2가지 작업은 앞으로 MyView라는 객체에서 담당하여 각각의 Controller 구현체들의 반복을 덜어낼 것이다.
public class MyView { private String viewPath; public MyView(String viewPath) { this.viewPath = viewPath; } public void render(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { RequestDispatcher dispatcher = request.getRequestDispatcher(viewPath); dispatcher.forward(request, response); } }
이제 각각의 Controller 구현체에서 이를 적용한 모습을 확인하자.
반복적인 코드이니, 대표로 MemberSaveController만 보도록 하자.
public class MemberSaveControllerV2 implements ControllerV2 { private MemberRepository memberRepository = MemberRepository.getInstance(); @Override public MyView process(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String username = request.getParameter("username"); int age = Integer.parseInt(request.getParameter("age")); Member member = new Member(username, age); memberRepository.save(member); request.setAttribute("member", member); // model 역할 : 데이터를 싣어 나르는 역할 return new MyView("/WEB-INF/views/save-result.jsp"); // 이전의 작업을 같이 확인해보자 // String viewPath = "/WEB-INF/views/save-result.jsp"; // RequestDispatcher dispatcher = request.getRequestDispatcher(viewPath); // dispatcher.forward(request, response); } }
이전과 달라진 현재의 Controller 구현체의 특징은,
- FrontController로 MyView 객체를 보낸다.
- 이전에는 Controller 구현체에서 RequestDispatcher 객체가 forwarding을 해주었다면,
현재는 FrontController에서 forwarding 작업을 해주는 방식으로 변경되었다.
즉, 이전에 만든 Controller보다 서비스 로직에 더욱 집중할 수 있도록 개선되었고, FrontController가 각각의 Controller 구현체가 하던 반복적인 일을 가지고가게 되었다는 것이다.
이로써 해당 프레임워크를 사용하는 사람은 훨씬더 로직에 집중할 수 있게 되었다.
앞으로 몇 번만 더 나만의 MVC프레임워크를 개선해보자
'Spring > MVC1-Servlet vs JSP vs MVC패턴' 카테고리의 다른 글
(4) MVC 프레임워크 만들기 - 유연한 FrontController 만들기 (0) 2023.06.13 (3) MVC 프레임워크 만들기 - Controller 구현체들의 공통로직 처리-2 (0) 2023.06.13 (1) MVC 프레임워크 만들기 - FrontController의 도입 (0) 2023.06.13 웹 애플리케이션으로 Servlet / JSP / 고전 MVC 패턴 비교 - MVC (0) 2023.06.08 웹 애플리케이션으로 Servlet / JSP / 고전 MVC 패턴 비교 - JSP (0) 2023.06.08