본문 바로가기

분류 전체보기

(80)
[Spring] 세션(Session) 세션이란? 세션(Session)이란 일정 시간동안 같은 사용자(브라우저)로 부터 들어오는 일련의 요구를 하나의 상태로 보고 그 상태를 일정하게 유지시키는 기술이다. 여기서, 일정 시간이란 사용자가 브라우저를 통해 웹 서버에 접속한 시점으로부터 브라우저를 종료할 때 까지의 시간을 말한다. 정리하자면, 사용자가 웹 서버에 접속해 있는 상태를 하나의 단위로 보고 일정 시간동안 유지시키는 것을 세션이라고 말한다. 세션은 흔히 우리가 브라우저를 사용하면서 많이 듣게 되는 쿠키와 비교된다. 쿠키는 (Key, Value) 쌍으로 로컬에 저장되어 사용되는 작은 데이터 파일이다. 여기서 쿠키와 세션의 차이점에 대해서 간단하게 살펴보고 넘어가자. 이제는 세션에 대해서 잘 알겠는데 이를 어떤 경우에 사용할까? 우리가 브라우..
[Spring] 검증(Bean Validation) Bean Validation이란? 우리는 이전에 Validator를 통해 검증을 하는 것을 해보았다. 간단하게 Validator를 사용하고자 하는 컨트롤러에 등록하여 사용하기도 했지만 실제로 MainApplication에 Global Validator로 적용하여 사용하는 것도 가능하다. Spring에서는 이를 활용하여 간단하게 애노테이션으로 검증할 수 있는 기법을 제공한다. 이를 Bean Validation이라고 하며, Spring에서는 LocalValidatorFactoryBean을 Global Validator로 등록하여 검증을 진행한다. 우리가 실제로 객체의 속성위에 애노테이션을 적용함으로써 이를 간단하게 해결가능하다. 적용가능한 애노테이션은 @NotBlank, @Max, @Range등 다양한데 자..
[Spring] 검증(Validation) 검증이란? 검증(Validation)이란 어떤 데이터의 값이 유효한 값인지 혹은 타당한 값인지를 확인하는 것을 말한다. 이를 살펴보기 위해 Thymeleaf - Form에서 다뤘던 예제를 가지고 설명하려고 한다. 여기서, Form은 이름, 나이 등으로 구성되어 있었다. 개발자인 우리는 이름과 이메일이 필수로 들어가야하고 나이는 숫자로 입력받아야한다고 하자. 그렇다면 우리는 검증을 통해 사용자들이 입력한 값이 우리가 요구하는 사항과 일치하는 지를 확인한다. 만약, 우리의 요구사항과 맞지 않아 검증에 실패하게 된 경우에는 사용자가 이를 인식하고 다시 입력할 수 있게 만들어줘야 할 것이다. 그렇다면 우리는 스프링에서 검증을 어떻게 구현해야할까? 이에 대해서 알아보자. BindingResult 우리가 검증을 진..
메세지 소스, 국제화 메세지 소스 공통적으로 처리하는 메시지들을 처리하는데 사용한다. 기본적으로 MessageSource 인터페이스를 구현한 ResourceBundleMessageSource를 스프링 빈으로 등록하여 사용해야 하지만 스프링 부트에서는 자동으로 등록해준다. 이제 메세지 소스에 대해 자세히 살펴보자. ​ 메시지는 resources - messages - messages.properties(messages_kr.properties ...)에서 관리되어진다. 메시지는 다음과 같이 값을 부여하여 사용할 수 있도록한다. Thymeleaf에서 메세지 소스를 사용하려고 하려면 #{메세지코드}와 같이 사용하면 된다. 잘 나오는 모습을 확인할 수 있다. 국제화 우리는 메세지 소스를 활용하여 국제화 기능을 사용할 수 있다. 우리..
[Spring, Thymeleaf] Form 심화 Form 심화 우리는 Form 기본에 추가적으로 다양한 정보를 확인해보고자 한다. 싱글 체크박스 멀티 체크박스 라디오 박스 셀렉트 박스 우리는 이 4가지들을 간단한 예시를 통해 알아보려고 한다. 노트북 소유 유무, 사용 주 언어, 개발 환경, 이메일을 입력받으려고 한다. 노트북 소유 유무는 싱글 체크박스, 사용 주 언어는 멀티 체크 박스, 개발 환경은 라디오 박스, 이메일은 인풋박스와 셀렉트박스를 사용하여 구성하려고 한다. 구현 싱글 체크박스 private Boolean notebook; Person객체에 노트북 소유 여부를 저장할 변수이다. 노트북 소유 여부를 입력하세요. 노트북 소유 여부 th:field를 활용하여 Person객체의 notebook 변수의 값을 싱글 체크박스로 저장한다. 멀티 체크박스..
[Spring, Thymeleaf] Form 기본 Form 기본 간단한 예제로 폼을 완성하는 것을 해보자. 우리는 이름, 나이, 학과, 전공을 입력하는 인풋 박스를 만들고 값을 입력받아 서버에 전달하고 해당 값들에 대해 요약해주는 페이지로 이동하는 서비스를 구성해보자. @GetMapping("/home") public String home(Model model){ model.addAttribute("person", new Person()); return "home"; } 해당 URL로 요청시 person이라는 객체를 넘겨 데이터를 저장할 수 있도록 한다. 이름을 입력하세요. 나이를 입력하세요. 학과를 입력하세요. 전공을 입력하세요. 제출 th:object="${객체명}"을 통해 사용할 객체를 간단하게 지정할 수 있다. th:field="*{속성명}"을 ..
[Thymeleaf] 반복, 조건, 블럭 반복 @GetMapping("each") public String each(Model model) { List test = new ArrayList(); addTestData(test); model.addAttribute("people", test); return "each"; } private void addTestData(List test) { Person person1 = new Person("Gil", 25, "컴공", "백앤드"); Person person2 = new Person("SSang", 25, "컴공", "프론트앤드"); Person person3 = new Person("GilSSang", 25, "컴공", "풀스택"); test.add(person1); test.add(person..
[Thymeleaf] 연산, 속성값 연산 ​ 비교 연산 기호로 다음과 같이 비교 연산이 가능하다. ​ 조건 연산 삼항 조건 연산자처럼 조건문 사용이 가능하다. Elvis 연산 해당 변수가 존재한다면 해당 변수를 출력하고 없다면 : 뒤에 설정한 값이 출력된다. No-Operation 없다 해당 변수값이 존재한다면 해당 변수를 출력하고 없다면 동작을 안한다.(말 그대로 No-Operation) ​ 속성값 ​ 속성 값 추가 첫 번째, 두 번째 라인은 속성을 뒤에 혹은 앞에 추가한다.(공백 필요) 세 번째 라인은 클래스에 추가해준다. 체크 박스 체크 박스 체크 여부를 설정한다. 참고문헌 https://www.thymeleaf.org/doc/tutorials/2.1/usingthymeleaf.html https://www.inflearn.com/c..