타임리프는 백엔드 서버에서 HTML을 동적으로 렌더링 하는 용도로 사용한다.번외 : 클라이언트 사이드 렌더링 == JSP, 리엑트타임리프는 HTML파일을 유지,렌더링 되어 직접 열어도 화면에 렌더링이 된다.JSP는 파일이 깨진다.: th:text예) <span t
[1] 📌URL 링크 URL 생성 : **를 사용 단순 URL -> /hello 쿼리 파라미터 ->/hello?param1=data1¶m2=data2 -- ${param1} 값이 치환이 된다. 경로 변수 (PathVariable) -> /hello/d
웹 페이지의 공통된 영역을 유지보수가 좋게 해결하기위해 타임리프는 템플릿 조각과 레이아웃 기능을 제공한다.메서드 호출해서 사용하는것처럼 호출해서 사용할수있다.파라미터를 사용하여 동적으로 바인딩을 할수도있다.템플릿 조각 (푸터) 예시<footer th:fragmen
타임리프 스프링 통합 타임리프는 메뉴얼을 2가지 제공한다 기본 메뉴얼 : 스프링 없이 타임리프를 사용할경우의 메뉴얼 스프링 통합 메뉴얼 : 타임리프와 스프링을 통합해서 지원하는 기능의 메뉴얼 📌 스프링 통합 메뉴얼 스프링의 SpringEL 문법 통합 $(@...
📍 스프링 메시지 스프링은 기본적인 메시지 관리 기능을 제공한다. 스프링 부트를 사용하면 스프링 부트가 Message를 스프링 빈으로 자동으로 등록한다. properties가 아닌 yml에서는 📍 메시지 국제화 파일 라는 파일을 만들어 영어를 사용하는 사람
📌 검증 사항 폼 입력시 숫자를 문자를 잘못입력하는 시나리오 검증 오류가 발생하면, 오류 화면 (bad request)으로 바로 넘어가게된다. ✔ 웹 서비스는 폼 입력시 오류가 발생하면, 사용자가 입력한 데이터를 유지한 상태로 어떤 오류가 발생하였는지 알려줘야된
📌 FieldError FieldError시 사용자의 값이 폼의 남아있게 하기위한경우 > 필드 에러는 생성자를 2개 제공한다. 사용자의 입력값을 폼에 남기지 않는 경우 사용자의 입력값을 폼에 남기는 경우 사용 예시 ( 사용자의 입력값을 폼에 남기는 경우) 여기
검증 처리 를 사용하면 BindingResult가 제공하는 FieldError, ObjectError를 직접 생성하지않고 깔끔하게 검증할수있다. messageCodesResolver 검증 오류 코드로 메시지 코드를 생성한다 > 사용 예시 (파라미터로 properti
- 예시 (스프링이 제공해주는 Validator를 사용해 오버라이딩 하여 구현) 컨트롤러 클래스에는 성공하는 로직만 구현하고, 검증 (Validator) 클래스를 따로 만들어 사용하면 훨씬 깔끔해진다.
Bean Validation 검증 로직을 rejectValue 등 로직을 직접 작성하여 사용하기에는 번거롭다. 특정 필드에 대한 검증 로직은 대부분 빈 값인지 아닌지, 특정 크기를 넘는지 아닌지와 같이 매우 일반적인 로직이다. 📌 핵심 : 검증 로직을 어노테이션으로
Bean Validation - groups (복잡성이 높아 실무에서는 잘 사용 X) 동일한 모델 객체를 등록할때와 수정할때 다르게 검증하는 방법 > 1. BeanValidation의 groups 기능을 사용한다 인터페이스를 따로 만들어, 사용하면 스프링 자체에
✔ domain 패키지 > 도메인이 가장 중요하다 도메인 = 화면,UI를 제외한 시스템이 구현해야 하는 핵심 비지니스 업무 영역을 말한다 향후 web을 다른 기술 (API 등)로 바꾸어도 도메인은 그대로 유지 할수 있어야한다. web은 domain을 참조해도되지만,
쿠키는 여러가지 보안 문제가 있다. 서버에 중요한 정보를 보관하고, 연결을 유지하는 방법을 "세션"이라고 한다.웹 브라우저에서 로그인 요청이 오면, 서버에서 세션 저장소를 관리후 추정 불가능한 랜덤값을 만들어준다. (랜덤함수 사용 or UUID 사용) 생성된 세션 ID
세션 생성 > - 예시 ( 자바에서 지원하는 UUID를 통해 랜덤 세션 값을 생성한다.) (Map객체에서 세션을 담아주고, 쿠키를 생성한다) 세션 조회 > - 예시 ( 주석 친 부분을 따로 메서드를 빼서 로직을 리팩터링할수 있다) 생성된 쿠키 을 찾아 비교후 valu
✔ 세션이라는 개념은 대부분의 웹 어플리케이션에서 필요로 한다. 서블릿은 세션을 위해 HttpSession 이라는 기능을 제공한다. > - 로그아웃 예시 를 사용해서 Session을 생성, default 값은 true 임으로 항상 Session이 생성되는것이다. (s
로그인한 사용자만 다음 페이지에 넘어 갈수있게 설계 서블릿 필터 필터를 적용하면 필터가 호출 된 다음에 서블릿이 호출된다. 공통으로 로그인 여부를 확인해야되는 관심사 로직을 하나하나 작성하여 로그인을 확인해야된다. 필터에서는 적절하지 않은 요청이라고 판단하면, 거기
📌 스프링 인터셉터란 ? 스프링이 제공하는 상속하여 사용 예를 들어 : 로그인 회원의 권한 체크를 위해 사용하는 서블릿 필터랑 공통 관심사를 해결할수있는 기술이다. 서블릿 필터랑 사용방법과 순서와 범위가 다르다. 서블릿 필터의 경우 단순히 request, reso
자바 직접 실행자바의 메인 메서드를 직접 실행하는 경우 main이라는 이름의 쓰레드가 실행된다.실행 도중에 예외를 잡지 못하고, 처음 실행한 main () 메서드를 넘어서 예외가 던져지면, 예외 정보를 남기고 해당 쓰레드는 종료된다.웹 애플리케이션웹 애플리케이션은 사용
이때 /error 라는 경로로 기본 오류 페이지를 설정함📍 기본 default 오류 페이지라고 생각 (다른 errorpage가 없으면 /error경로로 반환)ErrorPage 에서 등록한 /error 를 매핑해서 처리하는 컨트롤러다.사용 예시 resources/ te
스프링 부트 예외처리 > 스프링 부트의 기본 설정은 오류 발생시 를 오류페이지로 요청한다. 📍 (스프링 부트가 지원하는 자동 에러 생성 페이지)는 경로를 기본 ()으로 받는다 스프링 부트는 가 제공하는 기본 정보들을 활용하여 오류 API를 생성해준다. ✔ Handl
API 예외처리 - HandlerExceptionResolver 활용 예외가 발생하면 WAS까지 예외가 던져지고, WAS에서 오류 페이지 정보를 찾아서 다시 를 호출하는 과정이 너무 번잡하다.
Spring MVC 2편 API 예외처리 - @ExceptionHandler, @ControllerAdvice
Spring MVC 2편 스프링 타입 컨버터
Spring MVC 2편 스프링 타입 컨버터, 포맷터
Spring MVC 2편 파일 업로드 소개
Spring MVC 2편 스프링과 파일 업로드