스프링/3. 스프링 MVC 54

25. 프론트 컨트롤러 공통로직(뷰 추가)

String viewPath = "/WEB-INF/views/new-form.jsp"; RequestDispatcher dispatcher = request.getRequestDispatcher(viewPath); dispatcher.forward(request, response); 기존의 공통로직 view에 관한 내용이었다. 이거는 먼저 요청의 uri로 Map에서 조회하고, 컨트롤러를 호출하면 그게 viewPath 정보를 가진 MyView라는 객체를 반환하게 할거다. 그러면 MyView.render()해주면 JSP로 forward 해주게끔 할거다. 어차피 request, response에다가 SetAttribute()로 정보까지 저장 가능해서 그거 다 넘겨버리면 된다. @WebServlet(name =..

24. 프론트 컨트롤러 도입.

public interface ControllerV1 { void process(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException; } 인터페이스를 만든다. 기존의 HttpServlet같은, 그렇지만 이건 요청이 들어오면 호출하는게 아니기 때문에. 하지만 구조는 같다. request, response 받고 예외도 똑같이. List, Save, Form 기존의 것을 그대로 사용했다. public class MemberFormControllerV1 implements ControllerV1 { @Override public void process(HttpServletRequest reque..

21. MVC 적용

서블릿은 컨트롤러로, JSP는 뷰로 사용할 거 모델은 request로 사용할거다. request.setAttribute()에 임시로 값을 저장할 수 있었어서. mvc패턴은 항상 컨트롤러 거처서 view로 가야 함. @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 { St..

20. MVC 개요

변경의 라이프사이클이 다르면 분리하는 게 좋다. 예를 들어 보여지는 뷰 부분과 비즈니스 로직 등, 아니면 로직과 로직 등, 변경 라이프 사이클이 다르면 분리하는게 좋다. MVC는 Model: 모델은 어떤 통과 같다. 데이터들을 담는.. View: 뷰는 말 그대로 뷰. 보여지는 부분을 책임진다. Controller: 컨트롤러는 전체적인걸 관리하는 그런 느낌이다. 마더보드 같은.. 클라이언트의 요청을 받고, 비즈니스 로직을 호출해주고, 그 결과를 모델에 담아 뷰로 넘겨준다. 그러면 뷰가 그려준다. 이런 식으로 클라이언트 호출을 컨트롤이 받아주고, 어떤 호출을 했는지, 또 클라이언트가 제대로 올바르게 정보를 가지고 호출을 했는지.(상태코드 보내줌) 제대로 호출을 하였다면 그에 따라 비즈니스로직을 호출하고, 거..

17. 회원관리 웹 애플리케이션 개요

회원정보 이름 나이 기능 회원목록 조회 회원 등록 @Getter @Setter public class Member { private Long id; private String name; private int age; public Member(String name, int age) { this.name = name; this.age = age; } public Member(){ } } 멤버 public class MemberRepository { // 실무에선 동시성 문제 때문에 ConcurrentHashMap, AtomicLong 고려 private static Map store = new HashMap(); private static long sequence = 0L; private static fin..