서블릿(Servlet)이란?
- 클라이언트 요청 처리, 결과 반환하는 Servlet 클래스의 규칙에 따라는 자바 웹 프로그래밍 기술
- 웹서버는 정적인 페이지만 제공하며 동적인 페이지를 제공하기 위해서는 다른 곳에 도움을 요청해야
→ 웹서버가 동적인 페이지를 제공할 수 있도록 도와주는 어플리케이션이 서블릿
- 동적으로 웹 페이지를 생성하고, 사용자의 요청을 처리하며, 데이터베이스와 통신하고, 기타 웹 애플리케이션에서 필요한 작업을 수행하는 데 사용
- 즉, 웹서비스를 위한 "자바클래스"이며, 자바를 사용해서 웹을 만들기위해 필요한 기술
사용자의 요청을 받아 처리하고 그에 해당하는 응답페이지를 만들어 다시 사용자에게 전송하는 역할을 하는 자바 클래스(Controller in MVC pattern)
- 웹에서 동적인 페이지를 java로 구현할 수 있게 도와주는 서버측 프로그램(java코드로 html 구현)
Servlet 동작 과정
- 클라이언트가 URL을 입력
- HTTP request가 요청 전송
- Servlet Container(대표적으로 톰캣)*가 요청 받아서
- HttpServletRequest, HttpServletResponse 객체 생성
- web.xml 기반으로 사용자가 요청한 URL이 어느 서블릿 요청인지 탐색(mapping 필요)
- 해당 서블릿에서 service() 메소드 호출
- GET, POST 요청 중 어느 것인지에 따라 doGet(), doPost() 메소드 호출
- doGet(), doPost() 메소드에서 요청 시 들어오는 값을 추출
- 추출한 값을 가공 처리(servlet(controller) ↔ service() ↔ dao() ↔ DB)
- 가공 후 사용자가 보게될 동적 응답페이지(jsp) 선택해 포워딩
- 응답이 끝나면 HttpServletRequest, HttpServletResponse 객체 소멸
* 서블릿 컨테이너(Servlet Container)란?
서블릿을 관리한다. 대표적으로 톰캣(Tomcat)이 있다. 해당 클래스가 servlet이라는 것을 알린다.
* 서블릿 컨테이너의 주요 기능은,
- 서블릿 생명주기 관리: 서블릿의 인스턴스를 생성하고 초기화하며, 클라이언트 요청에 따라 서블릿 인스턴스를 실행하고 소멸하며, 서블릿의 생명주기가 다할 시 Garbage Collectior로 삭제 한다.
- 요청 및 응답 처리: 클라이언트의 HTTP 요청을 받아들이고, 서블릿을 통해 요청을 처리하여 적절한 HTTP 응답을 생성한다. 서블릿 컨테이너가 클라이언트 요청을 받아주고(request) 응답(response)할 수 있도록 웹서버와 소켓으로 통신한다.
- 멀티스레드 지원: 다중 사용자 요청을 동시에 처리하기 위해 멀티스레드를 사용하여 서블릿을 실행
- 세션 관리: 클라이언트의 세션을 관리하고, 상태 유지를 위한 세션 데이터를 저장합니다.
- 보안 관리: 사용자 인증, 권한 부여 및 보안 기능을 제공하여 웹 애플리케이션의 보안을 강화
'JAVA' 카테고리의 다른 글
JAVA - Web : Servlet 동작 과정 정리 1 (0) | 2024.04.01 |
---|---|
JAVA 자꾸 혼자 헷갈리는 내용 정리 1 (+ 계속 추가중) (0) | 2024.03.05 |
MVC(model-view-controller) : 과제를 위한 정리 (0) | 2024.03.04 |
JDBC, JAVA-SQL 연동 : 자바 - 데이터베이스(DB) 연결 (0) | 2024.03.04 |
JAVA Collection Framework 4: Iterator(반복자)을 이용한 데이터 출력 (1) | 2024.02.26 |