Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix: add threads min-spare configuration on properties #502

Merged
merged 1 commit into from
Sep 5, 2024

Conversation

geoje
Copy link
Member

@geoje geoje commented Sep 5, 2024

문제 상황

  • Thread 학습 테스트를 위해 thread.stage2.App 을 실행하면 발생 아래 오류 발생
    image

원인

  • Spring Boot 3.3.0 버전 에서 application.yml 에 기존 설정 되어 있던 Tomcat 스레드 설정 값 server.tomcat.threads.max2 로써 최소 스레드 유지 개수보다 낮게 설정 되어 있음

변경사항

  • server.tomcat.threads.min-spare=2 를 추가하여 max 와 같도록 설정 (기본값: 10)

참고자료

참고자료에 따르면 이 문제는 Spring Boot 3.3.1 에 해결되었다고 합니다.

CachedThreadPool 을 이해하기에도 좋은 옵션이지 않을까 생각하였습니다.

Copy link
Contributor

@kang-hyungu kang-hyungu left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

pr은 머지해둘게요. 제보 감사합니다!

@kang-hyungu kang-hyungu merged commit 7e91356 into woowacourse:main Sep 5, 2024
@geoje geoje deleted the fix branch September 5, 2024 05:10
takoyakimchi pushed a commit to takoyakimchi/java-http that referenced this pull request Sep 6, 2024
jminkkk pushed a commit to jminkkk/java-http that referenced this pull request Sep 6, 2024
ashsty pushed a commit to ashsty/java-http that referenced this pull request Sep 6, 2024
Ho-Tea pushed a commit to Ho-Tea/java-http that referenced this pull request Sep 6, 2024
HaiSeong pushed a commit to HaiSeong/java-http that referenced this pull request Sep 6, 2024
robinjoon pushed a commit that referenced this pull request Sep 6, 2024
* fix: remove implementation logback-classic on gradle (#501)

* fix: add threads min-spare configuration on properties (#502)

* feat: 정적 파일의 내용 GET 기능 구현

* feat: response에 Content-type 지정 기능 구현

* feat: HttpResponse 구현

* feat: HttpRequest 구현

* feat: cache 학습 테스트 코드 구현

* feat: GET login 기능 구현

* feat: cache 테스트 4번 구현

* feat: header 필드 및 파싱 기능 구현

---------

Co-authored-by: Gyeongho Yang <[email protected]>
kunsanglee pushed a commit that referenced this pull request Sep 6, 2024
* chore: 학습 테스트 완료

* feat: 1단계 구현

* feat: login 성공 시 index.html로 redirect 구현

* feat: login 성공 시 쿠키 설정하는 기능

* feat: 쿠키가 있을 시 자동 로그인 기능 구현

* fix: remove implementation logback-classic on gradle (#501)

* fix: add threads min-spare configuration on properties (#502)

* refactor: HttpRequest 클래스 분리

* refactor: 메서드 분리

* refactor: 메서드 분리

* refactor: Controller 분리

* refactor: 불필요한 코드 삭제

* refactor: 불필요한 코드 삭제

* refactor: 메서드명 수정

* refactor: requestLine 파싱 로직 이동

* chore: 학습 테스트 완료

* feat: 1단계 구현

* feat: login 성공 시 index.html로 redirect 구현

* feat: login 성공 시 쿠키 설정하는 기능

* feat: 쿠키가 있을 시 자동 로그인 기능 구현

* refactor: HttpRequest 클래스 분리

* refactor: 메서드 분리

* refactor: 메서드 분리

* refactor: Controller 분리

* refactor: 불필요한 코드 삭제

* refactor: 불필요한 코드 삭제

* refactor: 메서드명 수정

* refactor: requestLine 파싱 로직 이동

* feat: 학습 테스트 통과

* refactor: 주석 삭제

---------

Co-authored-by: Gyeongho Yang <[email protected]>
hw0603 pushed a commit that referenced this pull request Sep 6, 2024
* feat: 요청 URI 추출 기능 구현

* feat: HTTP 요청 라인 추출 기능 구현

* feat: HTTP 응답 객체 추가

* feat: HTTP 요청 객체 추가

* feat: 정적 파일 반환 및 login 기능 구현

* refactor: HttpRequest 객체에 헤더와 본문 필드 추가

* feat: 사용자 가입 기능 구현

* fix: remove implementation logback-classic on gradle (#501)

* feat: 로그인 기능에 세션 추가

* fix: add threads min-spare configuration on properties (#502)

* fix: 요청 쿠키 null 처리 추가

* feat: SessionGenerator 추가

* test: 정적 파일 반환 및 로그인 테스트

* test: Query String 파싱 테스트

* test: register 테스트

* refactor: 쿠키 파싱 로직 수정

* feat: 학습 테스트 작성

---------

Co-authored-by: Gyeongho Yang <[email protected]>
Minjoo522 pushed a commit that referenced this pull request Sep 6, 2024
* fix: replace javax with jakarta on imports (#500)

* fix: remove implementation logback-classic on gradle (#501)

* fix: add threads min-spare configuration on properties (#502)

* feat: javax jakarta로 변경

* feat: FileTest 파일 경로 및 읽기 작성

* feat: IOStreamTest OutputStream 테스트 구현

* feat: IOStreamTest InputStream 테스트 구현

* feat: IOStreamTest FilterStream 테스트 구현

* feat: IOStreamTest BufferedReader 테스트 구현

* chore: IOStreamTest BufferedOutputStream 참고 주석 작성

* chore: 안쓰는 import 제거

* feat: header parsing

* feat: query parsing

* feat: /login page

* feat: request, response base code

* refactor: http 클래스 분리

* refactor: http request 구현 적용

* refacor: HttpResponse

* refactor: handler 구현

* refactor: format code

* refactor: format code

* feat: redirect 구현

* refactor: before post body

* feat: post redirect get register, login

* feat: http cookie 구현

* feat: 세션 쿠키 등록 구현

* feat: 세션 쿠키가 존재할 경우 응답하지 않음

* feat: getSession 및 user handler 작성

* refactor: http cookies로 변경

* refactor: 404 리다이렉트

* refactor: static resource response

* refactor: string return

* test: handler test

* test: handler test

* refactor: http request factory

* fix: 캐시 미션 버그 수정

* feat: 0단계 - 휴리스틱 캐싱 제거하기

* feat: 1단계 - HTTP Compression 설정하기

* feat: 2단계 - ETag/If-None-Match 적용하기

* feat: 3단계 - 캐시 무효화(Cache Busting)

* refactor: doGet으로 메서드 변경

* refactor: handler 위치 변경

* refactor: CacheControl Builder 사용으로 개선

* chore: 사용하지 않는 import 제거

* feat: 로그인된 상태에서 /login 페이지에 GET method로 접근 시 index.html로 리다이렉트 처리

* refactor: join -> entry 에서 entry -> joining으로 개선

---------

Co-authored-by: Donghoon Lee <[email protected]>
Co-authored-by: Gyeongho Yang <[email protected]>
tsulocalize pushed a commit that referenced this pull request Sep 7, 2024
* fix: remove implementation logback-classic on gradle (#501)

* fix: add threads min-spare configuration on properties (#502)

* test: FileTest 작성

* test: IOStreamTest 작성

* feat: index.html 응답하기

* refactor: import 문 정렬

- 우테코 컨벤션에 맞게

* refactor: inputStreamReader 를 사용하도록 변경

* feat: 정상 응답, 예외 응답 생성 함수 추가

* test: / 경로에 대한 테스트, 잘못된 경로에 대한 테스트 추가

* style: 코드 재정렬

* feat: 파일확장자->contentType 변환 클래스 생성

* refactor: 응답 생성 객체 분리

* refactor: 분리한 객체의 함수 호출하도록 수정

* refactor: 경로와 쿼리스트링 분리

* refactor: 정적 파일 반환 로직을 클래스로 분리

* refactor: NotFound 응답 반환로직을 함수로 생성

* feat: HTTP Request 클래스 생성

* feat: 정적 파일 요청인지 구분하는 클래스 생성

* refactor: 함수 분리 및 가독성 개선

* refactor: 함수 분리

* refactor: 패키지 변경

* refactor: 함수 이름 변경

* feat: 컨트롤러 추상 클래스 생성

* feat: 요청에 매칭되는 컨트롤러 반환 로직 구현

* feat: ModelAndView 객체 생성

* feat: LogInController 생성

* refactor: 컨틀롤러 매핑을 사용하도록 수정

* style: 개행

* fix: 오류 수정

* refactor: 클래스 이름 변경

* refactor: Http Request, Body 분리

* refactor: 패키지 이동

* refactor: RequestHeader 가 사용되던 곳을 Request 로 대체

* refactor: 가독성 개선

- 개행, 함수 이름 변경, 필드 선언

* refactor: 가독성 개선 및 레코드로 변경

* feat: 객체에 toMap 함수 추가

* feat: 로그인 실패시 401 응답 반환 기능 구현

* feat: 로그인 method 를 post 로 변경

* refactor: 오타 수정

* feat: HTTP Response 객체 생성

* style: 개행 및 안쓰는 함수 제거

* feat: RequestBody 내용을 String 이 아니라 Map 으로 변경

* feat: HttpResponse 변경 내용 적용

* feat: 비밀번호 틀린 경우 리다이렉트

* refactor: 구구 대체

* refactor: 학습 테스트 정적 파일 위치 변경

* feat: 모든 응답에 no-cache 붙이는 인터셉터 추가

* feat: 회원가입 컨트롤러 생성

* fix: 인코딩 문제 해결

* feat: 세션, 세션 메니저 객체 생성

* feat: 로그인, 회원가입 시 세션 저장

* feat: 로그인, 회원가입 시 SetCookie 헤더 설정

* feat: 로그인한 유저는 리다이렉트하는 기능 추가

* feat: 응답 압축 설정

* feat: 특정 경로에 대해 etag를 응답하도록 설정

* feat: 정적 파일 요청시 etag 응답

* refactor: 루트 경로에 대해 no cache 하도록 수정

* feat: 정적 파일에 대해 캐시 만료 시간 설정

* refactor: 오타 수정

* refactor: 시간을 etag 버전으로 설정

* refactor: 파일 확장자 추가

* chore: 사용하지 않는 클래스 삭제

---------

Co-authored-by: Gyeongho Yang <[email protected]>
Arachneee pushed a commit that referenced this pull request Sep 7, 2024
* fix: remove implementation logback-classic on gradle (#501)

* fix: add threads min-spare configuration on properties (#502)

* feat: IOStreamTest 학습

* feat: FileTest 학습

* feat: GreetingControllerTest 학습

* feat: 응답 본문 생성 클래스 구현

* feat: 요청에 따른 응답 생성

---------

Co-authored-by: Gyeongho Yang <[email protected]>
ehtjsv2 pushed a commit that referenced this pull request Sep 7, 2024
* 학습 테스트 진행

* 이슈 템플릿 생성

* refactor : 컨벤션 적용
- 지역 변수, 파라미터에 `final` 제거

* test: Request 객체 정의 및 테스트 작성

* feat: Method 클래스 생성

* fix: remove implementation logback-classic on gradle (#501)

* fix: add threads min-spare configuration on properties (#502)

* refactor: findByName 을 static 으로 지정

* feat: 요청으로 Request 객체를 파싱

* refactor: 요청에 대한 응답 생성을 메서드 분리

* refactor: 디버깅을 위해 toString 생성

* refactor: 입력을 읽는데 BufferedReader.lines() 제거

* feat: 응답할 내용을 Content 객체로 생성

* feat: css 파일도 응답할 수 있도록 변경

* refactor: http 버전을 응답과 요청이 동일하도록 변경

* feat: templates 에서 정적파일을 읽어오기 위한 의존성 추가

* feat: 휴리스틱 캐시 제거 인터셉터 추가

* feat: Http 압축 설정 추가

* feat: etag 경로에 ETag 캐싱 적용

* feat: 정적 파일에 버저닝, eTag 캐싱 추가

* feat: 파일 클래스 학습 테스트 수정

* refactor: RequestHandler 인터페이스 생성

* refactor: 응답 생성 책임을 Response 객체로 분리

* refactor: Json 직렬화를 위한 의존성 추가

* refactor: api 요청을 처리할 수 있는 Handler 구현

* refactor: api 요청을 객체로 구현

* refactor: 책임에 따라 클래스 분리

* refactor: 사용처에 따라 네이밍 변경

---------

Co-authored-by: Gyeongho Yang <[email protected]>
xogns1514 pushed a commit that referenced this pull request Sep 7, 2024
* fix: remove implementation logback-classic on gradle (#501)

* fix: add threads min-spare configuration on properties (#502)

* feat: Http 요청/응답 객체 구현

* feat: Http 요청을 read하고 응답을 wirte 하는 기능 구현

* feat: Http 요청으로부터 응답을 내는 기능 구현

* feat: 로그인을 하면 유저 정보를 찾는 기능 구현

* feat: 클라이언트로부터 HTTP 요청을 받아 응답을 하는 기능 구현

* refactor: 각 클라이언트의 요청을 처리하는 스레드를 데몬 스레드로 변경

* feat: 학습 테스트 1 구현

* feat: 학습 테스트 2 구현

* refactor: query parameter 들을 일급 컬렉션으로 래핑

* refactor: static class 의 생성자 접근제어자를 private 으로 변경

* style: 코드 스타일 통일성이 맞도록 수정

* refactor: 변수명 변경

* refactor: 지역 변수로 받지 않고 바로 return하도록 변경

* fix: 학습 테스트 2 4번에서 ETag 가 포함되지 않는 문제 해결

* fix: 브라우저에서 versoning이 적용되도록 수정

---------

Co-authored-by: Gyeongho Yang <[email protected]>
jinchiim pushed a commit that referenced this pull request Sep 8, 2024
* test: 학습 테스트 진행

* feat: `/index.html`에 접근했을 때 static/index.html 파일이 보여지도록 구현

* feat: 자원에 따라 다른 Conent-Type으로 응답을 보내도록 수정

* fix: remove implementation logback-classic on gradle (#501)

* fix: 공백 처리 때문에 index.html이 불러와지지 않는 현상 해결

* feat: 로그인 요청 시 쿼리 파라미터를 파싱하는 기능 구현

* fix: add threads min-spare configuration on properties (#502)

* feat: 로그인에 성공하거나 실패한 경우 다른 페이지로 리다이렉트하는

* feat: POST 요청으로 회원 가입 시 요청 본문에서 정보를 가져와 사용자 저장하는 기능 구현

* feat: 로그인 시 POST 요청을 보내도록 수정

* feat: 로그인 시 세션 아이디를 쿠키에 등록하는 기능 구현

* feat: 쿠키에 JSESSIONID가 없을 때 Set-Cookie를 발급하는 기능 구현

* feat: 이미 로그인한 회원의 경우 로그인 페이지에 접근 불가하도록 구현

* refactor: 쿠키가 없을 때 일반 페이지에 접근하면 세션 아이디를 주지 않음

* feat: HTTP 활용 학습 테스트 진행

* refactor: 뭉친 코드를 클래스 분리하여 리팩토링

* fix: JSESSIONID를 추가하지 않아 로그인되지 않는 문제 해결

* fix: 세션 아이디가 달라서 로그인 시 로그인 페이지가 접속되는 현상 해결

* refactor: 기존 코드 주석 제거

* style: 주석 제거 및 컨벤션 맞추기

* refactor: 미구현된 파일 제거

* refactor: 필터를 사용하여 ETag를 지정하는 것으로 변경

* refactor: 인터셉터에서 CacheControl을 적용할 수 있도록 수정

* refactor: Content-Length 헤더 이름을 상수화

* refactor: 정적 파일을 한 번에 처리하도록 리팩토링

* fix: Json 파일을 보내는 경우를 고려하여 MediaType 수정

* refactor: 로그인 시 쿠키 세션을 꺼내오는 코드 가독성 개선

* refactor: 요청한 사용자 정보가 없는 경우 401 페이지를 보여주도록 수정

* refactor: 쿠키의 키값을 상수화하여 리팩토링

---------

Co-authored-by: Gyeongho Yang <[email protected]>
PgmJun pushed a commit that referenced this pull request Sep 8, 2024
* fix: remove implementation logback-classic on gradle (#501)

* fix: add threads min-spare configuration on properties (#502)

* feat: Http Method 구현

* feat: Http Path 구현

* feat: Http QueryParams 구현

* feat: Http RequestLine 구현

* feat: Http Headers 구현

* feat: Http Request 구현

* feat: 파일 읽는 ResourcesReader 구현

* feat: Http Response 구현

* feat: Http 11 Process 구현

* chore: 충돌 해결

* feat: 헤더 포멧 메시지 내 공백 추가

* 1단계 완료

* refactor: 파일 패키지로 이동

* feat: 정적 메소드로 변경

* feat: 로그인 기능 구현

* feat: 리소스 조회 Executor 구현

* feat: Http Cookie 구현

* feat: Http Body 구현

* refactor: 함수명 변경

* feat: Http Session 구현

* feat: 쿠기 추가하는 기능 구현

* feat: Request 내 Body,Cookies,Session 추가

* feat: Process 내 Session 받아오는 기능 추가

* feat: GET 요청 분리 및 구현

* feat: POST 요청 구현, Redirect 구현

* 2단계 완료

* refactor: 전체적인 코드 검사, 상수화

* refactor: 피드백 반영

* feat: 세션 만료 기능 구현

* feat: 만료된 세션 정리하는 기능 구현

* feat: 프로세서 내 세션 정리 기능 추가

---------

Co-authored-by: Gyeongho Yang <[email protected]>
nak-honest pushed a commit that referenced this pull request Sep 8, 2024
* fix: remove implementation logback-classic on gradle (#501)

* fix: add threads min-spare configuration on properties (#502)

* test: File 학습 테스트

* test: IOStream 학습 테스트

* feat: index.html 응답 기능 추가

* feat: ContentType Enum 정의

* feat: 요청 URI 확장자에 따라 ContentType을 동적으로 응답

* feat: 로그인 HTML 응답 기능 추가

* feat: 로그인 시 성공, 실패 여부에 따라 리다이렉트 처리

* feat: HTTP GET 메서드 조건을 추가

* feat: 로그인 요청을 GET에서 POST로 변경

* feat: 회원가입 HTML 응답 기능 추가

* feat: 회원가입 기능 추가

* refactor: 로그인 성공 로그 메시지 변경

* feat: 로그인 성공 시 JSESSIONID 쿠키를 반환하는 기능 추가

* feat: 세션 객체와 세션을 관리하는 세션 매니저 추가

* feat: 로그인 성공 시 세션 저장소에 유저 세션을 저장

* feat: 로그인 페이지 접근 시 이미 로그인 상태일 경우 리다이렉트 처리

* refactor: HttpMethod Enum 정의

* refactor: HttpStatus Enum 정의

* refactor: RequestLine 정의

* refactor: HttpRequest 정의

* feat: 휴리스틱 캐싱 제거 학습 테스트 추가

* feat: HTTP 응답 압축 학습 테스트 추가

* feat: ETag/If-None-Match 적용 학습 테스트 추가

* feat: 캐시 무효화 학습 테스트 추가

* refactor: RequestHeaders 구조 개선

* refactor: RequestLine에 HttpMethod를 물어보도록 개선

* refactor: 핸들러 분기 처리 개선

* move: ContentType 패키지 위치 이동

* refactor: HttpResponse 공백 추가

---------

Co-authored-by: Gyeongho Yang <[email protected]>
Chocochip101 pushed a commit that referenced this pull request Sep 8, 2024
* fix: remove implementation logback-classic on gradle (#501)

* fix: add threads min-spare configuration on properties (#502)

* feat: index.html 응답 구현

* refactor: 응답값과 contentType 자료구조로 포장

* feat: css, javascript 파일 지원

* feat: login.html 응답 구현

* docs: todo list 작성

* refactor: query parameter 책임 분리

* refactor: process 메서드 가독성 개선

* fix: javascript contentType 변경

* test: 누락된 쿼리 파라미터 테스트 추가

* refactor: header 책임 분리

* refactor: 패키지 이동

* fix: header pair 구분자 변경

* refactor: 정적 파일 핸들링 책임 분리

* refactor: login 책임 분리

* refactor: handler 추상화

* refactor: 추상화된 핸들러 사용하도록 변경

* fix: */* 타입 처리하도록 변경

* fix: hello handler hello.html 반환하도록 변경

* refactor: 불필요한 로그 제거

* chore: import 최적화

* refactor: response 내부로 메시지 생성 책임 위임

* feat: 로그인 redirection 처리

* refactor: 메서드 이름 변경

* refactor: /login get post 분리

* feat: register 페이지 조회 기능 구현

* feat: not found 핸들러 구현

* refactor: content-type 분리

* refactor: forward 결과 포장

* feat: 회원가입 기능 구현

* refactor: http header 상수화

* feat: header 추가 메서드 구현

* fix: null 검증 제거

* chore: import문 최적화

* refactor: forward 내부에서 status, header 다룰 수 있도록 변경

* feat: cookie 클래스 구현

* refactor: 패키지 구조 변경

* feat: session 구현

* feat: 로그인 세션 적용

* style: enum 개행 제거

* refactor: 불필요한 throws 제거

* chore: 학습 테스트 흔적 제거

* chore: p 태그 제거

* refactor: content-type 내부로 content-type 결정 책임 이동

* refactor: header.empty 정적 팩터리 메서드로 변경

* refactor: http version 상수화

* refactor: http request body를 char[]로 변경

* fix: from 메서드에서 case 무시하지 않도록 변경

---------

Co-authored-by: Gyeongho Yang <[email protected]>
HoeSeong123 pushed a commit that referenced this pull request Sep 9, 2024
* feat: FileTest, IOStreamTest 학습

* fix: replace javax with jakarta on imports (#500)

* fix: remove implementation logback-classic on gradle (#501)

* fix: add threads min-spare configuration on properties (#502)

* feat: 학습테스트 2 완료

* feat: HttpMethod 구현

* feat: RequestLine 구현

* feat: HttpRequest 구현

* refactor: RequestLine split 스페이스 상수 사용

* package: HttpMethod package 변경

* refactor: HttpRequest I/O 리소스 커넥션 유지

* fear: HttpStatus 구현

* feat: HttpResponse 구현

* feat: HttpResponseDto 생성

* feat: OutputView 구현

* feat: GetMethodHandler 구현

* refactor: response의 header 순서가 변경되지 않도록 변경

* feat: Http11Processor static 페이지 get 요청 구현

* feat: ContentTypeResolver 구현

* refactor: GetMethodHandler contentType 관련 로직 개선

* refactor: InputView 로직 분리

* package: 패키지 구조 변경

* refactor: StaticResourceHandler 으로 이름 변경

* package: 패키지 구조 변경

* feat: queryParameter 파싱 구현

* feat: queryParameter 안맞는 형식 파싱

* test: RequestURITest 순서 보장 상관없게 변경

* feat: AbstractController 구현

* feat: RequestMapping 구현

* test: 필요없는 테스트 삭제

* feat: RequestMapping 연결

* package: 패키지 구조 변경

* refactor: Http11Processor에 StaticResourceHandler 주입

* refactor: AbstractController 에 StaticResourceHandler 주입

* feat: redirect 기능 구현

* fix: 대문자 오타 수정

* feat: RequestHeaders 구현

* feat: RequestMessage 구현

* refactor: OutputStreamWriter 사용

* refactor: 루트로 접근시 index.html로 리다이렉트

* feat: LoginService 구현

* feat: LoginController 구현

* feat: RegisterController GET 요청 구현

* feat: LoginService 을 UserService 으로 이름 변경

* feat: 회원가입 기능 구현

* feat: 쿠키 로직 구현

* feat: Session 구현

* fix: 회원가입 버그 수정

* test: 연습 테스트 try-with-resources 사용

* bug: 지워진 클래스 테스트 수정

* refactor: ArrayList -> List

* refactor: 필요없는 메서드 삭제

* refactor: QUERY_DELIMITER로 이름 변경

---------

Co-authored-by: Donghoon Lee <[email protected]>
Co-authored-by: Gyeongho Yang <[email protected]>
jongmee pushed a commit that referenced this pull request Sep 9, 2024
* fix: remove implementation logback-classic on gradle (#501)

* fix: add threads min-spare configuration on properties (#502)

* test: FileTest 및 IOStreamTest 통과

* chore: lombok 의존성 추가

* feat: 1-1 'GET /index.html 응답하기' 기능 구현

* feat: 1-2 CSS 지원하기 기능 구현

- MimeType 열거형 추가
- 정적 URI를 못찾을 시 404 반환

* refactor: getResponse 로직 메서드 분리

* refactor: 간단한 예외처리 추가

* refactor(HttpRequest): path와 parameters 추가 및 파싱

* feat: 1-3 Query String 파싱 구현

* feat: 2-1 로그인 여부에 따라 페이지 이동 구현

* refactor: HttpResponse 객체 추가

* refactor: 메서드 인자 및 이름 변경

- getStaticResource(HttpRequest request) -> getStaticResourceResponse(String requestPath)

* fix: 템플릿 엔진 미사용

* test: 휴리스틱 캐싱 제거

- CacheControlInterceptor 추가

* test: HTTP Compression 설정

* fix: 알맞은 resource 이름 반환

* test: ETag/If-None-Match 적용

- ShallowEtagHeaderFilter 사용

* test: 캐시 무효화

- 캐시 max-age 1년 설정
- ETag 적용
- url에 버전 적용

* feat: POST 방식으로 회원가입

- 요청 본문 파싱 로직 수정

* fix: 파라미터 없는 /login 접속 불가능 수정

* fix: 요청 본문 URLDecode

* fix: Cookie에 JSESSIONID 값 저장

- HttpCookie 객체 구현 및 요청, 응답 객체에 추가

* feat: Session 구현

* refactor: 요청 URL 디코딩

* refactor: application/x-www-form-urlencoded MIME 타입 요청 본문 값을 파라미터로 처리

* refactor(HttpResponse): 생성자 추가

* refactor(HttpResponse): 상태 코드 및 메시지 열거형 분리

- enum HttpStatusCode

---------

Co-authored-by: Gyeongho Yang <[email protected]>
BurningFalls pushed a commit that referenced this pull request Sep 9, 2024
* fix: javax -> jakarta

* test: 학습 테스트 구현

* docs: 1단계 기능 요구 사항 작성

* fix: 운영체제 줄바꿈 형식 문제로 테스트 수정

* feat(Http11Processor): GET /index.html 응답 구현

* refactor(Http11Processor): header 정보 모두 읽도록 변경 및 response 정보 객체로 구현

* feat(Http11Processor): Accept를 분석해서 반환 content-type 설정

* feat(Http11Processor): Query String을 파싱 후 아이디/비밀번호 일치 확인 및 로그 출력

* fix: remove implementation logback-classic on gradle (#501)

* docs: 2단계 기능 요구 사항 목록 작성

* fix: add threads min-spare configuration on properties (#502)

* refactor(Http11Processor): 헤더 읽는 메서드 분리

* refactor(Http11Processor): 상수 처리

* refactor(Http11Processor): 반환 타입 찾는 메서드 개선

* refactor(Http11Processor): 에러 메시지 구체화

* refactor(ResponseContent): response를 문자열로 변환하는 메소드 구현

* feat(ResponseContent): 로그인 성공 시, http status code 302 반환

* feat(ResponseContent): 로그인 성공 시, /index.html로 리다이렉트

* feat(ResponseContent): 로그인 실패 시, /401.html 로 리다이렉트

* feat(resource): 400.html 추가 및 html 타이틀 수정

* feat(Http11Processor): 400 에러 오류 페이지 로드

* docs: HTTP Status Code 302 : 로그인 페이지에서 로그인 시도에 따른 응답 처리 체크

* feat(resource): 401.html 수정

* refactor(Http11Processor): login url 입력 시 로그인 페이지 로드

* refactor(FileResponseReader): 파일 로드 메서드 분리

* feat(ResponsePage): url에 따른 페이지 로드 구현

* feat(ResponsePage): 회원가입 페이지 로드

* refactor(FileReader): 클래스 명 변경

* refactor(Http11Processor): 파일 체크와 페이지 로드 메서드 분리

* refactor(Http11Processor): file type 확인 로직 이동

* feat(Http11Processor): 회원가입 완료 -> 저장 및 /index.html로 리다이렉트

* refactor(RequestHeaderReader): 헤더 읽는 메서드 분리

* refactor(RequestHeaderReader): header 정보 꺼내는 로직 메서드 이동

* refactor(RequestReader): body 및 param 읽는 로직 메서드 변경

* refactor(Http11Processor): Post Method 시 url 관련 로직 메서드 분리

* refactor(Http11Processor): 메서드명 및 상수 명 변경

* refactor(Http11Processor): 상수화

* feat(GreetingControllerTest): 학습 테스트 구현

* refactor(Http11Processor): boolean 체크 수정

* feat(Http11Processor): 로그인 성공 시 cookie 설정 추가

* feat(Session): 세션 기본 클래스 구현

* feat(Session): Session 구현하기 : 쿠키에서 전달 받은 JSESSIONID의 값으로 로그인 여부 체크

* refactor(Request): 요청 값 클래스로 구현

* fix(ResponseContent): 쿠키가 없을 경우 쿠키 제외

* refactor(ResponseContent): 코드 컨벤션 정리

* refactor(ResponseContent): 패키지 변경

* refactor: 코드 컨벤션 정리

* test: 학습 테스트 수정

* test: 학습 테스트 수정

* refactor: 패키지 이동

* refactor: 테스트 코드 개선

* refactor(HttpCookie): 접근제어자 변경

* refactor(Session): 세션에 값이 존재하지 않을 경우 예외 처리

* refactor(ResponsePage): stream 사용하여 코드 개선

* refactor(Http11Processor): 로그인 시 파라미터 검증 메서드 분리

* fix(Http11Processor): 로그인 시 패스워드 검증 로직 수정

* refactor(Http11Processor): 필요 없는 static 제거

* refactor(Http11Processor): 중복된 코드 제거를 위해 코드 출력 로직을 process 메서드로 이동

* refactor(ResponseContent): 헤더 Map 사용으로 추가정보를 유동적으로 처리

* fix(Http11Processor): 쿠키 유틸 클래스에서 클래스로 변경 및 회원가입 오류 해결

* fix(ResponseContent): header 출력에 순서에 따른 테스트 오류 해결

* fix(Http11Processor): 페이지 리다이렉션 문제 해결

* refactor(HttpCookie): 메서드 명 변경

* test: 세션 관련 테스트 구현

* test: 파일 Reader 테스트 구현

* test: Request 테스트 구현

* refactor(Response): 클래스 명 변경

* test: ResponsePage 테스트 구현

* fix(Request): 쿠키 얻어오는 로직 문제 해결

* test: processor 테스트 코드 구현

* test: test 에러 수정

* test: @DisplayName 추가

* refactor: 코드 컨벤션 정리

---------

Co-authored-by: Gyeongho Yang <[email protected]>
Mingyum-Kim pushed a commit that referenced this pull request Sep 9, 2024
* fix: remove implementation logback-classic on gradle (#501)

* fix: add threads min-spare configuration on properties (#502)

* fix: javax -> jakarta 변경하여 컴파일 에러 해결

* test: FileTest 학습

* test: IOStreamTest 학습

* feat: GET `index.html` 응답하기

* refactor: http request 클래스 분리

* feat: CSS 지원하기

* feat: Query String 파싱

* feat: HTTP 활용하기 학습테스트

* refactor: 사용하지 않는 클래스 삭제

---------

Co-authored-by: Gyeongho Yang <[email protected]>
donghoony pushed a commit that referenced this pull request Sep 10, 2024
* chore: 설정 변경

* test: 학습 테스트 진행

* feat: 기본 페이지에서 "Hello World!" 출력, 인덱스 페이지에서 index.html 반환하는 기능 구

* fix: remove implementation logback-classic on gradle (#501)

(cherry picked from commit fed02f6)

* fix: add threads min-spare configuration on properties (#502)

(cherry picked from commit 7e91356)

* feat: cache 학습 테스트 진행

* feat: 로그인 페이지 구현, 쿼리 스트링 처리 기능 구현

* docs: README 수정

* refactor: 학습 테스트 피드백 반영

* feat: 404 페이지가 404 응답과 함께 404.html를 반환하도록 구현

* refactor: user 조회 로직이 filter를 사용하도록 리팩토링

---------

Co-authored-by: Gyeongho Yang <[email protected]>
jhon3242 pushed a commit that referenced this pull request Sep 10, 2024
* fix: remove implementation logback-classic on gradle (#501)

* fix: add threads min-spare configuration on properties (#502)

* test: 스터디 테스트 작성

* refactor: 자동 정렬 이전 파일로 교체

* refactor: import 변경

* refactor: 요청에 따라 자원을 반환하도록 변경

* feat: HttpRequest 추가

* feat: HttpResponse 추가

* refactor: Http11Processor에서 요청과 응답 분리

* refactor: 로그인 메서드 post로 변경

* refactor: HttpRequest에 requestBody 추가

* refactor: HttpResponse에 상태코드 추가

* feat: 요청을 처리하는 컨트롤러 구현

* feat: 매핑된 컨트롤러를 찾아서 반환하는 RequestMapping 추가

* feat: ViewResolver 및 View 추가

* refactor: Http11Processor에서 Controller를 사용하도록 변경

* refactor: HttpRequest 에서 key 값으로 찾도록 변경

* refactor: HttpResponse 에 쿠키를 포함하는 기능 추가

* feat: 쿠키 및 세션 추가

* refactor: 로그인 시, 세션 확인하는 기능 추가

* refactor: ReqeustParser를 통해 HttpRequest 를 만들도록 변경

* refactor: HttpRequest 관련 클래스 분리

* refactor: RequestMapping 싱글톤으로 변경

* refactor: RegisterController에서 request의 기능을 활용하도록 변경

* refactor: 로깅 추가 및 수정

* refactor: Accpet로 response의 ContentType 구성하도록 변경

* refactor: 정의되지 않은 요청 시, 404 페이지 반환하도록 변경

* refactor: 사용하지 않는 주석 제거

* refactor: 패키지 구조 변경

* refactor: post 요청에서 body가 존재하지 않을 경우 400을 반환하도록 변경

* refactor: cookie에 대한 NPE 처리

* refactor: SessionManager 를 static 으로 활용하도록 변경

---------

Co-authored-by: Gyeongho Yang <[email protected]>
nayonsoso pushed a commit that referenced this pull request Sep 10, 2024
* feat(Http11Processor): 요청 데이터를 HttpRequest 객체로 변경하는 메서드 작성

* feat(Http11Processor): 요청URL과 일치하는 정적 파일을 반환

* feat(Http11Processor): root url로 요청일 경우 특정 문자열 반환

* feat(Http11Processor): html이 아닌 다른 형식의 파일 지원

* refactor(HttpRequestParser): HttpRequest를 처리하는 객체 분리

* feat(RequestHandler): 요청을 처리하는 핸들러 분리

* feat(RequestHandler): login 엔드포인트 접속 시 로직 처리

* fix(RequestHandler): query null인 경우 정적 파일 렌더링하도록

* feat(RequestHandler): 로그인 성공 시 리다이렉트

* refactor(HttpResponseGenerator): response 생성 객체 분리

* fix: remove implementation logback-classic on gradle (#501)

* fix: add threads min-spare configuration on properties (#502)

* feat(HttpHeader): Header 객체 분리

* feat(HttpReqeust): Request 객체 구현

* feat(HttpRequestParser): Get이 아닌 다른 method여도 Request 객체 파싱

* feat(RequestHandler): queryString이 없는 path일 경우 검증 후 로직

* feat(RequestHandler): 회원가입 post 요청 로직 구현

* feat(HttpCookie): Cookie 객체 구현

* fix(RequestHandler): 회원가입 시 비밀번호, 이메일 파싱 로직 수정

* feat(index.html): login 적용 후 코드 활성화

* feat(RequestHandler): login 을 post method로 변경

* fix(RequestHandler): Set-Cookie 응답에 추가하는 로직 수정

* feat(Session): Session, Manger 구현체 생성

* feat(SessionManager): 싱글톤 적용

* feat(RequestHandler): 이미 로그인 되어있는지 세션으로 검증 및 리다이렉트

* chore: 타임리프 의존성 추가

* feat(CacheWebConfig): 휴리스틱 캐싱 제거

* feat(CacheWebConfig): HTTP Compression 설정

* feat(EtagFilterConfiguration): ETag/If-None-Match 적용

* feat(HttpRequest): Cookie 파싱 로직 변경, Session 파싱 제거

* refactor(HttpCookie): 파일 위치 변경

* refactor(/request): request 관련 객체 위치 이동

* refactor(/response): response 관련 객체 위치 이동

* refactor(HttpMethod): http method 상수로 추출

* refactor(handler): handler 분리

* refactor(handler): 요청을 처리하는 최상위 Handler 추상 클래스 생성

* refactor(HttpHeader): toString 구현

* refactor(RequestHandler): 불필요한 예외 전파 제거

* refactor(mapping): 패키지 구조 변경

* feat(EtagFilterConfiguration): etag 추가

* refactor(CacheBustingWebConfig): busting 추가

* test(Http11ProcessorTest): content-length 수정

* refactor(RequestHandlerAdapter): Adapter로 이름 변경

* refactor(/http): 패키지 구조 개선, http 관련 객체 위치 이동

* refactor(Http11Processor): sout문 제거

* refactor(HttpRequestParser): 중복 정의된 조건문 제거

* refactor: 클래스 시작 줄에 개행 추가

* test(SessionManager): 기본 메서드에 대해 테스트 작성

* refactor(/catalina/session): session 관련 객체들 위치 이동

* refactor(Session): 세션에 속성을 추가하는 메서드의 인자 이름 명확하게

* test(SessionTest): 속성값 조회 테스트

* refactor(ResourceHandlerMapping): concat 메서드를 체이닝처럼 개행

* refactor(UrlHandlerMapping): IllegalCallerException 던지지 않고 404 페이지 반환

* refactor(StaticResourceHandler): Handler 상속 및 파일 위치 변경

* test(StaticResourceHandler): 정적 리소스 처리 테스트 작성

* refactor(LoginHandler): Get 요청 처리 로직 개선

* refactor(LoginHandler): 인증되었는지 로직 개선 및 테스트 작성

* refactor(RootEndPointHandler): 루트 엔드포인트 요청을 처리하는 핸들러 분리

* test(RegisterHandlerTest): 회원가입 테스트 작성

* refactor(HandlerMapping): 요청에 대한 핸들러를 반환하도록 역할 부여 및 테스트 작성

* feat(SessionManager): 특정 아이디인 세션이 존재하는지 반환하는 메서드 추가

* refactor(HttpCookie): 필드와 인자가 다른 생성자를 정팩메로 변경

* test(HttpCookie): 테스트 작성 및 필드를 private하게 변경

* refactor(HttpRequestReader): 객체 책임에 맡게 이름 변경

* refactor(StandardHttpHeader): HTTP 일반적인 헤더를 나타내는 이넘 생성

* refactor(/header): header 관련 객체 패키지로 이동

* refactor(StaticResourceHandler): 확장자가 없는 경우 /static 경로에 있는 html 리소스를 반환

* refactor(NotFoundHandler): NotFoundException에 대한 핸들러 분리

* refactor(UnAuthorizationHandler): UnAuthorization 에 대한 핸들러 분리

* refactor(/test): 변경된 응답 메시지를 규격에 맞게 상태 값 형식 변경

* refactor(InternalServerErrorHandler): 최상위 Exception 에 대한 핸들러 분리

* refactor(HandlerMapping): 에러에 대한 핸들링 처리

* refactor(Http11Processor): 핸들링 도중 에러 발생 시 처리

* refactor(HttpResponseGenerator): 500 변경

* refactor(StaticResourceHandler): 정적 파일 조회 로직 변경

* refactor(Http11ProcessorTest): 각 http request에 따른 통합 테스트 추가

* test(HttpRequest): HttpRequest 객체 테스트 작성

* refactor(HttpRequest): application/x-www-form-urlencoded 형식의 요청인 경우 바디를 key, value로 파싱하는 책임 부

* test(HttpRequestReader): HttpRequestReader 테스트 작성

* test(HttpResponseGenerator): host 고

* refacotr(HttpRequest): 특정 헤더인지 StandardHttpHeader 에게 물어보도록 변경

---------

Co-authored-by: Gyeongho Yang <[email protected]>
ashsty pushed a commit that referenced this pull request Sep 10, 2024
* test: File 관련 학습 테스트 수행

* test: 입출력 스트림 관련 학습 테스트 수행

* feat: index.html 응답하도록 process 메서드 구현

* test: 테스트 이름 추가

* feat: 확장자에 따른 형식 반환 기능 구현

* feat: 확장자에 맞는 contentType을 반환하도록 구현

* feat: 확장자가 없으면, 기본 확장자를 기준으로 리소스를 찾도록 구현

* refactor: 메서드 순서 변경

* feat: 쿼리 스트링으로 로그인 구현

* refactor: 로그인 관련 컨트롤러 및 서비스 분리

* fix: remove implementation logback-classic on gradle (#501)

* refactor: 컨트롤러가 응답 반환하도록 수정 및 helper 유틸 클래스 분리

* fix: login 페이지 불러오기 오류 수정

* feat: login 성공 시 index 페이지로 리다이렉트

* fix: add threads min-spare configuration on properties (#502)

* refactor: 예외 클래스명 구체화

* feat: /login http method에 따른 연산 수행하도록 구현

- 로그인 수행 시 POST로 바뀜에 따라 쿼리 스트링에서 requestBody로 변경
- Controller 추상 클래스로 http 메서드별 추상 메서드 제공
- Controller 추상 클래스에서 http 메서드에 따라 올바른 메서드 호출하여 연산
- 만약 존재하지 않는 메서드라면 405로 예외 처리

* refactor: 유지보수에 용이하기 위해 httpRequest 클래스 분리

- contentType에 무관하게 EOF일때까지 body를 읽도록 구현하여 서버에서 무한히 기다리는 오류 발생
- 해당 오류 해결에 용이하게 하기 위해 httpRequest 분리

* fix: content-length만큼 본문 읽어오도록 parse 메서드 수정

* refactor: httpRequest 적용

* refactor: method logging 추가

* refactor: Body 클래스 분리 및 파싱 메서드 위임

* test: body 파싱 테스트 작성

* refactor: 로그인 실패 시 예외 catch 지점 변경 및 테스트 이동

* refactor: 로그인 정보 누락 예외 처리를 서비스로 이동

* feat: 회원가입 서비스 구현

* feat: 회원가입 컨트롤러 구현

* test: 파일명 파싱 테스트 작성

* test: 잘못된 http method로 요청 테스트 작성

* feat: 회원가입 응답 구현

* feat: id 생성 및 저장 로직 구현

* refactor: 뷰 컨트롤러 분리

* fix: 입력값에 대한 null 검증으로 수정

* refactor: 컨트롤러 호출하는 handle 메서드를 추상 메서드로 추출

* refactor: frontController 구현

* test: controller 분리에 따른 테스트 이동

* test: 로그인, 회원가입 리소스 조회 테스트 작성

* refactor: controller 싱글톤으로 관리

* refactor: Body 클래스명 변경

* fix: text/html 형식 수정

* refactor: HttpResponse와 ResponseBody 객체 분리

* fix: 리다이랙트 수정

- Controller 메서드가 HttpResponse를 반환하도록 리팩터링
- 리다이랙트 시 location 지정 및 body 없도록 수정
- 405, 404 컨트롤러 분리

* fix: html 외 다른 확장자 미지원 오류로 viewController 제거

* refactor: 리다이렉트 메서드 추출

* refactor: 패키지 분리

* feat: 쿠키/세션 구현

* test: 캐싱 학습 테스트 수행

* refactor: try-with-resource로 스트림 리소스 관리

* refactor: 상수 분리

* refactor: 미사용 checked exception 제거

* refactor: 인코딩 형식 지정

* test: 파일 이름이 null인 테스트 케이스 추가

* style: 개행 컨벤션 맞춤

* refactor: 접근 제어자 수정

* refactor: 예외 메시지 수정

* refactor: redirect 메서드 오버로딩

* refactor: 불필요한 string builder 사용 제거

* refactor: 메서드 재사용

* refactor: 변수명 수정 및 타입 변경

* refactor: 사용하지 않은 예외 메서드 제거 및 메세지 로깅

* refactor: 리소스 찾을 수 없을 때 예외 처리 클래스 통일

* refactor: 변수 및 메서드 분리

* refactor: URLDecoder 사용

* refactor: Resource 유틸 클래스 분리

* test: httpCookie 테스트 작성

* feat: Session Manager 구현 및 테스트 작성

* refactor: Session Manager를 활용하도록 LoginController 리팩터링

* style: apply code convention

* refactor: defaultCharset이므로 명시적 형식 지정 제거

---------

Co-authored-by: Gyeongho Yang <[email protected]>
fromitive pushed a commit that referenced this pull request Sep 11, 2024
* chore: .gitignore 학습 테스트를 버전 관리하지 않도록 수정

* feat: /index.html 응답하기 구현

* refactor: 200 응답 문자열 생성하는 부분을 메서드로 분리

* refactor: index.html 이외 다른 파일명이 들어와도 리소스 반환하도록 수정

* refactor: 메서드명 간결화

* feat: 리소스 존재하지 않는 경우 404.html 반환

* feat: Query String 파싱 구현

* fix: 올바른 Content-Type 지정

* fix: id, pw 존재하지 않아도 예외 발생하지 않도록 수정, /login으로 로그인 페이지 접속 가능하도록 수정

* refactor: Response Message를 생성하는 메서드에서 상태 코드를 인자로 받도록 수정

* feat: 로그인 시 리다이렉트 구현

* feat: 로그인을 POST 메서드로 변경

* feat: 회원가입 구현

* fix: .js 파일의 Content-Type 지정

* feat: HttpCookie 클래스 생성

* feat: Cookie에 JSESSIONID 값 저장하기 구현

* refactor: 상수 사용하도록 일부 수정

* fix: jakarta의 HttpSession을 사용하지 않도록 수정

* feat: 세션 구현

* refactor: Request 관련 로직을 별도의 클래스로 분리

* refactor: 헤더 읽기, body 읽기 로직을 메서드로 분리

* refactor: 쿠키 관련 로직을 분리

* refactor: HTTP 응답 로직 분리

* refactor: 메서드명 및 시그니처명 변경

* refactor: inline variable 적용

* refactor: 핸들러 메서드 분리

* refactor: 중복 제거

* refactor: 메서드명 변경

* refactor: 불필요한 if문 depth 제거

* chore: 패키지 구조 변경

* refactor: set-cookie 하는 부분 메서드 분리

* fix: Location 헤더로 올바르게 리다이렉션 하도록 수정

* refactor: 메서드명 수정

* fix: request line 마지막에 공백 추가

* refactor: 단순 텍스트를 응답하는 경우에 대한 응답 메서드 작성

* test: 깨지는 테스트 수정

* refactor: 메서드명 변경

* feat: 존재하지 않는 리소스에 접근하는 경우 404 페이지를 보여줌

* refactor: Location 헤더를 enum으로 관리

* chore: print문 삭제

* refactor: Set-Cookie 헤더를 상수가 아닌 enum으로 변경

* test: FileTest 작성

* test: IOStreamTest 작성

* chore: 학습 테스트를 다시 버전관리 하도록 수정

* fix: remove implementation logback-classic on gradle (#501)

(cherry picked from commit fed02f6)

* fix: add threads min-spare configuration on properties (#502)

(cherry picked from commit 7e91356)

* chore: Thymeleaf 의존성 추가

* feat: 휴리스틱 캐싱 제거

* chore: HTTP 압축 설정

* feat: ETag 추가

* feat: .js와 .css 파일은 1년 동안 캐시 적용

* refactor: interceptor 구현체를 지우고 WebContentIntercepor 사용

* refactor: 헤더의 이름을 enum에서 꺼내오도록 수정

* refactor: 미사용 메서드 제거

* refactor: depth 개선

* refactor: request에서 cookie 가져오는 로직 메서드로 분리

* refactor: HttpCookie에 세션 관련 메서드 생성

* refactor: Set-Cookie 관련 로직 개선

* refactor: if문 개선

* refactor: HttpHeaders -> HttpHeaderType

* refactor: 반복문을 스트림으로 개선

* refactor: 각종 delimiters 상수화

* refactor: 중복되는 build() 로직 개선

* refactor: CRLF 상수화
pricelees pushed a commit to pricelees/java-http that referenced this pull request Sep 11, 2024
khabh pushed a commit that referenced this pull request Sep 11, 2024
* test: 파일 테스트 학습

* feat: UncheckedServletExceptiona 생성 로직 추가

* feat: HttpRequest 구현

* feat: HttpRequest 속성 getter 작성

* feat: HttpRequestHandler 명세 작성

* feat: index.html 정적 리소스 서빙 구현

* refactor: 싱글톤 Dispatcher로 요청을 처리하도록 개선

* feat: 파일 확장자 얻어오는 util 기능 구현

* refactor: 정적 리소스 ContentType 지정 개선 및 Handler가 Response 타입을 바로 반환하도록 개선

* refactor: 정적 파일을 한 줄씩 읽지 않고 한번에 읽도록 개선

* feat: RequestLine 클래스 작성

* feat: RequestLine 클래스 getter 추가

* refactor: HttpRequest 속성 RequestLine으로 응집 개선

* feat: HttpProtocol Enum 클래스 작성

* refactor: HttpProtocol 원시값 포장 개선

* fix: StaticResourceHandler 지원 조건 RequestLine에 맞게 수정

* feat: GreetingHandler 구현

* refactor: Uri 클래스 구현을 통한 RequestLine 속성들의 추상화 준위 통일

* feat: LoginPageHandler 구현

* feat: QueryString 추출 기능 구현

* feat: LoginHandler 구현

* refactor: 패키지 구조 개선

* feat: 로그인 기능 구현

* feat: 회원가입 페이지 서비스 기능 구현

* fix: remove implementation logback-classic on gradle (#501)

* fix: add threads min-spare configuration on properties (#502)

* feat: 회원가입 기능 구현

* refactor: HttpMessage 공통 요소 원시값 포장 개선

* refactor: Request의 HttpMessage 공통 요소로 포장된 객체를 사용하도록 개선

* feat: 로그인 성공시 쿠키 설정 기능 구현

* feat: 세션 클래스 작성

* test: 캐시 관련 학습테스트 작성

* feat: 세션을 통한 로그인 상태 유지 구현

* refactor: 로그인 요청을 POST로 개선

* feat: 헤더 순서를 LinkedHashMap으로 고정

* test: loginPage요청 응답 테스트 및 registerPage응답 테스트 작성

* test: login 포스트 요청 성공 실패 케이스 테스트 작성

* fix: 로그인 실패 응답 401 statusCode 이용하도록 수정

* test: 회원가입 테스트 작성

* refactor: 핸들러 매핑 조건 support 가독성 향상 개선

* refactor: 일관되지 않은 파라미터 불변성 처리 개선 및 사용하지 않는 메서드 제거 개선

* refactor: 핸들러 매핑 순서가 보장되도록 스트림 개선

---------

Co-authored-by: Gyeongho Yang <[email protected]>
hyxrxn pushed a commit that referenced this pull request Sep 11, 2024
* test: 학습 테스트 수행

* feat: GET /index.html 응답하기

* refactor: CSS 지원하기 전 페이지 응답 uri 수정

* refactor: RequestLine 추출 메서드 분리

* docs: Tomcat 구현하기 1단계 기능 명세 정리

* feat: CSS 지원하기

* feat: Query String 파싱

* refactor: Servlet Container 구성

* docs: Tomcat 구현하기 2단계 기능 명세 정리

* feat: HTTP Status Code 302

* feat: POST 방식으로 회원가입

* feat: Cookie에 JSESSIONID 값 저장하기

* feat: Session 구현하기

* test: HTTP 활용하기 학습 테스트

* fix: remove implementation logback-classic on gradle (#501)

(cherry picked from commit fed02f6)

* fix: add threads min-spare configuration on properties (#502)

(cherry picked from commit 7e91356)

* refactor: http 패키지 분리

* refactor: 메서드 분리

* refactor: 패키지 분리

* refactor: 헤더 추출 로직 가독성 향상 도모

* fix:  페이지 요청 시 화면 깨짐 수정

* refactor: 불필요한 정적 팩토리 메서드 삭제

* refactor: 정적 페이지 호출 메서드 분리

* fix: 이전 쿠키 삭제 후 재발행 로직 추가

* refactor: 정적 리소스 URL 반환 메서드 분리

* refactor: 중복 로직 메서드 분리

---------

Co-authored-by: Gyeongho Yang <[email protected]>
jminkkk pushed a commit that referenced this pull request Sep 11, 2024
* fix: remove implementation logback-classic on gradle (#501)

* fix: add threads min-spare configuration on properties (#502)

* feat: http 서버 구현

* feat: 로그인 구현

* refactor: was, controller, session 분리

* test: 학습 테스트

* feat: 학습테스트 구현

* refactor: http 패키지 이동

* refactor: requestBody 필드로 추출

* refactor: httpVersion 및 statusCode 객체 분리

* refactor: requestMethod enum으로 분리

* refactor: 불필요한 if 문 제거 및 early return

* refactor: stream으로 변경

* refactor: header에서 cookie 인자를 받아 꺼내도록 변경

---------

Co-authored-by: Gyeongho Yang <[email protected]>
shin-jisong pushed a commit that referenced this pull request Sep 11, 2024
* test: 파일, 입출력 스트림 학습 테스트

* docs: 1단계 요구사항 작성

* feat: 인덱스 페이지 응답

* fix: remove implementation logback-classic on gradle (#501)

* fix: add threads min-spare configuration on properties (#502)

* feat: 로그인 페이지 응답 및 회원 조회 로그 출력

* docs: 2단계 요구사항 작성

* feat: 로그인 시 302 반환 및 로그인 여부에 따라 다른 페이지 이동

* feat: 회원가입 페이지 응답 및 회원가입 요청 처리

* feat: 로그인 요청 메서드 변경

* feat: Cookie에 JSESSIONID 값 저장

* feat: Session 생성 및 로그인 상태로 로그인 페이지 접속 시 리다이렉트

* test: HTTP 활용하기 학습 테스트

* refactor: 중복되는 response 처리 코드 메서드화

* refactor: Session, SessionManager, Manager

- 매개변수 타입 수정, final 제거
- SessionManager 싱글톤 적용

* refactor: Request 객체 분리

- HeaderType, HttpCookies, RequestLine 생성

* refactor: Response 객체 분리

- StatusLine, Status 생성

* refactor: Request 내 protocolVersion, body 게터 추가

* refactor: Session 정적 팩터리 메서드 추가, SessionManager 메서드의 불필요한 예외 전파 제거

* refactor: Http11Processor 내 중복 로직 제거

* fix: 헤더 조회 메서드 오동작, 빈 request body 처리

* docs: 완료한 요구사항 체크

---------

Co-authored-by: Gyeongho Yang <[email protected]>
JiHyeonL pushed a commit that referenced this pull request Sep 11, 2024
* feat: 1단계 1번 구현

* feat: 1단계 2번 구현

* feat: 1단계 3번 구현

* feat: 2단계 1번 구현

* fix: remove implementation logback-classic on gradle (#501)

* fix: add threads min-spare configuration on properties (#502)

* feat: 2단계 2번 구현

* feat: 2단계 3번 구현

* feat: Session 관련 기능 구현

* feat: HttpRequest 및 Parser 구현

* test: File 학습 테스트

* test: IOStream 학습 테스트

* test: Cache 학습 테스트

* feat: HttpStatus 하드 코딩으로 변경

* feat: 예외 사항 처리

* feat: get(0)을 getFirst로 변경

* feat: user 로그 위치 변경

* feat: Redirect 함수 구현

---------

Co-authored-by: Gyeongho Yang <[email protected]>
Mingyum-Kim added a commit to Mingyum-Kim/java-http that referenced this pull request Sep 12, 2024
* test: 학습 테스트 진행

* feat: `/index.html`에 접근했을 때 static/index.html 파일이 보여지도록 구현

* feat: 자원에 따라 다른 Conent-Type으로 응답을 보내도록 수정

* fix: remove implementation logback-classic on gradle (woowacourse#501)

* fix: 공백 처리 때문에 index.html이 불러와지지 않는 현상 해결

* feat: 로그인 요청 시 쿼리 파라미터를 파싱하는 기능 구현

* fix: add threads min-spare configuration on properties (woowacourse#502)

* feat: 로그인에 성공하거나 실패한 경우 다른 페이지로 리다이렉트하는

* feat: POST 요청으로 회원 가입 시 요청 본문에서 정보를 가져와 사용자 저장하는 기능 구현

* feat: 로그인 시 POST 요청을 보내도록 수정

* feat: 로그인 시 세션 아이디를 쿠키에 등록하는 기능 구현

* feat: 쿠키에 JSESSIONID가 없을 때 Set-Cookie를 발급하는 기능 구현

* feat: 이미 로그인한 회원의 경우 로그인 페이지에 접근 불가하도록 구현

* refactor: 쿠키가 없을 때 일반 페이지에 접근하면 세션 아이디를 주지 않음

* feat: HTTP 활용 학습 테스트 진행

* refactor: 뭉친 코드를 클래스 분리하여 리팩토링

* fix: JSESSIONID를 추가하지 않아 로그인되지 않는 문제 해결

* fix: 세션 아이디가 달라서 로그인 시 로그인 페이지가 접속되는 현상 해결

* refactor: 기존 코드 주석 제거

* style: 주석 제거 및 컨벤션 맞추기

* refactor: 미구현된 파일 제거

* refactor: 필터를 사용하여 ETag를 지정하는 것으로 변경

* refactor: 인터셉터에서 CacheControl을 적용할 수 있도록 수정

* refactor: Content-Length 헤더 이름을 상수화

* refactor: 정적 파일을 한 번에 처리하도록 리팩토링

* fix: Json 파일을 보내는 경우를 고려하여 MediaType 수정

* refactor: 로그인 시 쿠키 세션을 꺼내오는 코드 가독성 개선

* refactor: 요청한 사용자 정보가 없는 경우 401 페이지를 보여주도록 수정

* refactor: 쿠키의 키값을 상수화하여 리팩토링

---------

Co-authored-by: Gyeongho Yang <[email protected]>
ehtjsv2 pushed a commit that referenced this pull request Sep 12, 2024
* 이슈 템플릿 생성

* fix: remove implementation logback-classic on gradle (#501)

* fix: add threads min-spare configuration on properties (#502)

* fix: content 가 null 일 경우 응답이 생성되지 않도록 변경

* refactor: 학습테스트를 무시하도록 변경

* fix: 로그인 페이지를 보여주도록 변경

* refactor: 응답 전체 로깅 삭제

* refactor: 사용하지 않는 핸들러 삭제

* fix: 로그인 요청에서 로그인 페이지 응답으로 변경

* refactor: 파일에 따라 MIME TYPE 을 결정하는 메서드 사용

* refactor: handle 메서드에서 null 반환 제거

* refactor: Resource -> StaticResource 로 이름 및 역할 변경

* refactor: 정적 파일 응답을 분리

* test: 로그인 시도에 대한 요청 테스트

* feat: 로그인 결과에 따라 응답 분기

* refactor: 메서드 이름 변경

* test: 회원가입 테스트 작성

* test: 회원가입 로직 작성

* test: 테스트에 @nested 사용

* refactor: ResourceHandler 구현체 이름 변경

* refactor: 필요없는 MethodRequest 삭제

* refactor: MethodQueryParameters 이름 변경

* refactor: 전체 요청을 읽는 메서드의 구현 변경

* refactor: 쿼리 파라미터 파싱을 존재할 때만 수행하도록 변경

* test: 회원가입 로직 테스트 변경

* feat: 회원가입 기능 구현

* refactor: 요청을 읽는 방식 변경

- BufferedReader.readLine() 사용부 제거

* refactor: 핸들러 하나만을 사용하도록 변경

* test: body 가 존재하는 요청에 Content-Length 헤더 추가

* test: 요청 생성 메서드 변경

* test: 확인 로직을 헤더 순서와 관련 없이 확인하도록 변경

* refactor: 지정된 응답만 생성하는 대신 응답이 상태를 가지도록 변경

* refactor: Response 를 생성하는 책임을 스스로 가지고, builder 패턴을 사용하도록 변경

* chore: 패키지 변경

* refactor: 필요없는 로그 제거

* refactor: 필드 순서 변경

* refactor: 필요없는 출력 삭제

* refactor: 로그인을 POST 방식으로 변경

* feat: 쿠키 클래스 생성

* feat: LMS 에 명시된 Session 관련 객체들 구현

* feat: 로그인 기능에서 세션을 유지하도록 변경

* refactor: 유저 조회시 해당 유저가 존재하지 않으면 예외를 반환하는 메서드 구현

* feat: 로그인, 회원가입시 세션을 생성하도록 구현

* refactor: Http 헤더 이름 상수화

* refactor: 사용되지 않는 import 문 제거

* refactor: final 필드로 변경

* refactor: 상수화

* refactor: 쿠키 관련 값 상수화

* test: 루트 요청에 대한 테스트 추가

* fix: 정적 리소스 요청 확인을 path 전체에서 파일 확장자를 찾도록 변경

* test: 로그인 로직을 POST 로 보내도록 변경

* refactor: QueryParameters -> RequestParameters 클래스 이름 변경

* refactor: 파라미터 명 변경

* test: Content-Length 를 실제 읽은 값을 사용하도록 변경

* refactor: login 요청에 대해 정확하게 매핑하도록 변경

* test: 로그인이 되어 있을 경우 로그인 뷰 조회 테스트

* fix: 로그인이 된 경우 로그인 페이지로 접근하면 index.html 로 리다이렉트 하도록 변경

---------

Co-authored-by: Gyeongho Yang <[email protected]>
GIVEN53 pushed a commit that referenced this pull request Sep 12, 2024
* fix: remove implementation logback-classic on gradle (#501)

* fix: add threads min-spare configuration on properties (#502)

* 전체 코드 롤백

* test: http 캐시 테스트

* feat: index.html 응답 및 css 지원 기능 구현

* feat: favicon 파일 추가

* feat: HTTP 요청 메시지를 담는 객체 구현

* feat: HTTP 요청 메시지를 읽는 객체 구현

* feat: HTTP 응답 메시지를 만들 때 사용하는 객체 구현

* remove: 미사용 클래스 삭제

* fix: 쿼리에서 값을 조회하지 못하는 문제 해결

* feat: 정적 리소스 파일을 불러오는 기능 및 테스트 구현

* feat: / 경로에 대한 요청을 처리하는 기능 및 테스트 구현

* feat: 정적 리소스 요청을 처리하는 기능 및 테스트 구현

* feat: /login 경로에 대한 요청을 처리하는 기능 및 테스트 구현

* feat: 요청에 대해 적절한 핸들러를 찾는 기능 구현

* refactor: 구현된 기능을 Http11Processor 에 반영

* refactor: 응답 메시지를 만들 때 body가 없는 경우에 대한 처리 추가

* feat: 로그인 302 응답 기능 구현

* refactor: http 요청 body를 읽을 때 content-length 헤더를 사용하도록 수정

* feat: 로그인 기능 구현

* feat: Form 요청 body를 처리하는 기능 및 테스트 구현

* feat: 회원을 저장할 때 중복 account에 대한 검증 및 테스트 구현

* feat: 회원가입 기능 및 테스트 구현

* feat: 로그인 성공시 쿠키 설정 기능 및 테스트 구현

* feat: 세션을 이용한 로그인 기능 구현

* style: reformat code

* style: 테스트 메서드명 수정

* refactor: 로그인 시 POST 요청을 보내도록 수정

* fix: 세션이 없을 때 페이지 로딩이 안되는 문제 해결

* refactor: 공통 헤더 상수화

* refactor: Handler가 존재하지 않으면 404 페이지를 반환하도록 수정

* refactor: 로그인 페이지에서 User를 중복으로 조회하는 로직 수정

* refactor: 헤더 상수를 public으로 수정 및 RequestMessageReader에 반영

* refactor: JSessionId 존재 유무 확인 로직 수정

* refactor: 요청 헤더에서의 타입 수정

* refactor: HttpResponse 생성자 접근 제어자 수정(public -> private)

* refactor: 테스트에서의 제네릭 타입 제거

* refactor: 테스트에서의 타입 체크 방법 수정(isInstanceof -> isExactlyInstanceOf)

* refactor: 미사용 html 파일 제거

* refactor: sessionId를 로그인시 항상 갱신하도록 수정

---------

Co-authored-by: Gyeongho Yang <[email protected]>
alstn113 added a commit to alstn113/java-http that referenced this pull request Sep 12, 2024
* fix: replace javax with jakarta on imports (woowacourse#500)

* fix: remove implementation logback-classic on gradle (woowacourse#501)

* fix: add threads min-spare configuration on properties (woowacourse#502)

* feat: javax jakarta로 변경

* feat: FileTest 파일 경로 및 읽기 작성

* feat: IOStreamTest OutputStream 테스트 구현

* feat: IOStreamTest InputStream 테스트 구현

* feat: IOStreamTest FilterStream 테스트 구현

* feat: IOStreamTest BufferedReader 테스트 구현

* chore: IOStreamTest BufferedOutputStream 참고 주석 작성

* chore: 안쓰는 import 제거

* feat: header parsing

* feat: query parsing

* feat: /login page

* feat: request, response base code

* refactor: http 클래스 분리

* refactor: http request 구현 적용

* refacor: HttpResponse

* refactor: handler 구현

* refactor: format code

* refactor: format code

* feat: redirect 구현

* refactor: before post body

* feat: post redirect get register, login

* feat: http cookie 구현

* feat: 세션 쿠키 등록 구현

* feat: 세션 쿠키가 존재할 경우 응답하지 않음

* feat: getSession 및 user handler 작성

* refactor: http cookies로 변경

* refactor: 404 리다이렉트

* refactor: static resource response

* refactor: string return

* test: handler test

* test: handler test

* refactor: http request factory

* fix: 캐시 미션 버그 수정

* feat: 0단계 - 휴리스틱 캐싱 제거하기

* feat: 1단계 - HTTP Compression 설정하기

* feat: 2단계 - ETag/If-None-Match 적용하기

* feat: 3단계 - 캐시 무효화(Cache Busting)

* refactor: doGet으로 메서드 변경

* refactor: handler 위치 변경

* refactor: CacheControl Builder 사용으로 개선

* chore: 사용하지 않는 import 제거

* feat: 로그인된 상태에서 /login 페이지에 GET method로 접근 시 index.html로 리다이렉트 처리

* refactor: join -> entry 에서 entry -> joining으로 개선

---------

Co-authored-by: Donghoon Lee <[email protected]>
Co-authored-by: Gyeongho Yang <[email protected]>
kang-hyungu pushed a commit that referenced this pull request Sep 13, 2024
* fix: remove implementation logback-classic on gradle (#501)

* fix: add threads min-spare configuration on properties (#502)

* refactor: favicon.ico 파일 추가

* refactor: 변수명 수정

* refactor: 불필요한 로직 제거

* fix: 잘못된 url 입력에 대한 null 처리

* fix: input값이 덜 들어왔을 시 에러 처리

* refactor: HttpResponse 클래스에 builder 패턴 적용

* refactor: 불필요한 파일 삭제

* refactor: 없는 url에 대한 상태코드 변경

* refactor: Cookie 클래스로 추출

* refactor: depth 감소

* refactor: 쓰레드 안전성 보장

* refactor: 쓰레드풀 생성

* refactor: 존재하지 않는 url에 대한 처리 책임 이동

* refactor: 패키지 이동

* refactor: 사용하지 않는 import 삭제

* test: 학습 테스트

* refactor: depth 감소

* refactor: 특정 페이지에 대한 권한 처리 적용

* refactor: 권한 처리 시 redirect는 제외

* refactor: 4단계 제거

* refactor: 4단계 제거

* refactor: 상수화

* refactor: 예외 클래스 변경

* refactor: HttpResponse의 Builder 패턴 간소화

* refactor: IO작업 이동

* refactor: HttpHeaderName을 사용하도록 수정

* refactor: HttpMethod를 사용하도록 수정

* refactor: 클래스명 수정

* fix: 로그인이 안되는 오류 수정

* refactor: 컨트롤러에서 Body를 직접 사용하는 로직 이동

* refactor: body 파싱 시 필터 로직 추가

* refactor: 상수화

* refactor: 메소드 추출

* refactor: 입력값 검증 로직

* refactor: session을 다루는 로직 이동

* refactor: 메소드 분리

* refactor: 메소드 분리

* refactor: 메소드 명 수정

* refactor: 패키지 이동

* refactor: 예외 처리

* refactor: HttpMethodTest 작성

* refactor: 메소드 분리

* refactor: 코드 간소화

* refactor: 예외 상황 추가

* test: RequestMappingTest, RegisterControllerTest 추가

* test: HttpRequestConvertorTest 작성

* test: HttpCookieConvertorTest 작성

* test: LoginControllerTest 작성

* test: HttpResponseTest 작성

* test: HttpRequestMaker 적용

* refactor: 디버깅용 출력문 삭제

* test: 오류가 나는 테스트 수정

* test: DisplayName 추가

* refactor: Controller의 service 형식 변경

* refactor: 상수화

* refactor: 로직 이동

* refactor: 역할 이동

* refactor: 상수 이동

* fix: 세션이 삽입이 안 되는 오류 수정

* fix: SessionManager 싱글톤화

* refactor: 메소드명 수정

* refactor: 코드 간소화

* refactor: depth 간소화

* refactor: 사용하지 않는 메소드 및 변수 삭제

* refactor: 메소드 간소화

* refactor: 메소드명 수정

* refactor: 클래스 삭제

* refactor: Concurrent Collections로 수정

* refactor: 불필요한 테스트 삭제

* test: 불필요한 변수 삭제

* test: RequestBody 생성 테스트 작성

---------

Co-authored-by: Gyeongho Yang <[email protected]>
ehtjsv2 pushed a commit that referenced this pull request Sep 13, 2024
* 이슈 템플릿 생성

* fix: remove implementation logback-classic on gradle (#501)

* fix: add threads min-spare configuration on properties (#502)

* chore: 세션은 Http 에 종속되는 존재가 아니므로 패키지 변경

* chore: RequestParameters 는 Http 요청에 관련된 객체이므로 패키지 이동

* refactor: RequestLine 테스트 추가 및 예외처리

* test: RequestParameters 파싱 테스트 생성

* refactor: Http 관련 객체들에게 Http 네이밍 추가

* feat: 미션 요구사항에 있는 뼈대 코드 추가

* feat: Http 메서드에 따른 분기 추가

* feat: 요청에 따라 Servlet 을 다르게 처리하는 흐름 구현

* feat: 실제로 요청이 Controller 까지 전달될 수 있도록 변경

* feat: HttpResponse 를 가변객체로 변경

* feat: HttpResponse 를 가변객체로 변경

* refactor: Request URL 과 컨트롤러 연결 설정 분리

* refactor: LoginController 분리

* refactor: RegisterController 분리

* fix: 로그인 뷰 조회 기능 수정

* refactor: 정적 파일 Controller 분리

* refactor: 상수 사용

* refactor: 정적 파일 POST 요청 예외처리

* refactor: 요청 처리 실패 예외처리

* refactor: 예외 이름 변경

* refactor: 사용하지 않는 메서드 삭제

* refactor: HttpStatus enum 분리

* refactor: 필드에 final 추가

* refactor: 기본적으로 생성되는 응답을 NOT_FOUND 로 생성

* test: PathMatchServletContainer 테스트 작성

* test: SessionManager 테스트

* test: Session 테스트 추가

* refactor: 사용하지 않는 메서드 삭제

* test: 세션 요청 관련 객체 테스트

* test: 학습 테스트 stage 0 완료

* test: 학습 테스트 stage 1 완료

* fix: config 로 분리한 RequestMapping 을 사용하도록 변경

* refactor: 휴리스틱 캐시 제거

* fix: 요청 매핑을 정규식을 통해 진행하도록 변경

---------

Co-authored-by: Gyeongho Yang <[email protected]>
jongmee pushed a commit that referenced this pull request Sep 13, 2024
* fix: remove implementation logback-classic on gradle (#501)

* fix: add threads min-spare configuration on properties (#502)

* test: FileTest 및 IOStreamTest 통과

* chore: lombok 의존성 추가

* feat: 1-1 'GET /index.html 응답하기' 기능 구현

* feat: 1-2 CSS 지원하기 기능 구현

- MimeType 열거형 추가
- 정적 URI를 못찾을 시 404 반환

* refactor: getResponse 로직 메서드 분리

* refactor: 간단한 예외처리 추가

* refactor(HttpRequest): path와 parameters 추가 및 파싱

* feat: 1-3 Query String 파싱 구현

* feat: 2-1 로그인 여부에 따라 페이지 이동 구현

* refactor: HttpResponse 객체 추가

* refactor: 메서드 인자 및 이름 변경

- getStaticResource(HttpRequest request) -> getStaticResourceResponse(String requestPath)

* fix: 템플릿 엔진 미사용

* test: 휴리스틱 캐싱 제거

- CacheControlInterceptor 추가

* test: HTTP Compression 설정

* fix: 알맞은 resource 이름 반환

* test: ETag/If-None-Match 적용

- ShallowEtagHeaderFilter 사용

* test: 캐시 무효화

- 캐시 max-age 1년 설정
- ETag 적용
- url에 버전 적용

* feat: POST 방식으로 회원가입

- 요청 본문 파싱 로직 수정

* fix: 파라미터 없는 /login 접속 불가능 수정

* fix: 요청 본문 URLDecode

* fix: Cookie에 JSESSIONID 값 저장

- HttpCookie 객체 구현 및 요청, 응답 객체에 추가

* feat: Session 구현

* refactor: 요청 URL 디코딩

* refactor: application/x-www-form-urlencoded MIME 타입 요청 본문 값을 파라미터로 처리

* refactor(HttpResponse): 생성자 추가

* refactor(HttpResponse): 상태 코드 및 메시지 열거형 분리

- enum HttpStatusCode

* refactor: Http11Processor 에서 컨트롤러 로직 분리

- 컨트롤러 인터페이스 추가
- 정적 자원 불러오는 로직 객체 분리
- 요청 경로애 따른 컨트롤러 맵핑

* refactor: 정적 자원 캐시 정책 추가

* refactor: 요청, 응답 헤더 객체화

- 하드 코딩 값 상수화
- 세션 쿠키에 HttpOnly 설정

* refactor: 로그인 요청 메서드 POST로 변경

- DB 인스턴스 생성 및 User id 유효값 저장
- 루트 패스 인덱스 페이지로 변경

* test: 컨트롤러 및 도매인 테스트 추가

- User 검증 추가

* fix: 키밸류 값 문제 시 패스

* chore: 세션 패키지 변경

* refactor: svg 파일 처리 추가

* refactor: 변수명 변경

* chore: 패키지 수정

---------

Co-authored-by: Gyeongho Yang <[email protected]>
jinchiim pushed a commit that referenced this pull request Sep 13, 2024
* fix: remove implementation logback-classic on gradle (#501)

* fix: add threads min-spare configuration on properties (#502)

* [톰캣 구현하기 1, 2단계] 안나 (김민겸) 미션 제출합니다. (#571)

* test: 학습 테스트 진행

* feat: `/index.html`에 접근했을 때 static/index.html 파일이 보여지도록 구현

* feat: 자원에 따라 다른 Conent-Type으로 응답을 보내도록 수정

* fix: remove implementation logback-classic on gradle (#501)

* fix: 공백 처리 때문에 index.html이 불러와지지 않는 현상 해결

* feat: 로그인 요청 시 쿼리 파라미터를 파싱하는 기능 구현

* fix: add threads min-spare configuration on properties (#502)

* feat: 로그인에 성공하거나 실패한 경우 다른 페이지로 리다이렉트하는

* feat: POST 요청으로 회원 가입 시 요청 본문에서 정보를 가져와 사용자 저장하는 기능 구현

* feat: 로그인 시 POST 요청을 보내도록 수정

* feat: 로그인 시 세션 아이디를 쿠키에 등록하는 기능 구현

* feat: 쿠키에 JSESSIONID가 없을 때 Set-Cookie를 발급하는 기능 구현

* feat: 이미 로그인한 회원의 경우 로그인 페이지에 접근 불가하도록 구현

* refactor: 쿠키가 없을 때 일반 페이지에 접근하면 세션 아이디를 주지 않음

* feat: HTTP 활용 학습 테스트 진행

* refactor: 뭉친 코드를 클래스 분리하여 리팩토링

* fix: JSESSIONID를 추가하지 않아 로그인되지 않는 문제 해결

* fix: 세션 아이디가 달라서 로그인 시 로그인 페이지가 접속되는 현상 해결

* refactor: 기존 코드 주석 제거

* style: 주석 제거 및 컨벤션 맞추기

* refactor: 미구현된 파일 제거

* refactor: 필터를 사용하여 ETag를 지정하는 것으로 변경

* refactor: 인터셉터에서 CacheControl을 적용할 수 있도록 수정

* refactor: Content-Length 헤더 이름을 상수화

* refactor: 정적 파일을 한 번에 처리하도록 리팩토링

* fix: Json 파일을 보내는 경우를 고려하여 MediaType 수정

* refactor: 로그인 시 쿠키 세션을 꺼내오는 코드 가독성 개선

* refactor: 요청한 사용자 정보가 없는 경우 401 페이지를 보여주도록 수정

* refactor: 쿠키의 키값을 상수화하여 리팩토링

---------

Co-authored-by: Gyeongho Yang <[email protected]>

* refactor: Method, Body, Path 를 VO로 분리

* refactor: HttpResponse와 하위 요소들을 VO로 분리

* refactor: HttpResponse를 활용해 응답을 보내는 코드 리팩토링

* refactor: Content-Type을 객체로 생성하여 생성 로직 위임

* refactor: 응답 본문을 반환하는 부분을 객체로 대체

* refactor: 생성자와 요청 HTTP 생성 용 정적 팩토리 메서드 분리

* refactor: initialLine을 requestLine으로 변수명 변경

* refactor: 서블릿 컨테이너를 사용해서 요청을 처리하도록 수정

* refactor: 동적 요청에 대해 분기하는 HandlerMapping 구현

* refactor: Servlet이 적절한 컨트롤러를 꺼내어 처리하도록 구현

* refactor: HttpResponse 빈 객체 생성 후 값을 대입할 수 있도록 수정

* refactor: 응답을 출력하는 역할을 하는 클래스 분리

* feat: 로그인을 담당하는 컨트롤러 구현

* feat: 회원 저장을 담당하는 Controller 구현

* feat: 정적 파일 처리를 담당하는 Controller 구현

* refactor: 분기 처리를 구현 컨트롤러에게 위임하여 로직 개선

* refactor: Body에서 속성을 파싱할 수 있도록 Properties 클래스 분리

* fix: 로그인 페이지가 출력되지 않는 버그 해결

* fix: 세션 정보가 조회되지 않는 현상 해결

* fix: 실패하는 테스트 케이스 수정

* feat: Executors로 Thread Pool 적용

* refactor: 기존의 Controller로 명명한 클래스 이름을 Servlet으로 수정

* test: 로그인 및 회원가입 서블릿 테스트 구현

* refactor: 필요한 설정 값을 상수화하도록 수정

* style: 클래스 상단 개행 컨벤션 맞춤

* refactor: 정적 파일 처리 시 . 을 붙여 확장자 판별

* refactor: 모든 헤더 키를 상수화

* refactor: 정적 메서드의 이름을 직관적으로 변경

* refactor: HTTP 파싱을 위한 Delimter 를 전부 상수화

* refactor: 세션 값을 추출하는 메서드를 분리

* refactor: RequestLine과 ResponseLine으로 객체를 추상화

* refactor: 헤더 키를 상수화하여 생성하도록 수정

* fix: 인덱스 페이지가 연결되지 않는 현상 해결

* refactor: GET, POST 이외의 메소드 요청이 온다면 405를 반환

* refactor: 프로퍼티를 HttpRequest에서 바로 꺼내오도록 설정

* refactor: 로그인이 실패한 경우 401 페이지를 응답

* refactor: RequestLine에서 한번에 처리하도록 수정

* refactor: 이미 존재하는 유저가 아니라면 저장하도록 수정

* fix: 불일치 메서드명 수정

* fix: 요청과 응답이 동작하지 않는 문제 해결

* refactor: ContentLength가 0 이하인 경우 예외처리

* refactor: 정적 메서드의 이름을 수정

* fix: 패스워드가 조회되지 않는 문제 해결

* fix: 루트경로 입력시 Hello, World가 보여지도록 수정

* test: 실패하는 테스트 케이스 수정

* fix: 잘못 올라간 파일 수정

---------

Co-authored-by: Gyeongho Yang <[email protected]>
kunsanglee pushed a commit that referenced this pull request Sep 14, 2024
* fix: remove implementation logback-classic on gradle (#501)

* fix: add threads min-spare configuration on properties (#502)

* test: 학습 테스트

* refactor: Concurrent Collections로 수정

* refactor: 스레드 풀 적용

* refactor: start 메소드도 스레드 풀을 사용하도록 수정

* refactor: close wait 상황 방지

* refactor: 메소드 수정

* fix: 동작 오류 수정

---------

Co-authored-by: Gyeongho Yang <[email protected]>
kunsanglee pushed a commit that referenced this pull request Sep 16, 2024
* fix: remove implementation logback-classic on gradle (#501)

* fix: add threads min-spare configuration on properties (#502)

* test: Connector 테스트 추가

* test: 에러 종류 수정

* test: 메소드명 수정

* test: 변수 수정

---------

Co-authored-by: Gyeongho Yang <[email protected]>
jongmee pushed a commit that referenced this pull request Sep 19, 2024
* fix: remove implementation logback-classic on gradle (#501)

* fix: add threads min-spare configuration on properties (#502)

* test: FileTest 및 IOStreamTest 통과

* chore: lombok 의존성 추가

* feat: 1-1 'GET /index.html 응답하기' 기능 구현

* feat: 1-2 CSS 지원하기 기능 구현

- MimeType 열거형 추가
- 정적 URI를 못찾을 시 404 반환

* refactor: getResponse 로직 메서드 분리

* refactor: 간단한 예외처리 추가

* refactor(HttpRequest): path와 parameters 추가 및 파싱

* feat: 1-3 Query String 파싱 구현

* feat: 2-1 로그인 여부에 따라 페이지 이동 구현

* refactor: HttpResponse 객체 추가

* refactor: 메서드 인자 및 이름 변경

- getStaticResource(HttpRequest request) -> getStaticResourceResponse(String requestPath)

* fix: 템플릿 엔진 미사용

* test: 휴리스틱 캐싱 제거

- CacheControlInterceptor 추가

* test: HTTP Compression 설정

* fix: 알맞은 resource 이름 반환

* test: ETag/If-None-Match 적용

- ShallowEtagHeaderFilter 사용

* test: 캐시 무효화

- 캐시 max-age 1년 설정
- ETag 적용
- url에 버전 적용

* feat: POST 방식으로 회원가입

- 요청 본문 파싱 로직 수정

* fix: 파라미터 없는 /login 접속 불가능 수정

* fix: 요청 본문 URLDecode

* fix: Cookie에 JSESSIONID 값 저장

- HttpCookie 객체 구현 및 요청, 응답 객체에 추가

* feat: Session 구현

* refactor: 요청 URL 디코딩

* refactor: application/x-www-form-urlencoded MIME 타입 요청 본문 값을 파라미터로 처리

* refactor(HttpResponse): 생성자 추가

* refactor(HttpResponse): 상태 코드 및 메시지 열거형 분리

- enum HttpStatusCode

* refactor: Http11Processor 에서 컨트롤러 로직 분리

- 컨트롤러 인터페이스 추가
- 정적 자원 불러오는 로직 객체 분리
- 요청 경로애 따른 컨트롤러 맵핑

* refactor: 정적 자원 캐시 정책 추가

* refactor: 요청, 응답 헤더 객체화

- 하드 코딩 값 상수화
- 세션 쿠키에 HttpOnly 설정

* refactor: 로그인 요청 메서드 POST로 변경

- DB 인스턴스 생성 및 User id 유효값 저장
- 루트 패스 인덱스 페이지로 변경

* test: 컨트롤러 및 도매인 테스트 추가

- User 검증 추가

* fix: 키밸류 값 문제 시 패스

* chore: 세션 패키지 변경

* refactor: svg 파일 처리 추가

* refactor: 변수명 변경

* chore: 패키지 수정

* feat: 스레드 학습 테스트

* feat: Executors로 Thread Pool 적용

* feat: 동시성 컬렉션 사용하기

* chore: 사용하지 않는 변수 및 import 제거

---------

Co-authored-by: Gyeongho Yang <[email protected]>
ehtjsv2 pushed a commit that referenced this pull request Sep 19, 2024
* 이슈 템플릿 생성

* fix: remove implementation logback-classic on gradle (#501)

* fix: add threads min-spare configuration on properties (#502)

* refactor: 로그 레벨 변경

* refactor: 스레드풀 설정

* refactor: 동시성 컬렉션 사용하기

* test: 학습테스트 stage 2 완료

* refactor: 놓쳤던 스레드 설정 반영

* refactor: `start()` 메서드에 할당되는 스레드를 스레드풀에서 가져오지 않고 새로 생성

* refactor: trace 레벨의 로그를 보기 위한 설정 추가

* feat: 잘못된 계정으로 로그인 시도시 401 로 리다이렉트

---------

Co-authored-by: Gyeongho Yang <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants