ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • JAVA BE(3) Servlet
    Backend/Java 2023. 6. 6. 22:26

    Servlet

    Servlet이란?

    • JAVA Web Application 의 구성요소 중 동적인 처리를 하는 프로그램 역할.
    • WAS에서 동작하는 일종의 JAVA Class
    • Servlet은 HttpServlet Class를 상속받아야 한다.
    • Servlet과 JSP를 조화롭게 사용 가능.

    생성

    New - Servlet 선택 - JAVA Packages에 ‘examples’ 입력 - Class name 입력

    ⇒ eclipse는 App이 Runtime으로 설정된 WAS에 배포될 때 다음의 규칙대로 URL을 자동 생성함: http://localhost:{port}/{contextRoot=project명}/{URL Mapping값}

    ContextRoot: 보통은 Project 명으로 자동 설정됨.

    URL Mapping: Servlet Class가 WAS에 배포될 때 사용될 이름. eclipse에서는 Servlet Class 명으로 자동 설정함. 변경 가능함.

    작성법

    Servlet 3.0 이상: JAVA Annotation 사용.

    eclipse에서 선택 방법: Dynamic Web Project 생성 시 Dynamic web module version에서 3.0 이상으로 선택. Configuration은 Default~ 또는 <custom>

    Servlet Class 윗 줄에 @WebServer(”/{urlMapping}”) 작성 urlMapping 값에 따라 전체 URL 마지막 키워드가 변경됨. ex) http://localhost:8080/TenSevlet/ten (밑줄 친 부분이 변경됨.)

    Servlet 3.0 미만: web.xml 에 직접 Servlet 추가

    Dynamic Web Project 생성 시 Dynamic web module version에서 3.0 미만 선택 + Generate web.xml deployment descriptor 선택

    eclipse 4.27 기준 Project- src - main - webapp - WEB-INF - web.xml 이 생성됨.

    Servelet을 추가하면 web.xml에 관련 Code 가 추가됨.

      exam25
      
        index.html
        index.jsp
        index.htm
        default.html
        default.jsp
        default.htm
      
    
    	/*아래가 Serverlet 생성 시 자동으로 추가되는 부분*/
      
        
        TenServlet
        TenServlet
        exam.TenServlet
      
      
        TenServlet
        /25ten
      
    
    

    Server는 Web Browser로 부터 특정 URL로 요청이 들어오면 먼저 servlet-mapping에 일치하는 <url-pattern>을 탐색함 → (없으면 404 not found 출력) <url-pattern>이 일치하는 <servlet-name> 값으로 <servlet>에서 동일한 <servlet-name> 을 탐색 → 해당 Sevlet의 <servlet-class> 값에 해당하는 class를 실행하여 응답함.

    생명주기

    Servlet 생성자 → init → service / destroy

    • Server가 실행될 때 Server는 자신의 memory에 올라간 Servlet 객체를 찾는다. 없다면  Servlet 생성자를 호출하여 생성된 Servlet 객체를 memory에 올린다. → init 함수 호출(역할은 아직 모름… 그저 Servlet 객체가 생성될 때마다 호출됨.) → service 함수 호출 → 페이지 새로고침 → Server는 자신의 memory에 올라간 Servlet 객체를 찾는다. 있다면  Service 함수 호출 ⇒ 즉, Servlet 객체는 Server가 실행 될 때 단 한 번만 생성된다.
    • Servlet Class 내에 수정사항 발생 + 저장 or Servlet 객체 갱신 → 페이지 새로고침(Server로 요청) → 이전의 Servlet 객체는 사용할 수 없으므로 destory 함수가 호출된다. = Servlet 객체는 파괴되고 memory에서 사라짐. → memory 에서 Servlet 객체 찾기. → 없음. → Servlet 생성자 호출 → init 호출 → service 호출

    ** Server가 찾을 Servlet은 URL 내의 <url-pattern>을 보고 찾는 것.

    service()

    Servlet이 상속받는 HttpServlet Class에는 이미 service 함수가 구현되어 있음. 직접 생성한 Servlet Class에서 serveice를 오버라이딩 하지 않으면 부모의 service가 실행되는 것.

    HttpServlet의 service는 페이지 요청이 Get 방식일 경우 doGet()을, Post 방식일 경우 doPost()함수를 호출하도록 함.

    doGet()과 doPost()를 오버라이딩하여 원하는 대로 페이지를 꾸밀 수 있음.

    ** 기본적으로 URL을 직접 입력하거나 새로고침을 하는 동작은 Server로 Get 방식의 요청을 보내는 행위임. 따라서 별도의 처리가 없다면 doGet 이 호출됨.

    'Backend > Java' 카테고리의 다른 글

    JAVA BE(4) Response와 Request  (0) 2023.06.08
    JAVA BE (2) Web Project 생성 ~ JAVA Web Application  (0) 2023.06.06
    JAVA BE(1) JAVA 설치 ~ eclipse 설치  (1) 2023.06.06

    댓글

Designed by Tistory.