반응형 Backend, Server53 [Spring MVC] 검증 Validation - (1) 검증이란 HTTP 요청이 정상인지 검증하는 것. 검증 로직을 처음부터 만들어보면서 어떻게 발전시킬 수 있는지 알아보자. V1 - 직접 검증 개발하기 아래와 같이 코드를 통해 검증 로직을 직접 작성하는 방식의 검증 방법을 만들어보자. 더보기 에러들을 보관할 해쉬맵을 생성하고, 검증 로직을 실행하여 에러 발생 시 해쉬맵에 보관 @PostMapping("/add") public String addItem(@ModelAttribute Item item, RedirectAttributes redirectAttributes, Model model) { //검증 오류 결과를 보관 Map errors = new HashMap(); //검증 로직 if (!StringUtils.hasText(item.getItemName.. 2022. 2. 1. [Spring MVC] 메시지와 국제화 메시지 : 화면에 보이는 문구를 한번에 설정하고 관리할 수 있게 하도록 하는 기능 국제화 : 나라 별 다른 언어로 보이도록 하는 기능 메시지 기능 사용 1. 메시지 파일 등록 기존에는 아래와 같이 메시지 기능을 제공하는 스프링 빈을 직접 등록해서 사용했다. 더보기 basenames을 지정하면 그 파일을 사용할 수 있게 된다. 여기서는 messages.properties와 errors.properties 파일을 사용하게 된다. 국제화 기능을 위해선 messages_ko.properties와 같이 언어 정보를 주면 된다. @Bean public MessageSource messageSource() { ResourceBundleMessageSource messageSource = new ResourceBund.. 2022. 2. 1. [Spring MVC] PRG와 RedirectAttributes 사용하기 GET /add로 상품 등록 폼을 얻고, 데이터를 입력한 뒤 상품 저장 버튼을 누르면 POST /add로 데이터를 전송함. 이 상태에서 새로고침을 누른다면? 가장 최근 전송인 POST /add를 다시 보내게 되면서 동일 데이터(id만 다른)가 계속 쌓이게 됨 이것의 해결법으로 상품 저장 클릭 시 뷰 템플릿을 호출하는게 아니라 상품 상세 화면으로 리다이렉트를 호출해주면 된다. v1. 리턴값으로 "redirect:/..."를 넘기면 된다. @PostMapping("/add") public String addItemV5(Item item) { itemRepository.save(item); return "redirect:/basic/items/" + item.getId(); } 근데 반환값을 잘 살펴보면 +i.. 2022. 1. 20. [Thymeleaf] 타임리프 간단한 사용법 타임리프 사용 선언 속성 변경 타임리프 뷰 템플릿을 거치게 되면 원래 값을 th:xxx 값으로 변경한다. 만약 값이 없다면 새로 생성한다. HTML을 그대로 볼 때는 href 속성이 사용되고, 뷰 템플릿을 거치면 th:href 의 값이 href 로 대체되면서 동적으로 변경할 수 있다. 타임리프의 핵심 타임리프의 장점은 HTML로 파일 보기를 유지하면서 템플릿 기능도 할 수 있다는 것. HTML을 파일로 직접 열었을 때 th:xxx가 있어도 웹브라우저는 th: 속성을 알지못하므로 무시함 URL 링크 표현식 - @{...} 타임리프는 URL 링크를 사용하는 경우 @{...}로 표현해야 한다. 예시 : th:href="@{/css/bootstrap.min.css}" URL 링크 표현식2 th:href="@{/.. 2022. 1. 20. [Spring MVC] HTTP 메시지 컨버터, 요청 매핑 핸들러 어댑터 구조 HTTP 메시지 컨버터가 적용되는 경우 HTTP 요청: @RequestBody , HttpEntity(RequestEntity) HTTP 응답: @ResponseBody , HttpEntity(ResponseEntity) 스프링 부트 기본 메시지 컨버터 (순서대로 대상 클래스 타입과 미디어 타입 둘을 체크하여 사용 여부를 결정) 0 = ByteArrayHttpMessageConverter 1 = StringHttpMessageConverter 2 = MappingJackson2HttpMessageConverter ByteArrayHttpMessageConverter : byte[] 데이터를 처리한다. - 클래스 타입: byte[], 미디어 타입 : */* - 요청 : @ReqeustBody byte[] .. 2022. 1. 19. [Spring MVC] 스프링 MVC 기본 기능 - (3) HTTP 응답 스프링에서 응답 데이터를 만드는 3가지 방법 1. 정적 리소스 : 웹브라우저에 정적인 HTML, CSS, JS 제공할 때는 정적 리소스 사용 2. 뷰 템플릿 사용 : 웹브라우저에 동적인 HTML 제공할 때는 뷰 템플릿 사용 3. HTTP 메시지 사용 : HTTP API를 제공하는 경우에는 HTTP 메시지 바디에 JSON 같은 형식으로 데이터를 보냄 정적 리소스 정적 리소스 경로 : src/main/resources/static 파일 경로가 src/main/resources/static/basic/hello-form.html라면 웹브라우저에서 다음을 실행하면 된다. http://localhost:8080/basic/hello-form.html 뷰 템플릿 뷰 템플릿 경로 : src/main/resources.. 2022. 1. 18. 이전 1 2 3 4 5 6 ··· 9 다음 반응형