일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Greedy
- QueryDSL
- 인프런
- 스프링 핵심 기능
- transaction
- Android
- db
- 알고리즘
- SpringBoot
- Spring Boot
- JPQL
- springdatajpa
- 김영한
- jpa
- 스프링 핵심 원리
- Exception
- Servlet
- 그리디
- 스프링
- AOP
- java
- JDBC
- kotlin
- http
- 자바
- Proxy
- spring
- Thymeleaf
- pointcut
- 백준
- Today
- Total
목록인프런/[인프런] 스프링 MVC 1 (59)
개발자되기 프로젝트
항상 ModelView객체를 생성하고 반환해야 하는 부분이 귀찮음.. 1. V4 구조 컨트롤러가 ModelView 를 반환하지 않고, ViewName 만 반환한다 2. Controllerr V4 FrontController가 model, paramMap을 만들어서 controller에 전달. public interface ControllerV4 { /** * @param paramMap * @param model * @return */ String process(Map paramMap, Map model); } 3. FrontController V4 @WebServlet(name = "FrontControllerServletV4", urlPatterns = "/front-controller/v4/*") ..
1. Servlet 종속성 제거 Controller입장에서 HttpServletRequest, HttpServletReponse가 필요할까..? Controller는 파라미터 정보만 필요하다. Request객체를 model 객체로 대체해보자. 그러면 Controller는 Servlet 기술에 대한 의존성이 없다. ㄱㅇㄷ 2. 뷰 이름 중복 제거 컨트롤러는 뷰의 논리 이름을 반환하고, 실제 물리 위치의 이름은 프론트 컨트롤러에서 처리하도록 단순화 이렇게 하면 나중에 폴더 위치가 이동해서 frontcontroller만 고치면됨 ㄱㅇㄷ~ /WEB-INF/views/new-form.jsp --> new-form /WEB-INF/views/save-result.jsp --> save-result /WEB-INF/..
1. Controller->view이동 분리 모든 Controller에 View로 이동하는 코드가 있다.. 귀찮. String viewPath = "/WEB-INF/views/new-form.jsp"; RequestDispatcher dispatcher = request.getRequestDispatcher(viewPath); dispatcher.forward(request, response); //이동! 2. v2 구조 3. MyView Controller ->View이동하는 부분 담당. public class MyView { private String viewPath; public MyView(String viewPath) { this.viewPath = viewPath; } public void r..
1. 프론트 컨트롤러 도입 v1 2. Controller v1 다형성 활용 위해 interface를 도입. 각Controller는 Controller interface를 구현함. Controller Interface public interface ControllerV1 { void process(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException; } MemberFormControllerV1 class public class MemberFormControllerV1 implements ControllerV1 { @Override public void process(HttpServletRe..
1. Front Controller 패턴 2. Front Controller 패턴 특징 프론트 컨트롤러 서블릿 하나로 클라이언트의 요청을 받음 프론트 컨트롤러가 요청에 맞는 컨트롤러를 찾아서 호출 입구를 하나로! 공통 처리 가능 프론트 컨트롤러를 제외한 나머지 컨트롤러는 서블릿을 사용하지 않아도 됨 결국 SpringWebMVC핵심도 FronController임. ㅋㅋㅋㅋ SpringWebMVC의 DiapatcherServlet이 FrontController 패턴으로 구현됨 !!캬
Controller와 View의 역할을 명확하게 구분함. 흠 근데 현재 컨트롤러는 중복이 많음..귀찮은데.. 1. 포워드 중복 View로 이동하는 코드가 항상 중복 호출 2.ViewPath에 중복 prefix: /WEB-INF/views/ suffix: .jsp 만약 jsp가 아닌 thymeleaf 같은 다른 뷰로 변경하면.. 전체 코드를 다 변경해야 한다 3. 사용하지 않는 코드 HttpServletReponse는 현재 코드에서 사용하지 않음.. 4. 공통 처리가 어려움. 기능이 복잡해질 수 록 컨트롤러에서 공통으로 처리해야 하는 부분이 많음. 5. 정리 이러한 문제를 해결하기 위해서는 공통 기능을 처리히야함. 즉 수문장 역할을 하는 기능이 필요. Front Controller패턴을 사용하면 해결이 가..
1. MVC 패턴 적용 서블릿을 컨트롤러로 사용하고, JSP를 뷰로 사용해서 MVC 패턴을 적용 Model은 HttpServletRequest 객체를 사용한다. request는 내부에 데이터 저장소를 가지고 있음. request.setAttribute() , request.getAttribute() 를 사용하면 데이터를 보관하고, 조회할 수 있다 2. Controller Request, Response를 받아서 view에 제어권 넘김. RequestDispatcher : Defines an object that receives requests from the client and sends them to any resource (such as a servlet, HTML file, or JSP file) ..
1. 변경 주기가 다르면 분리하자. UI 를 수정하는 것과 비즈니스 로직을 수정하는 일은 변경 주기가 다를 가능성이 매~~우 높음. 변경 라이프 사이클이 다른 코드를 하나의 코드로 관리하는 것은 유지보수하기 좋지 않음.. 2. 기능 특화 JSP같은 뷰 템플릿은 화면을 렌더링하는 데 최적화 되어있음. 3. Model View Controller(MVC) 컨트롤러(Controller)와 뷰(View)라는 영역으로 서로 역할을 나눈 것을 말한다. 보통 이 MVC 패턴을 사용함 Controller HTTP 요청을 받아서 파라미터를 검증하고, 비즈니스 로직을 실행한다. 그리고 뷰에 전달할 결과데이터를 조회해서 모델에 담는다. Model 뷰에 출력할 데이터를 담음. 뷰가 필요한 데이터를 모두 모델에 담아서 전달해줌..