[자바 웹 개발 워크북] Chapter03 서블릿 프로그래밍

2021. 7. 26. 09:12· BOOK/[자바 웹 개발 워크북]
목차
  1. 3.1 CGI 프로그램과 서블릿
  2. 3.1.1 CGI 프로그램
  3. 3.1.2 서블릿
  4. 3.2 서블릿 구동 절차
  5. 3.3 GenericServlet의 사용

아래 글은 [자바 웹 개발 워크북 - 엄진영 저]에 있는 내용을 요약 정리 한 것입니다.

3.1 CGI 프로그램과 서블릿

3.1.1 CGI 프로그램

  • CGI : Common Gateway Interface
  • 웹 서버와 애플리케이션 사이에서의 데이터를 주고받는 규칙

< CGI 프로그램 유형 >

1) 컴파일 방식

  • 실행 속도가 빠르지만, 변경할 때 마다 다시 컴파일하므로 불편

** 2) 스크립트 방식**

  • 프로그램 변경이 유리, 실행 속도가 느림

3.1.2 서블릿

  • 서블릿
    • 자바로 만든 CGI 프로그램
    • 웹 서버와 직접 데이터를 주고받지 않으며, 전문 프로그램에 의해 관리
    • javax.servlet.Servlet 인터페이스를 구현해야한다.
  • 서블릿 컨테이너
    • 서블릿의 생명주기를 관리하는 프로그램으로써, 서블릿을 대신하여 CGI 규칙에 따라 웹 서버와 데이터를 주고 받는다.
  • WAS(Web Application Server)
    • 서블릿 컨테이너와 같이 웹 기술을 기반으로 동작하는 애플리케이션 서버
  • 서블릿의 생명주기와 관련된 메서드
    • init() : 서블릿 컨테이너가 서블릿을 생성한 후 초기화 작업을 수행하기 위해 호출하는 메서드 → 클라이언트 요청을 처리하는데 쓰일 자원을 준비
    • service() : 클라이언트가 요청할 때 마다 호출되는 메서드 → 실제 서비스 작업을 수행
    • destory() → 서블릿 컨테이너가 종료되거나 웹 애플리케이션이 멈출 때, 서블릿을 비활성 시킬 때 호출
  • getServletConfig() : 서블릿 설정 정보를 다루는 ServletConfig 객체(서블릿 이름, 초기 매개변수 값, 환경정보)를 반환
  • getServletInfo() : 서블릿을 작성한 사람에 대한 정보, 서블릿 버전, 권리등을 반환서블릿 인터페이스의 기타 메서드

< web.xml >

  • 웹 애플리케이션 배치 설명서(Deployment Descriptor) 파일
  • 서블릿 컨테이너가 클라이언트 요청을 처리할 때 이 파일의 정보를 참고하여 작업을 수행
  • 서블릿, 필터, 리스너, 매개변수, 기본 웹 페이지 등 웹 애플리케이션 컴포넌트들의 배치 정보를 저장

< 서블릿 선언 >

  • <servlet>태그를 사용하여 서블릿 별명(<servlet-name>)과 서블릿 클래스명(<servlet-class>)을 설정
  • 서블릿 별명은 클래스 이름이 아니어도 된다.
  • 서블릿 클래스명은 패키지 이름을 포함한 서블릿 클래스명을 설정해야 한다.

< 서블릿에 URL 부여 >

  • <servlet-mapping>태그를 이용하여 URL 설정
  • <servlet-name>은 <servlet>에서 정의한 서블릿 별명이 와야한다.
  • <url-pattern>은 서블릿을 요청할 때 클라이언트가 사용할 URL 설정.

3.2 서블릿 구동 절차

3.3 GenericServlet의 사용

  • init(), destroy(), getServletInfo(), getServletConfig()을 대신 구현하는 추상 클래스
  • 서블릿을 만들 때 GenericServlet을 상속받으면 service()만 구현하면 된다.

