forked from softeerbootcamp-7th/be-was
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathHttpServlet.java
More file actions
44 lines (38 loc) · 1.53 KB
/
HttpServlet.java
File metadata and controls
44 lines (38 loc) · 1.53 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
package webserver.http;
import webserver.exception.ExceptionHandlerMapping;
import webserver.http.response.HttpResponseConverter;
import webserver.web.WasServlet;
import webserver.http.request.HttpRequestConverter;
import webserver.http.request.HttpRequest;
import webserver.http.response.HttpResponse;
import java.net.Socket;
public class HttpServlet implements Runnable{
private final Socket connection;
private final HttpRequestConverter requestConverter;
private final HttpResponseConverter responseConverter;
private final ExceptionHandlerMapping handlerMapping;
private final WasServlet servlet;
public HttpServlet(WasServlet servlet,
ExceptionHandlerMapping handlerMapping,
HttpResponseConverter responseConverter,
HttpRequestConverter requestConverter,
Socket connection) {
this.servlet = servlet;
this.handlerMapping = handlerMapping;
this.responseConverter = responseConverter;
this.requestConverter = requestConverter;
this.connection = connection;
}
@Override
public void run() {
try {
HttpRequest request = requestConverter.parseRequest(connection);
HttpResponse response = servlet.handle(request);
responseConverter.sendResponse(response, connection);
} catch (Exception e){
handlerMapping.handle(e, connection);
} finally {
try { connection.close(); } catch (Exception ignore) {}
}
}
}