티스토리 뷰


02. 서블릿의 기초


서블릿
서블릿 기술에서 웹 애플리케이션 구현을 위해서 작성해야 하는 코드는 '서블릿 클래스'이다.
이 서블릿 클래스를 가지고 웹 서비스를 할 수 있는 상태(=서블릿)로 만들어야 한다.
서블릿 클래스를 가지고 객체를 만든 후(인스턴스화) 그 객체를 초기화 한 서블릿 객체만이 웹서비스를 할 수 있다.

인스턴스화 : 클래스를 가지고 객체를 만드는 행위

웹서버가 서블릿을 운영하는 방법
1. 여러 서블릿의 동시 실행
   - 웹서버는 멀티스레드 방식으로 작동한다 → 동시에 같은 데이터 사용 가능 
     멀티 스레드 : 프로그램의 실행 흐름이 여러갈래(thread)로 나눠져서 동시에 실행되는 것
2. 웹 컨테이너가 만드는 서블릿의 갯수 
   - 한개(멀티-스레드 모델) 또는 여러개(싱글-스레드 모델)
   - 멀티-스레드 모델을 사용 → 단점을 해결 가능하기 때문이다

멀티-스레드 모델
- 장점 : 서블릿을 만들기 위해 필요한 시스템 자원, 서블릿의 메모리 절약 가능 
- 단점 : 데이터 공유문제 → 서블릿 클래스의 인스턴스 변수로 인한것 → 인스턴스 변수를 선언하지 않음으로 해결

인스턴스 변수 : static 이 아닌 클래스의 멤버변수

서블릿 클래스 등록
웹 애플리케이션의 디플로이먼트 스크립터 파일(web.xml)에 서블릿 클래스를 등록
web.xml → 웹 애플리케이션 디렉토리마다 1개씩만 만들 수 있다(=한개만 존재)

web.xml 파일 만들기
1. 루트 엘리먼트인 <web-app>을 만든다

1
2
3
<web-app>
 
</web-app>
cs

2. 웹서버가 브라우저로부터 URL을 받았을 때 서블릿 클래스를 찾아 호출하기 위해 필요한 정보를 기록해야 한다.
   필요한 정보 : URL서블릿 클래스의 이름
   <servlet>과 <servlet-mapping> 엘리먼트를 만든다.

1
2
3
4
5
6
7
8
<web-app>
    <servlet>
     <!-- 서블릿 클래스의 이름이 들어갈 부분-->
    </servlet>
    <servlet-mapping>
     <!-- 서블릿 클래스를 호출할 때 사용할 URL이 들어갈 부분 -->
    </servlet-mapping>
</web-app>
cs

<servlet-mapping> 엘리먼트 안에 들어갈 URL 주소는 웹서버의 도메인 이름, 포트번호, 웹 애플리케이션 디렉터리의 이름을 제외한 나머지 부분이 들어가야한다. 서블릿의 URL 패턴 이라고 하는데, URL이 http://localhost:8080/brain/hundred 라면 /hundred가 된다.

클래스 이름과 URL패턴을 넣을때 <servlet>과 <servlet-mapping> 엘리먼트에 그냥 넣으면 안되고 <servlet-class> 와 <url-pattern> 이라는 서브엘리먼트를 만들어 넣어야 한다.

1
2
3
4
5
6
7
8
9
10
11
<web-app>
    <servlet>
     <!-- 서블릿 클래스의 이름이 들어갈 부분-->
     <servlet-class>HundredServlet</servlet-class>
    </servlet>
    <servlet-mapping>
     <!-- 서블릿 클래스를 호출할 때 사용할 URL이 들어갈 부분 -->
     <url-pattern>/hundred</url-pattern>
    </servlet-mapping>
</web-app>
 
cs

3. web.xml  파일에는 하나의 엘리먼트만 있는것이 아니기 때문에 이렇게 선언한 엘리먼트가 서로를 찾을 수 있도록 연결시켜야 하는데,
   <servlet> 엘리먼트 안에 서블릿의 식별자로 사용할 이름을 쓰고, <servlet-mapping>엘리먼트에서 그 이름을 이용하여 참조하도록 한다.
   <servlet-name>이라는 엘리먼트를 만들어 사용할 이름을 넣으면 된다.

1
2
3
4
5
6
7
8
9
10
11
12
13
<web-app>
    <servlet>
     <!-- 서블릿 클래스의 이름이 들어갈 부분-->
     <servlet-name>hundred-servlet</servlet-name>
     <servlet-class>HundredServlet</servlet-class>
    </servlet>
    <servlet-mapping>
     <!-- 서블릿 클래스를 호출할 때 사용할 URL이 들어갈 부분 -->
     <servlet-name>hundred-servlet</servlet-name>
     <url-pattern>/hundred</url-pattern>
    </servlet-mapping>
</web-app>
 
cs

여기까지가 서블릿 클래스의 등록에 필요한 기본적인 코드이다.
온전한 web.xml 파일이 되려면 반드시 써넣어야 하는 두가지 정보가 필요한데, web.xml 파일의 작성에 사용된 문법의 식별자와, 문법의 버전이다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<web-app xmlns="http://java.sun.com/xml/ns/javaee" version="2.5"
 <!-- 문법의 식별자와 버전 -->
    <servlet>
     <!-- 서블릿 클래스의 이름이 들어갈 부분-->
     <servlet-name>hundred-servlet</servlet-name>
     <servlet-class>HundredServlet</servlet-class>
    </servlet>
    <servlet-mapping>
     <!-- 서블릿 클래스를 호출할 때 사용할 URL이 들어갈 부분 -->
     <servlet-name>hundred-servlet</servlet-name>
     <url-pattern>/hundred</url-pattern>
    </servlet-mapping>
</web-app>
 
cs


'공부와개발사이 > JSP와Servlet' 카테고리의 다른 글

03. JSP의 기초_1  (0) 2016.12.02
01. JSP와 서블릿  (0) 2016.11.29
댓글