Free Lines Arrow
본문 바로가기
Development/WEB

[WEB] Servlet 이란?

by skahn1215 2021. 7. 26.
728x90
반응형

Servlet 이란?

  • 자바 서블릿(Java Servlet)은 컨테이너에의해 관리 된다.
  • 자바를 사용하여 웹페이지를 동적으로 생성하는 서버측 프로그램 혹은 그 사양을 말한다. 
  • Servlet은 자바코드 안에 HTML 을 포함한다.

 

 

Servlet 이 필요한 이유

  • Servlet 이 없다면 우리는 다음과 같이 구별 없이 서버를 구현해야된다.
  • 하지만 Servlet 이 대부분 담당하고 
  • 비즈니스 로직은 개발자가 구현하면된다.

 

 

 

Servlet 특징

  • 쓰레드를 이용하여 동작한다.
    -  Servlet은 외부 요청에 대해 프로세스보다 가벼운 쓰레드로 동작하여 가볍다. 
  • 다양한 플랫폼에서 동작한다.
    -  Servlet은 자바로 구현되므로 다양한 플랫폼에서 동작한다.

  • MVC 에서 Controller로 이용된다.

  • UDP 보다 속다가 느리다.

  • HTML 변경시 Servlet 재 컴파일 필요.

 

 

Servlet 구현

  • doGet: HTTP GET 요청 처리
  • doPost: HTTP POST 요청 처리
  • doPut: HTTP PUT 요청 처리
  • doDelete: HTTP DELETE 요청 처리
  • doHead: HTTP HEAD 요청 처리
  • doOptions: HTTP OPTIONS 요청 처리
@WebServlet("/home")
public class ServletExample extends HttpServlet{
    @Override
    public void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException 
    {
        //애플리케이션 로직
    }	
}

 

 

Life Cycle

Servlet, Init, destory 는 최초 한번씩만 수행되고

똑같은 요청이 있을 경우는 Service만 수행한다.

 

 

 

서블릿 HTTP 요청, 응답 흐름

  •  WAS는 Request, Response 객체를 새로 만들어서 서블릿 객체 호출
  •  개발자는 Request 객체에서 HTTP 요청 정보를 편리하게 꺼내서 사용
  •  개발자는 Response 객체에 HTTP 응답 정보를 편리하게 입력
  •  WAS는 Response 객체에 담겨있는 내용으로 HTTP 응답 정보를 생성

 

 

Servlet Container?

  • Servlet 객체를 생성한다.
  • Servlet 객체를 수행한다.

 

개념

  • 웹 서버 또는 응용프로그램 서버의 일부이다.
  • Servlet Container는 Servlet 들을 관리한다.
        - 생명주기를 관리

 

특징

  • Servlet은 요청이 들어오면 JVM 안에서 쓰레드를 생성하기 때문에 다른 CGI 언어들에 비해 서버 부하가 적게 발생한다.
  • 객체를 생성후 xml을 분석한 다음 Servlet life cycle이 수행 된다.
  • JSP도 서블릿으로 변환 되어서 사용
  • 멀티 스레딩 관리
        - 요청이 올때 마다 쓰레드를 생성해서 작업을 수행한다.

  • 서블릿 객체는 싱글톤으로 관리
    - 고객의 요청이 올 때 마다 계속 객체를 생성하는 것은 비효율
    - 최초 로딩 시점에 서블릿 객체를 미리 만들어두고 재활용

  • 공유 변수 사용 주의

 

 

 

수행과정

 

 

728x90
반응형

'Development > WEB' 카테고리의 다른 글

[WEB] HTTPS  (0) 2021.08.17
[WEB] HTTP 와 HTTPS 의 차이점  (0) 2021.08.17
[WEB] Rest API 와 설계  (0) 2021.08.09
[WEB] JSP 란?  (0) 2021.07.27
[WEB] HTTP 란?  (0) 2021.07.07

댓글