본문 바로가기

JAVA

JAVA - Web : Servlet(JSP)이란?

서블릿(Servlet)이란?

- 클라이언트 요청 처리, 결과 반환하는 Servlet 클래스의 규칙에 따라는 자바 웹 프로그래밍 기술

- 웹서버는 정적인 페이지만 제공하며 동적인 페이지를 제공하기 위해서는 다른 곳에 도움을 요청해야
   → 웹서버가 동적인 페이지를 제공할 수 있도록 도와주는 어플리케이션이 서블릿

- 동적으로 웹 페이지를 생성하고, 사용자의 요청을 처리하며, 데이터베이스와 통신하고, 기타 웹 애플리케이션에서 필요한 작업을 수행하는 데 사용

- 즉, 웹서비스를 위한 "자바클래스"이며, 자바를 사용해서 웹을 만들기위해 필요한 기술
사용자의 요청을 받아 처리하고 그에 해당하는 응답페이지를 만들어 다시 사용자에게 전송하는 역할을 하는 자바 클래스(Controller in MVC pattern)

- 웹에서 동적인 페이지를 java로 구현할 수 있게 도와주는 서버측 프로그램(java코드로 html 구현)

 

Servlet 동작 과정

출처 https://velog.io/@falling_star3/Tomcat-%EC%84%9C%EB%B8%94%EB%A6%BFServlet%EC%9D%B4%EB%9E%80

  1. 클라이언트가 URL을 입력
  2. HTTP request가 요청 전송
  3. Servlet Container(대표적으로 톰캣)*가 요청 받아
  4. HttpServletRequest, HttpServletResponse 객체 생성
  5. web.xml 기반으로 사용자가 요청한 URL이 어느 서블릿 요청인지 탐색(mapping 필요)
  6. 해당 서블릿에서 service() 메소드 호출
  7. GET, POST 요청 중 어느 것인지에 따라 doGet(), doPost() 메소드 호출
  8. doGet(), doPost() 메소드에서 요청 시 들어오는 값을 추출
  9. 추출한 값을 가공 처리(servlet(controller) ↔ service() ↔ dao() ↔ DB)
  10. 가공 후 사용자가 보게될 동적 응답페이지(jsp) 선택해 포워딩
  11. 응답이 끝나면 HttpServletRequest, HttpServletResponse 객체 소멸

 

* 서블릿 컨테이너(Servlet Container)란?

서블릿을 관리한다. 대표적으로 톰캣(Tomcat)이 있다. 해당 클래스가 servlet이라는 것을 알린다.

 

* 서블릿 컨테이너의 주요 기능은,

  • 서블릿 생명주기 관리: 서블릿의 인스턴스를 생성하고 초기화하며, 클라이언트 요청에 따라 서블릿 인스턴스를 실행하고 소멸하며, 서블릿의 생명주기가 다할 시 Garbage Collectior로 삭제 한다.
  • 요청 및 응답 처리: 클라이언트의 HTTP 요청을 받아들이고, 서블릿을 통해 요청을 처리하여 적절한 HTTP 응답을 생성한다. 서블릿 컨테이너가 클라이언트 요청을 받아주고(request) 응답(response)할 수 있도록 웹서버와 소켓으로 통신한다. 
  • 멀티스레드 지원: 다중 사용자 요청을 동시에 처리하기 위해 멀티스레드를 사용하여 서블릿을 실행
  • 세션 관리: 클라이언트의 세션을 관리하고, 상태 유지를 위한 세션 데이터를 저장합니다.
  • 보안 관리: 사용자 인증, 권한 부여 및 보안 기능을 제공하여 웹 애플리케이션의 보안을 강화