1. 서블릿이란?
클라이언트가 어떠한 요청을 하면 그에 대한 결과를 다시 전송해 줘야하는데 이러한 역할을 자바 프로그램
Servlet의 특징
- client의 요청에 대해 동적으로 작동하는 web application component
- HTML을 사용하여 요청에 응답한다.
- JAVA Thread를 이용하여 동작한다.
- MVC 패턴에서 Controller 역할을 한다.
- javax.servlet.httpServlet 클래스를 상속받는다.
Servlet의 동작 방식
- Client가 URL 입력 : HTTP Request가 Sevlet Container로 전송한다 ( HTTP Request )
- Sevlet Container은 HttpServletRequest, HttpServletResponse 객체를 생성한다.
- web.xml을 기반으로 URL이 어느 sevlet에 대한 요청인지 찾는다.
- 해당 서블릿에서 클라이언트 Get/Post여부에 따라 doGet() 또는 doPost()를 호출한다.
- doGet()/doPost() 메서드는 동적 페이지를 생성한 후 HttpServletResponse객체에 응답을 보낸다.( HTTP Response )
- 응답이 끝나면 HttpServletRequest, HttpServletResponse 두 객체를 소멸 시킨다.
※ Get / Post
- Get : Key, Value 방식으로 request 데이터를 요청 / 전송
- POST : Body에 데이터를 넣어 요청한다.
2. Sevlet Container
서블릿 컨테이너는 클라이언트의 요청(Request)을 받아주고 응답(Response)할 수 있게, 웹서버와 소켓으로 통신하며 대표적인 예로 톰캣(Tomcat)이 있습니다. 톰캣은 실제로 웹 서버와 통신하여 JSP(자바 서버 페이지)와 Servlet이 작동하는 환경을 제공해줍니다.
서블릿 컨테이너의 역할
- 웹 서버와의 통신 지원 : 소켓을 만들고 listen, accept 등 해야하는 과정을 API를 제공하여 웹서버 통신을 지원
- 서블릿 생명주기 관리 : HTTP 요청이 들어오면 HttpServletReq/Res 객체를 생성하고 응답을 보내면 GC 진행
a. HTTP 요청이 들어오면 컨테이너는 해당 서블릿이 메모리에 있는지 확인 -> 없으면 init()호출하여 적재한다.
b. HttpServletRequest, HttpServletResponse 객체를 생성하고, 클라이언트 요청에 따라 doGet/doPost 메서드를
진행한다
c. 컨테이너가 서블릿에 종료 요청을 하면 destroy() 메서드가 호출된다. - 멀티쓰레드 지원 관리
- 선언적인 보안 관리
※ 소켓 통신 : HTTP는 클라이언트의 요청을 받으면 서버가 응답을 해주고 연결을 끊는 반면 소켓은 서버와 클라이언트가 틀정 port를 통해 실시간으로 양방향 통신을 하는 방식
3. JSP(Java Server Page)
서블릿은 자바 소스코드안에 HTML코드가 들어가는 형태인 반면, JSP는 HTML 소스코드 속에 자바 소스코드가 들어간다. JSP는 WAS(Web Application Server)에 의하여 서블릿 클래스로 변환되어 사용된다.
§ 컨트롤러에 있는 URL 선언
@WebServlet(URL) : web.xml
출처 : https://mangkyu.tistory.com/14 [ MangKyu's Diary:티스토리]
'JSP_Servlet' 카테고리의 다른 글
JSP 용 깜지 (0) | 2024.10.24 |
---|---|
서블릿에서 설정한 세션 HTML로 가져오기 (0) | 2024.10.23 |
두 서블릿 간 속성/속성값 공유 (0) | 2024.10.23 |
[Web] Forward와 Redirect 차이 (0) | 2024.10.20 |