웹 프로그래밍 풀스택(5) 5. Servlet - BE

김지용·2021년 11월 8일

학습 목표

  1. 자바 웹 어플리케이션의 구조를 이해한다.
  2. 서블릿에 대하여 이해한다.

자바 웹 어플리케이션(Java Web Application)

WAS에 설치(deploy)되어 동작하는 어플리케이션입니다.

자바 웹 어플리케이션에는 HTML, CSS, 이미지, 자바로 작성된 클래스(Servlet도 포함됨, package, 인터페이스 등), 각종 설정 파일 등이 포함됩니다.

자바 웹 어플리케이션의 폴더 구조

서블릿이란?

자바 웹 어플리케이션의 구성요소 중 동적인 처리를 하는 프로그램의 역할입니다.

서블릿을 정의해보면 서블릿(servlet)은 WAS에 동작하는 JAVA 클래스입니다.

서블릿은 HttpServlet 클래스를 상속받아야 합니다.

서블릿과 JSP로부터 최상의 결과를 얻으려면, 웹 페이지를 개발할 때 이 두 가지(JSP, 서블릿)를 조화롭게 사용해야 합니다.

예를 들어, 웹 페이지를 구성하는 화면(HTML)은 JSP로 표현하고, 복잡한 프로그래밍은 서블릿으로 구현합니다.

생각해보기

  1. 동적인 페이지가 필요한 경우는 어떤 것일까요?

A. 상황, 시간, 날짜, 요청등에 의해 달라지는 페이지가 필요할 때.

2) Servlet 작성 방법-1

들어가기 전에

현재 프로젝트에서 웹을 개발할 때 서블릿을 직접 써서 개발하지는 않습니다.

조금 더 편하게 사용할 수 있게 도와주는 다양한 프레임워크를 사용해서 개발하는 경우가 더 많습니다.

하지만, 그 프레임워크들도 서블릿이 없이는 동작할 수 없기 때문에 서블릿의 기본적인 작성법이나, 서블릿의
라이프 사이클을 이해하고 있다면 웹의 동작을 이해하는 데 많은 도움이 됩니다.

학습 목표

  1. 서블릿을 작성할 수 있습니다.
  2. 서블릿 버전에 따른 web.xml을 적절하게 작성할 수 있습니다.

핵심 개념

  • HttpServlet
  • web.xml

버전에 따른 Servlet 작성 방법

  1. Servlet 3.0 spec 이상에서 사용하는 방법
    • web.xml 파일을 사용하지 않습니다.
    • 자바 어노테이션(annotation)을 사용합니다.
    • 앞에서 실습했던 first web에서 사용합니다.
  2. Servlet 3.0 spec미만에서 사용하는 방법
    • servlet을 등록할 때 web.xml 파일에 등록합니다.

3) Servlet 라이프 싸이클-1

들어가기 전에

어떤 객체의 생성부터 소멸까지의 과정을 라이프 사이클(Life Cycle)라고 합니다.

학습 목표

서블릿의 생명주기를 이해합니다.

핵심 개념

  • init
  • service
  • destory

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에 대해서 알아봅니다.

학습 목표

  1. HttpServletRequest 객체를 이해한다.
  2. HttpServletResponse 객체를 이해한다.

핵심 개념

  • HttpServletRequest
  • HttpServletResponse

요청과 응답

WAS는 웹 브라우저로부터 Servlet요청을 받으면,

  • 요청할 때 가지고 있는 정보를 HttpServletRequest객체를 생성하여 저장합니다.
  • 웹 브라우저에게 응답을 보낼 때 사용하기 위하여 HttpServletResponse객체를 생성합니다.
  • 생성된 HttpServletRequest, HttpServletResponse 객체를 서블릿에게 전달합니다.

HttpServletRequest

  • http프로토콜의 request정보를 서블릿에게 전달하기 위한 목적으로 사용합니다.
  • 헤더정보, 파라미터, 쿠키, URI, URL 등의 정보를 읽어 들이는 메소드를 가지고 있습니다.
  • Body의 Stream을 읽어 들이는 메소드를 가지고 있습니다.

HttpServletResponse

  • WAS는 어떤 클라이언트가 요청을 보냈는지 알고 있고, 해당 클라이언트에게 응답을 보내기 위한 HttpServleResponse객체를 생성하여 서블릿에게 전달합니다.
  • 서블릿은 해당 객체를 이용하여 content type, 응답코드, 응답 메시지등을 전송합니다.
profile
김죵입니당 ^^

0개의 댓글