반응형
1. 서블릿 개요
- JSP가 나오기 이전, 자바로 웹 애플리케이션을 개발할 수 있도록 만든 기술
- 클라이언트의 요청에 동적으로 작동하는 웹 애플리케이션 컴포ㅓㄴ트
- MVC 모델에서 컨트롤러(Controller) 역할
- 모든 메서드는 스레드로 동작
- javax.servlet.http 패키지의 HttpServlet 클래스를 상속받음
2. 서블릿 컨테이너
- 서블릿은 스스로 동작하지 않으므로, 그를 관리하는 컨테이너가 필요함
-> 여기서는 서블릿 컨테이너로 톰캣(Tomcat) 사용 - 역할
- 통신 지원: 클라이언트와의 통신을 위해 서버에서 특정 포트로 소켓을 열고 I/O 스트림을 생성하는 등의 과정을,
간단히 해주는 API 제공 - 수명주기 관리: 서블릿을 인스턴스화 한 후 초기화 하고 요청에 맞는 적절한 메서드 호출
-> 응답 후에는 가비지 컬랙션으로 객체 소멸 - 멀티스레딩 관리: 서블릿 요청들을 스레드를 생성해 처리(멀티스레드 방식으로 여러 요청 동시 처리)
- 보안 관리 및 JSP 지원: 보안을 지원하므로, 보안 기능을 별도 구현하지 않음
- 통신 지원: 클라이언트와의 통신을 위해 서버에서 특정 포트로 소켓을 열고 I/O 스트림을 생성하는 등의 과정을,
3. 서블릿의 동작 방식
- 서블릿은 MVC 패턴에서 컨트롤러 역할(MVC 패턴을 따라 웹 애플리케이션을 개발하는 방법이 모델2 방식)
-> 클라이언트의 요청을 받아 분석 후 처리할 서블릿을 찾고, 서블릿을 통해 비즈니스 서비스 로직을 후출하고,
모델로부터 그 결괏값을 받아 request나 session 영역에 저장한 후,
결괏값을 출력할 적절한 뷰(JSP 페이지)를 선택하여 결괏값을 출력하고 요청한 클라이언트에 응답 - 그림에 따르면 컨트롤러와 DAO 사이에 비즈니스 서비스 객체가 있는데,
이는 컨트롤러가 요청을 분석한 후 호출되어 실제 비즈니스 로직을 처리하는 역할
-> 프로그램으로 구현하면 코드가 너무 어려워지므로,
이 책에서는 서블릿이 컨트롤러와 서비스 객체의 역할을 모두 할 수 있도록 구현
4. 서블릿 작성 규칙
- javax.servlet, javax.servlet.http, java.io 패키지 임포트
- 반드시 public으로 서블릿 클래스를 선언하고, HttpServlet을 상속받아야 함
- 사용자의 요청을 처리하기 위해, doGet() 메서드나 doPost() 메서드를 반드시 오버라이딩
- doGet() 메서드나 doPost() 메서드는 ServletException이나 IOException 예외를 throw하도록 선언
- doGet() 메서드나 doPost() 메서드를 호출할 때의 매개변수는 HttpServletRequest, HttpServletResponse
-> requset와 response 객체의 자료형으로, 클라이언트의 요청을 전달하고 응답하기 위한 클래스들
// 서블릿 작성 규칙에 따라 작성한 서블릿 클래스의 예시
package 패키지명;
// 기본적으로 필요한 패키지(클래스)
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.httpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class 서블릿클래스명 extends HttpServlet { // HttpServlet 상속
@Override // doGet() 오버라이딩
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
// 메서드의 실행부
}
}
반응형