-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathHttpRequestHandler.java
More file actions
90 lines (75 loc) · 2.74 KB
/
Copy pathHttpRequestHandler.java
File metadata and controls
90 lines (75 loc) · 2.74 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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
package was.httpserver;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
import static java.nio.charset.StandardCharsets.UTF_8;
import static util.MyLogger.log;
public class HttpRequestHandler implements Runnable{
private final Socket socket;
private final ServletManager servletManager;
public HttpRequestHandler(Socket socket, ServletManager servletManager) {
this.socket = socket;
this.servletManager = servletManager;
}
@Override
public void run() {
try{
process();
}catch (Exception e){
log(e);
}
}
private void process() throws IOException {
try(socket;
BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream(), UTF_8));
PrintWriter writer = new PrintWriter(socket.getOutputStream(),false, UTF_8)){
HttpRequest request = new HttpRequest(reader);
HttpResponse response = new HttpResponse(writer);
log("HTTP 요청: " + request);
servletManager.excute(request, response);
response.flush();
log("HTTP 응답 완료");
}
}
private void notFound(HttpResponse response) {
response.setStatusCode(404);
response.writeBody("<h1>404 페이지를 찾을 수 없습니다.</h1>");
response.flush();
}
private void home(HttpResponse response) {
response.writeBody("<h1>home</h1>");
response.writeBody("<ul>");
response.writeBody("<li><a href='/site1'>site1 </li>");
response.writeBody("<li><a href='/site2'>site2 </li>");
response.writeBody("<li><a href='/search?q=hello'>검색 </li>");
response.writeBody("</ul>");
response.flush();
}
private void site1(HttpResponse response) {
response.writeBody("<h1>site1</h1>");
response.flush();
}
private void site2(HttpResponse response) {
response.writeBody("<h1>site2</h1>");
response.flush();
}
private void search(HttpRequest request, HttpResponse response) {
String query = request.getParameter("q");
response.writeBody("<h1>Search</h1>");
response.writeBody("<ul>");
response.writeBody("<li>query : " + query + "</li>");
response.writeBody("</ul>");
response.flush();
}
private static String requsetToString(BufferedReader reader) throws IOException {
StringBuilder sb = new StringBuilder();
String line;
while((line = reader.readLine())!= null ) {
if(line.isEmpty()) break;
sb.append(line).append("\n");
}
return sb.toString();
}
}