목록BE (354)
오봉이와 함께하는 개발 블로그
타임리프 간단히 알아보기 타임리프 사용 선언 속성 변경 - th:href th:href="@{/css/bootstrap.min.css}" 기존 html의 href 속성을 th:href="value2"의 값으로 변경된다. 타임리프 뷰 템플릿을 거치게 되면 원래 값을 th:xxx값으로 변경한다. HTML을 그대로 볼 때는 href속성이 사용되고, 뷰 템플릿을 거치면 th:href의 값이 href로 대체되면서 동적으로 변경할 수 있다. 대부분의 속성은 th:xxx로 변경할 수 있다. 타임리프 핵심 핵심은 th:xxx가 붙은 부분은 서버사이드에서 렌더링 되고, 기존 것을 대체한다. th:xxx이 없으면 기존 html의 xxx 속성이 그대로 사용된다. HTML을 파일로 직접 열었을 때, th:xxx가 있어도 웹 ..
요청 매핑 핸들러 어댑터 구조 HTTP 메시지 컨버터는 스프링 MVC 어디쯤에서 사용되는 것인가? SpringMVC 구조 이 그림에서는 보이지 않는다. 모든 비밀은 어노테이션 기반 컨트롤러 @RequestMapping을 처리하는 핸들러 어댑터인 RequestMappingHandlerAdapter(요청 매핑 핸들러 어댑터)에 있다. RequestMappingHandlerAdapter 동작 방식 RequestMapping 핸들러 어댑터로 요청 RequestMapping 핸들러 어댑터는 ArgumentResolver에 정보를 넘김 ArgumentResolver에 컨트롤러의 파라미터, 어노테이션 정보 기반으로 전달 데이터를 생성 RequestMapping 핸들러 어댑터는 ArgumentResolver가 생성한 ..
HTTP 메시지 컨버터 뷰 템플릿으로 HTML을 생성해서 응답하는 것이 아니라, HTTP API처럼 JSON 데이터를 HTTP 메시지 바디에서 직접 읽거나 쓰는 경우 HTTP 메시지 컨버터를 사용하면 편리하다. @ResponseBody 사용 원리 웹 브라우저 요청 컨트롤러 호출 @ResponseBody가 있으면 HttpMessageConverter동작 HttpMessageConverter동작에 의해 JSON으로 나갈지, String으로 나갈지 결정 return을 한다. @ResponseBody를 사용 HTTP의 BODY에 문자 내용을 직접 반환 viewResolver대신에 HttpMessageConverter가 동작 기본 문자 처리 : StringHttpMessageConverter 기본 객체 처리 : ..
HTTP 응답 - 정적 리소스, 뷰 템플릿 스프링(서버)에서 응답 데이터를 만드는 방법은 크게 3가지이다. 정적 리소스 웹 브라우저에 정적인 HTML, css, js를 제공할 때 뷰 템플릿 사용 웹 브라우저에서 동적인 HTML을 제공할 때는 뷰 템플릿을 사용한다. HTTP 메시지 사용 HTTP API를 제공하는 경우에는 HTML이 아니라 데이터를 전달해야 하므로, HTTP 메시지 바디에 JSON 같은 형식으로 데이터를 실어 보낸다. 정적 리소스 스프링 부트는 클래스패스의 다음 디렉토리에 있는 정적 리소스를 제공한다. /static, /public, /resources, /META-INF/resources src/main/resources는 리소스를 보관하는 곳이고 클래스패스의 시작 경로이다. 따라서 해당..
HTTP 요청 메시지 - JSON 이번에는 HTTP API에서 주로 사용하는 JSON 데이터 형식을 조회해보자. 기존 서블릿에서 사용했던 방식과 비슷하게 시작하자. RequestBodyJsonController /** * {"username":"hello", "age":20} * content-type: application/json */ @Slf4j @Controller public class RequestBodyJsonController { private ObjectMapper objectMapper = new ObjectMapper(); @PostMapping("/request-body-json-v1") public void requestBodyJsonV1(HttpServletRequest requ..