전체 글 42

[항해99 TIL] Spring Security

1. 필터 그림을 보게 되면 클라이언트에서 오는 요청과 응답을 최초와 최종에 있으며 응답의 정보를 바꾸거나 부가적인 기능을 추가할 수 있습니다. 스프링 프레임워크에서는 서블릿 필터를 의미하며 클라이언트로부터의 요청이 서버의 특정 URL 패턴에 매칭될 때마다 자동으로 실행되는 자바 클래스입니다. 사용 예시로는 라이언트 요청에 대한 로깅, 인증 및 권한 확인, 데이터 압축, 문자 인코딩 설정, CSRF 공격 방지 등의 작업을 수행. 1) LoggingFilter // 'topic' 매개변수로 로깅 주제를 지정할 수 있습니다. @Slf4j(topic = "LoggingFilter") @Component // 필터의 실행 순서를 지정하는 데 사용 @Order(1) // Filter 인터페이스를 구..

항해99 2023.07.06

[Java] 메타 애너테이션

메타 애너테이션(Meta-annotation)이란 다른 애너테이션에 적용되는 애너테이션을 말합니다. 메타 애너테이션은 애너테이션 선언에 사용되며, 그 애너테이션의 동작 방식을 정의합니다. Java에는 다음과 같은 메타 애너테이션이 포함되어 있습니다: @Retention: 애너테이션이 유지되는 시점을 지정합니다. RetentionPolicy.SOURCE는 컴파일 이후에는 제거되며, RetentionPolicy.CLASS는 컴파일러가 클래스 파일에 기록하지만 JVM이 무시하며, RetentionPolicy.RUNTIME은 JVM이 클래스를 메모리에 로드할 때까지 유지되므로 런타임 환경에서도 해당 애너테이션을 읽을 수 있습니다. @Target: 애너테이션이 적용될 수 있는 Java 요소의 종류를 지정합니다. ..

Java 2023.07.02

[항해99 WIL] 숙련 1주차 로그인, 회원가입까지

1. 인증과 인가 1) 인증과 인가란? 강의에서도 인증과 인가의 개념을 나누고 있습니다. (1) 인증(Authentication)은 - Who you are 인증은 해당 유저가 당사자인지 확인하는 개념. ex) 사용자가 로그인을 시도할 때 ID와 Password를 사용해 인증 과정을 진행하여 Spring Security는 UserDeatilsService 인터페이스를 사용하여 사용자 정보를 로드합니다. (2) 인가(Authorization)은 - What you can do 유저에 대한 권한을 허락하는 것. ex) github의 Contributors를 2) 웹 어플리케이션의 인증 특수성 (1) 무상태(stateless) 통신 상태가 없는 프로토콜의 뜻은 요청과 요청 사이에 서버가 클라이언트를 기억하지 ..

항해99 2023.07.02

[Java Spring] HttpServletResponse

1. HttpServletResponse Servlet API의 일부로, 서버에서 클라이언트로 응답을 전송하는 데 사용됩니다. HTTP 응답에는 상태 코드, 헤더, 본문과 같은 정보가 포함될 수 있습니다. 주요 메서드들을 보여드리면, setStatus(int sc): HTTP 응답 상태 코드를 설정합니다. setHeader(String name, String value): 주어진 이름과 값으로 HTTP 응답 헤더를 설정합니다. addCookie(Cookie cookie): HTTP 응답에 쿠키를 추가합니다. sendRedirect(String location): 클라이언트에게 지정된 위치로 리다이렉트하도록 요청합니다. getWriter(): 응답 본문에 쓰기 위한 PrintWriter를 반환합니다 get..

Java 2023.07.02

[항해99 TIL] JWT와 예시 코드

