목록Spring/MVC 1 (56)
코드 그라데이션
Model 추가 서블릿 종속성 제거 뷰 이름 중복 제거 V3 구조 ModelView sevlet의 종속성을 제거 -> request가 쓸모가 없으니까. @Getter @Setter public class ModelView { private String viewName; //뷰의 논리적 이름 private Map model = new HashMap(); // 모델 직접 생성 //이렇게 모델에다가 내가 원하는 데이터를 넣어두면 나중에 꺼내서 jsp에서 쓸 수 있도록 후처리 해줄 예정 public ModelView(String viewName) { this.viewName = viewName; } } ControllerV3 - 인터페이스 public interface ControllerV3 { ModelVie..
View 분리 - v2 모든 컨트롤러에서 뷰로 이동하는 부분에 중복이 있고, 깔끔하지 않다. String viewPath = "/WEB-INF/views/new-form.jsp"; RequestDispatcher dispatcher = request.getRequestDispatcher(viewPath); dispatcher.forward(request, response); 이 부분을 깔끔하게 분리하기 위해 별도로 뷰를 처리하는 객체를 만든다. V2 구조 MyView 뷰 객체는 이후 다른 버전에서도 함께 사용하므로 패키지 위치를 frontcontroller 에 두었다. public class MyView { // 기존에 컨트롤러에서 했던 로직을 MyView 만들어서 분리해서 넣음. private Stri..
v1 구조 먼저 컨트롤러를 인터페이스로 만들어놓고, 각 컨트롤러들은 이 인터페이스를 구현한다. ControllerV1 public interface ControllerV1 { void process(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException; } 서블릿과 모양이 똑같은 인터페이스 이것 가지고 구현을 여러 개 할 것이다. 매핑 정보에서 찾아서 호출할 때 다형성을 이용해서 프론트 컨트롤러는 인터페이스에 의존하면서 편리하게 할 수 있음. 로직은 기존 서블릿과 똑같다. 대신에 얘들은 서블릿 상속 대신에 인터페이스를 구현하고, webservlet 같은 게 전혀 없다. MemberFormC..
프론트 컨트롤러 도입 전 프론트 컨트롤러 도입 후 FrontController 패턴 특징 스프링 웹 MVC와 프론트 컨트롤러
MVC 패턴 - 적용 회원 등록 회원 등록 폼 - 컨트롤러 @WebServlet(name = "mvcMemberFormServlet", urlPatterns = "/servlet-mvc/members/new-form") public class MvcMemberFormServlet extends HttpServlet { // 컨트롤러 역할 @Override protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 그냥 jsp로 가주기만 하면 된다. String viewPath = "/WEB-INF/views/new-form.jsp"; Reques..
JSP 라이브러리 추가하기 build.gradle에 dependencies { // 전략 //JSP 추가 시작 implementation 'org.apache.tomcat.embed:tomcat-embed-jasper' implementation 'javax.servlet:jstl' //JSP 추가 끝 //후략 } new-form.jsp : 회원 등록 폼 username: age: 전송 실행 화면 save.jsp - 회원 저장 JSP 실행해서 데이터 두 개를 집어넣고 확인해보면 다 들어가 있음을 확인할 수 있음. 정리 서블릿과 JSP의 한계