servlet, jsp

Sevlet

개발하는지호 2024. 1. 28. 15:17

1. Servlet 개요

Servlet은 주로 웹 애플리케이션 서버에서 동작하는 프로그램 구현 시 사용한다. 

동시 접속자가 늘어나면 효율이 떨어지는 CGI기술의 대안으로 등장했다.

 

서블릿은 클라이언트의 요청에 따라 서버가 실행할 수 있는 유일한 자바 파일 이라고 볼 수 있다.

 

서블릿을 동작시키기 위한 조건은 서블릿 API를 통해 제공받은 수 있으며, 서블릿을 구현할 때 해당 API인

 

javax.servelt.http.HttpSevlet 만 상속 받으면 된다.

 

class HelloServlet extends HttpServlet {}

 

 

2. Servlet 생성 및 동작 원리

1. Servlet Container(ex. Apache Tomcat)

 

서블릿 컨테이너란 Java 기반 웹 프로그램에서 사용되는 Servlet 클래스(ex. FirstServlet.java)를 관리하는 공간으로, 웹 컨테이너, Tomcat 컨테이너라고 표현하기도 함.

 

2. 사용자 요청(Request)에 따른 서버의 응답(Response) 흐름

 

Sending a Request - 요청 전송

 서버가 사용자(Client)로부터 특정 URL 경로로 요청(Request)을 받는다.

 

Instantiate a Servlet - 서블릿 객체 생성(인스턴스화)

서블릿 컨테이너는 web.xml 파일이나 @WebServlet 으로 맵핑된 정보를 토대로 요청 받은 URL에 맵핑된 서블릿 클래스를 인스턴스화 한다.

 

Processing the business logic - 요청에 따른 처리 로직 수행

 생성된 클래스 내 메서드에 작성된 소스 코드를 실행

 

Response to the Client - 사용자에게 결과 응답

결과 데이터 or 페이지를 사용자에게 응답(Response)

 

 

3. 요청에 사용된 서블릿 객체 재사용 방식

 사용자의 요청에 의해 생성된 서블릿 객체는 서블릿 컨테이너 내부에 보관하고 

이후에 동일한 경로로 요청이 올 경우, 보관하고 있던 서블릿을 재사용한다.

매 요청  시마다 새롭게 서블릿 객체를 생성하지 않음!

 

4. 제어의 역전 Inversion of Control, IoC

- Java SE 기반의 콘솔(Console) 프로그램

 Java SE 기반의 콘솔 프로그램을 실행할 때는 개발자가 직접 인스턴스를 작성 및 관리하는 방식으로, 작성한 코드는 main() 내부에서 수행되었다.

-> 프로그램에 대한 제어권이 개발자한테 있다.

 

- Java EE 기반 컨터이너 방식의 웹 서버프로그램, Servlet/JSP

 main() 가 사라지고 프로그램, 더 정확하게는 서버를 실행하면 서버의 동작에 필요한 모든 인스턴스들은 개발자가 아닌 컨테이너가 생성, 관리하는 방식

-> 프로그램 흐름, 동작에 대한 제어권이 개발자에서 컨테이너로 변경된다.