SERVLET
우봉수
2023. 4. 19. 01:10
2023. 4. 19. 01:10
서블릿
서블릿은 HTTP 프로토콜을 통해 클라이언트와 상호작용하는 데 초점을 두고 있다.
- 서블릿 규약에 따라 제작된 클래스로 서버에서 웹페이지 들을 동적으로 생성
- 전송되는 데이터 처리를 수행하기 위해 java로 작성된 프로그램
- 서블릿을 실행하기 위해서는 먼저 환경을 구축 필요
- 아파치 톰켓 또는 IBM 웹 스피어 등이 필요함
- HTTP 프로토콜을 기반으로 동작하며
- HTTP 요청을 받아 JSP에서 처리된 결과를 HTTP 응답으로 반환하거나
- JSP에서 사용되는 데이터를 서블릿에서 처리하여 JSP로 전달하는 등의 역할을 한다.
JSP(Java Server Pages)란?
JSP(JavaServer Pages)는 HTML 코드와 자바 코드를 조합하여 동적인 웹 페이지를 생성하는 데 초점을 두고 있다.
- HTML 코드에 JAVA 코드를 넣어 동적웹페이지를 생성하는 웹어플리케이션 도구
- HTML 안의 자바 코드가 있는 것
- <%! class 안으로 들어갈 내용 %>
- HTML 코드는 service() 메소드 안으로 들어가는 내용
- 서블릿으로 변환 되는 과정
- twoDice.jsp (jsp 파일) -> 변환
- twoDice_jsp.java (서블릿 소스 파일) -> 컴파일
- twoDice_jsp.class (서블릿 클래스 파일)-> 인스턴스 생성 (_ispInit() 초기화 메소드 실행)
- _jspService() 서블릿 인스턴스 -> 응답
- 첫 번째 호출 때는 시간 지연이 존재한다. 변환하고 컴파일 하는 과정이 있기 때문에
- 두 번째 호출 때 부터는 객체가 존재 하기 때문에 빠르게 응답이 가능하다.
- jsp 파일이 변경된다면 맨 처음 변환하는 과정부터 다시 시작한다.
- 자동으로 매핑 해주기 때문에 호출만 하면 된다.
- 늦은 초기화가 기본 lazy - init() 지연된 초기화 (요청이 오면 객체를 만들고 초기화)
- Spring은
- 빠른 초기화가 기본 early - init() (요청이 오지 않아도 미리 객체를 만들어 두고 초기화)
JSP는 왜 만들어졌는가?
- 같이 사용함으로써 서블릿의 단점을 보완하기 위해 스크립트 방식을 도입하여 Sun 사에 의해 JSP가 개발되었음
- JSP는 서블릿과 함께 사용될 목적으로 만들어졌으며
- 웹 페이지의 디자인과 레이아웃, UI 등을 HTML과 유사한 태그를 사용하여 쉽게 작성할 수 있도록 하는 데 초점이 맞춰져 있다.
JSP와 서블릿의 동시 사용
JSP는 HTML과 자바 코드를 모두 사용하여 동적인 웹 페이지를 생성하는 기술이며, 서블릿은 JSP와 함께 사용될 때, JSP 사이에 데이터를 전달 해주는 역활을 하면서 JSP를 처리하여 동적인 웹 페이지를 생성하고 클라이언트로 전달하는 역할을 한다.
웹 컨테이너
- 웹 서버의 컴포넌트 중 하나로 Java 서블릿과 상호작용
- 웹 컨테이너는 서블릿의 생명주기를 관리하고 특정 서블릿을 맵핑 하는 일을 한다
- URL 요청이 올바르게 접근할 수 있도록 권한 보장
- 순수 서블릿을 처리하는 경우 서블릿 컨테이너라고 하지만 서블릿 컨테이너를 포함한 JSP, HTTP 서버의 기능도 함께 포함하기 때문에 웹 컨테이너라고도 부름
REST(Representatinal State Transfer) API
- 네트워크 상에서 클라이언트와 서버 사이 통신을 구현하는 방법 중 하나
- 대부분 Open API는 Rest 아키텍쳐 기반
- 서버 응답을 다양한 형태로 전달 하는 개념 (JSON,XML)
- 데이터를 주고 받기 위한 형태
- 성능, 안정성, 보안, 백업, 분산 등 여러 인프라 재활용 가능
1. 서블릿과 컨트롤러
- @WebServlet("/~") = @Controller + @RequestMapping
2. 서블릿의 생명주기
- Servlet Container가 자동으로 호출 (개발자는 내용만 채우면 됨)
- 서블릿은 기본적으로 싱글톤 Sington 이다 -> 1개의 인스턴스만 만들어서 계속 재활용
- init() 서블릿 생성시 초기화
- service 실제 작업을 처리하는 메소드
- destroy 서블릿이 메모리에서 제거될 때 호출
- 만약 Servlet의 내용이 바뀐다면 Spring이 자동으로 해당 서블릿을 제거시키고 다시 호출 시킴
3. JSP의 기본 객체 : 생성 없이 사용할 수 있는 객체
(서비스 메소드의 Lv(지역 변수)로 선언 된 것들)
- request
- pageContext
- reponse
- session
- application
- config
- out
- page