Skip to content

Commit

Permalink
[톰캣 구현하기 - 3, 4단계] 저문(유정훈) 미션 제출합니다. (#459)
Browse files Browse the repository at this point in the history
* refactor: HttpRequest관련 클래스 상수화, 변수명 수정

* refactor: HttpResponse클래스 역할 분리 및 Controller 적용

* refactor: 네이밍 수정

* refactor: sendRedirect메서드로 역할 통합

* refactor: 상수화

* refactor: 없는 세션에 대한 예외처리 추가

* refactor: Executors로 Thread Pool 적용 및 SessionManager 동시성 컬렉션 추가

* refactor: get, post이외의 요청이 왔을 경우 404로 redirect

* refactor: 패키지 구조 변경 및 상수 분리

* refactor: 분기 처리에 대한 return 추가

* refactor: HttpResponse의 HttpVersion을 통일된 변수를 사용하도록 변경

* refactor: 상수화

* refactor: 로그인 완료 시 회원가입 페이지로 이동하지 못하도록 수정

* refactor: 지정되지 않은 요청이 왔을 때 404페이지로 이동시키도록 변경

* refactor: 사용하지 않는 클래스 제거
  • Loading branch information
jeomxon authored Sep 14, 2023
1 parent ec12ce1 commit 11d8cf2
Show file tree
Hide file tree
Showing 33 changed files with 633 additions and 457 deletions.
2 changes: 1 addition & 1 deletion tomcat/src/main/java/org/apache/catalina/Manager.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package org.apache.catalina;

import org.apache.coyote.http11.Session;
import org.apache.coyote.http11.session.Session;

/**
* A <b>Manager</b> manages the pool of Sessions that are associated with a particular Container. Different Manager
Expand Down
18 changes: 11 additions & 7 deletions tomcat/src/main/java/org/apache/catalina/connector/Connector.java
Original file line number Diff line number Diff line change
@@ -1,30 +1,34 @@
package org.apache.catalina.connector;

import org.apache.coyote.http11.Http11Processor;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.io.IOException;
import java.io.UncheckedIOException;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import org.apache.coyote.http11.Http11Processor;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class Connector implements Runnable {

private static final Logger log = LoggerFactory.getLogger(Connector.class);

private static final int DEFAULT_PORT = 8080;
private static final int DEFAULT_ACCEPT_COUNT = 100;
private static final int DEFAULT_THREAD_COUNT = 250;

private final ServerSocket serverSocket;
private final ExecutorService executorService;
private boolean stopped;

public Connector() {
this(DEFAULT_PORT, DEFAULT_ACCEPT_COUNT);
this(DEFAULT_PORT, DEFAULT_ACCEPT_COUNT, DEFAULT_THREAD_COUNT);
}

public Connector(final int port, final int acceptCount) {
public Connector(final int port, final int acceptCount, final int maxThreads) {
this.serverSocket = createServerSocket(port, acceptCount);
this.executorService = Executors.newFixedThreadPool(maxThreads);
this.stopped = false;
}

Expand Down Expand Up @@ -67,7 +71,7 @@ private void process(final Socket connection) {
return;
}
var processor = new Http11Processor(connection);
new Thread(processor).start();
executorService.execute(processor);
}

public void stop() {
Expand Down
35 changes: 0 additions & 35 deletions tomcat/src/main/java/org/apache/coyote/http11/ContentType.java

This file was deleted.

20 changes: 13 additions & 7 deletions tomcat/src/main/java/org/apache/coyote/http11/Http11Processor.java
Original file line number Diff line number Diff line change
@@ -1,16 +1,20 @@
package org.apache.coyote.http11;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.Socket;
import nextstep.jwp.exception.UncheckedServletException;
import org.apache.coyote.Processor;
import org.apache.coyote.http11.controller.Controller;
import org.apache.coyote.http11.controller.RequestMapping;
import org.apache.coyote.http11.request.HttpRequest;
import org.apache.coyote.http11.response.HttpResponse;
import org.apache.coyote.http11.session.SessionManager;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class Http11Processor implements Runnable, Processor {

public static final SessionManager SESSION_MANAGER = new SessionManager();
private static final Logger log = LoggerFactory.getLogger(Http11Processor.class);

private final Socket connection;
Expand All @@ -33,13 +37,15 @@ public void process(final Socket connection) {
final BufferedReader bufferedReader = new BufferedReader(inputStreamReader)
) {
final HttpRequest request = HttpRequest.from(bufferedReader);
final HttpRequestHandler requestHandler = new HttpRequestHandler(request);
final HttpResponseEntity responseEntity = requestHandler.handle();
final String response = HttpResponse.getResponse(responseEntity);
final HttpResponse response = new HttpResponse();

outputStream.write(response.getBytes());
final RequestMapping requestMapping = new RequestMapping();
final Controller controller = requestMapping.getController(request);
controller.service(request, response);

outputStream.write(response.get().getBytes());
outputStream.flush();
} catch (IOException | UncheckedServletException e) {
} catch (Exception e) {
log.error(e.getMessage(), e);
}
}
Expand Down
13 changes: 10 additions & 3 deletions tomcat/src/main/java/org/apache/coyote/http11/HttpCookie.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,9 @@

public class HttpCookie {

private static final String COOKIE_DELIMITER = "; ";
private static final String COOKIE_SEPARATOR = "=";

private final Map<String, String> values;

public static HttpCookie ofJSessionId(final String jSessionId) {
Expand All @@ -15,14 +18,18 @@ public static HttpCookie ofJSessionId(final String jSessionId) {
return new HttpCookie(values);
}

public HttpCookie(final Map<String, String> values) {
public HttpCookie() {
this.values = new HashMap<>();
}

private HttpCookie(final Map<String, String> values) {
this.values = values;
}

public String getValues() {
public String printValues() {
return values.keySet()
.stream()
.map(key -> key + "=" + values.get(key) + "; ")
.map(key -> key + COOKIE_SEPARATOR + values.get(key) + COOKIE_DELIMITER)
.collect(Collectors.joining());
}

Expand Down
38 changes: 0 additions & 38 deletions tomcat/src/main/java/org/apache/coyote/http11/HttpPath.java

This file was deleted.

64 changes: 0 additions & 64 deletions tomcat/src/main/java/org/apache/coyote/http11/HttpRequest.java

This file was deleted.

This file was deleted.

This file was deleted.

Loading

0 comments on commit 11d8cf2

Please sign in to comment.