웹 공부 시작했을 때부터 날 괴롭히던 Servlet..
매번 찾아볼때마다 두루뭉술하게 알고 넘어갔다.
.. 이러면 안되는데 (이 블로그를 쓰기 시작한 이유_
이번 주 실습 내용 중 servlet이 있던 김에, 이 정리를 통해 정확히 집고 넘어가도록~
Servlet?
클라이언트의 요청을 처리하고, 결과를 반환해주는 응답의 과정을 간단히 메서드 형태로 처리할 수 있도록 하는 자바 프로그램!
- 사용자 로그인 화면에서 아이디와 비밀번호를 입력하고 로그인 버튼을 누르면 (서버로 Request)
- 서버 측에서는 클라이언트의 아이디와 비밀번호를 확인하고 로그인 완료 또는 실패에 대한 다음 페이지를 띄워주기 (클라이언트로 로그인 결과에 대해 Response)
이러한 동적인 방식으로 동작(정보 제공자가 임의로 정한 정보뿐 아니라 사용자가 요청한 시점에 페이지를 생성해 전달해주는 것처럼)하는 웹 서비스의 과정을 Servlet이 수행한다.
Servlet 특징
- 클라이언트의 요청에 동적으로 작동하는 웹 애플리케이션 컴포넌트
- HTML을 이용해 요청에 응답
- Java Thread를 이용해 동작
- MVC 패턴에서 Controller로 이용
- HTTP 프로토콜 서비스를 지원하는 javax.servlet.http.HttpServlet 클래스 상속
- UDP보다 처리 속도가 느리다.
- HTML 변경 시 Servlet을 재컴파일 해야한다.
클라이언트와 서버가 데이터를 주고받는 과정에서 Servlet이 어떻게 사용되는지 알아보기 전에,
Web Container?
클라이언트의 요청이 Web Server에게 전달되어 컴포넌트를 호출하는데, 이러한 컴포넌트를 관리하는 역할
Web Server는 오로지 HTML만 호출하고, Container에서 Servlet, JSP와 같은 컴포넌트를 불러낼 수 있다.
여담으로 Spring에 기본으로 탑재되어있는 Tomcat은 Web Server와 Web Conatiner의 역할을 모두 수행한다.
이런 컴포넌트 관리 Container 중, Servlet을 관리하는 Servlet Container도 있다.
클라이언트와 서버의 통신 과정에서 Servlet의 이용
- Web Browser에서 Web Server로 HTTP 요청 송신
- Web Server는 받은 HTTP 요청을 WAS(Web Application Server) 안의 Web Server로 보낸다
- WAS 안에서, Web Server는 Web Container로 HTTP 요청 전달
- Servlet 인스턴스 생성
- 생성된 Servler 인스턴스로 들어왔던 HTTP 요청을 처리하고, WAS의 Web Server에 요청에 대한 결과를 전달한다.
- WAS의 Web Server는 HTTP 응답을 Web Server에게, Web Server는 Web Browser에 응답을 전달한다.
Servlet을 이용한 요청과 응답
- HttpServletRequest
클라이언트 측에서 서버로 보내는 요청(request)에 대한 정보를 담은 객체로, header, parameter, cookies, url 등의 정보를 담고 있다. - HttpServletResponse
서버 측에서 클라이언트로 보내는, 앞서 받은 요청에 대한 응답(Response), 출력하기 위한 정보를 담은 객체로, 요청을 보낸 클라이언트의 정보, 요청에 대한 응답의 내용을 담고 있다.
이런 요청, 응답에 맞게 Servlet 클래스의 규칙에 맞게 객체를 생성하는 주체가 위에서 언급했던 Servlet Container
Servlet Container의 주요 기능
- 생명주기 관리
- 통신 지원
- 멀티스레딩 관리
- 선언적인 보안관리
- JSP 코드를 Java 코드로 변환
Servlet의 동작 과정
- Servlet Request, Servlet Response 객체 생성
- web.xml과 같은 설정 파일 참고해 매핑할 Servlet 확인
- Heap 영역에서 해당 Servlet 인스턴스 존재의 유무를 확인 후, 없으면 init() 초기화 메서드를 호출해 Servlet 인스턴스 생성
- Servlet Container에 스레드를 생성하고 서비스를 실행한다.
- 응답을 처리 후 송신하면, distroy() 메서드를 실행해 이전에 생성했던 Servlet Request, Servlet Response 객체를 소멸한다.
이렇게 정리하고보니 다음 집중 정리, 공부 대상을 쉽게 정할 수 있었다 ..
출처
서블릿(Servlet)이란 무엇인가? 서블릿 총정리
Servlet, Servlet Container, Spring MVC 정리
'Web' 카테고리의 다른 글
Exception? Error? (0) | 2023.12.23 |
---|---|
Proxy (0) | 2023.08.11 |
[WebRTC] 통신 형식 및 기본 동작에 필요한 서버 (0) | 2023.03.06 |
선생님.. 소셜 로그인이 하고싶어요.. (2) | 2023.02.16 |