-
정의
- 자바에서 제공하는 서버 어플리케이션 개발을 위한 기술
- 웹 브라우저와 웹 서버를 이요해 웹 애플리케이션을 개발하는 것을 서블릿 프로그래밍이라 한다.
- 자바 CGI 프로그램은 컴파일 방식, 자바 기반의 CGI 프로그램을 서블릿이라 부른다.
- 다른 CGI와 다른 점은 웹 서버와 직접 데이터를 주고 받지 않고 서블릿 컨테이너를 통해 관리된다.
*웹 애플리케이션
- 웹 브라우저에서 사용 할 수 있는 응용 소프트웨어
역할
- 웹 프로그래밍에서 클라이언트의 요청을 처리하고 그 결과를 다시 클라이언트에게 전송하는 역할
- 클라이언트가 HTTP 요청을 하게 되면 그에 맞는 결과를 전송해주는 것
CGI
- Common Gate Interface의 약자
- 웹서버에서클라이언트가 요청한 프로그램을 찾아 실행시키고, 그 작업의 결과값을 전달 받는 과정에서
데이터를 주고 받는 규칙 - 웹 서버에 의해 실행되며 CGI 규칙에 따라 웹 서버와 데이터를 주고받는 프로그램을 CGI프로그램이라한다.
*CGI에 대한 언어들의 장단점(컴파일 언어 vs 스크립트 언어)
- 컴파일 언어(C,C++,JAVA)는 실행 속도가 빠르나 수정 시 컴파일 하여 재배포 해야 한다는 단점이 존재
- 스크립트 언어(VBScript,PHP,Python,Perl)는 인터프리터 방식으로 읽어들여 속도는 느리나 변경사항
발생시 즉시 반영이 가능하다.
서블릿 컨테이너
- 서블릿의 생성 실행 소멸을 관리하는 프로그램.
- 서블릿을 대신하여 CGI 규칙에 따라 웹 서버와 데이터를 주고 받는다. -요청에 따른 Thread를 생성해준다.-
- 사용자는 CGI 규칙이 아닌 JAVA 언어로 된 SERVLET 규칙을 알고 있어야 한다.
웹 서버 ->요청 ->서블릿 컨테이너 ->요청 ->서블릿CLASS ->결과 ->서블릿 컨테이너 -> 결과 -> 웹서버->클라이언트
*서블릿 컨테이너 역할
- 통신지원
서블릿과 웹 서버가 통신할 수 있는 방법을 제공한다.
통신 Process: 1.소켓생성 2. 특정 포트 리스닝 3.연결 요청시 스트림 생성해 요청 수락 - 생명주기 관리
Process: 1.서블릿 컨테이너 작동 2. 서블릿 인스턴스 3. 초기화 메소드 호출 4.요청에 따른 적절한 서블릿 메소드 호출 5.가비지 컬렉션에 이해 서블릿 삭제
*서블릿 라이프 사이클
- 멀티스레딩 관리
동시에 여러 요청이 들어오면 멀티 스레딩 환경으로 동시 다발적인 작업을 관리 - 선언적인 보안관리
컨테이너 안에 보안 기능 내제 되어있다. 서블릿 코드 안에 보안과 관련된 메소드 구현을 안해도 된다.
JAVA EE
- Java에는 EE와 SE가 존재하는데 EE는 Enterprise Edition, SE는 Standard Edition
- Java EE는 servlet을 사용하기 적합
-호환성,신뢰성,보안성 높다.
-트랜잭션 관리와 분산 기능을 쉽게 구현 한다. - 애플리케이션 개발에 피룡한 복합적인 기술을 정의하고 모아둔 것이 Java EE
- JAVA EE안에 JAVA Servlet과 JavaServer Pages(JSP)가 내장 되어 있다.
- 자바로 웹 어플리케이션을 개발한다는 것은 서블릿과 JSP를 이용하여 개발한다는 것.
WAS
- web application server의 약자이다.
- 서버쪽 어플리케이션의 생성,실행,소멸을 관리하는 프로그램을 어플리케이션 서버라 부른다.
- 서블릿 컨테이너와 같이 웹 기술 기반으로 동작되는 어플리케이션 서버를 WAS라 부른다.
*Apache Tomcat은 WAS가 아니다
Java EE가 구현 하고 있는 Servlet,JSP 등의 웹 관련 부분만 구현한 서버인 서블릿 컨테이너 또는
웹 컨테이너에 해당되는 것이 Apache Tomcat이다.JSP와 서블릿의 차이
- 결과적으로 하는 일은 동일
JSP
- HTML 코드 안에 Java코드가 있음
- Presentation(View)에 좋음
-HTML 중심의 코드 구조라 디자인 작업에 바로사용- - 요청 결과를 나타내는 HTML문서를 작성하는데 유용
- JSP가 수정된 경우 재배포할 필요가 없이 WAS가 알아서 처리
Servlet
- Java 코드 안에 HTML 코드가 있다.
- data Processing(Controller)에 좋다.
- DB와의 통신,Business Logic 호출과 데이터를 읽고 확인하는 작업에 유용하다.
-복잡한 프로그램 로직 구현에 적합- - Servlet이 수정된 경우 Java 코드를 컴파일(.class파일 생성)한 후 동적인 페이지를 처리하기에
전체 코드를 업데이트하고 다시 컴파일 한 후 재배포하는 작업이 필요하다.
(개발 생산성 저하) - 보안에 좋음
-.class 파일만 있어도 가능한데 .java 파일은 읽을 수 있어서 보안에 취약 .class파일은 읽을수가 없다.-
사용법- 일반적으로 사용자가 만드는 서블릿은 HTTPServlet을 상속받아 구현
- 프로그래머가 작성하는 서블릿 클래스는 추상 클래스 HttpServlet에 있는 메소드 중 클라이언트 사용자가
요청한 정보에 따라 처리해야 할 메소드를 오버라이딩 해서 구현
doGet() : 클라이언트 HTTP GET 요청에 대해 처리. doPost() : 클라이언트 HTTP POST 요청에 대해 처리. doPut() : 클라이언트 HTTP PUT 요청에 대해 처리. doDelete() : 클라이언트 HTTP DELETE 요청에 대해 처리. init() : 서블릿의 생명주기 처리로 가장처음에 실행. destory() : 서블릿의 생명주기 처리로 서블릿 객체를 메모리에서 제거할때 마지막으로 실행. 'JSP-diary' 카테고리의 다른 글
HttpRequest와HttpResponse (0) 2020.02.13