JSP와 Servlet (서블릿)
JSP (Java Server Pages)
- HTML 내에 Java 언어를 삽입한 문서
.jsp
Servlet (Server + Applet)
- Java 언어로 이루어진 웹 프로그래밍 문서
- 자바 코드에 의존적
.java
JSP 페이지의 실행 과정
Servlet (서블릿)
- 서버 측에서 실행되면서 클라이언트의 요청에 따라 동적으로 서비스를 제공하는 자바 클래스 (응답 : HTML 형식)
- 자바 플랫폼에서 컴포넌트 기반의 웹 애플리케이션을 개발하는 핵심 기술 (동적 웹 애플리케이션 컴포넌트)
- 컨테이너 종류에 상관없이 실행 (플랫폼이 독립적)
- 독자적으로 실행되지 못하고 톰캣과 같은 JSP/Servlet 컨테이너에서 실행
- 자바로 만들어졌기 때문에 자바의 특징 (객체지향)을 가짐 : 자바 코드
- 스레드 기반
- JSP 페이지처럼 화면에 내용을 표시할 목적으로 사용하는 것이 아니라, MVC 패턴에서 로직인 모델과 화면에 결과를 표시하는 뷰 사이에서 제어를 담당하는 컨트롤로 사용됨
.java
이기 때문에 Java Resources / src 위치에 저장 : src/main/java
서블릿 처리 순서
- 클라이언트 에서 서블릿 요청
- 서버에서 서블릿 컨테이너 만들고 스레드 생성(요청할 때마다)
- 서블릿 컨테이너는 스레드 가동하여 서블릿 객체 생성(서블릿 객체 실행 종료되면 스레드 종료 후 반환)
- 서블릿 실행 결과가 웹 서버로 전송
- 결과를 웹 서버가 웹 브라우저에 전송
동일한 Servlet class에 대한 요청을 처리하는 모든 thread(스레드)는 같은 Servlet 객체 공유 -> 동시성 문제 발생할 수 있음
로컬 변수는 각 요청 스레드마다 각각의 스택 영역에 저장되기 때문에 동시성 문제를 발생시키지 않음
서블릿 라이프 사이클 (생명주기)
서블릿 패키지
javax.servlet
- 서블릿 작성을 위한 인터페이스와 클래스 제공
javax.servlet.http
- HTTP 프로토콜을 이용한 서블릿 작성에 필요한 인터페이스 제공 (GET/POST)
서블릿 클래스
- Servlet 인터페이스
- GenericServlet 추상 클래스
- HttpServlet 클래스 상속 받음
서블릿을 많이 사용하는 이유는?
- 빠른 응답속도
- 서블릿은 최초 요청 시 객체가 만들어져 메모리에 로드되고, 이후 요청 시에는 기존의 객체를 재활용한다 => 동작 속도 빨라짐
서블릿의 장점
- 신뢰성
- 확장성 - 기능 확장 용이함
- 플랫폼과 서버에 독립적 (자바 기반)
- 한 번 개발된 애플리케이션은 다양한 서버 환경에서 실행 가능
- Java에서 제공되는 다른 기술 사용 가능
- Ex) Servlet + JDBC 연동
서블릿 생성 과정
서블릿 매핑 (mapping)
- 서블릿 경로 연결 (url 주소에 출력될 경로 이름 설정)
- 서블릿 파일 경로 노출로 인한 보안 문제를 없애고 url을 간단히 줄일 수 있음
- 웹 브라우저에서 서블릿을 요청하기 위해서는 서블릿 매핑 필요
- http://localhost:8080/프로젝트명/서블릿 매핑 이름/
서블릿 매핑 방법
web.xml
에서 설정- 어노테이션 사용 (자동 지정해주지만 변경 가능)
어노테이션 이용
- 어노테이션(Annotation)을 이용한 서블릿 매핑
web.xml
에서 여러 서블릿 매핑 설정 시 복잡- 서블릿 클래스에서 직접 어노테이션으로 서블릿명 설정
- 가독성 좋고 편리 & 쉬움
@WebServlet
을 이용해서 서블릿 매핑 구현- @WebServlet("서블릿 매핑 이름")
- @WebServlet("/FirstServlet")
- 어노테이션이 적용되는 클래스는 반드시 HttpServlet 클래스를 상속받아야 한다
'Back > Servlet' 카테고리의 다른 글
서블릿 DB 연동(3) (0) | 2021.12.28 |
---|---|
서블릿 DB 연동(2) (0) | 2021.12.28 |
[Intellij]서블릿 DB 연동 (0) | 2021.12.28 |
Servlet 요청 API (0) | 2021.12.28 |
Web 개요 (0) | 2021.12.27 |