Servlet - 웹 애플리케이션을 만들 때 필요한 인터페이스
Spring web MVC - Spring FrameWork에 있는 모듈, Web Service를 만든다. (servlet 사용)
처음 웹프로그래밍은 정적 데이터만 전달 할 수 있었다. 그래서 어떤 사용자가 들어가도 똑같이 Hello.html만 줄 수 있었다. 사용자(요청)에 따라 다른 처리를 해줄 수 없다. 동적인 처리를 해주는 웹 애플리케이션이 없다.
이때 동적 데이터를 처리하는 CGI(Common Gateway Interface)가 나왔다.
이 인터페이스라는 것은 규약인데, 규약이 왜 필요할까?
바로 웹 서버와 CGI 구현체 사이에 규약이라는 것이다. 웹서버는 Apache이고, CGI를 구현할 때는 C, PHP, Perl이런 다양한 언어를 사용하니까 서로 규약을 만들기 위해서 CGI라는 걸 만들게 된다.
그래서 예전과 달리 누가 들어왔는지 있고, 리뷰요청도 보낼 수 있고 자기 팀도 확인할 수 있게 되었다.
하지만 CGI는 문제가 있었는데,
- 첫 번째 문제는 리퀘스트가 들어올 때마다 프로세스(메모리에 적재된 실행중인 프로그램 인스턴스)를 만든다는 것이다. 개선점은 프로세스를 Thread로 바꾼다. (Thread는 한 프로세스 내의 동작 흐름)
- 두 번째 문제점은 같은 구현체를 사용해도 쓰레드가 다르다면 하나씩 구현체가 생긴다는 것이다. 개선점은 여러 Instance에서 Singleton으로!
이것이 CGI를 보완한 servlet!
따라서 웹 컨테이너가 리퀘스트가 들어오면 그 리퀘스트마다 쓰레드를 만들어주고, 그 쓰레드랑 서블릿 구현체를 연결해주고 서블릿은 인터페이스 여기에 메서드가 정의되어있는데 이 메서드를 호출해주는 역할을 해준다.
크게 Init, Service, Destory 이 세가지 메서드가 서블릿 인터페이스에 정의되어 있다.
- Init은 말그대로 서블릿 인스턴스를 생성해 주는것이고 실제 기능이 수행되는 것이 서비스이다.
- Destory는 서블릿 인스턴스가 사라질 때 호출된다 .
Spring Web MVC에서는 Servlet을 어떻게 사용할까? Dispatcher Servlet으로 사용한다.
모든 요청이 들어왔을 때, dispatcher servlet으로 간다.
그에 맞는 컨트롤러를 찾아야하는데, Handler는 컨트롤러보다 더 큰 개념이고 핸들러 매핑을 통해서 요청에 맞는 컨트롤러를 찾아준다. 서블릿의 설정파일에 핸들러매핑 방식을 등록해줘야된다.
서블릿을 web.xml에 등록하면 서블릿 설정파일이 생기고 거기다가 어떤 핸들러매핑을 사용할지 등록하게 된다.
HandlerMapping에서 찾은 Handler(controller)의 메서드를 호출한다. ModelAndView 형태로 바꿔준다.
'IT' 카테고리의 다른 글
웹 서버 와 WAS (0) | 2024.06.27 |
---|---|
Spring과 Spring Boot 차이 (0) | 2024.06.27 |
JAVA 문자열 함수 (0) | 2024.06.26 |
이상 현상과 바른 DB schema 설계 (0) | 2024.06.26 |
관계형 데이터베이스 개념 (1) | 2024.06.24 |