Servlet

1c2·2024년 3월 18일
0

back-end

목록 보기
1/3
  • Web Architecture

  • Servlet 동작 흐름

  • Servlet API

  • Servlet 배포

    • web.xml
      • <servlet><servlet-mapping> 한 쌍
      <servlet>
          <description></description>
          <display-name>ParameterTest</display-name>
          <servlet-name>ParameterTest</servlet-name>
          <servlet-class>com.ssafy.basic.ParameterTest</servlet-class>
        </servlet>
        <servlet-mapping>
          <servlet-name>ParameterTest</servlet-name>
          <url-pattern>/ParameterTest</url-pattern>
        </servlet-mapping>
    • url-pattern
      • URL 경로 : /로 시작하는 /*
      • 확장자 매칭 : *.로 시작하는 *.확장자
      • default servlet : /
      • 정확한 경로와 이름 매칭 : /basic
      • 경로와 확장자를 함께하는 매칭은 지원 안함 : /basic/*.do
    • @WebServlet

      • servlet 3.0부터 web.xml대신 Annotation을 사용하여 설정
      • 한개의 URL 설정 : urlPatterns = "/hello" 또는 value = "/hello" 또는 @WebServlet("/hello")
      • 여러 개의 URL 설정 : urlPattern = {"/hello", "*.ssafy"}
      @WebServlet(
      	name = "helloServlet", 
          urlPatterns = {"/hello", "*.ssafy"},
          loadOnStartup = 1
      	)
      public class HelloServlet extends HttpServlet{
      
  • Servlet Life-Cycle
    Servlet class는 javaSE에서의 class와는 다르게 main method가 없다. 즉 객체의 생성부터 사용의 주체가 사용자가 아닌 Servlet Container에게 있다.
    Client가 요청을 하게 되면 Servlet객체를 생성(한번만)하고, 초기화(한번만) 하며 요청에 대한 처리(요청시마다 반복)를 하게 된다. 또한 Servlet객체가 필요 없게 되면 제거하는 일까지 Container가 담당하게 된다.

  • Servlet Life-Cycle의 주요 method

method description
init() 서블릿이 메모리에 로드될 때 한번 호출
doGet() GET방식으로 data전송 시 호출
doPost() POST방식으로 data전송 시 호출
service() 모든 요청은 service()를 통해서 doXXX()메서드로 이동
destroy() 서블릿이 메모리에서 해제되면 호출
  • Parameter 전송 방식 [GET과 POST방식 비교]
    GET POST
    특징 전송되는 데이터가 URL뒤에 Query String으로 전달. 입력 값이 적은 경우나 데이터가 노출이 되도 문제가 없을 경우 사용. URL과 별도로 전송. HTTP header 뒤에 body에 입력 스트림 데이터로 전달.
    장점 간단한 데이터를 빠르게 전송. form tag뿐만 아니라 직접 URL에 입력하여 전송 가능. 데이터의 제한이 없다. 최소한의 보안 유지 효과를 볼 수 있다.
    단점 데이터 양에 제한이 있다. (location bar(URL + parameter)를 통해 전송할 수 있는 데이터의 사이즈는 2kb로 제한된다.) 전달 데이터의 양이 같을 경우 GET방식보다 느리다. (전송 패킷을 body에 데이터를 구성해야 하므로)


0개의 댓글