CS

[Spring] Servlet

KJihun 2023. 11. 22. 12:36
728x90

 

 

Servlet(서블릿) 

동적인 페이지를 제공하기 위해서 웹서버는 다른 곳에 도움을 요청하여 동적인 페이지를 작성해야 한다.

여기서 웹서버가 동적인 페이지를 제공할 수 있도록 도와주는 어플리케이션이 서블릿이며, 동적인 페이지를 생성하는 어플리케이션이 CGI이다. 

 

 

Q) CGI(Common Gateway Interface)란?

 

CGI는 특별한 라이브러리나 도구를 의미하는 것이 아니고, 별도로 제작된 웹서버와 프로그램간의 교환방식을 칭한다.

어떠한 프로그래밍언어로도 구현 가능하며, 별도로 만들어 놓은 프로그램에 HTML의 Get or Post 방법으로 클라이언트의 데이터를 환경변수로 전달하고, 프로그램의 표준 출력 결과를 클라이언트에게 전송하는 것이다.

즉, 자바 어플리케이션 코딩을 하듯 웹 브라우저용 출력 화면을 만드는 방법을 의미한다.

 

 

 

예를 들어, 어떠한 사용자가 로그인을 하려고 할 때. 사용자는 아이디와 비밀번호를 입력하고, 로그인 버튼을 누른다. 

서버는 클라이언트의 아이디와 비밀번호를 확인하고, 다음 페이지를 띄워주어야 하는데, 이러한 역할을 수행하는 

것이 바로 서블릿(Servlet)이다.

 

 

특징

  • 클라이언트의 요청에 동적으로 작동하는 웹 어플리케이션 컴포넌트
  • html을 사용하여 요청에 응답한다.
  • Java Thread를 이용하여 동작한다.
  • MVC 패턴에서 Controller로 이용된다.
  • HTTP 프로토콜 서비스를 지원하는 javax.servlet.http.HttpServlet 클래스를 상속받는다.
  • UDP보다 처리 속도가 느리다.
  • HTML 변경 시 Servlet을 재컴파일해야 하는 단점이 있다.

 

 

 

Servlet 동작 방식

 

 

 

  1. 클라이언트가 URL을 입력하면 HTTP Request가 Servlet Container로 전송
  2. 요청을 전송받은 Servlet Container는 HttpServletRequest, HttpServletResponse 객체를 생성
  3. web.xml을 기반으로 사용자가 요청한 URL이 어느 서블릿에 대한 요청인지 찾음
  4. 해당 서블릿에서 service메소드를 호출 후 클리아언트의 GET, POST여부에 따라 doGet() 또는 doPost()를 호출
  5. doGet() or doPost() 메소드는 동적 페이지를 생성한 후 HttpServletResponse객체에 응답을 보냄
  6. 응답이 끝나면 HttpServletRequest, HttpServletResponse 두 객체를 소멸시킴

 

 

 

 

 

 

 

Servlet Container(서블릿 컨테이너)

서블릿의 생명주기 등을 관리해주는 역할을 담당한다.

클라이언트의 요청(Request)을 받아주고 응답(Response)할 수 있게, 웹서버와 소켓으로 통신하며 대표적인 예로

톰캣(Tomcat)이 있다.

톰캣은 실제로 웹 서버와 통신하여 JSP(자바 서버 페이지)와 Servlet이 작동하는 환경을 제공해준다.

 

 

역할

1. 웹서버와의 통신 지원
2. 서블릿 생명주기(Life Cycle) 관리 
3. 멀티쓰레드 지원 및 관리 
4. 보안 관리 

 

 

 

 

Servlet 생명주기

 

 

 

 

'CS' 카테고리의 다른 글

[Spring] Spring Application 메서드 실행 방법  (0) 2023.11.22
[Spring] Filter, Interceptor 예외 처리방법  (2) 2023.11.22
[Spring] ServletConfig, ServletConfig  (0) 2023.11.22
[Spring] POJO  (0) 2023.11.20
[Spring] Filter와 Interceptor  (0) 2023.11.20