Backend/서버프로그래밍
[서버프로그래밍] 4. 서블릿 핵심 API (1)
사랑짱
2021. 7. 5. 13:32
◆ 서블릿 아키텍처(구조)
- 클라이언트에서 웹 브라우저를 이용하여 적절한 URL형식으로 서블릿에 요청하면,
웹 컨테이너에서 서블릿을 실행하고 결과값을 html로 구성하여 클라이언트로 응답을 처리
◆ HttpServletRequest API
- HTTP Request인 요청과 관련된 작업을 처리하는 핵심 API
- 클래스가 아닌 인터페이스(규격)으로 제공
◆ HttpServletResponse API
- HTTP Response인 요청과 관련된 작업을 처리하는 핵심 API
- 클래스가 아닌 인터페이스(규격)으로 제공
※ 서블릿의 응답처리 : html 형식으로 응답처리
1) response.setContentType("text/html;charset=UTF-8")
- 웹 브라우저에게 처리할 데이터의 MIME 타입을 알려주는 메소드
2) response.getWriter( )
- 응답처리 출력을 위한 메소드(자바 I/O기술 이용)
- 문자 데이터를 처리하기 위해서는 PrintWriter를 이용하고,
바이너리(binary) 데이터를 위해서 는 ServletOutputStream 클래스를 사용
◆ HttpServlet API
- 서블릿을 구현하기 위한 핵심 API
- 추상클래스로 제공
※ 상위- GenericServlet 추상클래스
- 초기화 작업에 필요한 init(ServletConfing)메서드
- 핵심 로직 작업에 필요한 service(request,respons) 메서드
- 자원 반납 처리작업에 필요한 destroy() 메서드
- 초기화 파라미터 작업에 필요한 getInitParameter(String) 메서드
- 서블릿명을 알 수 있는 getServletName() 메서드
※ 하위-HttpServlet 추상클래스
- HttpServletRequest와 HttpServletResponse 2개의 인자를 가진 doGet 또는 doPost 메서드
◆ LifeCycle 메소드
- 톰캣 컨테이너는 nit, service, destroy 3가지 메서드를 사용하여 서블릿 인스턴스를 관리
1) init 메소드(초기화 작업)
- 웹 컨테이너에 의해 서블릿 인스턴스가 처음 생성될 때 단 한번 생성
2) service 메소드
- 클라이언트가 요청할 때마다 호출
- 클라이언트가 원하는 동적인 처리 작업 시 필요
3) destroy 메소드
- 서블릿 인스턴스가 웹 컨테이너에서 제거될 때 호출
- 초기화 작업을 반납처리
※ 서블릿의 선처리 후처리 작업
@PostConstruct
- init 메서드가 호출되기 전에 수행되는 선처리 작업 메서드
- 반드시 리턴 타입은 void로 지정하고, 예외 클래스를 throws 할 수 없다.
@PreDestroy
- destroy 메서드가 호출된 후에 수행되는 후처리 작업 메서드
- 반드시 리턴 타입은 void로 지정하고, 예외 클래스를 throws 할 수 없다.