본문 바로가기
스프링 부트/자바 웹을 다루는 기술

6.4 서블릿의 응답 처리 방법

by 989898 2024. 1. 17.

이번에는 서블릿이 처리한 결과를 클라이언트에게 응답하는 기능을 알아보겠다. 서블릿에서 응답을 처리하는 방법은 다음과 같다.

 

서블릿의 응답 처리는 doGet()이나 doPost() 메서드의 두 번째 매개변수인 HttpServletResponse 객체를 이용하여 처리한다. 그리고 웹 브라우저와 서블릿의 응답 과정은 자바 I/O의 기능인 스트림을 이용하여 이루어진다.

 

6.4.1 MINE-TYPE

 

우리가 배우는 웹 애플리케이션은 클라이언트에 해당하는 웹 브라우저와 서버에 해당하는 서블릿이 서로 데이터를 주고받으면서 실행한다. 웹 브라우저가 네트워크를 통해 서블릿에 데이터를 보내는 경우 서블릿은 네트워크로부터 데이터를 입력 받는다. 반대로 서블릿이 웹 브라우저로 데이터를 전송하는 경우에는 네트워크로 데이터를 출력한다. 즉, 네트워크에 대해 자바 I/O 스트림 클래스의 입출력 기능을 이용하면 쉽게 웹 애플리케이션의 네트워크 기능을 구현할 수 있다(자바 입문서의 I/O 기능을 참고).

 

서버(서블릿)에서 웹 브라우저로 데이터를 전송할 때는 어떤 종류의 데이터를 전송하는지 웹 브라우저에 알려줘야 한다. 그 이유는 웹 브라우저가 전송 받을 데이터의 종류를 미리 알고 있으면 더 빠르게 처리할 수 있기 때문. 따라서 서버(서블릿)에서 웹 브라우저로 데이터를 전송할 때는 톰캣 컨테이너에서 미리 제공하는 여러 가지 전송 데이터 종류 중 하나를 지정해서 웹 브라우저로 전송한다. 이처럼 톰캣 컨테이너에서 미리 설정해 놓은 데이터 종류들을 MIME-TYPE(마임 타입)이라고 한다.

 

서버(서블릿)에서 자바 I/O의 스트림 클래스를 이용하여 웹 브라우저로 데이터를 전송할 때는 MIME-TYPE을 설정해서 전송할 데이터의 종류를 지정합니다.

 

다음은 MIME_TYPE으로 지정하는 예입니다

 HTML로 전송 시: text/html

 일반 텍스트로 전송 시: text/plain

 XML 데이터로 전송 시: application/xml

 

웹 브라우저는 기본적으로 HTML만 인식하므로 서블릿에서 전송하는 대부분의 데이터는 MINE-TYPE을 text.html로 지정.

 

그 외 톰캣 컨테이너에서는 자주 사용하는 데이터 종류를 MIME-TYPE으로 지정해 놓고 있으므로 서블릿에서 종류를 지정해서 사용하면 됩니다. 더 나아가 새로운 종류의 데이터를 지정하고 싶다면 CATALINA_HOME\conf\web.xml에 추가하면 됩니다.

6.4.2 HttpServletResponse를 이용한 서블릿 응답 실습


이번에는 서블릿이 응답하는 예제를 살펴보겠다. 사용자가 입력한 ID와 비밀번호를 전송하면 서블릿이 다시 브라우저에게 응답하는 예제이다. 

 

서블릿이 클라이언트(웹 브라우저)에 응답하는 과정은 다음과 같다.

1. login.html을 다음과 같이 수정합니다. 로그인창에서 ID와 비밀번호를 입력한 후 login2 서블릿으로 전송합니다.

매핑 이름을 login2로 수정한다.

2. LoginServlet2 클래스를 추가하고 다음과 같이 작성한다. 브라우저에서 전달받은 ID와 비밀번호를 HTML 태그로 만든 후 다시 브라우저로 응답한다.

 

3. 브라우저에서 접속하여 ID와 비밀번호를 입력한 후 로그인을 클릭한다.

그림 6-19 login.html로 접속하여 로그인 클릭

 

4. 그러면 서블릿이 ID와 비밀번호를 전달 받아 다시 브라우저로 출력한다.

그림 6-20 서블릿의 응답 실행 결과