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("

404 페이지를 찾을 수 없습니다.

"); response.flush(); } private void home(HttpResponse response) { response.writeBody("

home

"); response.writeBody(""); response.flush(); } private void site1(HttpResponse response) { response.writeBody("

site1

"); response.flush(); } private void site2(HttpResponse response) { response.writeBody("

site2

"); response.flush(); } private void search(HttpRequest request, HttpResponse response) { String query = request.getParameter("q"); response.writeBody("

Search

"); response.writeBody(""); 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(); } }