프론트 컨트롤러
2021. 5. 23. 18:53
스프링 웹 MVC
프론트 컨트롤러 앞서 작성한 MVC의 한계를 보완하기 위해서 도입된 것이 바로 FrontController 프론트 컨트롤러가 요청에 맞는 컨트롤러를 찾아서 호출한다. HttpServlet을 상속받는 서블릿이다. 쉽게말해 웹 요청이 들어오는 입구가 1개가 된 것이다. 이제는 프론트 컨트롤러 빼고 나머지 애들은 입구역할을 할 필요가 없다. 이게 스프링 웹 MVC의 핵심이다 스프링 웹 MVC의 Dispatcher-Servlet이 바로 Font-Controller패턴으로 구현 되어있다.
MVC 패턴의 한계
2021. 5. 23. 18:46
스프링 웹 MVC
MVC 패턴의 한계 정확하게는 MVC컨트롤러의 단점이다. 포워드가 중복된다. RequestDispatcher가 매번 뷰패스(viewPath)를 입력하고, 호출도 하여야함. 뷰 패스는 어떤 뷰를 클라에 내릴지를 정하는 값이다. ex) "WEB-INF/JSP/form.jsp" 예를들어 이런 것들이 하드코딩으로 박혀 있다면, 사장되어 가는 jsp를 버리고 타임리프로 갈아탔을 때 모든 컨트롤러에가서 저 뷰패스를 바꿔야 한다 망하는 것이다..시간과 정성을 갈아넣어야 한다.. 공통처리 또한 어렵게 된다. 기능을 메서드로 뽑아놓고 써도, 매번 호출을 다 해줘야 함. 바뀌기라도 하면 모든 컨트롤러에 직접가서 그 호출 라인을 수정해야 함. 문제다.
리다이렉트 vs 포워드
2021. 5. 23. 18:42
스프링 웹 MVC
리다이렉트 vs 포워드 리다이렉트(redirect)는 실제 클라이언트에 응답이 나갔다가 클라이언트가 다시 요청. -> 실제 URL 변경이 나타나고, 클라이언트가 알 수 있음.(300대 응답코드가 나간다) 포워드는 서버 내부에서 일어나므로 클라이언트가 전혀 인지하지 못함.(200대 응답코드)
MVC 패턴
2021. 5. 23. 18:40
스프링 웹 MVC
MVC 패턴 서블릿 만으로 개발을 하게 되면, 뷰(view) 화면을 만드는 작업을(랜더링) 자바단에서 처리를 하게 되고, ex) out.write(" "); out.write(" " + member.getId() + ""); out.write(" " + member.getUsername() + ""); out.write(" " + member.getAge() + ""); out.write(" "); 지저분 하고 복잡하며, 나중에 수정을 하게 되면 그냥 망한다. 언제 찾아서 어떻게 고치냐... 그래서 jsp라는 템플릿 엔진을 도입해서 HTML 작업을 깔끔하게 적용, JSP에 자바코드를 넣어서 동적인 처리를 하게 되었다. 여전히 문제가 있는데, 뷰단에 너무 많은 정보가 노출되고 마찬가지로 유지보수는 사실상...