[JAVA] Servlet


JSP 동작원리 를 포스팅하던 중

서블릿 이야기가 나왔기 떄문에 정리해보려고 한다.

서블릿

클라이언트의 요청을 처리하고 그 결과를 다시 클라이언트에게 전송하는 Servlet 클래스의 구현 규칙을 지킨 자바 웹 프로그래밍 기술

서블릿 특징

일반적으로 웹서버는 정적인 페이지만을 제공한다. 그렇기 때문에 동적인 페이지를 제공하기 위해서 웹서버는

다른 곳에 도움을 요청해야 한다.

여기서 웹서버가 동적인 페이지를 제공할 수 있도록 도와주는 어플리케이션이 서블릿이다.

서블릿 동작방식

img

  1. 클라이언트가 URL 입력하면 HTTP Request가 Servlet Container로 전송
  2. 요청받은 Servlet Container는 HttpServletRequest, HttpServletResponse객체 생성
  3. web.xml을 기반으로 사용자가 요청한 URL이 어느 서블릿에 대한 요청인지 찾음
  4. 해당 서블릿에서 service메소드를 호출한 후 클라이언트의 GET,POST여부에 따라 doGet(),doPost() 호출
  5. doGet(),doPost() 는 동적 페이지를 생성한 후 HttpServletResponse객체에 응답을 보냄
  6. 응답이 끝나면 HttpServletRequest, HttpServletResponse 객체 소멸

Servlet Container

Servlet Container : 서블릿을 관리해주는 컨테이너

서블릿을 관리해주는 것이 바로 서블릿 컨테이너 ,

클라이언트의 요청을 받고 응답을 할수있게, 웹 서버와 소켓으로 통신하며 대표적으로 톰캣이 있다.

톰캣은 실제로 웹 서버와 통신하여 JSP , Servlet이 작동하는 환경을 제공한다.

Servlet Container 역할

  • 웹서버와의 통신지원
  • 서블릿 생명주기 관리
  • 멀티쓰레드 지원 및 관리
  • 선언적인 보완 관리

img 서블릿 컨테이너 생명주기

JSP와 차이점 - 기능의 차이는 없고 역할의 차이만 있다.

Servlet

  • Java 코드 안에 HTML 코드 (하나의 클래스)
  • data processing(Controller)에 좋다.
  • 즉 DB와의 통신, Business Logic 호출, 데이터를 읽고 확인하는 작업 등에 유용하다.
  • Servlet이 수정된 경우 Java 코드를 컴파일(.class 파일 생성)한 후 동적인 페이지를 처리하기 때문에 전체 코드를 업데이트하고 다시 컴파일한 후 재배포하는 작업이 필요하다. (개발 생산성 저하)

JSP

  • HTML 코드 안에 Java 코드
  • presentation(View)에 좋다.
  • 즉 요청 결과를 나타내는 HTML 작성하는데 유용하다.
  • JSP가 수정된 경우 재배포할 필요가 없이 WAS가 알아서 처리한다. (쉬운 배포)

참고 - 위키백과

참고 - blog




© 2017. by isme2n