오류코드 작성법 errors.properties 파일로 오류코드를 한 곳에 모아 관리하도록 할 때 메시지를 단계별로 나누어 필요에 따라 적절히 활용할 수 있도록 할 수 있다. 메시지를 세분하는 이유? 메시지를 작성할 때 여러 곳에서 사용할 수 있도록 일반적으로 작성하면, 범용성은 좋지만, 자세한 상황을 설명해야 되는 부분에서는 전달이 어려울 수 있다. 또한 자세한 설명을 위해 메시지 자체를 세밀히 작성하면, 여러 곳에서 사용하기에는 적합하지 않다. 따라서, 메시지를 단계별로 나누어 보다 범용성으로 사용하다가, 세밀하게 작성해야 하는 경우 세밀한 내용이 적용되도록 하는 것이다. 메시지를 단계별로 사용할 때, 보다 구체적일수록 우선순위가 높다. ex) required FieldError 메시지 생성 방식 참..
Spring
컨트롤러의 중요한 역할 중 하나는 HTTP 요청이 정상인지 검증하는 것이다. 클라이언트 검증 & 서버 검증 클라이언트 검증 : 자바스크립트를 활용한 검증 서버 검증 : 요청이 넘어와 컨트롤러나 서버의 다른 부분에서 검증 클라이언트 검증은 조작이 가능하여 보안에 취약하다. 서버만으로 검증하면, 즉각적인 고객 사용성이 부족해진다. 따라서, 이 둘을 적절히 사용하되, 서버 검증은 필수이다. API 방식을 사용하면 API 스펙을 잘 정의해서 검증 오류를 API 응답 결과에 잘 남겨주어야 한다. BindingResult 스프링이 제공하는 검증 오류를 보관하는 객체 검증 오류가 발생하면 BindingResult 객체에 보관하면 된다. *주의!! - BindingResult 는 검증할 대상 바로 다음에 와야한다. =..
메시지 만약, 프로젝트를 진행하던 중 기획자가 화면에 보이는 문구를 바꿔달라는 요청이 들어왔는데 이를 고치려면 어떻게 해야할까? 개발자 입장에서는 하드코딩으로 되어있는 문구를 일일히 바꾸려면 매우 번거로운 일이 아닐 수 없다. 여러 화면에 보이는 문구를 다 찾아가면서 변경해야 하기 때문이다. 스프링은 이러한 다양한 메시지를 관리하도록 하는 기능을 제공하는 데 이를 '메시지 기능'이라 한다. 예를 들어서 messages.properties라는 메시지 관리용 파일을 만들고 ==messages.properties== sports=스포츠 sportsId=스포츠 ID sports.sportName=스포츠명 sports.type=스포츠 유형 {0} 각 HTML들은 다음과 같이 해당 데이터를 key값으로 불러서 사용..
폼 데이터 처리 - th : object , th : field th : object , th : field 는 폼 데이터 바인딩에 주로 사용되는 속성이다. th : object 컨트롤러에서 전달받은 모델 객체를 현재 폼에 바인딩하는 속성 즉, 컨트롤러에서 전달 받은 모델 객체를 HTML의 데이터로 사용할 수 있게끔 도와주는 속성이다. th : field th : object로 받은 객체의 필드와 폼의 입력 필드를 연결 시키는 속성 주로 ' *{...} ' 형태의 선택 변수 식을 활용하여 th : object에서 선택한 객체의 필드에 접근한다. HTML태그의 id, name, value 속성을 자동으로 처리해준다. 예제) 상품명 th:object="${item}" : 에서 사용할 모델 객체(item)를 ..
타임리프는 스프링 없이도 동작하지만, 스프링과 통합을 위한 다양한 기능을 편리하게 제공한다. 그리고 이런 부분은 스 프링으로 백엔드를 개발하는 개발자 입장에서 타임리프를 선택하는 하나의 이유가 된다. 타임리프 매뉴얼 https://www.thymeleaf.org/doc/tutorials/3.0/usingthymeleaf.html Tutorial: Using Thymeleaf 1 Introducing Thymeleaf 1.1 What is Thymeleaf? Thymeleaf is a modern server-side Java template engine for both web and standalone environments, capable of processing HTML, XML, JavaScript..
텍스트 - text, utext HTML의 콘텐츠에 데이터를 출력하는 기능으로 " th : text(utext)"를 사용하면 된다. th : text(utext) : HTML의 콘텐츠에 데이터를 출력하는 기능 예) //span 태그 사이에 data 값이 출력됨. HTML 태그의 속성이 아니라 HTML 콘텐츠 영역 안에서 직접 데이터를 출력할 때는 "[ [...] ]" 형식으로 사용하면 된다. 예) 컨텐츠 안에서 직접 출력하기 = [ [ ${data} ] ] Escape 특수문자를 HTML 엔티티로 변경하는 것. HTML 문서는 와 같은 특수문자를 기반으로 정의된다. 타임리프에서 이러한 HTML 화면을 생성할 때는 이러한 특수 문자에 주의해야 하는데 타임리프는 기본적으로 이러한 특수문자가 데이터에 있으면 ..
타임리프 기본 기능 - https://www.thymeleaf.org/doc/tutorials/3.0/usingthymeleaf.html Tutorial: Using Thymeleaf 1 Introducing Thymeleaf 1.1 What is Thymeleaf? Thymeleaf is a modern server-side Java template engine for both web and standalone environments, capable of processing HTML, XML, JavaScript, CSS and even plain text. The main goal of Thymeleaf is to provide a www.thymeleaf.org 스프링 통합 - https://www..
타임리프를 사용하려면 사용할 스프링 프로젝트에 관련 라이브러리 의존성을 설치해야 한다. dependencies { //타임리프 의존성 설치 implementation 'org.springframework.boot:spring-boot-starter-thymeleaf' } 타임리프 사용 시 이점 타임리프는 순수 HTML 파일을 웹 브라우저에서 열어도 내용을 확인할 수 있고, 서버를 통해 뷰 템플릿을 거치면 동적으로 변경된 결과를 확인할 수 있다. JSP를 생각해보면, JSP 파일은 웹 브라우저에서 그냥 열면 JSP 소스코드와 HTML이 뒤죽박죽 되어서 정상적인 확인이 불가능하다. 오직 서버를 통해서 JSP를 열어야 한다. 타임리프 사용 선언 - 타임리프를 사용하려면 html 태그의 xmlns 속성을 사용하..
HTTP 응답 스프링(서버)에서 응답 데이터를 만드는 방법은 크게 정적 리소스, 뷰 템플릿, HTTP메시지 3가지 이다. 정적 리소스 HTML, CSS, JS 파일 그대로를 전달하는 것 스프링 부트는 클래스패스의 다음 디렉토리에 있는 정적 리소스를 제공한다. /static , /public , /resources , /META-INF/resources [ src/main/resources ] : 리소스를 보관하는 곳, 클래스 패스의 시작 경로 정적 리소스 경로 src/main/resources/static 위 경로 하위에 정적 리소스 파일들을 담고 웹브라우저에서 url 요청으로 정적 리소스를 불러올 수 있다. 예) 브라우저 요청 : http://localhost:8080/basic/hello-form.h..
로깅 알아보기 운영 시스템에서는 System.out.println() 같은 시스템 콘솔을 사용해서 필요한 정보를 출력하지 않고, 별도의 로깅 라이브러리를 사용해서 로그를 출력한다. 로깅 라이브러리 스프링 부트 로깅 라이브러리는 기본으로 다음 로깅 라이브러리를 사용한다. SLF4J(인터페이스) - http://www.slf4j.org SLF4J Simple Logging Facade for Java (SLF4J) The Simple Logging Facade for Java (SLF4J) serves as a simple facade or abstraction for various logging frameworks (e.g. java.util.logging, logback, log4j) allowing t..