반응형
웹 애플리케이션을 만들고 유효성 검증을 추가 하지 않는다면, 사용자가 폼에 잘못된 값을 입력할 시 아래와 같은 오류화면을 만나게 될 것 입니다. 이렇게 되면 클라이언트 입장에서는 상당히 당황스러울 것이고 입력한 값이 모두 날라가 처음부터 다시 작성해야 하는 일이 생깁니다. 또한 우리가 웹 사이트에서 값을 잘못입력했다고 이런 오류화면을 본적도 없죠. 우리는 웹 서비스를 할 때 이렇게 클라이언트가 해결하지 못하는 오류 화면을 보여줄 것이 아니라 클라이언트가 잘 못 입력했을 시 무엇을 잘못 입력했는지, 어떻게 입력해야하는 지를 알려줘야합니다. 그래서 Validation 검증 기능을 추가해 어떤 값을 잘못 입력했는지 알 수 있도록 해봅시다. 결과물과 주의점 이 포스팅은 검증 설명에 중점을 뒀기 때문에 예제에 사..
PRG(Post-Redirect-Get) 웹 개발 패턴 중 자주 사용되는 패턴으로 HTTP POST 요청에 대한 응답이 GET 요청을 위한 URI로 리다이렉트되는 것 입니다. PRG 패턴을 사용하는 이유를 사용하는 이유는 사용하지 않았을 경우 다음과 같은 문제점이 있기 때문입니다. PRG패턴을 사용하지 않았을 경우 문제점 1. 새로고침으로 인해 동일한 요청을 연속적으로 보내지는 이슈 발생 웹 브라우저의 새로 고침은 마지막에 서버에 전송한 데이터를 다시 전송하게 됩니다. 그래서 만약 결제 같은 중요한 로직을 POST 방식으로 구현을 했다면, 마지막으로 서버에 전송한 데이터가 POST 요청에 대한 응답 결과물이기 때문에 새로고침을 한다면 계속 중복 결제가 되는 심각한 문제점이 발생하게 됩니다. 2. POST..
HTTP 응답 방법 3가지 스프링에서 응답 데이터를 만드는 방법은 크게 3가지가 있습니다. 정적 리소스 스프링 부트는 클래스 패스의 아래 디렉토리에 있는 정적 리소스를 제공합니다. /static , /public , /resources , /META-INF/resources src/main/resources는 리소스를 보관하는 곳이고, 또는 클래스패스의 시작 경로입니다. 스프링은 정적 리소스를 담을 다음과 같은 경로를 제공하고, 이 디렉토리에 리소스를 넣어두면 스프링 부트가 정적 리소스로 서비스를 제공합니다. src/main/resources/static 만약 src/main/resources/static/test/index.html 경로에 파일이 들어있으면 웹 브라우저에서 다음과 같이 실행하면 정정 파..
HTTP 요청 방법 3가지 스프링 HTTP 요청 방법 3가지는 다음과 같이 이뤄져있습니다. GET 방식 메시지 바디 없이, URL의 “쿼리 파라미터”를 사용해 데이터를 전달합니다. ( EX : 검색, 필터, 페이징 등에서 많이 사용 ) 쿼리 파라미터는 URL에 다음과 같이 ? 를 시작으로 보낼 수 있습니다. 추가 파라미터는 & 로 구분합니다. http://localhost:8080/request-param?username=hello&age=2 POST 방식 - HTML Form HTML의 Form을 사용해서 클라이언트에서 서버로 데이터를 전송하는 방식으로 , 주로 회원 가입, 상품 주문 등에서 사용합니다. 컨텐츠 타입은 다음과 같으며 application/x-www-form-urlencoded 메시지 바..
Lombok 이란? Java의 라이브러리로 반복되는 메서드를 Anntation을 사용해 자동으로 작성해주는 아주 편리한 라이브러리입니다. Java에서 보통 Model 클래스나 Entity같은 도메인 클래스 등에는 여러 속성이 존재하고 이들이 갖는 프로퍼티에 대해서 Getter, Setter, 생성자 등을 매번 작성해줘야하지만 Lombok을 이용한다면 어노테이션을 이용하는 것 만으로 자동으로 Getter, Setter, 생성자 등의 코드를 작성해줘 번거로운 과정을 제거해줍니다. 인텔리제이 Lombok 설치 및 적용 방법 1. 파일 -> 설정 -> 플러그인 에서 lombok을 검색 후 플러그인을 설치합니다. 2. build.gradle의 dependency에 아래 코드를 추가합니다. dependencies ..
Spring Bean의 생명 주기 Spring Bean은 다음과 같은 생명 주기를 갖습니다. 스프링 컨테이너 생성 => 스프링 빈 생성 => 의존 관계 주입(DI) => 초기화 콜백 => 사용 => 소멸전 콜백 => 스프링 종료 위 생명 주기를 보면 스프링 빈(Spring Bean)은 객체를 생성하고, 의존관계 주입이 다 끝난 후에야 필요한 데이터를 사용할 수 있는 준비가 완료 됩니다. 즉, 생성자가 호출되었을 때 스프링 빈은 초기화 전이고 DI(의존관계 주입)이 이루어 지고 나서야 스프링 빈이 초기화 됩니다. 초기화 작업은 의존관계 주입이 모두 완료되고 난 다음에 호출하게 되는데, 개발자가 의존관계 주입이 완료된 시점이 언제인지 알 수 있는 방법이 없습니다. 그래서 Spring은 다음과 같은 빈 생명주..