2018. 12. 4. 13:13ㆍServer/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 |
---|