서블릿 filter란 무엇인가?

서블릿은 클라이언트의 요청을 처리하는 자바 클래스이다. 서블릿은 HTTP 요청을 처리하고, HTTP 응답을 생성하는 데 사용된다. 서블릿 필터란? 서블릿 필터는 서블릿 컨테이너에서 서블릿이 요청을 처리하기 전이나 응답을 보내기 전에 요청이나 응답을 수정할 수 있는 기능을 제공한다. 요청이나 응답을 수정하는 이유가 무엇일까? 다음과 같은 이유로 요청이나 응답을 수정한다. 인증: 사용자가 로그인했는지 확인 로깅: 요청과 응답을 로깅 암호화: 요청과 응답을 암호화 헤더 추가: 요청이나 응답에 헤더 추가 이미지 변환: 이미지 요청을 다른 형식으로 변환 데이터 압축: 요청이나 응답을 압축 사용자 정의 인셉션 처리: 예외 발생 시 사용자 정의 인셉션 처리 이러한 기능을 필터로 사용하여 구현할 수 있다. ...

6월 4, 2024 · 4 분 · 687 단어 · In-Jun Hwang

인증 방식(cokie, session, JWT)에 대해 알아보기

인증/인가 인증(Authentication) : 사용자가 누구인지 확인하는 것 인가(Authorization) : 사용자에게 특정한 권한을 부여하는 것 http의 특징 비연결성 : 클라이언트와 서버가 한 번 연결을 맺은 후 요청에 대한 응답을 보내면 연결을 끊는 특징 무상태성 : 서버는 클라이언트의 상태를 보존하지 않는 특징 요청과 응답이 끝나면 서버는 클라이언트에 대한 정보를 잊어버림 이러한 특징으로 인해 인증이 필요한 서비스를 구현하기 위해서는 추가적인 방법이 필요함. cookie 서버에서 클라이언트에게 전달하는 작은 데이터 조각 쿠키는 클라이언트에 저장되는 데이터로, 클라이언트의 상태를 유지하기 위해 사용된다. 쿠키는 클라이언트에 저장되기 때문에, 서버에 저장된 세션과 다르게 클라이언트가 쿠키를 조작할 수 있다. ...

6월 2, 2024 · 5 분 · 976 단어 · In-Jun Hwang

백준 27440번 1로 만들기3 (C++)

백준 27440번 1로 만들기3 문제를 C++로 풀이한 내용입니다. 문제 정수 X에 사용할 수 있는 연산은 다음과 같이 세 가지 이다. X가 3으로 나누어 떨어지면, 3으로 나눈다. X가 2로 나누어 떨어지면, 2로 나눈다. 1을 뺀다. 정수 N이 주어졌을 때, 위와 같은 연산 세 개를 적절히 사용해서 1을 만들려고 한다. 연산을 사용하는 횟수의 최솟값을 출력하시오. 입력 첫째 줄에 1보다 크거나 같고, 10^18보다 작거나 같은 정수 N이 주어진다. 출력 첫째 줄에 연산을 하는 횟수의 최솟값을 출력한다. ...

5월 29, 2024 · 2 분 · 357 단어 · In-Jun Hwang

Git 커밋 시간 조정하기

들어가며 Git 커밋 시간을 조정해야 하는 상황이 있을 수 있습니다. 예를 들어: 다른 시간대에서 작업한 커밋 기록 정리 프로젝트의 시간순 커밋 기록 유지 백업에서 복원된 코드의 타임스탬프 조정 단, 커밋 시간 조정은 신중하게 수행해야 하며, 특히 협업 프로젝트에서는 주의가 필요합니다. 커밋 시간 조정 방법 1. 새 커밋 생성 시 시간 지정 새로운 커밋을 만들 때 특정 시간을 지정할 수 있습니다: 1 2 3 4 5 # ISO 8601 형식 사용 git commit --date="2024-05-25T23:31:13+09:00" -m "기능: 로그인 구현" # 상대적 시간 지정 git commit --date="2 days ago" -m "문서: README 업데이트" 2. 최근 커밋의 시간 수정 가장 최근 커밋의 시간만 수정하려면: ...

5월 25, 2024 · 2 분 · 324 단어 · In-Jun Hwang

Spring Boot 개발 가이드: 컴포넌트별 개발 순서와 베스트 프랙티스

Spring Boot 애플리케이션의 핵심 컴포넌트 Spring Boot 애플리케이션 개발 시 주요 컴포넌트들과 그 역할을 살펴보겠습니다. 1. Entity (엔티티) 데이터베이스 테이블과 매핑되는 객체입니다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 @Entity @Table(name = "users") public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Column(nullable = false) private String username; @Column(nullable = false) private String email; // getter, setter, constructor } 2. Repository (리포지토리) 데이터베이스 연산을 담당하는 인터페이스입니다. ...

5월 25, 2024 · 3 분 · 461 단어 · In-Jun Hwang