요구사항 1번 index.html 로 반환하기

박진은·2023년 5월 21일
0

위의 요구사항을 구현하기 위해서는 header 에 대한 이해가 필요하다

해더는 위의 예시와 같이 요청 메소드 상태코드등을 주고 담고 있는데 이 때
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 로 옮겨 리펙토링을 진행했다.

profile
코딩

0개의 댓글