인프런의 김영한님의 강의를 듣고 개인적으로 정리했습니다. Validation → HTTP 요청이 정상적인지 검증하는 과정! 서버에서 정상적인 값이 왔는지 확인하는 것은 굉장히 중요하다. 클라이언트 쪽에서도 어느정도의 검증은 가능하지만, 이런 검증은 정확하지 않을 수 있다. 왜냐하면 POSTMAN 따위로 값을 변조해서 요청을 하면 클라이언트를 거치지 않고 값이 들어오기 때문이다. 이런 이유 때문에 서버 차원에서 들어온 값이 정상적인지 아닌지를 확인하는 것은 굉장히 중요하다. 서버에서 들어온 값의 대한 검증을 하고, 이상한 값이 나왔다면 이것들을 클라이언트에 다시 알려줘서 정상적으로 사용할 수 있도록 하려고 한다. Validation 참고사항 클라이언트 검증은 조작할 수 있기 때문에 보안에 취약하다. 서버만..
인프런의 김영한님의 강의를 듣고 복습차원에서 정리한 글입니다. 메세지 기능 웹 페이지 전체에 '상품명'이라는 문구가 100개가 출력된다고 가정해보자. 그런데 상품명을 상품이름으로 바꿔달라는 요청이 왔다고 가정해보자. 그렇다면 개발자는 이 모든 문구를 하나하나 찾아가서 수정을 해주어야한다. 화면의 수가 많으면 많을수록 큰 문제가 된다. 왜 이렇게 하나씩 찾아가서 수정을 해야할까? 모두 "상품명"이라는 이름으로 하드코딩이 되어있기 때문이다. 그렇기 때문에 하나하나 찾아가서 모든 값들을 수정해야한다. 이런 경우를 해결하는데 많은 도움이 되는 것이 바로 메세지 기능이라는 것이다. 메세지 기능을 활용해서 이런 문제점들을 해결해보자! 아이디어 ! messages.properties 메시지 관리용 파일을 만들고 관리..
타임리프 docs Documentation - Thymeleaf Articles Quick glimpses into what Thymeleaf can bring to your project. Introductions With Spring Comparisons www.thymeleaf.org 위 주소에서 "Thymeleaf + Spring"의 Documentation을 필요할 때 참고하면 된다. 타임리프 특징 타임리프는 서버 사이드 HTML을 랜더링한다 백엔드 서버에서 HTML을 동적으로 렌더링 처리해준다 타임리프는 네츄럴 템플릿이다. 타임리프는 th 속성을 알고, HTML은 th 속성을 모른다. 따라서 HTML은 타임리프의 th 속성을 무시해서, 순수 HTML 파일만 열어도 잘 열린다. 타임리프는 HTM..
HTTP 메세지 컨버터 HTTP API처럼 JSON 데이터를 HTTP 메세지 바디에서 직접 읽거나 쓰는 경우 HTTP 메세지 컨버터를 사용하면 편리하다고 한다. 스프링에서 HTTP 메세지 컨버터는 다음과 같은 경우에 사용된다. HTTP 요청 : @RequestBody, @RestController, HttpEntity, RequestEntity HTTP 응답 : @ResponseBody, @RestController, HttpEntity, ResponseEntity HTTP 메세지 컨버터는 Interface이고, 따라서 여러 구현체들이 존재한다. 이 중에서 어떤 메세지 컨버터를 사용할지는 클라이언트가 보낸 HTTP Accepter 헤더, Content-type을, 서버의 컨트롤러 반환 타입을 조합해서 H..
Spring MVC 응답 정적 리소스 웹 브라우저에 정적인 HTML, CSS, JS를 제공할 때 사용(파일을 그대로 전달) 뷰 템플릿 사용 웹 브라우저에 동적인 HTML을 제공. 뷰 템플릿을 사용(SSR) HTTP 메세지 사용 HTTP API를 제공하는 경우, HTML이 아닌 데이터를 전달한다. 주로, HTTP 메세지 바디에 JSON 같은 형식으로 데이터를 제공한다. Spring MVC에서 응답을 만드는 방법은 위 3가지다. 정적 리소스 제공 Spring은 아래 디렉토리에 있는 정적 리소스를 제공한다 /static /public /resources /META-INF/resources /src/main/webapp/WEB-INF (이 경우 외부에서 직접 접근 불가능) /static에 넣어둔 HTML은 스프..