JSP

[ KH 정보교육원 ] 자바 프레임워크 개발자 양성과정 - 서블릿(Servlet)이란? + web.xml 내 설정방법

코드사냥꾼 2019. 12. 1. 22:52

** 오늘은 주말에 밀린 JSP 복습을 하다가 서블릿에 대한 개념이 잘 이해가 가지 않아서 다시 한번 공부해 보려고 합니다. 나중에 Spring을 쓰기 위해서는 아주 중요한 것이기 때문에 제대로 짚고 넘어가고자 미숙하지만 간단하게 포스팅을 해보겠습니다. **

1. 서블릿이란?

Server+ Applet

자바를 이용하여 웹에서 실행되는 프로그램을 작성하는 기술을 뜻한다. 더 깊게 설명을 해보자면 일단 서버와 클라이언트가 무엇인지 알아야 한다. 두 컴퓨터 사이에 있어 서비스를 이용하는 클라이언트(사용자), 서비스를 제공하는 서버가 존재한다. 클라이언트가 웹 브라우저를 이용해 자신의 메일을 열람할 수 있는 페이지를 요청(Request)하면, 서버에서는 요청받은 프로세스를 처리하기 위해 일련의 로직을 구동하고, 해당 결과를 다시 웹 브라우저에 송신(Response)한다. 이렇게 브라우저를 통해 자바 클래스가 실행되도록 역할을 수행하는 것이 바로 서블릿(Servlet)이다.

 

2. 서블릿 컨테이너의 역할

  • 웹 서버와 서블릿 사이의 통신을 지원

  • 서블릿의 생명주기를 관리

  • 새로운 요청이 들어올 때 마다 자바 스레드를 생성해서 사용자의 요청을 처리

  • 선언적인 방법으로 보안관련 내용을 설정할 수 있다.

 

3. 서블릿의 생명주기

서블릿은 클라이언트의 첫 번째 요청인 경우 해당 서블릿 클래스를 찾아 메모리에 객체를 생성한다. 인스턴스화 된 서블릿 객체는 메모리에 계속 남아 있게 되고 이후 서블릿이 호출되어도 서블릿 인스턴스가 다시 생성되지 않고 이미 로딩된 서블릿의 서비스를 받게 된다. 

첫 번째 요청일 경우, 객체가 생성되면서 init() 메소드를 한 번 호출하며 초기화 작업을 진행한다. 그 후 클라이언트의 요청이 있을 때마다 doGet() 또는 doPost() 메소드가 실행되며, 이후에는 초기화 작업을 하지 않는다. 또한 여러 클라이언트가 동시에 요청하더라도 스레드가 생성&처리되면서 doGet(), doPost() 메소드의 수행 속도가 빨라진다. 최종적으로 서블릿이 서비스되지 않을 때 destroy 메소드가 호출되는데 톰캣이 재시작되거나 종료되었을 때 그리고 서블릿 내용이 변경되어 다시 컴파일했을 경우가 이에 속한다.

 

4. web.xml 파일에서 서블릿 설정 태그 설명

  • servlet-name : servlet-mapping에 기술을 주기위한 식별자 즉, 서블릿에 가명을 붙이는 행위

  • servlet-class : 실제 서블릿 클래스, package까지 정확하게 기술

  • url - pattern : 어떠한 URL 경로로 접근할 수 있는지 명시

  • servlet-mapping :  서블릿의 URL 주소를 보다 쉽고 간결하게 표시하기 위해 다른 이름을 사용해 명시하는 것

 

<servlet> // 서블릿 객체 설정
   <servlet-name>객체의 이름</servlet-name>
   <servlet-class>객체를 생성할 클래스</servlet-class>
</servlet>

<servlet-mapping> // 서블릿 매핑
   <servlet-name>객체의 이름</servlet-name>
   <url-pattern>/클라이언트가 요청할 url 패턴</url-pattern>
</servlet-mapping>

 

 

📧 코드사냥꾼 contact  : bmi6638@gmail.com