아래 글은 [자바 웹 개발 워크북 - 엄진영 저]에 있는 내용을 요약 정리 한 것입니다.
3.1 CGI 프로그램과 서블릿
3.1.1 CGI 프로그램
- CGI : Common Gateway Interface
- 웹 서버와 애플리케이션 사이에서의 데이터를 주고받는 규칙
< CGI 프로그램 유형 >
1) 컴파일 방식
- 실행 속도가 빠르지만, 변경할 때 마다 다시 컴파일하므로 불편
** 2) 스크립트 방식**
- 프로그램 변경이 유리, 실행 속도가 느림
3.1.2 서블릿
- 서블릿
- 자바로 만든 CGI 프로그램
- 웹 서버와 직접 데이터를 주고받지 않으며, 전문 프로그램에 의해 관리
- javax.servlet.Servlet 인터페이스를 구현해야한다.
- 서블릿 컨테이너
- 서블릿의 생명주기를 관리하는 프로그램으로써, 서블릿을 대신하여 CGI 규칙에 따라 웹 서버와 데이터를 주고 받는다.
- 서블릿의 생명주기를 관리하는 프로그램으로써, 서블릿을 대신하여 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)
@WebServlet("/calc")
: 하나의 value값만 지정(value=
생략 가능)@WebServlet("value=/calc, name="서블릿이름"")
: value와 name(서블릿 이름) 둘 다 지정(value=
생략 x)@WebServlet(urlPatterns={"/calc","calc.do"}
: 서블릿에 대해 여러 개의 URL 지정
'BOOK > [자바 웹 개발 워크북]' 카테고리의 다른 글
[자바 웹 개발 워크북] Chapter02 웹 프로그래밍의 기초 다지기 (0) | 2021.07.25 |
---|---|
[자바 웹 개발 워크북] Chapter01 웹 어플리케이션의 이해 (0) | 2021.07.25 |