til/Server

[Servlet] 서블릿 기초

값진 2022. 6. 20. 16:16

서블릿, Servlet

 

서블릿은 JSP 표준이 나오기 전에 만들어진 표준으로, 자바로 웹 어플리케이션을 개발할 수 있도록 하기 위해 만들어졌다. 또한 서블릿은 웹서버측(사이트)에서 자바를 사용한 프로그램을 동작시키는 기술(환경)이다.  일반적인 서블릿의 개발 과정은 다음과 같다.

  1. 서블릿 규약에 따라 자바 코드를 작성한다.
  2. 자바 코드를 컴파일해서 클래스 파일을 생성한다.
  3. 클래스 파일을 /WEB-INF/classes 폴더에 패키지에 알맞게 위치시킨다.
  4. web.xml 파일에 서블릿 클래스를 설정한다.
  5. 톰캣 등의 컨테이너를 실행한다.
  6. 웹 브라우저에서 확인한다.

서블릿 개발 과정은 JSP보다 복잡한 편이지만, MVC 패턴을 지원하는 프레임워크를 만들어야 하는 경우 서블릿으로 기반 코드를 개발하는 경우가 많기 때문에, 서블릿에 대한 이해는 중요하다.

 

 

Servlet 클래스 작성 규칙

package practice;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.Date;

import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;

public class NowServlet extends HttpServlet{

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
        response.setContentType("text/html; charset=utf-8");

        PrintWriter out = response.getWriter();
        out.println("<html>");
        out.println("<head><title>현재시간</title></head>");
        out.println("<body>");
        out.println("현재 시간은");
        out.println(new Date());
        out.println("입니다.");
        out.println("</body></html>");
    }
}

 

1. 서블릿 클래스 선언
  - javax.servlet.Servlet 인터페이스를 구현한다. > 고비용, 복잡함
  - javax.servlet.http.HttpServlet 클래스를 상속받는다. > 저비용, 간편함이라는 장점때문에 보통 두번째를 선택한다.

 

2. doGet/doPost 메소드 선언
  - 둘 중 하나 선언 or 둘 다 선언
  - 클라이언트(브라우저)의 요청이 들어오면 자동으로 호출되는 메소드

 

- 메소드 작성 규칙
    a. 매개변수 작성
         1. java.servlet.http.HttpServletRequest
         2. java.servlet.http.HttpServletResponse
    b. 예외 미루기
         1. java.io.IOException
         2. java.servlet.ServletException

 

3. 동적 HTML 페이지 작성 구현
  - doGet/doPost 내부에서 문서를 작성하기 위한 코드를 작성한다.
  - HttpServletResponse 객체의 getWriter() 메소드 호출 > PrintWriter 객체
  - PrintWriter 객체의 printXXX("태그") 메소드를 사용해서 동적으로 클라이언트 코드를 작성한다.(= BufferedWriter 역할)
  - 페이지 완성 > 브라우저에게 서비스(반환)

4. 브라우저가 자바 파일(서블릿, 알바생)을 호출한다.
  - 자바는 웹 기술이 아니다. > 웹 상에서는 자바 프로그램을 호출할 수 없다.
  - 브라우저가 웹상에서 자바 파일을 호출할 수 있도록 조치 > 가상 주소 생성 + 서블릿에게 매핑