서블릿이란?

2020. 1. 27. 16:56JSP

SMALL

서블릿

서블릿 : 웹 애플리케이션을 개발할 때 사용하는 핵심 기술

  • 자바의 모든 API 사용 가능
  • 한 번 만들어 놓으면 다양한 서버 환경에서도 실행 가능
  • 웹 앱에서 효율적인 자료 공유 방법 제공
  • 다양한 오픈소스 라이브러리
  • MVC패턴을 쉽게 적용
  • 웹 디자이너와 개발자 간에 협업이 원할

서블릿과 서블릿 컨테이너

구분 웹 서버 서블릿 컨테이너(ex 톰캣)
사용목적 웹 서비스 제공 서블릿 기반 프로그램 실행 및 처리
처리 콘텐츠 HTML, CSS, JS, 이미지 등 서블릿 클래스
실행방법 URL 요청에 의해 실행, 매번 디스크에서 읽어 처리 서블릿 클래스 정보에 따라 서버에 매핑된 URL 정보에 따라 실행하며 컨테이너에 적재된 상태에서 처리
JSP 실행 서블릿 컨테이너로 넘겨 처리 자체 처리
특징 웹 서비스 제공을 위한 다양한 설정 제공 기본적인 웹 서버 기능을 내장하고 있으나, 고급 설정이나 성능은 떨어짐(웹 서버와 병행 추천)

 

서블릿 동작 과정

[컨테이너]서블릿 클래스 로딩 -> 서블릿 인스턴스 생성(생성자) -> init() 호출(초기화 작업) -> 인스턴스로부터 스레드 생성 후 service() 호출(GET/POST) -> destroy() 호출(종료)

 

생명주기

init()

요청이 들어오면 해당 서블릿이 메모리에 있는지 확인 -> 없으면 컨테이너에 적재 -> init 메서드로 각종 초기화 작업 수행(단 한 번만 실행)

service()

스레드를 통해 실행 -> doGet(), doPost()로 분기 -> 요청처리는 request객체, 응답은 response객체로 처리

destroy()

컨테이너로부터 종료 요청이 있을 때 실행(단 한 번만 실행)

서블릿 구조

 

서블릿 구조와 API

API(Application Programming Interface) : 특정 클래스를 다른 프로그램에서 사용하기 위해 필요한 정보를 규격화 해 놓은 것

 

  • javax.Servlet.GenericServlet의 하위 클래스 javax.servlet.http.HttpServlet
  • 주로 javax.servlet.http.HttpServlet 클래스를 상속받아 구현
  • 일반적으로 개발자들은 doGet(), doPost() 메서드를 구현

 

GET 방식

  • 서버에 있는 정보를 가져오기 위해 설계된 방식
  • 240Byte의 데이터까지 전달 가능
  • QUERY_STRING 환경변수를 통해 서버로 전달(?이후의 값이 전달되며, &로 여러 속성 값 입력 가능)
  • URL이 노출되어 보안에 취약

POST 방식

  • 서버에 데이터를 올리기 위해 설계된 방식
  • 크기 제한 없음
  • URL에 표시되지 않음

 

 

LIST