이전 포스팅에서 유효성 검증하는 법에 대해 알아봤었습니다. (이전 포스팅에서 다룬 내용들은 이번 포스팅에서는 생략) [Spring] 유효성 검증하기 (Validation) 웹 애플리케이션을 만들고 유효성 검증을 추가 하지 않는다면, 사용자가 폼에 잘못된 값을 입력할 시 아래와 같은 오류화면을 만나게 될 것 입니다. 이렇게 되면 클라이언트 입장에서는 상당히 hstory0208.tistory.com 하지만 이 전처럼 검증 기능을 매번 코드로 작성하는 것은 상당히 번거로운 작업입니다. 스프링은 이런 검증 로직을 모든 프로젝트에 적용할 수 있게 공통화하고, 표준화한 Bean Validation을 제공합니다. Bean Validation을 잘 활용하면, 애노테이션 하나로 검증 로직을 매우 편리하게 적용할 수 있습..
웹 애플리케이션을 만들고 유효성 검증을 추가 하지 않는다면, 사용자가 폼에 잘못된 값을 입력할 시 아래와 같은 오류화면을 만나게 될 것 입니다. 이렇게 되면 클라이언트 입장에서는 상당히 당황스러울 것이고 입력한 값이 모두 날라가 처음부터 다시 작성해야 하는 일이 생깁니다. 또한 우리가 웹 사이트에서 값을 잘못입력했다고 이런 오류화면을 본적도 없죠. 우리는 웹 서비스를 할 때 이렇게 클라이언트가 해결하지 못하는 오류 화면을 보여줄 것이 아니라 클라이언트가 잘 못 입력했을 시 무엇을 잘못 입력했는지, 어떻게 입력해야하는 지를 알려줘야합니다. 그래서 Validation 검증 기능을 추가해 어떤 값을 잘못 입력했는지 알 수 있도록 해봅시다. 결과물과 주의점 이 포스팅은 검증 설명에 중점을 뒀기 때문에 예제에 사..
상품명 가격 수량 아래의 HTML 코드를 보면 상품명 또는 가격, 수량으로 각 구분자의 표시되는 이름들이 하드코딩 되어있습니다. 지금이야 간단한 HTML 이라서 상관은 없겠지만, 만약 여러 HTML에 동일하게 적용되어있는 상품명, 가격, 수량의 이름이 변경되어야 한다면 어떨까요? 일일히 HTML을 다 들어가서 하나씩 지우고 수정하고 해야 할 것입니다. 이러한 번거로움 작업을 메시지 기능을 통해 관리하는 방법을 알아봅시다. 메시지 기능 적용하기 먼저 messages.properties 라는 메시지 관리용 프로퍼티 파일을 만들어 줍니다. 그리고 key , value 형식으로 값을 입력합니다. ( {0}, {1} ... 등 파라미터도 적용 가능) item=상품 item.id=상품 ID item.itemName..
문제 설명 제한사항 입출력 예 Solution.py 첫 번째, 두 번째 조건을 보면 철수가 가진 카드들에 적힌 모든 숫자를 나눌 수 있고 영희가 가진 카드들에 적힌 모든 숫자들 중에 하나도 나눌수 없는 양의 정수 a => 철수가 가진 카드들의 최대 공약수 영희가 가진 카드들에 적힌 모든 숫자를 나눌 수 있고 철수가 가진 카드들에 적힌 모든 숫자들 중에 하나도 나눌수 없는 양의 정수 a => 영희가 가진 카드들의 최대 공약수 로 해석할 수 있습니다. 유클리드 호제법을 사용해 철수와 영희의 카드뭉치 최대공약수를 구하기 구한 최대공약수로 두 조건들을 적용 두 최대공약수 중 가장 큰 값을 반환 정답 코드 def solution(arrayA, arrayB): answer = 0 # array의 첫 번째 값이 최대..
타임리프는 스프링과 통합을 위한 다양한 기능을 편리하게 제공합니다. 스프링 통합으로 추가되는 기능들 스프링의 SpringEL 문법 통합 ${@myBean.doSomething()} 처럼 스프링 빈 호출 지원 편리한 폼 관리를 위한 추가 속성 th:object (기능 강화, 폼 커맨드 객체 선택) th:field , th:errors , th:errorclass 폼 컴포넌트 기능 checkbox, radio button, List 등을 편리하게 사용할 수 있는 기능 지원 스프링의 메시지, 국제화 기능의 편리한 통합 스프링의 검증, 오류 처리 통합 스프링의 변환 서비스 통합(ConversionService) 입력 폼 처리 th:object 커맨드 객체를 지정 *{...} 선택 변수 식 (th:object 에..
레이아웃을 사용하는 이유? 레아아웃을 사용하는 이유는 만약 100개의 페이지에 똑같은 header와 footer가 들어갈 경우 각각의 HTML마다 똑같은 header와 footer를 추가하는 것은 상당히 비효율적이고 유지보수면에서도 좋지 않습니다. 그래서 반복되는 화면이 있어 HTML 코드를 줄일 때 레이아웃을 적용하면 상당히 효과적입니다. 템플릿 조각 템플릿 조각은 공통으로 적용할 부분을 조각조각으로 만들어 필요한 공통의 부분들에 가져다 쓰는 방식입니다. 가 있는 태그는 다른곳에 포함되는 코드 조각으로 코드 조각을 사용할 때는 조각 표현식 ~{...}를 사용합니다. Controller @Controller @RequestMapping("/template") public class TemplateCont..