서블릿이란 클라이언트의 요청을 처리하고, 그 결과를 반환하는 Servlet 클래스의 구현 규칙을 지킨 자바 웹 프로그래밍 기술 입니다. 쉽게 말해서 자바를 사용하여 웹을 만들기 위해 필요한 기술 입니다.
클라이언트가 필요한 요청을 했을때, 그 요청에 대하여 응답을 하는것을 자바로 응답하는 것입니다.
Servlet의 장단점은 무엇이 있을까요?
장점
- 복잡한 프로그램 로직 구현에 적합합니다.
- Java Thread 지원이 됩니다. 안정적인 웹 서비스 구축이 가능해집니다.
단점
- HTML 문서 디자인이 바뀔 때마다 .class 파일을 수정/컴파일/설치를 해야합니다.
- 웹 서버를 재 가동하는 일이 되풀이 됩니다. 따라서 속도가 느려집니다.
Servlet Container(서블릿 컨테이너)
서블릿이 Servlet 클래스의 규칙을 지켜서 결과를 응답하는 자바 웹프로그래밍 기술 이라고 말씀 드렸는데요,
하지만 이 서블릿은 혼자 동작하지 못합니다. 누군가의 도움을 받아야 합니다.
그것이 바로 서블릿 컨테이너입니다.
서블릿 컨테이너는 클라이언트의 요청(Request)을 받아주고 응답(Response)할 수 있게, 웹서버와 소켓으로 통신하며 대표적인 예를 톰캣(Tomcat)이 있습니다. (여담으로, SpringBoot의 기본 내장 서버거 Tomcat입니다.) 톰캣은 실제로 서버와 통신하여 JSP와 Servlet이 작동하는 환경을 만들어 줍니다.
Servlet Container의 역할
1.웹 서버와의 통신 지원
- 서블릿 컨테이너는 서블릿과 웹서버가 손 쉽게 통신할 수 있게 해줍니다.
2.서블릿 생명주기(Life Cycle)관리
- 서블릿 컨테이너는 서블릿의 탄생과 죽음을 관리합니다. 서블릿 클래스를 로딩하여 인스턴스화 합니다. 또 초기화 메소드 호출, 요청이 들어오면 적절한 서블릿 메소드를 호출합니다. 또한 서블릿의 생명주기가 다해서 생명을 다하게 되면 Garbage로 남게 되며 Garbage Collection(가비지 컬렉션, 통칭 GC)을 진행하여 편의를 제공합니다
3.멀티 쓰레드 지원 및 관리
- 서블릿 컨테이너는 요청이 올 때 마다 새로운 쓰레드를 하나 생성하는데, HTTP 서비스 메소드를 실행하고 나면, 쓰레드는 생명을 다합니다. 원래는 쓰레드를 관리해야 하지만 서버가 자동으로 다중 쓰레드 생성 및 운여해주니 쓰레드의 안정성을 개발자가 따로 고려하지 않아도 됩니다.
4.선언적인 보안 관리
- 일반적으로 보안관리는 XML 배포 서술자에 기록하므로, 보안에 대해 수정할 일이 생겨도 자바 소스코드를 수정하여 재컴파일 하지 않아도 보안관리가 가능합니다.
원래는 Servlet을 공부하다보면 자연스럽게 JSP에 대해 알게 됩니다. 왜냐하면 JSP와 서블릿을 잘 사용한다면 서로의 장단점을 보완할 수 있기 때문입니다.
간단하게 설명 드리자면 JSP는 HTML에서 JAVA코드를 사용하는 것입니다.
근래에는 확실히 분리하여 사용하고 있기 때문에 깊게 다루진 않겠습니다. 더 많은 정보를 원하신다면 밑의 블로그를 참조해주세요.
참고블로그
https://mangkyu.tistory.com/14
https://byul91oh.tistory.com/229
'Back-end > Java' 카테고리의 다른 글
[Java] Java Generic 이란? (0) | 2022.12.19 |
---|---|
[Java]Filter와 interceptor 차이점과 용도 (0) | 2022.12.10 |
[Java] JVM 메모리구조란? (0) | 2022.12.08 |
[Java] String, StringBuffer, StringBuilder 차이점과 장단점 (0) | 2022.12.06 |
[Java]래퍼클래스(Wrapper Class)란? (0) | 2022.12.03 |