일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- api 개발
- 페이징 정렬
- 넘파이
- 저장소 이전
- 자바
- Json 객체
- swap 메모리
- 스프링부트 OpenAI API
- jar빌드
- Chat GPT
- 우분투
- Git
- JPQL
- JPA
- HttpServletResponse
- MVC
- 스프링 이메일 전송
- 값 타입
- 비밀번호 재설정 API
- Servlet
- 두수의 합 자바
- 프로그래머스
- JDBC
- git 충돌 해결
- springboot
- 파이썬
- 저장소 복제
- MySQL
- 서버 배포
- github 복제
- Today
- Total
목록스프링부트 이론/MVC (12)
현의 개발 블로그

이전 버전에서 컨트롤러가 servlet 기술을 전혀 사용하지 않도록 변경해보자. 이전 버전 [MVC 프레임워크 만들기] View 분리하기 모든 컨트롤러에서 뷰로 이동하는 로직이 중복된다. String viewPath = "/WEB-INF/views/members.jsp"; RequestDispatcher dispatcher = request.getRequestDispatcher(viewPath); dispatcher.forward(request,response); 이 부분을 공통화하기 hyun-keepdeving.tistory.com 변경할 부분 서블릿 종속성 제거 컨트롤러 입장에서 HttpServletRequest, HttpServletResponse가 필요하지 않다. request, response가..

모든 컨트롤러에서 뷰로 이동하는 로직이 중복된다. String viewPath = "/WEB-INF/views/members.jsp"; RequestDispatcher dispatcher = request.getRequestDispatcher(viewPath); dispatcher.forward(request,response); 이 부분을 공통화하기 위해 뷰를 처리하는 객체를 만들 것이다. 이전 버전에서 업그레이드 되었기 때문에 V2라고 명명했다. V2 구조 클라이언트가 http 요청을 한다. front controller는 매핑 정보에서 컨트롤러를 조회하여 호출한다. 컨트롤러가 MyView 객체를 반환하면, FrontController가 해당 객체의 render를 호출한다. MyView가 JSP를 fo..

프론트 컨트롤러 소개 프론트 컨트롤러 도입 전 입구가 없다. 각 컨트롤러마다 공통로직이 중복된다. ex) 뷰로 이동하는 로직 프론트 컨트롤러 도입 후 공통 로직을 입구에 몰아넣고, 각 컨트롤러에 필요한 로직은 각자 처리한다. frontController 패턴 특징 프론트 컨트롤러 내 서블릿 하나로 클라이언트의 요청을 받는다. 프론트 컨트롤러가 요청에 맞는 컨트롤러를 찾아서 호출해준다. 입구가 하나이기 때문에 공통 처리가 가능하다. 프론트 컨트롤러를 제외한 나머지 컨트롤러는 서블릿을 사용하지 않아도 된다. 스프링 웹 MVC와 프론트 컨트롤러 스프링 웹 MVC의 핵심이 바로 Front Controller이다. 스프링 웹 MVC의 DispatcherServlet은 Front Controller 패턴으로 구현되..

서블릿을 컨트롤러로 사용하고, JSP를 뷰로 사용해서 MVC 패턴을 적용하자. Model은 HttpServletRequest 객체를 사용한다. request는 내부에 데이터 저장소를 가지고 있다. request.setAttribute()로 데이터를 보관하고, request.getAttribute()로 데이터를 조회할 수 있다. 회원 등록 폼 컨트롤러 String viewPath = "/WEB-INF/views/new-form.jsp"; RequestDispatcher dispatcher = request.getRequestDispatcher(viewPath); dispatcher.forward(request, response); //servlet에서 JSP를 호출 (제어권 넘김) dispatcher.fo..

앞에서 Servlet과 JSP를 사용하여 웹 애플리케이션을 만들어보았다. 그러나, 두 가지 방식 모두 한계점이 존재했다. 유지 보수의 어려움 하나의 servlet이나 JSP만으로 비즈니스 로직과 뷰 렌더링까지 모두 처리하면 코드가 복잡해진다. 비즈니스 로직을 호출하는 부분에 변경이 발생해도 해당 코드를 손대야 하고, UI를 변경할 일이 있어도 해당 파일을 수정해야 한다. 변경 라이프 사이클 UI 변경과 비즈니스 로직 변경은 각각 다르게 발생하기 때문에 서로에게 영향을 주지 않는다. 변경의 라이프 사이클이 다른데, 하나의 코드로 관리하는 것은 유지 보수에 좋지 않다. UI가 많이 변하면 비즈니스 로직도 함께 변경될 가능성이 높기 때문이다. 기능 특화 JSP 같은 뷰 템플릿은 화면을 렌더링 하는데 효과적이다..