[Spring MVC] 필터, 인터셉터(로그인 처리 관련)
Back-End/Spring2024. 3. 18. 00:16[Spring MVC] 필터, 인터셉터(로그인 처리 관련)

이 글은 인프런 김영한님의 Spring 강의를 바탕으로 개인적인 정리를 위해 작성한 글입니다. 로그인 한 사용자만 상품 관리 페이지에 들어갈 수 있어야 한다. 로그인 하지 않은 사용자도 URL을 직접 호출하면 상품 관리 화면에 들어갈 수 있다. 이렇게 로그인하지 않은 사용자는 다른 URL에 접근할 수 없도록 해주는 것이 서블릿 필터와 인터셉터이다. 애플리케이션 여러 로직에서 공통으로 관심이 있는 있는 것을 공통 관심사(cross-cutting concern)라고 한다. 여기서는 등록, 수정, 삭제, 조회 등등 여러 로직에서 공통으로 인증에 대해서 관심을 가지고 있다. 이러한 공통 관심사는 스프링의 AOP로도 해결할 수 있지만, 웹과 관련된 공통 관심사는 지금부터 설명할 서블릿 필터 또는 스프링 인터셉터를..

[Spring MVC] 세션을 이용한 로그인
Back-End/Spring2024. 3. 17. 00:06[Spring MVC] 세션을 이용한 로그인

이 글은 인프런 김영한님의 Spring 강의를 바탕으로 개인적인 정리를 위해 작성한 글입니다. 세션을 이용한 로그인 처리 쿠키에 중요한 정보를 보관하는 방법은 여러가지 보안 이슈가 있다. 이 문제를 해결하려면 결국 중요한 정보를 모두 서버에 저장해야 한다. 그리고 클라이언트와 서버는 추정 불가능한 임의의 식별자 값으로 연결해야 한다. 이렇게 서버에 중요한 정보를 보관하고 연결을 유지하는 방법을 세션이라 한다. 사용자가 loginId , password 정보를 전달하면 서버에서 해당 사용자가 맞는지 확인한다. 세션 ID를 생성하는데, 추정 불가능해야 한다. →UUID는 추정이 불가능하다. UUID ex) mySessionId=zz0101xx-bab9-4b92-9b32-dadb280f4b61 세션 저장소의 ..

[Spring MVC] 쿠키를 이용한 로그인 처리
Back-End/Spring2024. 3. 16. 00:58[Spring MVC] 쿠키를 이용한 로그인 처리

이 글은 인프런 김영한님의 Spring 강의를 바탕으로 개인적인 정리를 위해 작성한 글입니다. MemberRepository /** * 동시성 문제가 고려되어 있지 않음, 실무에서는 ConcurrentHashMap, AtomicLong 사용 고려 */ @Slf4j @Repository public class MemberRepository { private static Map store = new HashMap(); //static 사용 private static long sequence = 0L; //static 사용 public Member save(Member member) { member.setId(++sequence); log.info("save: member={}", member); store...

[Java] Optional<T>
Language/Java2024. 3. 15. 00:51[Java] Optional<T>

자바에서 Optional 클래스는 null이 될 수 있는 객체를 감싸는 래퍼 클래스이다. java.util.Optional는 자바 8에서 도입되었으며, NullPointerException을 방지하고, 명시적으로 변수가 null 값을 가질 수 있음을 표현할 수 있는 방법을 제공한다. 이를 통해 개발자는 보다 깔끔하고 의도가 명확한 코드를 작성할 수 있다. 기본 사용법Optional 객체를 생성하는 기본적인 방법은 Optional.of(value), Optional.ofNullable(value), 그리고 Optional.empty() 세 가지가 있다. Optional.of(value): null이 아닌 명시적인 값을 가지는 Optional 객체를 반환한다. 만약 인자로 넘긴 값이 null이라면, 즉시 N..

[Spring MVC] 검증(Validation) - Bean Validation
Back-End/Spring2024. 3. 14. 00:22[Spring MVC] 검증(Validation) - Bean Validation

이 글은 인프런 김영한님의 Spring 강의를 바탕으로 개인적인 정리를 위해 작성한 글입니다. Bean Validation Bean Validation은 자바 애플리케이션에서 객체의 속성이 정해진 제약 조건에 맞는지 검증하기 위한 표준이다. Bean Validation 1.0은 JSR 303으로 처음 도입되었으며, 이후 Bean Validation 2.0은 JSR 380으로 업데이트 되었다. 이 표준은 애플리케이션 전반에 걸쳐 일관된 데이터 검증 로직을 제공함으로써 개발자가 중복된 검증 코드를 작성하는 것을 방지하고, 유지 보수를 용이하게 한다. Bean Validation은 특정한 구현체가 아니라 Bean Validation 2.0(JSR-380)이라는 기술 표준이다. 쉽게 이야 기해서 검증 어노테이션..

[Spring MVC] 검증(Validation) - Validator 분리
Back-End/Spring2024. 3. 13. 00:54[Spring MVC] 검증(Validation) - Validator 분리

이 글은 인프런 김영한님의 Spring 강의를 바탕으로 개인적인 정리를 위해 작성한 글입니다. 컨트롤러에서 검증 로직이 차지하는 부분은 매우 크다면, 별도의 클래스로 역할을 분리하는 것이 좋다. 그리고 이렇게 분리한 검증 로직을 재사용 할 수도 있다. Validator 인터페이스 스프링은 검증을 체계적으로 제공하기 위해 다음 인터페이스를 제공한다. public interface Validator { boolean supports(Class clazz); void validate(Object target, Errors errors); } boolean supports(Class clazz) 이 메서드는 Validator가 주어진 클래스의 인스턴스를 검증할 수 있는지 여부를 판단한다. 검증하려는 객체의 클래..

[Spring MVC] 검증(Validation) - 오류 코드와 메시지 처리
Back-End/Spring2024. 3. 12. 00:01[Spring MVC] 검증(Validation) - 오류 코드와 메시지 처리

이 글은 인프런 김영한님의 Spring 강의를 바탕으로 개인적인 정리를 위해 작성한 글입니다. FieldError 생성자 FieldError 는 두 가지 생성자를 제공한다. public FieldError(String objectName, String field, String defaultMessage); public FieldError(String objectName, String field, @Nullable Object rejectedValue, boolean bindingFailure, @Nullable String[] codes, @Nullable Object[] arguments, @Nullable String defaultMessage) objectName : 오류가 발생한 객체 이름 fie..

[Spring MVC] 검증(Validation) - FieldError, ObjectError, BindingResult
Back-End/Spring2024. 3. 11. 00:43[Spring MVC] 검증(Validation) - FieldError, ObjectError, BindingResult

이 글은 인프런 김영한님의 Spring 강의를 바탕으로 개인적인 정리를 위해 작성한 글입니다. PRG 패턴의 상품 저장 검증에 관한 내용이다. 기본적인 검증 StringUtils.hasText() 스프링 프레임워크의 org.springframework.util.StringUtils 클래스에 포함된 유틸리티 메서드 중 하나이다. 이 메서드는 주어진 문자열이 실제로 텍스트를 포함하고 있는지 확인하는 데 사용된다. 구체적으로, 문자열이 null이 아니며, 길이가 0보다 크고, 하나 이상의 비공백 문자를 포함하고 있을 때 true를 반환한다. public static boolean hasText(@Nullable String str) 파라미터: str - 검사할 문자열 반환값: 문자열이 null이 아니고, 길이..

image