
해당 글은 김영한님의 스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술 - 인프런 | 강의를 수강하고 정리한 게시글입니다. PRG Post/Redirect/Get @PostMapping("/basic/items/add") public String addItemV4(Item item) { itemRepository.save(item); return "basic/item"; } // model.addAttribute("item", item); 자동 추가, 생략 // 클래스의 첫글자를 소문자로 바꾸고 ModelAttribute에 넣어주기 때문에 생략 // ModelAttribute 또한 생략 위와 같은 기능을하는 컨트롤러가 있고 이 컨트롤러의 기능은 다음과 같다. [전체 흐름] 상품 등록 페이지에서 상품을 입..

해당 글은 김영한님의 스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술 - 인프런 | 강의를 수강하고 정리한 게시글입니다. 뷰 : 타임 리프 기초와 예시 타임리프 핵심 핵심은 th:xxx 가 붙은 부분은 서버사이드에서 렌더링 되고, 기존 것을 대체한다. th:xxx 이 없으면 기존 html의 xxx 속성이 그대로 사용된다. HTML을 파일로 직접 열었을 때, th:xxx 가 있어도 웹 브라우저는 th: 속성을 알지 못하므로 무시한다. 따라서 HTML을 파일 보기를 유지하면서 템플릿 기능도 할 수 있다. 참고. : 타임리프는 순수 HTML을 파일을 웹 브라우저에서 열어도 내용을 확인할 수 있고, 서버를 통해 뷰 템플릿을 거치면 동적으로 변경된 결과를 확인할 수 있다. JSP를 생각해보면, JSP 파일은 웹..

해당 글은 김영한님의 스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술 - 인프런 | 강의를 수강하고 정리한 게시글입니다. 스프링 MVC - HTTP 메시지 컨버터 뷰 템플릿으로 HTML을 생성해서 응답하는 것이 아니라, HTTP API처럼 JSON 데이터를 HTTP 메시지 바디에서 직접 읽거나 쓰는 경우 HTTP 메시지 컨버터를 사용하면 편리하다. HTTP 메시지 컨버터를 설명하기 전에 스프링 입문편 내용을 살펴보자. [@ResponseBody 사용 원리] @ResponseBody를 사용하면 HTTP의 Body에 문자 내용을 직접 반환 viewResolver 대신에 HttpMessageConverter가 동작 기본 문자처리 : StringHttpMessageConverter 기본 객체처리 : Mappi..

해당 글은 김영한님의 스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술 - 인프런 | 강의를 수강하고 정리한 게시글입니다. 스프링 MVC - 기본 기능 로깅 운영 시스템에서는 System.out.println() 같은 시스템 콘솔을 사용해서 필요한 정보를 출력하지 않고, 별도의 로깅 라이브러리를 사용해서 로그를 출력한다. 로깅 라이브러리 스프링 부트 라이브러리를 사용하면 스프링 부트 로깅 라이브러리( spring-boot-starter-logging )가 함께 포함된다. SLF4J - http://www.slf4j.org Logback - http://logback.qos.ch 로그 라이브러리는 수 많은 라이브러리가 있는데, 그것들을 통합해서 인터페이스로 제공하는 것이 SLF4J 라이브러리이다. //@S..

해당 글은 김영한님의 스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술 - 인프런 | 강의를 수강하고 정리한 게시글입니다. 스프링 MVC - 시작하기 스프링이 제공하는 컨트롤러는 애노테이션 기반으로 동작해서 매우 유연하고 실용적이다. 참고 : 가장 우선순위가 높은 핸들러 매핑과 핸들러 어댑터는 RequestMappingHandlerMapping , RequestMappingHandlerAdapter 이다. @RequestMapping 의 앞글자를 따서 만든 이름인데, 스프링에서 주로 사용하는 애노테이션 기반의 컨트롤러를 지원하는 매핑과 어댑터이다. (실무에서 99.9% 이 방식 사용) 이제 기존에 있던 코드들을 스프링의 @RequestMapping 기반의 컨트롤러를 사용하여 변경해보자. 1. 회원 등록 ..

해당 글은 김영한님의 스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술 - 인프런 | 강의를 수강하고 정리한 게시글입니다. 스프링 MVC 구조 이해 [이전에 만든 MVC 프레임워크 구조] [Spring MVC 프레임워크 구조] 직접 만든 프레임워크 스프링 MVC 비교 FrontController -> DispatcherServlet handlerMappingMap -> HandlerMapping MyHandlerAdapter -> HandlerAdapter ModelView -> ModelAndView viewResolver(메서드) -> ViewResolver(인터페이스) MyView -> View 앞에서 설명했듯, 스프링 MVC도 프론트 컨트롤러 패턴으로 구성되어있다. 스프링 MVC의 프론트 컨트롤러..

해당 글은 김영한님의 스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술 - 인프런 | 강의를 수강하고 정리한 게시글입니다. 어댑터 패턴을 이용한 유연한 컨트롤러 - V5 만약 어떤 개발자는 이전 “ControllerV3“ 방식으로 개발하고 싶고, 어떤 개발자는 “ControllerV4“ 방식으로 개발하고 싶다면 어떻게 해야할까? public interface ControllerV3 { ModelView process(Map paramMap); } public interface ControllerV4 { String process(Map paramMap, Map model); } 어댑터 패턴을 사용해서 프론트 컨트롤러가 다양한 방식의 컨트롤러를 처리할 수 있도록 변경해보자. 참고: 지금까지 우리가 개발한 ..

해당 글은 김영한님의 스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술 - 인프런 | 강의를 수강하고 정리한 게시글입니다. 단순하고 실용적인 컨트롤러 - V4 이전에 만든 V3 컨트롤러는 서블릿 종속성을 제거하고 뷰 경로의 중복을 제거하는 등, 잘 설계된 컨트롤러이다. 하지만, 실제 컨트톨러 인터페이스를 구현하는 개발자 입장에서 보면, 항상 ModelView 객체를 생성하고 반환해야 하는 부분이 조금은 번거롭다. 좋은 프레임워크는 아키텍처도 중요하지만, 그와 더불어 실제 개발하는 개발자가 단순하고 편리하게 사용할 수 있어야 한다. (실용성이 있어야 한다) 이번에는 V3를 조금 변경해서 실제 구현하는 개발자들이 편리하게 개발할 수 있는 V4 버전을 개발해보자. [V4 구조] 기본적인 구조는 V3와 같으나,..