Spring
JAVA Servlet / JSP이란?
심리밀당남
2021. 8. 2. 21:24
JSP / Servlet 등장 배경
- Static VS Dynamic Page 과 Web Server와 (Web) Application Server 에서 언급한 Static page와 Web Server의 한계(개인화된 페이지 제공 어려움, DB 사용 어려움 등)이 해결이 필요했음
이를 해결하기 위해 CGI(Common Gatgeway Interface)라는 방식이 제안됨
하지만 CGI는 user request에 따른 실행 단위가 process여서, 많은 수의 요청이 들어오면 서버에 걸리는 부하가 컸음. 이러한 문제를 해결하기 위한 대안으로 Server-side Web framework가 등장. 그 중 하나가 바로 JAVA EE.
JSP(JavaServer Page)와 Servlet은 Web Framework인 JAVA EE에서 제공하는 client/server side 기술임
Servlet
→ client의 request에 적절한 response를 효과적으로 제공하기 위한 자바 기술
- .servlet → client의 request를 받고 적절한 response를 생성하는 java 객체
- request에 response하는 java class를 구현하기 위한 표준인 JAVA EE Servlet API를 준수하는 java class를 JAVA EE에 처리하거나 저장함
- servlet을 배포하거나 실행하기 위해선, 반드시 web container가 사용되어야 함
- 서블릿 패키지 - javax.servlet
- javax.servlet에 포함된 Servlet API가 Web Container와 Servlet의 상호작용을 정의함
- javax.servlet.http 패키지
- Web server와 clients 간의 여러 request 및 response를 추적하는 세션관리 objects를 포함한, generic servlet emelments의 HTTP별 subclasses를 정의하는 패키지
Web(Servlet) Container
- servlet과 상효작용하는 web server의 컴포넌트
- 역할
- servlets의 라이프사이클 관리
- 특정 서블릿과 url을 매핑
- url requester 접근권한 검증
- 서블릿 인스턴스 생성
- loads and unloads servlets
- request-response objects 생성 및 관리
- security, concurrency, lifecycle management, transaction, deployment and etc...등을 포함한 추가적인 web components를 위한 런타임 환경을 지정함
- Sevlet Container 예시
- Jetty
- Apache Tomcat
- Tomcat 6이상부터는 general app container로도 사용 가능
- 이전 버젼은 오직 web container로만 사용 가능
- 서블릿은 JSP Compiler에 의해 JSP에서 자동적으로 생성될 수도 있음
- jsp는 Web Container(JSP Compiler)에 의해 서블릿으로 다시 변환됨
- .jsp → .java(Servlet) → .class로 변환
- 위 변환은 오직 한번만 수행됨
- 같은 페이지에 수 많은 요청이 있더라도 처리 속도는 거의 유지
- JSP 페이지 요청이 들어오면, 서블릿 객체가 메모리에 존재하는지 우선 확인 → 있으면 serving / 없으면 서블릿 변환 후 메모리 올리고 serving
- .jsp → .java(Servlet) → .class로 변환
- 자세한 내용은 이 링크 참고
- jsp는 Web Container(JSP Compiler)에 의해 서블릿으로 다시 변환됨
Servlets과 JSP의 차이
- Servlet
- JAVA안에 HTML이 삽입됨
- JSP
- Servlet의 단점을 보완하고자 만든 서블릿 기반의 스크립트 기술
- 서블릿으로 view를 구현하기 위해선 너무 많은 코드가 필요함
- 서블릿을 작성하지 않고도 간편하게 view 구현을 할 수 있게 한 것이 JSP
- dynamic page를 생성하기 위한 기술. HTML안에 JAVA가 삽입됨
- Servlet의 단점을 보완하고자 만든 서블릿 기반의 스크립트 기술
Life Cycle of a Servlet
- 서블릿 생명주기의 핵심 3가지 메서드 1. init() / 2. service() / 3. destory()
- 위 세가지 메서드는 모든 서블릿에서 구현되며, 서버에 의해 특정 시점에 호출됨
- 자세한 내용은 추후 서술
출처
Web container - Wikipedia
A web container (also known as a servlet container;[1] and compare "webcontainer"[2]) is the component of a web server that interacts with Jakarta Servlets. A web container is responsible for managing the lifecycle of servlets, mapping a URL to a particula
en.wikipedia.org