일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- CS 스터디
- 카카오 공채
- dfs
- Baekjoon
- 2019 카카오 개발자 겨울 인턴십 코딩테스트
- 백준
- Java
- 자바
- 2018 카카오
- 2018 KAKAO BLIND RECRUITMENT 1차
- 부스트코스
- 젠킨스
- gcp
- gradle
- bfs
- 비트마스크
- 카카오
- 프로그래머스
- 2019 카카오 공채
- c++
- 2019 KAKAO BLIND RECRUITMENT
- map
- 2018 카카오 공채
- 삼성 SW 기출문제
- 2020 카카오 공채
- 2018 KAKAO BLIND RECRUITMENT
- 삼성 SW 역량테스트
- 알고리즘
- set
- 2020 KAKAO BLIND RECRUITMENT
- Today
- Total
아무코딩
[웹] Servlet 본문
자바 웹 어플리케이션(Java Web Application)
WAS에 설치(deploy)되어 동작하는 어플리케이션입니다.
자바 웹 애플리케이션에는 HTML, CSS, 이미지, 자바로 작성된 클래스(Servlet도 포함됨, package, 인터페이스 등), 각종 설정 파일 등이 포함됩니다.
- WAS 에 의해서 동작.
자바 웹 어플리케이션의 폴더 구조
- WEB-INF
- web.xml
- 웹어플리케이션에 대한 정보를 가지고 있다.
- web application의 설정을 위한 deployment descriptor
- Deploy할 때 Servlet의 정보를 설정해준다.
- 브라우저가 Java Servlet에 접근하기 위해서는 WAS(Ex. Tomcat)에 필요한 정보를 알려줘야 해당하는 Servlet을 호출할 수 있다.
- 배포할 Servlet이 무엇인지
- 해당 Servlet이 어떤 URL에 매핑되는지.
- web.xml
서블릿이란?
클라이언트 요청을 처리하고 그 결과를 다시 클라이언트에게 전송하는 Servlet 클래스의 구현 규칙을 지킨 자바 프로그램.
(클라이언트의 HTTP요청에 대해 특정 기능을 수행, HTML문서를 생성 등의 응답을 하는 인터넷 서버 프로그램.)
-
자바 웹 어플리케이션의 구성요소 중 동적인 처리를 하는 프로그램의 역할입니다.
-
서블릿을 정의해보면
- 서블릿(servlet)은 WAS에 동작하는 JAVA 클래스입니다.
- 서블릿은 HttpServlet 클래스를 상속받아야 합니다.
- 서블릿과 JSP로부터 최상의 결과를 얻으려면, 웹 페이지를 개발할 때 이 두 가지(JSP, 서블릿)를 조화롭게 사용해야 합니다.예를 들어, 웹 페이지를 구성하는 화면(HTML)은 JSP로 표현하고, 복잡한 프로그래밍은 서블릿으로 구현합니다.
서블릿 컨테이너
서블릿을 관리해주는 역할
-
통신 지원
서블릿과 웹 서버가 통신할 수 있는 손쉬운 방법을 제공한다. 우리가 통신을 한다고 생각할 때 소켓을 만들고, 특정 포트를 리스닝하고, 연결 요청이 들어오면 스트림을 생성해서 요청을 받는다고 알고 있는데 이 과정을 서블릿 컨테이너가 대신해주는 것이다. 서블릿 컨테이너는 이런 통신 과정을 API로 제공하고 있기 때문에 우리가 쉽게 사용할 수 있다. -
생명주기 관리
서블릿 컨테이너가 기동 되는 순간 서블릿 클래스를 로딩해서 인스턴스 화하고, 초기화 메서드를 호출하고, 요청이 들어오면 적절한 서블릿 메서드를 찾아서 호출한다. 만약 서블릿의 생명이 다하는 순간 가비지 컬렉션을 진행한다. -
멀티스레딩 관리
서블릿 컨테이너는 해당 서블릿의 요청이 들어오면 스레드를 생성해서 작업을 수행한다. 즉 동시의 여러 요청이 들어온다면 멀티스레딩 환경으로 동시다발적인 작업을 관리한다. -
선언적인 보안관리
서블릿 컨테이너는 보안 관련된 기능을 지원한다. 따라서 서블릿 코드 안에 보안 관련된 메소드를 구현하지 않아도 된다. -
JSP 지원
대표적으로 톰캣이 서블릿 컨테이너
톰캣은 웹서버와 연동하여 실행할 수 있는 자바 환경을 제공하여 자바 서버 페이지(JSP)와 자바 서블릿이 실행할 수 있는 환경을 제공하고 있다.
프로그래머가 작성하는 서블릿 클래스는 추상 클래스 HttpServlet에 있는 메소드 중 클라이언트 사용자가 요청한 정보에 따라 처리해야 할 메소드를 오버라이딩 해서 구현한다.
doGet() : 클라이언트 HTTP GET 요청에 대해 처리.
doPost() : 클라이언트 HTTP POST 요청에 대해 처리.
doPut() : 클라이언트 HTTP PUT 요청에 대해 처리.
doDelete() : 클라이언트 HTTP DELETE 요청에 대해 처리.
init() : 서블릿의 생명주기 처리로 가장 처음에 실행.
destory() : 서블릿의 생명주기 처리로 서블릿 객체를 메모리에서 제거할 때 마지막으로 실행.
서블릿 생명주기 (servlet Life Cycle)
서블릿 생성 -> init() -> { service() -> doXxx() } -> destory() -> 서블릿 종료 ( {} 반복 )
서블릿 클래스 객체가 생성되면 가장 처음에 메소드 init()이 실행되며, 클라이언트의 요청이 들어 올 때마다 service() 메소드가 실행되어 요청에 맞는 메소드 doXxx()를 생행한다. 마지막으로 서버가 종료되거나 서블릿을 더 이상 사용할 필요가 없어 서블릿 객체를 메모리에서 제거할 때, 마지막으로 메소드 destory()가 실행되어 사용하던 자원을 정리하고 종료된다.
init()과 destory()는 서블릿의 생성과 종료 시 단 한 번이 실행되며 service() 메서드는 사용자의 요청이 있을 때마다 반복적으로 실행된다.
Reference
'Spring+웹' 카테고리의 다른 글
[스프링] DI 방식 두가지 비교 (생성자 vs 세터 메서드) (0) | 2020.05.12 |
---|---|
스프링 DI (0) | 2020.04.26 |
[웹/부스트코스] Servlet Lifecycle (0) | 2020.04.24 |
[웹/FE] class와 id (0) | 2020.04.21 |
[스프링] 스프링(Spring)이란? (0) | 2020.04.21 |