< ServletRequest >

  • service() 매개변수 중에서 ServletRequest 객체는 클라이언트의 요청 정보를 다룰 때 사용
  • getParameter()는 GET이나 POST 요청으로 들어온 매개변수 값을 꺼낼 때 사용
    http://localhost:9999/web03/calc?a=20&b=30에서 request.getParameter("a")로 꺼낼 수 있음(20을 반환하게 됨)

< ServletResponse >

  • 응답과 관련된 기능을 제공
  • setContentType() : 출력할 데이터의 인코딩 형식과 문자 집합을 저장
    • response.setContentType("text/html"); : 출력할 데이터가 text이고 html파일이다.
  • setCharacterEncoding() : 출력할 데이터의 문자 집합을 지정
    • response.setCharacterEncoding("UTF-8") : UTF-8형식의 데이터의 문자 집합으로 출력
  • response.setContentType("text/html;charset=UTF-8"); ← 이렇게도 사용 가능
  • getWriter() : 클라이언트로 출력할 수 있도록 출력 스트림 객체를 반환

< @WebServlet >

  • @WebServlet 애노테이션을 사용하면 web.xml을 변경 안해도 된다.
  • ex)
  1. @WebServlet("/calc") : 하나의 value값만 지정(value= 생략 가능)
  2. @WebServlet("value=/calc, name="서블릿이름"") : value와 name(서블릿 이름) 둘 다 지정(value= 생략 x)
  3. @WebServlet(urlPatterns={"/calc","calc.do"} : 서블릿에 대해 여러 개의 URL 지정

'BOOK > [자바 웹 개발 워크북]' 카테고리의 다른 글

[자바 웹 개발 워크북] Chapter02 웹 프로그래밍의 기초 다지기  (0) 2021.07.25
[자바 웹 개발 워크북] Chapter01 웹 어플리케이션의 이해  (0) 2021.07.25
  1. 3.1 CGI 프로그램과 서블릿
  2. 3.1.1 CGI 프로그램
  3. 3.1.2 서블릿
  4. 3.2 서블릿 구동 절차
  5. 3.3 GenericServlet의 사용
'BOOK/[자바 웹 개발 워크북]' 카테고리의 다른 글
  • [자바 웹 개발 워크북] Chapter02 웹 프로그래밍의 기초 다지기
  • [자바 웹 개발 워크북] Chapter01 웹 어플리케이션의 이해
쿠엔크
쿠엔크
우아한테크코스 5기 BE 에단 Github : https://github.com/cookienc
쿠엔크
기러기는 기록기록
쿠엔크
전체
오늘
어제
  • 분류 전체보기 (132)
    • CS (46)
      • [OS] (12)
      • [NETWORK] (10)
      • [DATABASE] (11)
      • [BASIC CONCEPT] (1)
      • [DATA STRUCTURE] (7)
      • [ALGORITHM] (5)
    • LANGUAGE (17)
      • [JAVA] (17)
    • DESIGN_PATTERN (2)
    • FRAMEWORK (18)
      • [SPRING] (18)
    • ORM (11)
      • JPA (11)
    • AWS (7)
    • BOOK (10)
      • [자바 웹 개발 워크북] (3)
      • [이펙티브 자바] (7)
    • 개발 (19)
      • [오류] (7)
      • [고민] (1)
      • [우테코] (10)
      • [iTracker] (1)
    • Tip (1)
      • [Plugins] (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 네트워크
  • aws
  • 운영체제
  • JVM
  • ArgumentResolver
  • Spring
  • 개념
  • 스프링
  • 알고리즘
  • 자료구조
  • 가비아
  • HTTP
  • 디자인 패턴
  • 자바 웹 개발 워크북
  • java
  • 오류
  • 데이터베이스
  • CORS
  • JPA
  • Effective Java

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.2
쿠엔크
[자바 웹 개발 워크북] Chapter03 서블릿 프로그래밍

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.