서버 사이드 렌더링(SSR)타임리프는 백엔드 서버에서 HTML을 동적으로 렌더링하는 용도로 사용된다.❗SSR클라이언트가 웹 사이트에 접속하면 서버에서 필요한 데이터를 모두 가져와서 HTML 파일을 만들게 되고 이렇게 잘 만들어진 HTML 파일을 동적으로 제어할 수 있는
✔️입력 폼 GET 요청th:object를 적용하려면 해당 오브젝트 정보를 넘겨주어야 하는데 이 때, GET 등록 폼이기 때문에 데이터가 비어있는 빈 오브젝트를 만들어서 뷰에 전달한다.
하드코딩❌메시지 관리용 파일 도입⭕✔️messages.properties✔️적용// messages_ko.propertiesitem=상품item.id=상품IDitem.itemName=상품명item.price=가격item.quantity=수량// messages_en.p
❓Safe Navigation OperatorSafe Navigation Operator은 NullPointerException을 방지하기 위한 것으로 Groovy 언어로부터 시작되었다. errors?.은 errors가 null일 때, NullPointerExcepti
Bean Validation을 사용하려면 build.Gradle에 의존관계를 추가해야 한다.✔️검증 어노테이션@NotBlank : 빈값 + 공백만 있는 경우를 허용하지 않는다.@NotNull : null을 허용하지 않는다.@Range(min = 1000, max = 1
✔️쿠키 활용 - 서버에서 로그인에 성공하면 HTTP 응답에 쿠키를 담아서 브라우저에 전달 → 클라이언트는 쿠키를 받아 스토리지에 쿠키를 저장영속 쿠키 : 만료 날짜를 입력하면 그 날짜까지 유지세션 쿠키 : 만료 날짜를 생략하면 브라우저 종료 시까지 유지로그인에 성공하
상품 관리나 상품 수정, 삭제 등의 작업은 로그인 한 사용자만 접근이 가능한데 현재 로그인을 하지 않은 사용자가 URL을 직접 호출하면 그 화면에 들어갈 수 있는 문제가 발생한다.접근 권한을 필요로 하는 경우에는 컨트롤러에서 로그인 여부를 체크하면 되지만 똑같은 기능이
🙄서블릿 예외 처리 서블릿에서의 예외 처리 방법 Exception(예외) response.sendError(HTTP 상태 코드, 오류 메시지) 웹 애플리케이션 실행 흐름 > WAS → 필터 → 서블릿 → 인터셉터 → 컨트롤러 만약, 애플리케이션 실행 도중 컨
HTML 페이지의 경우 오류 페이지를 보여주면 문제를 해결할 수 있으나 기업과 기업 간 통신, 백엔드와 프론트엔드의 API를 이용한 통신에서는 각 오류 상황에 맞는 오류 응답 스펙을 정하고 Json으로 데이터를 뿌려주어야 한다.API를 이용한 통신에서 예외가 발생하면
파일을 업로드하려면 파일은 문자가 아니라 바이너리 데이터를 전송해야 한다. 문자를 전송하는 방식으로는 파일을 전송하기 어렵다. 폼을 전송할 때 파일만 전송하는 것이 아니라 첨부파일이나 문자 데이터를 같이 전송해야 하는 경우 HTTP의 multipart/form-data