/ PT

21 03 06 (서블릿, JSP)

1. 서블릿(Servlet)

클라이언트의 요청을 처리하고, 그 결과를 반환하는
Servlet 클래스의 구현 규칙을 지킨 자바 웹 프로그래밍 기술

서블릿의 특징

  • 클라이언트의 요청에 대해 동적으로 작동하는 웹 어플리케이션 컴포넌트
  • MVC 패턴에서 Controller로 이용된다.
  • Java Thread를 이용하여 동작한다.
  • HTTP 프로토콜 서비스를 지원하는 javax.servlet.http.HttpServlet 클래스를 상속받는다.
  • html을 사용하여 요청에 응답 할 수 있다.
  • HTML 변경 시 Servlet을 재컴파일해야 하는 단점이 있다.

2.서블릿 컨테이너(Servlet Container)

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

  • 서블릿을 만들었다고 해서 스스로작동하는 것이 아니고, 서블릿을 제어 해주는 역할이 필요한데, 그 역할을 서블릿 컨테이너가 가짐

서블릿 컨테이너의 역할

1. 웹서버와의 통신 서블릿 컨테이너는 서블릿과 웹서버가 손쉽게 통신할 수 있게 해줍니다. 일반적으로 우리는 소켓을 만들고 listen, accept 등을 해야하지만 서블릿 컨테이너는 이러한 기능을 API로 제공하여 복잡한 과정을 생략할 수 있게 해줍니다. 그래서 개발자가 서블릿에 구현해야 할 비지니스 로직에 대해서 집중 할 수있게 도와줍니다.

2. 서블릿 생명주기(Life Cycle 관리)
서블릿의 시작과 끝을 관리합니다. Alt text

  1. 요청받음 : 클라이언트가 서비스 요청시 HTTP 프로토콜 기반으로 요청정보가 만들어져 웹서버에 전달
  2. 웹서버에서 컨테이너 : 웹서버에서는 전달 받은 요청을 살펴보고 요청받은 정보가 서블릿이라면 서블릿 컨테이너에게 넘김
  3. URL 매핑 확인 : 서블릿 매핑이 담긴 문서(web.xml or @WebServlet)를 참조하여 어떤 URL과 매핑되었는지 확인하고
  4. 최초 요청 여부 판단 : 매핑된 서블릿을 실행하는데 컨테이너는 해당 서블릿이 메모리에 있는지 확인하고
  5. 서블릿 객체 생성 : 최초의 서블릿이라면 해당 서블릿을 메모리에 로딩하고 서블릿 객체를 생성합니다.
  6. init() 메소드 실행 : init()은 서블릿객체가 생성된 다음에 호출되는 메소드로 서블릿객체의 초기화 작업이 구현되있습니다.
  7. HttpRequest,Response 객체 생성
  8. Service 메소드 실행 : Service 메서드는 HTTP 요청의 METHOD에 대응되는 메서드를 호출한다.(form tag에서 method 부분)
  9. destroy 메소드 실행 : 응답이 끝나면 HttpServletRequest, HttpServletResponse 두 객체를 소멸시킵니다.

JSP(Java Server Page)

  • JSP란 HTML 코드에 JAVA 코드를 넣어 동적웹페이지를 생성하는 웹어플리케이션 도구
  • JSP는 WAS(Web Application Server)에 의하여 서블릿 클래스로 변환하여 사용됨

JSP 동작 과정

Alt text

  1. 클라이언트로 JSP 파일 요청이 들어오면 .java(Servlet)파일로 변환(Translation)
  2. 컴파일하여 .class 파일이 만들어짐
  3. 컴파일된 서블릿 클래스는 서블릿 컨테이너에 의해서 서블릿 객체로 동작.
  4. jspInit, jspService, jspDestory 과정 실행

## References.
https://mangkyu.tistory.com/14
https://hackr.io/blog/jsp-interview-questions
https://altera520.github.io/posts