ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 서블릿
    JSP-diary 2020. 2. 13. 14:21

    정의

    • 자바에서 제공하는 서버 어플리케이션 개발을 위한 기술
    • 웹 브라우저와 웹 서버를 이요해 웹 애플리케이션을 개발하는 것을 서블릿 프로그래밍이라 한다.
    • 자바 CGI 프로그램은 컴파일 방식, 자바 기반의 CGI 프로그램을 서블릿이라 부른다.
    • 다른 CGI와 다른 점은 웹 서버와 직접 데이터를 주고 받지 않고 서블릿 컨테이너를 통해 관리된다.

    *웹 애플리케이션

    • 웹 브라우저에서 사용 할 수 있는 응용 소프트웨어

    역할

    • 웹 프로그래밍에서 클라이언트의 요청을 처리하고 그 결과를 다시 클라이언트에게 전송하는 역할
    • 클라이언트가 HTTP 요청을 하게 되면 그에 맞는 결과를 전송해주는 것

    CGI

    • Common Gate Interface의 약자
    • 웹서버에서클라이언트가 요청한 프로그램을 찾아 실행시키고, 그 작업의 결과값을 전달 받는 과정에서
      데이터를 주고 받는 규칙
    • 웹 서버에 의해 실행되며 CGI 규칙에 따라 웹 서버와 데이터를 주고받는 프로그램을 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

    댓글

Designed by Tistory.