-
JSP | Servlet 서블릿 개요JAVA/JSP 2020. 2. 14. 17:31
Servlet
Server + Applet
Java 언어를 기반으로 하는 동적 웹 페이지를 작성할 수 있도록 지원
Servlet 개요
- 멀티 쓰레딩(Multi Thread)을 통해 사용자 요구를 처리하고 가공해서
이에 대한 결과를 사용자에게 응답함 - 자바 프로그램과 작성하는 형식이 거의 같기 때문에
자바를 학습하지 않으면 작성하기 어려움 - 자바 코드 안에 HTML 태그가 혼재되어 있어
작업이 분리되지 않기 때문에 업무 효율성이 떨어짐 - 서블릿은 사용자용 뷰와 프로그램 로직 사이를 제어하는 컨트롤러(Controller)로 주로 사용
- JSP와 서블릿은 상호 연계되어 사용됨
HTTP 프로토콜
연결을 유지하지 않고(Connectionless, 비연결성),
서버의 상태에 상관하지 않는(Stateless, 비상태성) 특징을 가짐- 웹 브라우저는 HTTP 프로토콜에 맞게 요청(request)을 웹 서버에 전송
- 웹 서버는 HTTP 프로토콜에 맞게 요청에 따른 응답(reply)을 웹 브라우저에 전송
HTTP Method
메소드 특징 Get http header에 정보를 실어 보냄
메소드 생략 시 기본값
url 뒤에 요청 쿼리가 붙음
전달 속도 빠름
256byte가 한계
적은 양의 데이터 전송시 유리Post http body에 정보를 실어 보냄
데이터 크기에 제한이 없음
보안에 유리Head Header(서버)의 정보만 얻어낼 때 사용 Put Resource를 저장할 때 사용 Delete Resource를 제거할 때 사용 Trace 클라이언트에서 서버까지 가는 경로 추적 Options 서버 성능 등을 확인할 때 사용 ※ Put과 Delete를 허용하면 서버의 안정성이 떨어짐
서블릿 동작 원리
- javax.servlet이나 javax.servlet.http 패키지의 클래스와 인터페이스를 사용해 서블릿 생성
- main() 메소드를 갖지 않는 대신 서블릿의 service() 메소드를 서버가 호출함
Generic 서블릿
- javax.servlet 패키지는 프로토콜에 독립적인 서블릿을 만들기 위한 클래스 제공
- 서블릿은 GenericServlet 클래스를 상속받아 작성
- service() 메소드를 재정의해야 함
- service() 메소드는 클라이언트의 요청을 처리하는 request 객체와
요청 처리 결과를 반환하는 response 객체를 매개 변수로 가짐 - ServletRequest, ServletResponse 클래스에서
제너릭 서블릿의 request와 response에 대한 접근 제공
HTTP 서블릿
- javax.servlet.http 패키지는 HTTP 프로콜의 고유한 기능(Get, Post 등)을 제공하는 서블릿을 만드는 클래스 제공
- 서블릿은 HttpServlet 클래스를 상속받아 작성
- service() 메소드 대신 GET 요청을 다루기 위한 doGet() 메소드와
POST 요청을 다루기 위한 doPost() 메소드를 재정의 - HttpServletRequest, HttpServletResponse 클래스에서 요청과 응답에 대한 기능 제공
HTTP 서블릿 요청/응답 과정
- 클라이언트의 서비스 요청
- 컨테이너에서 객체 생성 유무 체크(only one)
- 객체가 있는 경우는 생성하지 않고
객체가 없는 경우 객체 생성(메모리에 올림) - Invoker 실행
작업용 request당 하나씩 thread를 만듦 - thread에서 service() 메소드(response 내용 포함) 호출
클라이언트당 1개씩 생성 - 결과를 클라이언트에 보내며 이때 결과를 mime type으로 보냄
웹 브라우저의 mime type은 text/html
※ service() 메소드가 호출될 때마다 doGet() 메소드가 자동 호출됨
사용자용 뷰와 프로그램 로직 사이를 제어하는 역할을 하는 서블릿에 대해 알아보았습니다.
서블릿은 멀티 쓰레딩으로 사용자의 요청을 처리하고 가공해서 그에 대한 응답을 제공하는 역할을 합니다.
조금 어려운 개념이므로 우선은 이런게 있다 정도로만 알아 두고 필요할 때 다시 공부하는 것도 좋을 것 같습니다.
'JAVA > JSP' 카테고리의 다른 글
JSP | Page Diretives_<%@ page %> (0) 2020.02.18 JSP | Script 3대 요소 & Comment 주석 (0) 2020.02.17 JSP | JSP 환경 설정 (0) 2020.02.14 JSP | JSP 개요 및 특징 (0) 2020.02.14 JSP | 웹 프로그래밍의 이해 (0) 2020.02.14 - 멀티 쓰레딩(Multi Thread)을 통해 사용자 요구를 처리하고 가공해서