Servlet의 특징과 라이프사이클
📘 서블릿이란?
서블릿(Servlet)은 자바 웹 애플리케이션 개발에 사용되는 기술 중 하나로, 동적인 웹 페이지를 생성하기 위해 자바 언어로 작성된 프로그램이다. 서블릿은 웹 서버에서 클라이언트 요청을 처리하고, 동적인 콘텐츠를 생성하여 응답을 제공한다.
📖 사용되는 클래스와 메서드
https://woojong92.tistory.com/entry/Servlet구조와-HttpServlet-클래스
서블릿은 javax.servlet.http.HttpServlet 클래스를 상속받는 자바 클래스로, 사용하기 위해서는 별도의 라이브러리(servlet-api.jar)가 필요하다.
📝 HttpServlet
- HTTP 프로토콜을 이용하는 서블릿을 개발하기 위한 클래스
- GenericServlet 클래스를 상속 받음
| 메서드 | 설명 | | — | — | | doGet (HttpServletRequest req, HttpServletResponse resp) | 클라이언트로부터 GET 요청을 받았을 때 호출 | | doPost (HttpServletRequest req, HttpServletResponse resp) | 클라이언트로부터 POST 요청을 받았을 때 호출 | | init() | 서블릿이 초기화될 때 호출 서블릿에서 사용할 데이터베이스 연결 등을 초기화하거나, 설정 정보를 로딩 | | service (HttpServletRequest req, HttpServletResponse resp) | 모든 HTTP 요청에 대해 호출 요청 메소드를 분석하여 각각의 메소드에 대응하는 doXXX() 메소드를 호 | | destroy() | 서블릿이 종료될 때 호출서블릿에서 사용한 리소스를 해제하거나, 정리 작업을 수행 |
- HttpServlet 클래스는 추상 클래스이므로, do로 시작하는 메서드 중 하나는 반드시 오버라이딩을 해주어야 한다.
GET 방식
서버에 있는 정보를 가져오려고 설계된 방법으로, 서버에는 최대 240Byte까지 데이터를 전달할 수 있다.
URL이 노출되기 때문에 보안에 문제가 생길 수 있다.
POST 방식
서버로 정보를 올리려고 설계된 방법으로, 서버에 전달할 수 있는 데이터 크기에 제한이 없다.
URL에는 매개변수가 표시되지 않는다.
📝 HttpServletRequest
메서드 | 설명 |
---|---|
getParameterNames() | 현재 요청에 포함된 매개변수 이름을 열거 형태로 넘겨준다. |
getParameter(name) | 문자열 name과 같은 이름을 가진 매개변수 값을 가져온다. |
getParameterValues(name) | 문자열 name과 같은 이름을 가진 매개변수 값을 배열 형태로 가져온다. ( 주로 checkbox, mutilple list 등에 사용 ) |
getMethod() | 현재 요청이 Get인지, Post인지 파악해서 가져온다. |
setCharacterEncoding() | 현재 JSP로 전달되는 내용을 지정한 캐리터셋을로 변환해 준다. |
📝 HttpServletResponse
메서드 | 설명 |
---|---|
setContentType(type) | 문자열 형태의 type에 지정된 MIME Type으로 Content Type을 지정한다. |
sendRedirect(url) | 클라이언트 요청을 다른 페이지로 보낸다. |
📖 서블릿의 라이프사이클
- 클라이언트가 request 정보를 보냄
- 웹서버가 request의 헤더를 확인해서 서블릿이면 서블릿 컨테이너에 처리를 넘김
- 서블릿 컨테이너는 WEB-INF에서 요청 받은 서블릿을 찾음
- 서블릿 객체가 메모리에 있는지 확인
-
요청 받은 서블릿 객체가 없다면 해당 서블릿을 메모리에 로딩하고 객체 생성
서블릿은 최초 요청 시에만 객체를 생성하고, 그 이후부터는 생성된 객체를 재활용
-
init() 메서드 실행
GenericServlet 클래스에 구현되어 있음
-
service() 메서드 실행
클라이언트 요청이 있을 때마다 해당 메서드가 실행이 된다. GenericServlet 클래스에 추상 메서드로 선언되어 있으며, HttpServlet 클래스에서 구현되어 있다.
-
서버가 종료되면, destory() 메서드가 실행된다.
자원을 해제하는 작업 수행
참고
https://woojong92.tistory.com/entry/Servlet구조와-HttpServlet-클래스
댓글남기기