이게 바로 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하여 처리하는 것이 깔끔하고 유지보수에도 좋다.
[한국역사고고학] 2.3 고조선의 유적과 유구 (0) | 2013.10.25 |
---|---|
[한국역사고고학] 2. 고조선 고고학 (0) | 2013.10.25 |
[한국역사고고학] 1. 고고학과 역사학의 만남 (0) | 2013.10.24 |
[웹시스템개발] 2. 자바 (0) | 2013.10.23 |
[웹시스템개발] 1. 클라이언트 서버 아키텍쳐와 MVC패턴 (0) | 2013.10.23 |
[디지털도서관구축록] 3. XML & DTD(Schema) (0) | 2013.10.21 |
댓글 영역