Servlet

현시기얌·2022년 3월 10일
0

Spring MVC

목록 보기
2/22

HTML Form 데이터 전송

  • 위와 같이 WAS에 Form 데이터가 POST로 요청이 들어오면

  • WAS는 비즈니스 로직을 실행하기 전에 위와 같이 수 많은 작업들을 해야한다.

Servlet을 지원하는 WAS 사용

  • 하지만 Servlet을 사용하면 위와같이 요청 메시지를 파싱하고 읽고 응답 메시지를 생성하는 것 까지 전부 자동으로 해결해준다.
  • 즉 제일 중요한 비즈니스 로직에 집중할 수 있게 해준다.

Servlet

@WebServlet(name = "helloServlet", urlPatterns = "/hello")
public class HelloServelt extends HttpServlet {
    
    @Override
    protected void service(HttpServletRequest request, HttpServletResponse response) {
      // Application Logic
      ...
    }
}
  • urlPatterns(/hello)의 URL이 호출되면 서블릿 코드가 실행된다.
  • HTTP 요청 정보를 편리하게 사용할 수 있는 HttpServletRequest
  • HTTP 응답 정보를 편리하게 제공할 수 있는 HttpServletResponse
  • 개발자는 HTTP 스펙을 매우 편리하게 사용할 수 있다.

Servlet - HTTP 요청,응답 흐름

  1. 웹 브라우저에서 WAS에 /hello URL로 HTTP 요청메시지를 보낸다.
  2. WAS는 웹 브라우저에서 온 HTTP 요청 메시지를 기반으로 request와 response 객체를 만든다.
  3. Servlet 컨테이너에 있는 Servlet에 request와 response를 parameter로 넘겨서 실행시킨다.
  4. Servlet이 끝난 후 리턴을 하면 response 객체를 바탕으로 HTTP 응답메시지를 만든다.
  5. 웹 브라우저에게 HTTP 응답 메시지를 보낸다.
  • HTTP 요청 시
    • WAS는 Request, Response 객체를 새로 만들어서 서블릿 객체를 호출한다.
    • 개발자는 Request 객체에서 HTTP 요청 정보를 편리하게 꺼내서 사용할 수 있다.
    • 개발자는 Response 객체에 HTTP 응답 정보를 편리하게 입력할 수 있다.
    • WAS는 Response 객체에 담겨있는 내용으로 HTTP 응답 정보를 생성한다.

Servlet 컨테이너

  • WAS안에는 Servlet 컨테이너가 있다.
  • Servlet 컨테이너에서 Servlet 객체를 자동으로 생성,호출,관리해준다.
  • Tomcat처럼 Servlet을 지원하는 WAS를 Servlet 컨테이너라고 한다.
  • Servlet 컨테이너는 Servlet 객체를 생성,초기화,호출,종료하는 생명주기를 관리한다.
  • Servlet 객체는 싱글톤으로 관리한다.
    • 고객의 요청이 올 때마다 계속 객체를 생성하는 것은 비효율적이다.
    • 최초 로딩 시점에 서블릿 객체를 미리 만들어두고 재활용한다.
    • 모든 고객 요청은 동일한 서블릿 객체 인스턴스에 접근한다.
    • 때문에 공유 변수 사용에 주의해야 한다.
    • 서블릿 컨테이너 종료시에 함께 종료된다.
  • JSP도 서블릿으로 변환되어서 사용한다.
  • 동시 요청을 위한 멀티 쓰레드 처리를 지원한다.
profile
현시깁니다

0개의 댓글