초기 동적 웹 페이지들은 서블릿(servlet)을 이용하여 구현했다. 이 서블릿의 문제점을 보완하여 나온 것이 JSP이다.
서블릿?
서블릿은 서버 쪽에서 실행되면서 클라이언트의 요청에 따라 동적으로 서비스를 제공하는 자바 클래스이다.
- 서블릿은 일반 자바 프로그램과 다르게 독자적으로 실행되지 않고, 톰캣과 같은 JSP/Servlet 컨테이너에서 실행된다는 점이 다르다.
서블릿은 서버에서 실행되다가 웹 브라우저에서 요청을 하면 해당 기능을 수행한 후 웹 브라우저에 결과를 전송한다. 서버에서 실행되기에 보안과 관련된 기능도 훨씬 안전하게 수행할 수 있다.
클라이언트가 웹 서버에 요청하면 웹 서버는 그 요청을 톰캣과 같은 웹 애플리케이션 서버(WAS)에 위임한다. WAS에서는 각 요청에 해당하는 서블릿을 실행한다.
그리고 서블릿은 요청에 대한 기능을 수행한 후 결과를 반환하여 클라이언트에 전송한다.
특징
- 서버 쪽에서 실행되면서 기능을 수행한다.
- 기존의 정적인 웹 프로그램의 문제점을 보완하여 동적인 여러가지 기능을 제공한다.
- 스레드 방식으로 실행
프로세스 -> 실행중인 프로그램
스레드 -> 프로세스 내에서 실제로 작업을 수행하는 주체
- 자바로 만들어져 객체지향 특징을 갖는다.
- 보안 기능을 적용하기 쉽다.
- 웹 브라우저에서 요청 시 기능을 수행
서블릿 API 계층 구조
서블릿은 자바로 만들어졌으므로 클래스들 간의 계층 구조를 가진다.
서블릿 API는 Servlet과 ServletConfig 인터페이스를 구현하여 제공하며 GenericServlet 추상 클래스가 이 두 인터페이스의 추상 메서드를 구현한다. 그리고 이 GenericServlet을 다시 HttpServlet이 상속받는다.
GenericServlet은 일반적인 여러 통신 프로토콜에 대한 클라이언트/서버 프로그램에서 서블릿 기능을 구현하는 클래스이다. HttpServlet은 이 GenericServlet을 상속받는다.
HttpServlet은 HTTP 프로토콜을 사용하는 서블릿 기능을 구현하는 클래스이다.
서블릿의 생명주기 메서드
- 서블릿 생명주기 메서드란 서블릿 실행 단계마다 호출되어 기능을 수행하는 콜백 메서드를 말한다.
- init()
- 서블릿 요청 시 맨 처음 한번만 호출된다.
- 서블릿 생성 시 초기화 작업을 주로 수행한다.
- doGet(), doPost()
- 서블릿 요청 시 매번 호출된다.
- 실제로 클라이언트가 요청하는 작업을 수행한다.
- destroy()
- 서블릿이 기능을 수행하고 메모리에서 소멸될 때 호출된다.
- 서블릿의 마무리 작업을 주로 수행한다.
destory()는 서블릿이 메모리에서 소멸될 때 여러 가지 종료 작업을 수행하는데 이런 기능이 필요 없을 시에는 생략해도 상관없다. 하지만 doGet이나 doPost와 같이 do로 시작하는 메서드는 서블릿의 핵심 기능을 처리하므로 반드시 구현하여야 한다.
'JSP' 카테고리의 다른 글
서블릿(Servlet) - 로그인 기능 (onsubmit = function(); return false;) (0) | 2024.08.11 |
---|---|
JSP(08.07) - HTTP, HttpSession, Request, Response (0) | 2024.08.07 |
JSP(08.07) - GET, POST, TDD (0) | 2024.08.07 |
JSP(08.06) - set, get, sql Injection (0) | 2024.08.06 |
JSP(08.05) - 절대경로, 상대경로 (0) | 2024.08.05 |