Archive

JSP/Servlet-Servlet 개요

|

JSP/Servlet - Servlet 개요


  1. Servlet Container

    • 서블릿과 JSP는 동적 콘텐츠를 생성하는 웹 컴포넌트이다
    • 컨테이너는 이런 웹 컴포넌트를 저장하는 저장소 역할, 메모리 로딩, 객체 생성 및 초기화 등 서블릿의 생명주기를 관리하고 JSP를 서블릿으로 변환하는 기능을 수행한다
    • 컨테이너는 웹서버와 서블릿 사이의 통신을 지원한다
    • 컨테이너는 새로운 요청이 들어올 때 마다 자바 스레드를 생성하여 사용자의 요청을 처리한다
  2. Servlet

    • 서블릿은 웹 서버에서 실행되는 자바 프로그램이다

    • 클라이언트의 요청을 서버에서 실행 후 결과값을 클라이언트에게 전송

    • HTTP 프로토콜로 통신하는 웹의 특징을 활용할 수 있는 API가 제공된다

    • 최초 생성된 서블릿 객체를 재사용하여 처리속도가 빠르다

    • javax.servlet.http.HttpServlet 클래스를 상속받아서 service() 메소드를 재정의하여 서블릿 프로그램을 작성

    • HttpServlet의 부모 클래스는 GenericServlet으로 service() 메소드를 제외한 모든 메소드를 가지고 있다

    • 서블릿의 실행 순서

      1. 클라이언트로부터 처리 요청을 받는다 : 웹 서버에서 요청을 받아 헤더의 URI를 분석, 요청받은 페이지가 서블릿이면 서블릿 컨테이너에 넘긴다
      2. 서블릿 객체 생성 : 서블릿 컨테이너는 최초 요청 여부를 판단하여 객체를 생성한다. HttpServletRequest, HttpServletResponse 객체를 생성, url을 분석하여 서블릿 객체 생성, 사용자의 요청을 처리하기 위한 스레드 생성
      3. init() 메소드 실행 : 서블릿 객체 생성 후 init() 호출, 초기화를 담당한다
      4. service() 메소드 실행 : 클라이언트의 요청에 맞는 처리를 한다.(doGet, doPost)
      5. 요청 방식에 따른 메소드 실행 후 응답을 클라이언트에게 전송
      6. destroy() 메소드를 호출하여 자원해제 작업을 실행한다 (서비스,서버 중지 시)


  3. 배포서술자(Deploy Descriptor : DD)

    • web.xml 파일
    • 배포서술자는 서블릿과 jsp를 어떻게 실행하는지에 대한 환경설정 정보가 들어있다
    • 배포서술자는 서블릿과 URL을 매핑시키는 작업을 한다
    • 배포 서술자는 URL 매핑 외에 보안 설정, 오류 페이지 설정, 초기화 구성 등의 내용 등도 설정 할 수 있다
  4. 초기 파라미터

    • ServletConfig : 컨테이너가 서블릿을 생성할 때 생성되는 객체
    • DD를 읽어 이름/값의 쌍으로 된 초기화 파라미터를 읽어서 저장한다
    • ServletConfig 객체는 Servlet 객체당 한 개씩 생성
    <servlet>
    	<init-param>
        	<param-name>이름</param-name>
            <param-value></param-value>
        </init-param>
    </servlet>
    
    • ServletContext : 웹 애플리케이션 당 하나씩 생성
    • 웹 애플리케이션 전역에서 참조할 수 있는 초기화 파라미터를 저장한다
    • web.xml의 가장 위쪽에 위치시키는 것이 좋다
    <context-param>
    	<param-name>이름</param-name>
        <param-value></param-value>
    </context-param>
    
    @Override
    public void init() throws ServletException {
     	String name = getServletContext().getInitParameter("이름 혹은 값");
    	String name = getServletConfig().getInitParameter("이름 혹은 값");   
    }
    




참고 자료


KG 아이티뱅크 강의 자료

처음 해보는 Servlet&JSP 웹 프로그래밍