학습 목표
- 자바 웹 어플리케이션의 구조를 이해한다.
- 서블릿에 대하여 이해한다.
자바 웹 어플리케이션(Java Web Application)
WAS에 설치(deploy)되어 동작하는 어플리케이션입니다.
자바 웹 어플리케이션에는 HTML, CSS, 이미지, 자바로 작성된 클래스(Servlet도 포함됨, package, 인터페이스 등), 각종 설정 파일 등이 포함됩니다.
자바 웹 어플리케이션의 폴더 구조

서블릿이란?
자바 웹 어플리케이션의 구성요소 중 동적인 처리를 하는 프로그램의 역할입니다.
서블릿을 정의해보면 서블릿(servlet)은 WAS에 동작하는 JAVA 클래스입니다.
서블릿은 HttpServlet 클래스를 상속받아야 합니다.
서블릿과 JSP로부터 최상의 결과를 얻으려면, 웹 페이지를 개발할 때 이 두 가지(JSP, 서블릿)를 조화롭게 사용해야 합니다.
예를 들어, 웹 페이지를 구성하는 화면(HTML)은 JSP로 표현하고, 복잡한 프로그래밍은 서블릿으로 구현합니다.
생각해보기
- 동적인 페이지가 필요한 경우는 어떤 것일까요?
A. 상황, 시간, 날짜, 요청등에 의해 달라지는 페이지가 필요할 때.
2) Servlet 작성 방법-1
들어가기 전에
현재 프로젝트에서 웹을 개발할 때 서블릿을 직접 써서 개발하지는 않습니다.
조금 더 편하게 사용할 수 있게 도와주는 다양한 프레임워크를 사용해서 개발하는 경우가 더 많습니다.
하지만, 그 프레임워크들도 서블릿이 없이는 동작할 수 없기 때문에 서블릿의 기본적인 작성법이나, 서블릿의
라이프 사이클을 이해하고 있다면 웹의 동작을 이해하는 데 많은 도움이 됩니다.
학습 목표
- 서블릿을 작성할 수 있습니다.
- 서블릿 버전에 따른 web.xml을 적절하게 작성할 수 있습니다.
핵심 개념
버전에 따른 Servlet 작성 방법
- Servlet 3.0 spec 이상에서 사용하는 방법
- web.xml 파일을 사용하지 않습니다.
- 자바 어노테이션(annotation)을 사용합니다.
- 앞에서 실습했던 first web에서 사용합니다.
- Servlet 3.0 spec미만에서 사용하는 방법
- servlet을 등록할 때 web.xml 파일에 등록합니다.
3) Servlet 라이프 싸이클-1
들어가기 전에
어떤 객체의 생성부터 소멸까지의 과정을 라이프 사이클(Life Cycle)라고 합니다.
학습 목표
서블릿의 생명주기를 이해합니다.
핵심 개념
LifecycleServlet
HttpServlet의 3가지 메소드를 오버라이딩
- init()
- service(request, response)
- destroy()
3) Servlet 라이프 싸이클-2

Servlet 생명주기
- WAS는 서블릿 요청을 받으면 해당 서블릿이 메모리에 있는지 확인합니다.
- if (메모리에 없음) {
- 해당 서블릿 클래스를 메모리에 올림
- init() 메소드를 실행
}
- service()메소드를 실행
- was가 종료되거나, 웹 어플리케이션이 새롭게 갱신될 경우 destroy() 메소드가 실행됩니다.
service(request, response) 메소드
HttpServlet의 service메소드는 템플릿 메소드 패턴으로 구현합니다.
- 클라이언트의 요청이 GET일 경우에는 자신이 가지고 있는 doGet(request, response)메소드를 호출
- 클라이언트의 요청이 Post일 경우에는 자신이 가지고 있는 doPost(request, response)를 호출
LifecycleServlet 수정 실습
- Service(request, response)메소드 주석처리
- HttpServlet의 doGet(request, response)메소드 오버라이딩
- HttpServlet의 doPost(request, response)메소드 오버라이딩
4) Request, Response 객체 이해하기-1
들어가기 전에
이번 파트를 학습하다 보면 '요청', '응답'이라는 용어가 많이 등장합니다.
이번 학습에서는 클라이언트가 서버에게 보낸 요청을 추상화한 객체 HttpServletRequest 와 서버가 클라이언트에게 응답하기 위한 정보를 추상화한 객체 HttpServletResponse에 대해서 알아봅니다.
학습 목표
- HttpServletRequest 객체를 이해한다.
- HttpServletResponse 객체를 이해한다.
핵심 개념
- HttpServletRequest
- HttpServletResponse

요청과 응답
WAS는 웹 브라우저로부터 Servlet요청을 받으면,
- 요청할 때 가지고 있는 정보를 HttpServletRequest객체를 생성하여 저장합니다.
- 웹 브라우저에게 응답을 보낼 때 사용하기 위하여 HttpServletResponse객체를 생성합니다.
- 생성된 HttpServletRequest, HttpServletResponse 객체를 서블릿에게 전달합니다.
HttpServletRequest
- http프로토콜의 request정보를 서블릿에게 전달하기 위한 목적으로 사용합니다.
- 헤더정보, 파라미터, 쿠키, URI, URL 등의 정보를 읽어 들이는 메소드를 가지고 있습니다.
- Body의 Stream을 읽어 들이는 메소드를 가지고 있습니다.
HttpServletResponse
- WAS는 어떤 클라이언트가 요청을 보냈는지 알고 있고, 해당 클라이언트에게 응답을 보내기 위한 HttpServleResponse객체를 생성하여 서블릿에게 전달합니다.
- 서블릿은 해당 객체를 이용하여 content type, 응답코드, 응답 메시지등을 전송합니다.