ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 웹 애플리케이션 - 서블릿& 톰캣
    IT/Spring-JSP&Servlet 2020. 10. 12. 22:59

     

    출처 : unsplash

     

     

    1. Server & Clinet

    - 이 세상의 모든 단말기(PC, 스마트폰, 태블릿, .. )는 클라이언트이다.

    - 인터넷으로 연결된 네트워크 상에서 필연적으로 정보를 요청(request)하는 쪽과 응답(response)하는 쪽이 있기 마련인데 이 때 요청하는 쪽을 클라이언트,  응답하는 쪽을 서버라 구분한다.

    - 특히 서버는 웹 서버를 통해 클라이언트가 요청한 웹 페이지를 보내는 역할을 한다.

     

    2. 정적HTML & 동적HTML

    - 클라이언트에서 URL을 호출하면 웹 서버는 HTML 문서를 생성하는 프로그램을 호출해서 해당 결과를 보내주는데

    - 이때 호출되는 프로그램을 "웹 애플리케이션" 이라고 부르며, JSP/Servlet이 그 기술 중 하나이다.

    - 웹 애플리케이션이 생성하는 HTML 문서를 "동적 HTML 문서"라고 부르며

    - 웹 서버 쪽에 파일 형태로 저장되어 있는 HTML 문서를 "정적 HTML 문서"라고 부른다.

     

    3. 서블릿

    - JAVA를 기반의 웹 애플리케이션 프로그래밍 기술로써 자바 클래스 형태로 작성된 클래스를 서블릿 클래스라고 한다.

    3-1. 서블릿 작성 기술
    (서블릿 규격서 기술 사항)

      1) 서블릿 클래스는 javax.servlet 패키지에 속하는 Servlet 인터페이스를 구현해야 한다.

        - 보다 쉬운 방법으로 Servlet 인터페이스를 구현한 javax.servlet.http.HttpServlet 클래스의 서브클래스를 작성

      2) doGet/doPost 메서드를 선언하고, 서블릿 클래스가 호출되었을 때 해야할 일을 정의해야 한다.

        - 두 메서드는 두 개의 파라미터를 받아야 하며 아래의 타입이어야 함

          첫 번째 파라미터 : javax.servlet.http.HttpServletRequest 타입

          두 번째 파라미터 : javax.servlet.http.HttpServletRequest 타입

        - 두 메서드는 익셉션 처리를 하여야 한다.

           java.io.IOException, javax.servlete.ServletException

    3) 동적 HTML 문서 생성을 위해 doGet/doPost의 두 번째 파라미터를 이용해야 한다.

        - 해당 파라미터의 getWriter 라는 메서드를 호출하면 PrintWriter 타입의 객체가 리턴되며,

        - 그 객체에 대해 print, println, printf 등의 메서드를 호출하면 웹 브라우저로 HTML 코드 출력 가능

     

    4. 톰캣

    - 웹 서버 안에서 서블릿과 JSP를 지원하는 부분을 "웹 컨테이너" 라고 하며

    - 웹 컨테이너를 갖춘 웹 서버는 여러 종류가 있고, 그 중 톰캣을 주로 사용함

    4-1. 톰캣 구조

    - 톰캣이 설치된 디렉토리 내 webapps 라는 서브디렉토리가 있고 다시 ROOT 라는 서브디렉토리가 있는데, 해당 디렉토리에 있는 HTML 문서는 www.foo.com:xxxx/abc.html  과 같이 호출 가능함

    (톰캣설치디렉토리\webapps\ROOT)

    - 보안상, 관리상 등의 이유로 ROOT 디렉토리가 아닌 별도의 서브디렉토리를 만들어 관리하고, 해당 디렉토리에 있는 HTML 문서는 www.foo.com:xxxx/foobar/abc.html  과 같이 호출 가능함

    (톰캣설치디렉토리\webapps\foobar)

     

    5. 서블릿 클래스 설치

    - 서블릿 클래스 또한 java 파일이기 때문에 컴파일하면 .class 파일이 생성됨

    - 톰캣의 ROOT 디렉토리(톰캣설치디렉토리\webapps\ROOT)가 아닌 별도 서브디렉토리 아래 WEB-INF\classes 구조의 디렉토리에 .class 파일을 설치

    - 해당 .class 파일을 웹 컨테이너 등록 필요

     

    6. 서블릿 클래스 등록

    - 서블릿 클래스는 "웹 애플리케이션 디플로이먼드 디스크립터(web application deployment descriptor)"에 등록 필요

    - 대상파일: WEB-INF\web.xml

    - web.xml 파일은 웹 애플리케이션 디렉토리마다 딱 하나씩만 만들 수 있음

    - web.xml 작성 시 문서의 root 엘리먼트(문서의 최상위 엘리먼트)는 <web-app> 이어야 한다.

     

    6-1. 서블릿 클래스 수정

    - 서블릿 클래스 수정 후 톰캣을 재시작하여 메모리 상의 서블릿을 지우고 다시 로딩(reloading)해야 함

    - 만약 web.xml 수정하였다면 자동으로 모든 웹 자원을 reaload하므로 재시작 필요 없음

    (다만, 다소 시간이 소요되므로 즉각 반영을 원한다면 재기동 해야 함)

    댓글

Designed by Tistory.