본문 바로가기

SpringMVC

(12)
[스프링 웹 MVC] 웹 애플리케이션의 이해 ■ HTTP - HTTP를 사용하여 HTML, TEXT, IMAGE, 음성, 영상, 파일, JSON, XML 등 다양한 형태의 데이터를 주고 받을 수 있다. - 서버간에 데이터를 주고 받을 때에도 대부분 HTTP를 사용 ■ 웹 서버(Web Server) - HTTP 기반으로 동작 - 정적 리소스를 제공 - 웹 서버의 대표적인 예로는 NGINX와 APACHE가 있다. ■ 웹 애플리케이션 서버(WAS - Web Application Server) - HTTP 기반으로 동작 - 웹 서버 기능을 포함 + 정적 리소스 제공 기능 - 프로그램 코드를 실행해서 애플리케이션 로직을 수행 - 동적 HTML, HTTP API, 서블릿, JSP, 스프링 MVC - WAS의 대표적인 예로는 Tomcat(톰켓)이 있다. - W..
[인프런 강의 복습]스프링 MVC 1편 - 요청 매핑 ■ 요청 매핑 1) /hello-basic - 기본 요청 - 둘다 허용 : /hello-basic, /hello-basic/ - HTTP 메서드 모두 허용 : GET, POST, PUT, DELETE, PATCH 2) /mapping-get-v1 - 특정 HTTP 메서드 요청만 허용 - POST 요청을 하면 스프링 MVC는 HTP 405 상태코드(Method Not Allowed)를 반환 3) /mapping-get-v2 - HTTP 메서드 매핑 축약 - 더 직관적 - @GetMapping, @PostMapping, @PutMapping, @DeleteMapping, @PatchMapping 4) /mapping/{userId]} - 단일, mapping/users/{userId}/orders/{orde..
[인프런 강의 복습]스프링 MVC 1편 - 로깅 ■ 로깅 라이브러리 스프링 부트 라이브러리를 사용하면 스프링 부트 로깅 라이브러리(spring-boot-starter-logging)가 함께 포함 스프링 부트 로깅 라이브러리는 기본으로 다음 로링 라이브러리를 사용 - SLF4J - http://www.slf4j.org - Logback -http://logback.qs.ch - 로그 라이브러리는 Logback, Log4J, Log4J2 등등 수 많은 라이브러리가 있는데, 그것을 통합해서 인터페이스로 제공하는 것이 SLF4J 라이브러리 - 즉, SLF4J는 인터페이스이고, 그 구현체로 Logback 같은 로그 라이브러리를 선택해서 사용하면 된다. - 실무에서는 스프링 부트가 기본으로 제공하는 Logback을 대부분 사용 [로그 사용 시 장점] - 쓰레드 ..
[인프런 강의 복습]스프링 MVC 1편 - 스프링 MVC 전체 구조 ■ SpringMVC 구조 1) 비교 - 직접 만든 MVC 프레임워크와 SpringMVC 구조를 그림을 통해 비교해보자. - FrontController -> DispatcherServlet - handlerMappingMap -> HandlerMapping - MyHandlerAdapter -> HandlerAdapter - ModelView -> ModelAndView - viewResolver -> ViewResolver - MyView -> View ■ DispatcherServlet 1. org.springframework.web.servlet.DispatcherServlet - 스프링 MVC도 프론트 컨트롤러 패턴으로 구현 - 스프링 MVC의 프론트 컨트롤러가 바로 DispatcherServl..
[인프런 강의 복습]스프링 MVC 1편 - adapter 추가 ■ adapter 패턴 어댑터 패턴을 사용해서 프론트 컨트롤러가 다양한 방식의 컨트롤러를 처리할 수 있도록 변경 [핸들러 어댑터(handler adapter)] - 핸들러 어댑터로 인해 다양한 종류의 컨트롤러를 호출할 수 있다. [핸들러(handler)] - 컨트롤러의 이름을 더 넓은 범위인 핸들러로 변경 - 컨트롤러는 구첵적이고 핸들러를 컨트롤러의 상위 개념으로 이해 [핸들러 매핑 정보] - FrontController가 요청 URI가 어떤 핸들러와 매핑되는 지를 찾는 과정 - 핸들러 매핑 정보는 요청에 맞는 핸들러 객체를 FrontControllerServlet에게 반환 [핸들러 어댑터] - 핸들러 매핑 정보를 통해 FrontController에 반환된 핸들러 객체를 가지고 이에 맞는 어댑터를 찾는 ..
[인프런 강의 복습]스프링 MVC 1편 - model 분리 ■ Model 객체의 분리 앞선 버전에서는 데이터를 저장하기 위해 컨트롤러에서 ModelView 객체를 생성 후 저장할 데이터를 model 객체에 넣어 ModelView 객체를 반환하였다. 매번 컨트롤러에서 ModelView를 생성 후, 저장할 데이터를 넣기 위해 model 객체를 꺼내 데이터를 넣는 과정이 반복적으로 이루어진다. 개발자가 단순하고 편리하게 사용할 수 있도록, 프론트 컨트롤러에서 paramMap 뿐만 아니라 Model 객체를 함께 파라미터로 넘겨준 후, ModelView를 반환받는 것이 아니라 뷰의 이름만 반환해주도록 코드를 변경해 보겠다. ■ ControllerV4 Interface - process() 메서드의 파라미터에 paramMap뿐만 아니라 데이터를 저장할 수 있는 model ..
[인프런 강의 복습]스프링 MVC 1편 - model 추가 ■ Model 추가 1) 서블릿의 종속성 제거 - 요청 파라미터 정보를 자바의 Map으로 대신 넘기도록 하면 지금 구조에서는 컨트롤러가 서블릿 기술을 몰라도 동작할 수 있다. - 현재 구현된 컨틀로러가 서블릿 기술을 전혀 사용하지 않도록 변경 - HttpServletRequest가 제공하는 파라미터는 프론트 컨트롤러가 paramMap에 담아 호출 - 응답 결과로 뷰 이름과 뷰에 전달할 Model 데이터를 포함하는 Modelview 객체를 반환 2) 뷰 이름 중복 제거 - 컨트롤러에서 지정하는 뷰 이름에 중복이 있다. - 컨트롤러는 뷰의 논리 이름을 반환하고 실제 물리 위치의 이름은 프론트 컨트롤러에서 처리하도록 단순화 ■ ModelView - 지금까지는 컨트롤러에서 서블릿에 종속적인 HttpServlet..
[인프런 강의 복습]스프링 MVC 1편 - View 분리 ■ View 분리 -v2 모든 컨트롤러에서 뷰로 이동하는 부분에 중복이 발생하고 깔끔 X 뷰를 처리할 수 있는 View 객체를 생성하자 - ControllerV2의 반환 타입은 MyView이다. - 프론트 컨트롤러의 호출 결과 반환 받은 MyView 객체의 render()를 호출하면 forward 로직을 수행해서 JSP가 실행 import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.ut..