상세 컨텐츠

본문 제목

[웹시스템개발] 3. 자바 서블릿

수업노트

by ∫2tdt=t²+c 2013. 10. 24. 01:34

본문




이게 바로 JSP.



서블릿


동적 웹페이지 생성의 필요성

* 웹 페이지가 사용자가 보낸 정보에 기반하는 경우

* 웹 페이지가 수시로 바뀌는 정보에 기반하는 경우

* 웹 페이지가 데이터베이스나 서버의 다른 자원에 기반하는 경우


서버사이드 자바

* 애플릿은 다운로드에 시간이 오래걸리고, 접근권한에 한계가 있다

* 서버 사이드 자바는 서버측에서 실행되고 결과만 보내기에 다운로드 시간이 짧아지고, 기존의 애플리케이션과 마찬가지로 접근권한을 갖기에 애플릿의 한계를 극복한다


서블릿의 개념

* 서블릿은 자바 프로그램이 서버의 역할을 할 수있도록 하는 확장이다

* 보안성이 있고, 이식가능하며 사용이 쉬워서 CGI를 대체한다

* 웹 서버의 요청에 따라 동적으로 모듈을 불러들인다

* (당연히) 서블릿은 JVM에서 작동된다

* (당연히) 서버측에서 실행되기 때문에 브라우저를 가리지 않는다


서블릿이 하는 일

A. Request Header와 유저가 보낸 데이터를 받는다

B. 결과를 생성한다

C. Response Header와 생성된 결과를 보낸다


자바 서블릿의 작동 원리

1. 브라우저가 정보를 요청

2. 웹 서버(Tomcat 등의 Servlet 컨테이너)가 이를 받아들여 서블릿에게 요청한다

3. 서블릿은 요청을 처리하여 응답한다

4. 웹 서버는 응답을 브라우저로 보내준다

5. 브라우저가 결과를 보여준다


자바 서블릿의 대안

* CGI 프로그램: 매 요청마다 프로세스가 새로 생성되어 반응이 느리다

* NSAPI, ISAPI 등이 있음


자바 서블릿의 장점

효율성: 프로세스를 생성하는 CGI에 비해 가벼운 자바 스레드만을 생성하여 처리하기에 효율적

지속성: 메모리에 상주하면서 상태를 관리할 수 있다

이식성

Robustness: 예외 처리, 쓰레기 수집 등이 메모리 누수를 막아주고, 다양한 클래스 라이브러리가 지원되어 개발이 간편하다

확장성: 상속 등을 통해 확장 가능

보안성

강력성: 웹 서버와 직접 통신하고, 데이터베이스, 세션 관리가 가능

편리성: HTML 데이터 해석과 HTTP 헤더 분석, 쿠키 관리 등을 제공


자바 서블릿의 구성

javax.servlet : 보편적인 서블릿 인터페이스가 구현되어 있음

javax.servlet.http : HTTP용 서블릿 인터페이스가 구현되어 있음


자바 서블릿의 생명주기

public void init(ServletConfig config) : 서블릿이 처음 적재될때 호출되는 초기화 함수. 이미 적재된 경우는 초기화 작업을 건너뛰고, 처음 적재될 때만 초기화 작업을 진행한다

public void service(HttpServletRequest request, HttpServletResponse response) : 클라이언트의 요청이 들어올때마다 호출되는 함수. 요청에 따라 적절하게 doGet, doPost함수를 호출한다

public void destroy() : 서블릿이 메모리에서 해제될때 호출되는 종료 함수.


public void doGet(HttpServletRequest request, HttpServletResponse response)

public void doPost(HttpServletRequest request, HttpServletResponse response)

-> 실질적으로 요청에 따라 적절한 응답을 보내주는 처리를 수행하는 함수. 대게 이 함수를 오버라이딩하여 사용하게 된다. 이 함수 속에 직접 HTML 코드를 넣어 결과를 생성해도 좋지만, 그것보다는 JSP로 forwarding하여 처리하는 것이 깔끔하고 유지보수에도 좋다.


관련글 더보기

댓글 영역