분류 전체보기 211

스프링 mvc2 - 6. 예외 처리와 오류 페이지

목표 예외가 터질 때 어떤 내용의 오류페이지를 작성할지, 어떻게 배치할지 고려하는 것 학습 방향 서블릿부터 이해 -> 서블릿 컨테이너가 어떤식으로 예외를 처리하는지 메커니즘을 이해 서블릿 위에 spring이 예외를 어떻게 처리하는지 순차적으로 이해 학습을 위해 스프링 부트에서 자동으로 제공하는 기본 예외 페이지를 꺼둔다. # application.properties server.error.whitelabel.enabled=false 1. 서블릿 예외 처리 2가지 방식으로 예외 처리 Exception(예외) - 무조건 500 error, 서버에서 처리 못하는 exception이 was까지 넘어가기 때문에 server문제라고 해석할 수 밖에 없다. response.sendError(Http status, e..

framework/spring 2023.05.07

스프링 mvc2 - 5. 로그인 처리2 - 필터, 인터셉터

사용 목적 필터, 인터셉터 동일 기능 제공 필터 : 서블릿이 제공 인터셉터 : 스프링이 제공 공통 관심 사항 : 로그인 하지 않은 사용자도 URL을 호출하면 상품 관리 화면에 들어갈 수 있게 된다. 해결방안 컨트롤러에서 로그인 여부를 체크하는 로직을 하나씩 작성 -> 등록, 수정, 삭제 , 조회 등 동일 로직을 작성하는 부분들이 너무 많다. -> 로그인 관련 로직이 변경시, 작성한 모든 로직 다 수정 필요 웹과 관련된 공통관심사는 서블릿 필터 or 스프링 인터셉터 사용하는 것이 유리 1. 서블릿 필터 서블릿 필터 흐름 Http 요청 -> WAS(톰캣서버) -> 필터1 -> 필터2 -> 필터3 -> 서블릿 -> 컨트롤러 * 역순으로 돌아가면서 응답을 보낸다. 필터는 필터링 한다는 의미도 가지지만 서블릿으로..

framework/spring 2023.05.07

스프링 mvc2 - 4. 로그인 처리1 - 쿠키, 세션

1. domain 도메인 화면, UI, 기술 인프라 등등의 영역을 제외한 시스템이 구현해야 하는 핵심 비즈니스 업무 영역 controller, Service, Repository에서 사용하는 data 향후 web을 다른 기술로 바꾸어도 도메인은 그대로 유지할 수 있어야 한다. web은 domain에 의존하지만 domain은 web에 의존하지 않게 설계해야한다. web 패키지를 모두 제거해도 domain에는 전혀 영향이 없도록 의존관계를 설계하는 것이 중요 == domain은 web을 참조하면 안된다. domain: data, service 로직 web: controller, form 관리하는 로직 2. test data package hello.login; @Component @RequiredArgsCo..

framework/spring 2023.05.06

스프링 mvc2 - 3. 검증 2 - Bean Validation

1. Bean Validation 소개 Bean Validation 검증 로직을 모든 프로젝트에 적용할 수 있게 공통화하고, 표준화 한 것 @NotBlank @NotNull @Range @Max ... 특정한 구현체가 아니라 JSR-380이라는 기술 표준 == 검증 애노테이션 + 인터페이스 구현체 : 하이버네이트 Validator Bean Validation 구현 기술 중 일반적으로 사용하는 구현체 검증 애노테이션 모음(한번보는 걸 추천): https://docs.jboss.org/hibernate/validator/6.2/reference/en-US/html_single/#validator-defineconstraints-spec 2. Bean Validation - 시작 스프링과 통합하지 않는 순수한..

framework/spring 2023.05.06

2. thymeleaf - 스프링 통합과 폼

타임리프는 스프링 없이도 동작하지만, 스프링과 통합을 위한 다양한 기능을 편리하게 제공한다. 타임리프 메뉴얼 기본 메뉴얼: https://www.thymeleaf.org/doc/tutorials/3.0/usingthymeleaf.html 스프링 통합 메뉴얼: https://www.thymeleaf.org/doc/tutorials/3.0/thymeleafspring.html 1. 스프링 통합 - 타임리프 추가기능 스프링 SpringEL 문법 ${@myBean} 스프링 빈 호출 지원 form 관리 추가 속성 th:object - 기능 강화, form command 객체 th:field, th:errors, th:errorclass form 컴포넌트 기능 - checkbox, radio button, list..

web Language/html 2023.05.06

스프링 mvc2 - 2 검증 1 (Validation)

추가할 것 :th:errors bindingResult에 errors를 타임리프 th: errors로 쓴다던데 errors란게 원래 있는거야? ChatGPT BindingResult는 스프링에서 제공하는 유효성 검사 결과를 저장하는 객체입니다. BindingResult는 @Valid와 함께 사용되어 폼 데이터의 유효성 검사를 수행하고, 유효성 검사 결과를 저장합니다. th:errors는 Thymeleaf 템플릿 엔진에서 제공하는 유효성 검사 결과를 출력하는 태그입니다. BindingResult에서 FieldError나 ObjectError 등의 유효성 검사 결과가 있으면, 해당 결과를 th:errors 태그를 통해 출력할 수 있습니다. th:errors 태그를 사용할 때 path 속성을 이용하여 출력하려..

framework/spring 2023.05.05

1. 타임리프 - 기본기능

0. 이전 기본 문법 타임리프 사용 선언 th : PROPERTY = " @{} or ${} or | | or ( )" PROPERTY ex: name, class 같은거 의미 타임리프는 th:로 타임리프 문법이 시작된다. th에 적용할 property를 쓰고 " " 내부에 적용하고 싶은 문법을 적용한다. 어지간한 property는 다 th: property 종류 가능하다. th: property를 해도 그냥 property도 작성을 하는데 이는 렌더링 전에는 그냥 property가 적용되고 렌더링 후에는 th: property가 적용된다. @{} : url 경로 ${} : controller로 부터 받아온 model 객체의 key를 작성하면 value를 반환해줌 | | : 리터럴로 JS의 벡틱 같은 역..

web Language/html 2023.05.05

JAVA 자료구조

최신 JAVA 구현 자료구조론 한정란 저자의 최신 JAVA 구현 자료구조론 도서를 읽고 학습한 내용 기록 출처 : 최신 JAVA 구현 자료구조론 - 한정란 학습 구성 자료(=data)의 특성마다 해당 자료에 맞는 자료 구조들이 존재 ex) 대기자 명단 자료, 동물 목록 자료, 아이디 비밀번호 자료, 괄호 개수 체크하는 자료(괄호라는 자료를 준다.) 등등 헤당 자료에 맞는 자료구조를 선택 ex) list, set, map, stack, queue, deck, linked, ... 자료를 통해서 원하는 결과 도출 알고리즘 이용 : 명령문을 사용해서 결과를 도출 ex) for, if, while, 람다식, break문 결론 자료구조는 정형화된 틀이 존재. 알맞는 자료 구조를 사용해서 효율적으로 프로그램 성능을..