1. JWT(JSON Web Token) 기반 인증(토큰 기반 인증) 1) JWT란? 토큰 기반 인증 일반적으로 사용자가 로그인하면, 서버는 사용자의 신원을 확인하고 해당 사용자에게 고유한 액세스 토큰을 발급합니다. 식별할 정보가 있습니다. 이후 사용자가 서버에 요청을 보낼 때마다 토큰을 헤더나 바디에 포함시킵니다. 서버는 이 토큰으로 신원을 확인하고 리소스를 제공합니다. 이제 배울 JWT(JSON Web Token)이 대표적인 기술입니다. ②-1. 토큰 기반 인증의 장점 스케일링 : 토큰은 클라이언트에 저장되므로 서버에 부하를 줄입니다. 서버에서 상태정보를 가지고 있을 필요가 없기 때문입니다. 모바일 : 토큰 기반 인증은 모바일에 적합합니다. CORS(Cross-Origin Resource Sharin..

항해99 2023.07.01

[항해 99 TIL] 쿠키와 섹션

1. 인증과 인가 1) 인증과 인가란? 강의에서도 인증과 인가의 개념을 나누고 있습니다. (1) 인증(Authentication)은 - Who you are 인증은 해당 유저가 당사자인지 확인하는 개념. ex) 사용자가 로그인을 시도할 때 ID와 Password를 사용해 인증 과정을 진행하여 Spring Security는 UserDeatilsService 인터페이스를 사용하여 사용자 정보를 로드합니다. (2) 인가(Authorization)은 - What you can do 유저에 대한 권한을 허락하는 것. ex) github의 Contributors를 2) 웹 어플리케이션의 인증 특수성 (1) 무상태(stateless) 통신 상태가 없는 프로토콜의 뜻은 요청과 요청 사이에 서버가 클라이언트를 기억하지 ..

항해99 2023.06.30

[항해99 TIL] JPA

1. JPA란 무엇인가? "JPA"는 Java Persistence API의 약자입니다. 관계형 데이터베이스에서 자바 객체를 저장, 수정, 삭제, 조회하는 작업을 쉽게 할 수 있도록 도와주는 표준 API입니다. JPA의 작업을 영속성이라고 하는데 밑에서 설명할거니까 쉽게 말하자면 프로그램 생맹 주기가 끝나더라도 사라지지 않고 남아 있는 것 JPA를 사용하면 객체 지향적으로 데이터를 처리할 수 있게 되는데 이는 간결하지만 이해하기 쉬워집니다. JPA는 인터페이스 모음이라 여러가지의 구현체가 있는데 몇가지 정리해보겠습니다. 1) Hibernate 자바 api와 관계형 데이터베이스 사이의 객체 관계 매핑을 해주는 구현체입니다. 객체-관계 맵핑(ORM) Hibernate는 자바 객체와 데이터 베이스 테입르 사이..

항해99 2023.06.30

[항해99 TIL] MVC, DTO, IOC

1. Spring MVC란 무엇인가? Spring MVC를 알기 전에 MVC 패턴를 알아야 합니다. 1) MVC패턴 Model-View-Controller의 줄임말로 어플리케이션을 구조화하는 방법입니다. 여기서 어플리케이션을 구조화하는 이유는 개발 과정에서 찾아볼 수 있는데 정리한다면 **가독성** : 이해와 수정이 쉬움 **재사용성** : 모듈화로 동일한 코드 사용 가능 **유지보수** : 문제 발생시 보수하기 쉬움 **확장성** : 기존 기능을 확장하기 쉬움 **테스트 용이성** : 모듈화가 잘 되어 있으면 독립적인 테스트가 용이합니다. 그래서 구조화하는 방법 중 한가지인 MVC는 세가지로 분리하여 설계되어 있는데 **모델, 뷰, 컨트롤러**로 나누게 됩니다. (1) 모델 (Model) 모델은 어플리..

항해99 2023.06.28

[항해 99 WIL] 1주차 정리(Spring 시작)

1. Spring MVC란? 1) MVC는? Model-View-Controller (MVC)는 사용자 1. Spring MVC란? 1) MVC는? Model-View-Controller (MVC)는 사용자 인터페이스를 구현하는 데 사용되는 디자인 패턴. 말그대로 Model과 View와 Controller로 구성요소가 나누어집니다. 이 패턴을 사용하는 이유는 재사용성과 유지 보수 라고 볼 수 있습니다. MVC는 Model과 View와 Controller로 나누어지는데 Model : 애플리케이션의 비즈니스 로직, 데이터를 포함하고 처리하는 부분으로, 데이터베이스와 같은 데이터 소스와의 상호 작용을 담당 View : 사용자에게 보여지는 부분, 즉 UI(User Interface)를 뜻합니다. Controll..

항해99 2023.06.28