서블릿 생명주기 (Servlet LifeCycle)

아현·2022년 3월 29일
0

JSP

목록 보기
2/2

1. 서블릿 생명주기

참고



  • init()

    • 디폴트 생성자를 이용해서 서블릿 객체를 생성함으로 init()메소드를 사용해서 서블릿 객체를 초기화한다.

    • 서블릿의 일생동안 단 한번 호출된다.

  • service()

    • HTTP 메소드를 참조하여 doGet()을 호출할지, doPost()를 호출할지 결정한다.

    • 요청이 있을때 마다 호출된다.

  • destroy()

    • 서블릿이 소멸될때 호출된다. 자원해제와 관련된 작업을 한다.

    • 서블릿의 일생동안 단 한번 호출된다.



javax.servlet.http.HttpServlet 동작 구조

참고




  • GET

    • GET 방식은 서버에 있는 정보를 가져오기 위해 설계된 데이터 전달 방법입니다. ( 최대 240 Byte까지 )

    • QUERY_STRING 환경 변수를 통해서 서버로 전달되는데, 형식은 아래와 같습니다.
      http://www.xxx.co.kr/servlet/login?id=hj&name=hong

    • url을 보면 login 뒤에 ? 가 있습니다.

      • ? 이후의 값들은 서버에서 QUERY_STRING을 통해 전달됩니다.
    • 속성 = 값 형태로 사용해야 하며, &는 여러 속성 값을 전달할 때 구분해서 연결해주는 문자열입니다.

    • 이렇게, url에 데이터가 모두 노출되기 때문에 보안에 취약하다는 단점이 있습니다.

  • POST

    • POST 방식은 서버로 정보를 올리기 위해 설계된 방법입니다.

    • HTML 폼에 입력한 내용을 서버에 전달하기 위한 요청이며, 정보를 메시지 body에 포함시켜 전달합니다.

    • 서버에 전달할 수 있는 데이터 크기 제한이 없어서, 파일 업로드에 자주 사용됩니다.

    • GET 방식과 달리, ur에는 매개변수가 표시되지 않아 보안이 유지됩니다.



HttpServletRequest, HttpServletResponse


  • WAS가 웹브라우져로부터 Servlet요청을 받으면 요청을 받을 때 전달 받은 정보를 HttpServletRequest객체를 생성하여 저장

    • 웹브라우져에게 응답을 돌려줄 HttpServletResponse객체를 생성(빈 객체)

    • 생성된 HttpServletRequest(정보가 저장된)와 HttpServletResponse(비어 있는)를 Servlet에게 전달


  • HttpServletRequest

    • Http프로토콜의 request 정보를 서블릿에게 전달하기 위한 목적으로 사용

    • Header정보, Parameter, Cookie, URI, URL 등의 정보를 읽어들이는 메소드를 가진 클래스
      Body의 Stream을 읽어들이는 메소드를 가지고 있음

  • HttpServletResponse

    • Servlet은 HttpServletResponse객체에 Content Type, 응답코드, 응답 메시지등을 담아서 전송함



ServletConfig VS ServletContext


  • ServletConfig : 한 서블릿에 제한적인 객체

    • ServletConfig 객체는 Container가 서블릿을 생성할 때 생성되는 객체다.

    • DD(web.xml)를 읽어서 이름/값의 쌍으로 된 초기화 파라미터를 읽어서 저장한다.

    • ServletConfig 객체는 Servlet 객체당 한 개씩 생성된다.

    • Servlet에서는 getServletConfig()를 이용해서 Servlet과 관련된 ServletConfig 객체를 얻을 수 있다.


  • ServletContext : 여러 서블릿에서 사용 가능

    • ServletContext 객체는 web application 당 하나씩 생성된다.

    • web application 전체에서 참조할 수 있는 초기화 파라미터를 저장할 수 있다.

    • Servlet에서는 getServletContext()를 이용해서 ServletContext 객체를 얻을 수 있다.



profile
For the sake of someone who studies computer science

0개의 댓글