상세 컨텐츠

본문 제목

[서버프로그래밍] 3. 서블릿(Servlet)이란?

Backend/서버프로그래밍

by 사랑짱 2021. 7. 4. 22:22

본문

 

 

 

◆ Servlet이란?

- 웹 컨테이너에 의해 관리되며 클라이언트 요청에 의해

  다양한 동적인 콘텐츠로 응답 가능한 자바 기반의 웹 컴포넌트

- 사용자 요청이 전달되면 코드로 이루어진 Server Application을 처리하는 영역

 

 

Servlet의 특징

- 클라이언트 요청에 의해 동적으로 실행된다.

- 클라이언트는 브라우저를 이용한 URL 지정을 통해 요청 가능하다.

- 서블릿의 응답 결과는 HTML 형식으로 서비스된다.

  이때, MVC 패턴을 적용하면 JSP에서 HTML 코드를 작성하게된다.

-  MVC 패턴의 Controller 역할로서 사용된다.

- 서블릿은 웹 컨테이너에 의해 관리되며 자바 스레드로 동작한다.

- 자바 기반 웹 컴포넌트로 .java 확장자를 갖는다.

 

※ 자바 기반으로서 갖는 특징

- 서블릿은 싱글톤 객체처럼 한번 생성되면 더이상 생성하지 않는다.(멀티쓰레드로 작업!)
- 서블릿은 클래스 기반으로 부모클래스-HttpServlet를 무조건 상속받는다.
- 서블릿 클래스는 무조건 매개변수 없는 public 접근제한자의 생성자만 갖는다.
  (why? 서블릿 객체는 외부에서 컨테이너가 생성하기 때문에)
- 서블릿 컨테이너에 의해 service 메소드가 호출된다.

 

 

◆ URI mapping

- URI : / Context Root(Path) - 경로 / Servlet의 호출 이름               

- 클라이언트가 요구하는 자원의 식별자(‌indicator)

-여러 개 지정 가능하며, 보안을 위해 물리적인 클래스의 이름과 맵핑주소를 분리

 

방법 1) @WebServlet 어노테이션 사용 (서블릿 3.0대부터 제공)

방법 2) web.xml파일에 <servlet> 태그와 <servlet-mapping> 태그를 사용하여 직접 등록

 

 

 

◆ webapp이란?

- web application으로 웹 어플리케이션들이 모여있는 폴더

- DocumentRoot : 정적/동적 문서들이 존재하는 폴더 (경로 : src/main/webapp)

 

 

  • src/main/java : Java 소스 파일들(*.java 형태)
  • src/test/java : Java Test 파일
  • resources : properties나 기타 xml 설정파일
    (ex. datapase.properties, log4j.properties, log4j.xml etc.)
  • webapp(Context-Root) : Web application 관련 파일
    1. static : css, img, js 등 정적 컨텐츠 관련 파일
    2. WEB-INF : 웹 어플리케이션 설정정보 및 jsp 파일
    (context.xml, decorators.xml, infrastructure.xml, sitemesh.xml, web.xml 등)
         2-1. lib : 라이브러리 폴더(*.jar 형태)
         2-2. Classes : 클래스파일( *.class 형태)
         2-3. Web.xml : 설정파일, 서블릿 등록
  • target : 빌드된 서블릿 파일 출력 (*.class형태)
  • pom.xml : Maven 관련 파일 설정

 

※ webapps 가 웹서버 최상위폴더 '/ (Root)' 이다.

 

 

◆ web.xml

- 설정파일을 의미하는 배치설명자

- 런타임할 WAS에 배치하는 것을 설정하는 배치설명자

- 서블릿 명과 서블릿 맵핑명, 초기 파라미터 및 필터 기능과 관련된 정보 파악 가능


※  DD(Deployment Descriptor)

- web.xml를 다른 방식으로 보여주는 것 
- 우리가 만든 웹 어플리케이션들이 담겨있는 것(서블릿, JSP 등)

 

 

관련글 더보기