일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- Spring Batch
- Spring Boot
- php
- linux
- jsp
- devops
- laravel
- AWS
- tool
- javascript
- Oracle
- redis
- db
- IntelliJ
- it
- 맛집
- springboot
- Spring
- JVM
- Design Patterns
- ReactJS
- jenkins
- MySQL
- elasticsearch
- Git
- Web Server
- 요리
- ubuntu
- java
- Gradle
- Today
- Total
아무거나
[Servlet] 서블릿 학습(2) 본문
[Servlet] 서블릿 학습(2)
1. servlet 작동 순서
- 클라이언트에서 servlet요청이 들어 오면 서버에서는 servlet컨테이너를 만들고, 요청이 있을 때마다 스레드가 생성.
웹브라우저 -> 웹서버 -> 웹어플리케이션 서버(was) -> servlet 컨테이너(스레드 생성, servlet객체 생성)
** java컨테이너는 servlet, ejb, jsp 가 있다.
2. servlet 장점
- 다른 cgi언어들은 요청에 따라 계속해서 웹서버에 객체를 생성해준다(즉, 요청이 많을수록 서버에 부하가 크다.)
하지만 servlet는 java기반이므로 요청이 들어오면 jvm에서 스레드가 생성되어 스레드에서 처리를 하므로 속도가 더 빠르고 서버에 부하가 적다.
3. servlet 라이프사이클(생명주기)
- servlet의 사용도가 높은 이유는 빠른 응답 속도 때문, servlet은 최초 요청 시 객체가 만들어져 메모리에 로딩되고, 이후 요청 시에는 기존의 객체를
재활용하게 된다. 따라서 동작 속도가 빠르다.
Servlet 객체생성(최초 한번) -> Init() 호출(최초 한번) -> service(), doGet(), doPost() 호출(요청시 매번), destroy() 호출(마지막 한번 -> 자원 해제 : servlet 수정, 서버 재가동 등등..)
** service() 란 doGet이랑 doPost가 둘다 없으면 service()메소드가 실행된다.
service()랑 doGet(or doPost)이랑 같이 쓰면 콜백으로 service()에 들어온다.
4. servlet 선처리, 후처리
- servlet의 라이프 사이클중 init()과 destory()메소드와 관련하여 선처리(init()전)와 후처리(destroy()후) 작업이 가능ㅎ아다.
Servlet 객체생성 -> @PostConstruct(선처리 되는 애노테이션) -> Init() 호출 -> server(), doGet(), doPost() 호출 -> destroy()호출 -> 후처리: @preDestroy(후처리 애노테이션 선언)
참고: https://www.inflearn.com/course/%EC%8B%A4%EC%A0%84-jsp-%EA%B0%95%EC%A2%8C/dashboard
'Java & Kotlin > JSP & Servlet' 카테고리의 다른 글
[JSP] 학습 1 (0) | 2019.12.21 |
---|---|
[Servlet] 서블릿 학습(4) (0) | 2019.12.21 |
[Servlet] 서블릿 학습(3) (0) | 2019.12.21 |
[Servlet] 서블릿 학습 (1) (0) | 2019.12.21 |
[Servlet] 간단 예제 (0) | 2019.06.12 |