서블릿_Servlet

2018. 12. 4. 13:13Server/Servlet

Servlet




| Servlet(서블릿)이란

Server + Applet의 합성어로

JAVA 언어를 이용하여 사용자의 요청을 받아 처리하고 결과를 다시 사용자에게 전송하는 역할의 Class 파일을 말한다. 

즉, 웹에서 동적인 페이지를 java로 구현한 서버측 프로그램이라고 보면 된다.

결국은 자바다 자바 !)


* Applet : application + let(작은) 작은 애플리케이션 


* 서블릿 패키지와 클래스 확인하기

https://tomcat.apache.org/tomcat-8.0-doc/servletapi/





| Servlet 설계 규약

I. 모든 서블릿은 javax.servlet.Servlet 인터페이스를 상속 받아 구현한다. 

II. 서블릿을 구현 시 Servlet 인터페이스와 ServletConfig 인터페이스를 javax.servlet.GenericServlet에 구현한다. 

III. HTTP 프로토콜을 사용하는 서블릿은 javax.servlet.http.HttpServlet 클래스는 javax.servlet.GenericServlet를 상속한 클래스로 서블릿은 httpServlet클래스를 상속받는다.

IV. 서블릿의 Exception을 처리하기 위해서는 javax.servlet.ServletException 을 상속 받아야 한다.






| 동작구조

 

* 서블릿 컨테이너 *

웹 서버 또는 응용 프로그램 서버의 일부로, 웹 서버에서 온 요청을 받아 서블릿 class를 관리하는 역할(생명주기)을 한다. 

컨테이너의 서블릿에 대한 설정은 Deployment Descriptor(web.xml) 파일을 이용




| 배포서술자 (DD : Deployment Description)

웹 애플리케이션에 대한 설정 정보 파일로 이 정보를 가지고 웹 컨테이너가 서블릿을 구동한다.

- web.xml


- 설정정보

Servlet정의 / Servlet 초기화 파라미터 

Session설정 파라미터 

Servlet / jsp 매핑 / MIME type 매핑 

보안설정

Welcome file list설정 

에러 페이지 리스트, 리소스 그리고 환경변수


- 세부내용 

<web-app> : 루트속성, 문법식별자 및 버전의 정보를 속성값으로 설정

<context-param> : 웹 어플리케이션에서 공유하기 위한 파라미터 설정

<mime-mapping> : 특정파일 다운로드시 파일이 깨지는 현상방지

<servlet>~<servlet-class> / <servlet-mapping> : 서블릿 맵핑

<servlet>~<servlet-class> : 컨테이너에 서블릿 설정

예 default : 공유자원제공 및 디렉토리목록 제공, jsp : jsp컴파일과 실행 담당

<welcome-file-liest> : 시작페이지 설정

<filter> : 필터정보 등록

<error-page> : 에러발생시 안내페이지설정

<session-coinfig> : session기간 설정

<listener> : 이벤트 처리 설정(6가지)




| mapping

client가 servlet에 접근할 때 원본 클래스명이 아닌 다른 명칭으로 접근할 수 있는데 

이 떄 사용하는 명칭을 mapping 명칭이라하고, 

원본 클래스를 mapping 명칭으로 연결하는 방법을 mapping이라고 한다. 


- 사용 방법 1 : web.xml에 추가

<servlet>

<servlet-name>mapping명칭</servlet-name>

<servlet-class>실제 클래스명칭</servlet-class>

</servlet>

<servlet-mapping>

<servlet-name>mapping명칭</servlet-name>

<url-pattern>사용자 접근명칭</url-pattern>

</servlet-mapping>


* 클래스 명칭 : 패키지 포함

* xml문서는 사용자가 정의한 태그를 사용할 수 있다. 스키마

파일세부내용 시작태그가 있으면 끝태그가 필수로 ! 

태그 key와 value로 저장된다. 



- 사용 방법 2 : @annotation 이용 (서블릿 2.5 버전부터 제공)

서블릿 클래스 상단에 추가

@web-Servlet(“/매핑명칭”);



* 첫번째 방법은 관리가 편하고, 두번째 방법은 간단해서 편하다.



| 서블릿 라이프 사이클


1. 첫 번째 요청일 경우, 객체를 생성하며 init( ) 메소드를 호출한다. 

2. 이 후 작업이 실행 될 때마다 service() 메소드가 요청한 HTTP Type에 따른 doGet(), doPost() 메소드 호출한다.

3. 최종적으로 서블릿이 서비스 되지 않을 때 destroy() 메소드가 호출한다. 

** destroy() 는 보통 서버가 종료되었을 때, 서블릿의 내용이 변경되어 재컴파일 될 때 호출한다


두 번째 요청부터는 서블릿(java 파일)을 새로 생성할 필요가 없기 때문에 속도가 빨라지는 장점을 가진다. 






'Server > Servlet' 카테고리의 다른 글

서블릿_한글 꺠짐 인코딩 (post, get방식)  (0) 2018.12.05