전체 글 121

Spring - API 예외 처리 (ExceptionHandler, ControllerAdvice)

2024.01.01 - [Spring] - Spring - API 예외 처리 (HandlerExceptionResolver, ExceptionResolver ) 이론 Spring - API 예외 처리 (HandlerExceptionResolver, ExceptionResolver ) 이론 API 예외 처리는 어떻게 해야할까? HTML 페이지의 경우 앞선 게시글에서 설명했듯이, 오류 페이지를 만들고 이를 사용자에게 보여주기만 하면 되었다. 2023.12.29 - [Spring] - Spring(스프링) - 서블릿 예 junhyuk-develop.tistory.com @ExceptionHandler 와 @ControllerAdvice 의 장점을 명확히 알기 위해선, 이를 사용하지 않았을 때 얼마나 불편한지 ..

Spring 2024.01.01

Spring - API 예외 처리 (HandlerExceptionResolver, ExceptionResolver ) 이론

API 예외 처리는 어떻게 해야할까? HTML 페이지의 경우 앞선 게시글에서 설명했듯이, 오류 페이지를 만들고 이를 사용자에게 보여주기만 하면 되었다. 2023.12.29 - [Spring] - Spring(스프링) - 서블릿 예외 처리 및 오류 페이지(필터, 인터셉터) Spring(스프링) - 서블릿 예외 처리 및 오류 페이지(필터, 인터셉터) Servlet 예외 처리 스프링이 아닌 순수 서블릿 컨테이너는 예외를 어떻게 처리하는지 알아보자. 서블릿은 다음 2가지 방식으로 예외 처리를 지원한다. Exception (예외) response.sendError(HTTP 상태 코드, junhyuk-develop.tistory.com 그런데 API의 경우에는 생각할 내용이 더 많다. 오류 페이지는 단순히 고객에게..

Spring 2024.01.01

Spring(스프링) - 서블릿 예외 처리 및 오류 페이지(필터, 인터셉터)

Servlet 예외 처리 스프링이 아닌 순수 서블릿 컨테이너는 예외를 어떻게 처리하는지 알아보자. 서블릿은 다음 2가지 방식으로 예외 처리를 지원한다. Exception (예외) response.sendError(HTTP 상태 코드, 오류 메시지) Exception(예외) 웹 애플리케이션은 사용자 요청별로 별도의 쓰레드가 할당되고, 서블릿 컨테이너 안에서 실행된다. 애플리케이션에서 예외가 발생했는데, 어디선가 try ~ catch로 예외를 잡아서 처리하면 아무런 문제가 없다. 그런데 만약에 애플리케이션에서 예외를 잡지 못하고, 서블릿 밖으로까지 예외가 전달되면 어떻게 동작할까? WAS(여기까지 전파) ← 필터 ← 서블릿 ← 인터셉터 ← 컨트롤러(예외발생) 결국 톰캣 같은 WAS 까지 예외가 전달된다. W..

Spring 2023.12.29

Spring 검증 - Bean Validation

Bean Validation Bean Validation은 특정한 구현체가 아니라 Bean Validation 2.0(JSR-380)이라는 기술 표준이다. 검증 애노테이션과 여러 인터페이스의 모음이다. 마치 JPA가 표준 기술이고 그 구현체로 하이버네이트가 있는 것과 같다. Bean Validation을 구현한 기술중에 일반적으로 사용하는 구현체는 하이버네이트 Validator이다. (ORM과 관련X) 검증 애노테이션 모음 https://docs.jboss.org/hibernate/validator/6.2/reference/en-US/html_single/#validator-defineconstraints-spec Index of /hibernate/validator/6.2/reference/en-US ..

Spring 2023.12.21

Spring 검증 - Validator

2023.12.18 - [Spring] - Spring 검증 - BindingResult (FieldError, ObjectError, rejectValue, reject) Spring 검증 - BindingResult (FieldError, ObjectError, rejectValue, reject) 검증 ( Client, Server 검증 ) 클라이언트 검증은 조작할 수 있으므로 보안에 취약 서버만으로 검증하면, 즉각적인 고객 사용성이 부족 둘을 섞어 사용하되, 최종적으로 서버 검증은 필수 API 방식 → junhyuk-develop.tistory.com 해당 글은 위의 게시글에 이어 작성함을 참고하고 읽어주길 바람 Validator public interface Validator { boolean ..

Spring 2023.12.19

Spring 검증 - BindingResult (FieldError, ObjectError, rejectValue, reject)

검증 ( Client, Server 검증 ) 클라이언트 검증은 조작할 수 있으므로 보안에 취약 서버만으로 검증하면, 즉각적인 고객 사용성이 부족 둘을 섞어 사용하되, 최종적으로 서버 검증은 필수 API 방식 → API 스펙을 잘 정의해서 검증 오류를 API 응답 결과에 잘 남겨주어야 함 Code들을 Version을 올려가면서 더 단순하고 깔끔하게 변경해보겠다. ControllerV1 (제일 무식하게) //검증 오류 결과를 보관 Map errors = new HashMap(); errors 라는 map을 만들고 검증 로직을 컨트롤러에 작성하여 이를 담아준다. 전체 오류 메시지 상품명 상품명 오류 addForm.html 파일의 일부분이다. 위와 같이 타임리프를 통해 errors 를 통해 받은 에러를 찍어내려..

Spring 2023.12.18

스프링 메세지 소스 및 국제화(MessageSource, Locale)

Message 기획자가 화면에 보이는 문구를 변경해달라는 상황이다, 상품명이라는 단어를 모두 상품이름으로 고쳐달라고 하면 어떻게 해야할까? 그러면 많은 화면에 해당하는 수십개의 파일을 수정해야 한다... 이를 유연하게 대처할 수 있는 방법은 뭐가 있을까? messages.properties 메세지 관리용 파일을 만드는 것이다! item=상품 item.id=상품 ID item.itemName=상품명 item.price=가격 item.quantity=수량 이런식으로 한 곳에 작성해두고, 필요시에 각 HTML 태그에서 해당 데이터를 Key 값으로 불러 사용하는 것이다. 그럼 해당 데이터를 어떻게 불러 사용할까? 위의 예시와 같이 th:text = "#{...}" 형식을 맞춰 사용해줘야 한다. 위와 같이 작성하..

Spring 2023.12.14

Thymeleaf와 Spring Form(체크 박스, 라디오 버튼, 셀렉트 박스)

타임리프 스프링 통합 타임리프는 스프링 없이도 동작하지만, 스프링과 통합을 위한 다양한 편의 기능을 제공한다. 스프링 통합 메뉴얼: https://www.thymeleaf.org/doc/tutorials/3.0/thymeleafspring.html Tutorial: Thymeleaf + Spring Preface This tutorial explains how Thymeleaf can be integrated with the Spring Framework, especially (but not only) Spring MVC. Note that Thymeleaf has integrations for both versions 3.x and 4.x of the Spring Framework, provided b..

Thymeleaf(타임리프) 기능(주석, 블록, 자바스크립트 인라인, 템플릿 조각, 템플릿 레이아웃)

2023.12.12 - [SSR(Server Side Rendering)/Thymeleaf] - Thymeleaf[타임리프]란? 타임리프의 기본 기능 Thymeleaf[타임리프]란? 타임리프의 기본 기능 타임리프(Thymeleaf)란? - 타임리프는 백엔드 서버에서 HTML을 동적으로 렌더링 하는 용도로 사용되는 템플릿 엔진이다. ( 백엔드 서버에서 동적으로 렌더링 한다는 말은 타임 리프가 서버 사이드 HTM junhyuk-develop.tistory.com 2023.12.12 - [SSR(Server Side Rendering)/Thymeleaf] - Thymeleaf(타임리프) 기본 기능 및 객체, 문법(리터럴 대체, 반복, 조건) Thymeleaf(타임리프) 기본 기능 및 객체, 문법(리터럴 대체,..

Thymeleaf(타임리프) 기본 기능 및 객체, 문법(리터럴 대체, 반복, 조건)

2023.12.12 - [SSR(Server Side Rendering)/Thymeleaf] - Thymeleaf[타임리프]란? 타임리프의 기본 기능 Thymeleaf[타임리프]란? 타임리프의 기본 기능 타임리프(Thymeleaf)란? - 타임리프는 백엔드 서버에서 HTML을 동적으로 렌더링 하는 용도로 사용되는 템플릿 엔진이다. ( 백엔드 서버에서 동적으로 렌더링 한다는 말은 타임 리프가 서버 사이드 HTM junhyuk-develop.tistory.com 타임리프가 무엇이고, 그 특징과 간단한 기본 기능들의 설명을 앞선 글에서 써두었다. 본 게시글을 읽기 전에, 위의 글을 읽고 오는 것을 추천한다. 객체 접근 HTTP 요청 파라미터 접근 → param HTTP 세션 접근 → session 스프링 빈 ..