해더는 위의 예시와 같이 요청 메소드 상태코드등을 주고 담고 있는데 이 때
17:59:12.472 [INFO ] [Thread-0] [webserver.RequestHandler] - Header : GET / HTTP/1.1
윗 줄과과 같이 요청 방식 이후에 url '/' 이 들어오는 것을 알 수 있다.
String line = br.readLine();
if(line == null){
return;
}
String[] splited = line.split(" ");
String path = splited[1];
log.debug("request path : {}",path);
inputstream 에서 들어온 헤더를 위와 같이 헤더의 첫번째 줄을 공백을 기준으로 분리해서 요청 경로를 파악할 수 있는 것이다.
BufferedReader br = new BufferedReader(new InputStreamReader(in,"utf-8"));//사용자의 input stream 을 bufferedReader 로 전환함
String line = br.readLine();
if(line == null){
return;
}
String[] splited = line.split(" ");
String path = splited[1];
log.debug("request path : {}",path);
DataOutputStream dos = new DataOutputStream(out);
byte[] body = Files.readAllBytes(new File("./webapp" + path).toPath());
// "./" 현재 디렉토리에서 webapp 내부에 index.html 이 존재한다 따라서 위와 같이 파일을 바이트로 변환해서 반환한다.
위의 코드에서 요청된 url에 해당하는 파일로 html 을 뿌릴 수 있다.
이후 위 코드를 HttpRequestUtils 로 옮겨 리펙토링을 진행했다.