개발로드

★KDT 2024-03-08JSP☆ Servlet생명주기와 RequestDispatcher 본문

JAVA

★KDT 2024-03-08JSP☆ Servlet생명주기와 RequestDispatcher

위대한개발자 2024. 3. 8. 19:30

WAS

Web Application Server

 

Servlet Container

Servlet을 관리하고 jsp파일을 실행할 수 있게 해준다.

 

Servlet LifeCycle

  1. WAS의 Servlet컨테이너가 Servlet 객체 생성
  2. 클라이언트가 해당 servlet을 사용하는 http 요청을 하면, request, response 객체를 생성
  3. servlet 컨테이너는 지정된 URL 매핑을 기반으로 어떤 servlet이 요청을 처리해야 할지 결정
  4. servlet 컨테이너는 요청 및 응답 객체를 servlet의 'service()' 메소드에 전달하여 서블릿이 요청을 처리
  5. servlet은 요청객체(request)를 사용하여 요청을 처리하고 비즈니스 로직을 실행
  6. servlet이 요청을 처리하고 응답을 생성한 후, 응답내용을 응답객체(response)에 저장
  7. 응답객체(response)를 servlet container에 전달
  8. servlet container가 응답객체를 기반으로 HTTP 응답 메시지를 생성하고 이를 네트워크를 통해 클라이언트에게 전송
톰캣은 서블릿 컨테이너이지만, 웹 애플리케이션 서버의 한 부분으로서 다양한 웹 기술을 지원한다.

 

 

변수 req에 request를 담을 때 명시적 형변환을 하는 이유

이유는 ServletRequest가 HttpServletRequest의 부모 타입이기 때문에 형변호나을 해줘야 한다.

 

req.getSession()

현재 요청에 연결된 session 객체를 가져옴.

만약, 세션이 없을 경우에는 새로운 세션을 생성한다.

 

HttpServletRequest는 인터페이스인데 메소드를 호출할 수 있는 이유

인터페이스의 추상메소드를 호출 하더라도 실제로 구현하는 것은 인터페이스를 구현한 구체 클래스이다.

구체 클래스는 Apache Tomcat에 의해서 제공 되며,

클래스는 "org.apache.catalina.connector.Request.Facode"이다.

 

 

dispatcher에 이동하려는 URL을 저장하고, 요청과 응답을 가지고 주어진 URL에 이동한다.

이 메소드는 servlet container에게 다른 servlet으로의 전환을 요청한다.

 

경로에 "/"로 매핑이 되어있다면 WAS의 기본 경로를 나타내며, WAS의 첫페이지를 의미한다.(index.jsp)



여유가 되신다면 제 GitHub에 오셔서 좋은 코드들을 구경해주세요!

 

https://github.com/gimpo5975?tab=repositories

 

gimpo5975 - Overview

gimpo5975 has 4 repositories available. Follow their code on GitHub.

github.com