서블릿
- HttpServlet 을 상속
- @webServlet - 3개의 메서드 존재
1. init
서블릿이 초기화될때 자동 호출되는 메서드
서블릿의 초기화 작업 담당
2. service
입력, 처리, 출력
3. destroy
서블릿이 갱신되어 로딩되거나, 뒷마무리작업을 할 때 호출
서블릿이 메모리에서 제거될때 서블릿 컨테이너에서 자동호출
- 요청 - > Servlet Context 에서 서블릿 인스턴스가 존재하는지 확인
- yes-> service() 호출
- no -> 서블릿 클래스로딩 & 인스턴스 생성 -> 초기화 init() -> service() 호출
- 2번째부터는 첫번쨰 객체를 만들었기 떄문에 yes -> service() 호출
- 프로그램이 종료, 웹애플리케이션이 종료되면 destroy() 호출
map 형태로 되어 있는 서블릿 이름, 서블릿은 키와 값으로 되어있다.
객체가 존재하는지 안하는지를 확인을 한다.
서블릿은 기본적으로 sington 이다. 한개의 인스턴스만 만들어진다. 그렇기 때문에 요청이 올때 인스턴스가 계속만들어지는 것이 아니라, 한개의 인스턴스로 재사용을 한다.
jsp -> servlet 변환과정
- jsp 파일을 작성하면 servlet 으로 자동 변환
- jps 페이지는 webservlet을 사용하여 mapping X,
jsp 파일
1. 클래스영역
<%! %> 안에는 지역변수와 클래스 변수를 사용
2. 메서드 영역
지역변수를 idx1, idx2를 사용. 인스턴스 변수 필요시 클래스 영역에서 보이는 <%! 사용한 태그안에 정의되어 있음
3. 값 출력
<% %> 태그를 사용하여 그안에 변수를 넣어주어 값을 출력
jsp 파일 -> servlet 으로 자동 변환
위에서 jsp파일과 같이 순서를 적어보았다. 1번은 클래스영역, 2번은 지역변수, 3번은 출력값을 나타내고 있다.
- jsp요청 -> 인스턴스 존재하는지 확인 -> No -> 기존의 jsp 파일을 서블릿으로 변환 -> 컴파일하여 클래스 파일
- -> 인스턴스 생성 -> 서블릿 인스턴스가 만들어짐
존재한다면 바로 호출하여 서비스가 응답을 해준다. 즉 첫번째 호출이 될 때만 앞서 변환하고 컴파일하는 과정을 거치게 되고 두번쨰 호출은 객체가 존재하기에 바로 서블릿인스턴스로 간다.
jsp 파일이 변경될때에는 다시 변환, 컴파일과정을 한다.
스프링과 비교
서블릿 - 요청이 올때 객체를 만들기 때문에 지연된 초기화
스프링 - 요청이 오지 않아도 미리 객체를 만들어서 기다림
JSP의 기본 객체
'스프링' 카테고리의 다른 글
[서블릿과 JSP ] 3. URL 패턴 , EL표기 (0) | 2021.12.04 |
---|---|
[서블릿과 JSP ] 2 . 유효범위와 속성 (0) | 2021.12.01 |
[스프링] Http 요청과 응답 (HttpServletRequest , HttpServletResponse) (0) | 2021.10.16 |
[스프링] AWS에 서버 구축하기 (0) | 2021.10.15 |
[스프링정석] 01.원격프로그램 실행 (0) | 2021.10.15 |