서블릿

수달·2021년 4월 24일
0

WEB

목록 보기
2/4

김영한 대장님의 스프링MVC1 편을 참고해서 작성 한 글 입니다.


✍ 서블릿이란? 서블릿의 탄생 역사

우리가 회원 가입 할 때 를 떠올려보자.

웹에서 데이터를 기입하고 버튼을 누르면 회원 가입이 완료되었다고 한다.
이게 어떻게 진행되는지 알아보자.


전송을 누르면, 요청 http 메세지를 만들어서 서버에 보낸다.

- POST/save HTTP1.1 -> post 방식으로 보내고 url 은 save 야.
  http1.1 버전으로 보낼게. 

- HOST : 보낸 사람은 localhost:8080이야

- Content Type : 안에 있는 내용은 urlencoded 로 되어 있고,
  들어 있는 값은 username=kim, age= 20이야

✍서블릿의 탄생 역사

서버에서 http 메세지를 받고 응답을 하기 위해서는 아래와 같은 절차가 있다.

1. 프로토콜로 통신을 하기 위해서는 tcp/ip 로 연결하기 때문에 연결을 대기 시키고,
   값을 받아올 소켓을 연결해둔다.
   
2. http 메세지를 받아온 후 컨텐트 타입에 따라서 바디 내용을 해석한다.
    그리고 그에 따른 액션을 시킨다. 

3. 액션을 실행 시킨 후, 값을 디비에 저장하고, 결과 값을 반환하기 위한 '
   http 메세지 를 만들어서 보낸다. 

모든 개발자들이 서버를 구현 하기 위해서는 이 절차를 따라야 하는데, 만들려는 서비스에 따라 비지니스 로직만 변경해주면 훨씬 더 효율적이지 않을까?

서블릿은 이 절차 중 액션을 취하는 (비지니스 로직- 디비 저장) 만 제외하고 전부를 대신 처리해준다.

🧐 우리는 서블릿을 지원하는 WAS 를 사용함으로 위에 처리를 단축 시킬수 있다!

서블릿 특징

- urlPatterns ="/hello' 
  웹 브라우저에 이 url 을 치게 되면 서블릿 핼로우 라는 클래스가 자동으로 실행된다. 
  그대신 꼭 extends HttpServlet 을 상속받을 것
  
- httpServletReauest
  위에서 http 요청 메세지를 해석했던 부분 기억하는가? 그 부분을 자동으로 해석하기 쉽게 만들어준다.
  
- httpServletResponse
  내 결과 값을 응답 메세지로 만들어서 보내주기 위해 사용함. 
  

😜서블릿, http 스펙을 편리하게 사용할 수 있게 해주네 ? 무야호 ~~


과정 정리

1. localhost:8080/hello 라는 url 이 들어움
	그러면 http 요청 메세지도 함께 들어오겠죠?
    -> 그걸 기반으로 request, response 객체를 생성함
2. helloServlet 클래스를 실행하고, 
	결과 값을 위에서 만든 객체에 담아서 보냄. 

서블릿은 어디에 존재하는가!!

WAS 안에는 서블릿 컨테이너 라는 게 존재하고 우리는 아까 extends 받아서 내용만 구현했던
코드처럼 구현 하면 된다.

그러면 그 컨테이너가 서블릿을 생성, 호출, 삭제 등등을 관리해준다 ~~


서블릿 컨테이너

  • 톰캣처럼 서블릿을 지원하는 WAS를 서블릿 컨테이너라고 함
  • 서블릿 컨테이너는 서블릿 객체를 생성, 초기화, 호출, 종료하는 생명주기관리를 함
  • 서블릿 객체는 싱글톤으로 관리한다.
    고객 요청이 들어올 때마다 계속 객체생성을 하게되면 비효율적이다.
    • 최초 로딩 시점에서 서블릿 객체를 미리 만들어두고, 재활용을 한다.
    • 모든 고객 요청은 동일한 서블릿 객체 인스턴스에 접근한다.
    • 공유 변수 사용시 주의해야한다.
    • 서블릿 컨테이너 종료시 함께 종료된다.
  • JSP도 서블릿으로 변환 되어서 사용된다.
  • 동시 요청을 위한 멀티 스레드 처리를 지원한다.

🌂느낀점

서블릿 덕분에 http 메세지 요청, 응답을 수월하게 했었구나 깨달았다.

profile
짜장면 쟁이

0개의 댓글