Notice
Recent Posts
Recent Comments
Link
«   2024/07   »
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
Archives
Today
Total
관리 메뉴

브래의 슬기로운 코딩 생활

JAVA 웹 프로그래밍 4주차 정리 (Servlet) 본문

2-2/JAVA 웹 프로그래밍 실무

JAVA 웹 프로그래밍 4주차 정리 (Servlet)

김브래 2023. 9. 28. 00:03

Servlet  이해와 활용


웹 서비스 처리 과정


1.사용자가 웹 브라우저 주소창에 URL입력
2.웹 브라우저가 HTTP GET 또는 HTTP POST 요청을 생성하고, 웹 서버에게 요청 전송
3.웹 서버는 요청한 페이지를 찾고, HTTP 응답을 작성하고, 웹 브라우저에 전송
4.웹 브라우저는 HTTP 응답을 수신하여 콘텐츠를 화면에 표시함
HTTP 응답은 응답 헤더(상태 코드, 컨텐츠 타입 …) 컨텐츠로 구성됨

 

3단계에서 요청이 새로운 페이지 생성이나 서버에 자료 저장인 경우

- 웹 서버가  웹 컨테이너에게 요청을 전송하면, 웹 컨테이너가 페이지를 생성하고, 웹 서버에게 전송

- 웹 서버는 HTTP 응답으로 작성하고, 웹 브라우저에 전송

 

웹 서버가 요청한 페이지를 찾지 못하는 경우

- 404 File Not Found 응답을 웹 브라우저에 전송


Servlet 정의와 특징


정의

요청-응답 프로그래밍 모델 방식으로 접근되는 응용프로그램들을 제공하는 서버의 유용성을 증대하기 위해 사용되는 Java 언어로 작성된 클래스를 의미하며,

일반적으로 Java Servlet API를 준수하는 자바 엔터프라이즈 에디션(Java EE)에 포함된 자바 클래스들을 의미한다.

 

특징

확장이 용이하고 플랫폼 독립적인 웹 응용프로그램 개발이 가능함
스레드 기반 -> 높은 효율성 제공
자바 기반 -> 자바 API를 모두 사용할 수 있음
운영체제, 하드웨어 독립적인 개발 및 운영 환경 구축 가능

객체지향 프로그래밍


주요 요소

- 객체(object)는 특징과 기능을 갖고 실제로 동작하는 프로그래밍 요소

 

- 클래스(class)는 객체를 효율적으로 생성하기 위해서 객체에 대한 정의를 수행하는 프로그래밍 요소

 

- 추상 클래스(abstract method)는 멤버 변수, 멤버 메서드, 그리고 하나 이상의 구현이 완성되지 않은 메서드,

즉 추상 메서드를 갖는 클래스

 

- 인터페이스(interface)는 멤버 변수들로만 구성되거나, 멤버 변수와 추상 메서드들로만 구성되며,

다중 상속(multiple inheritance)이 가능

 

주요 특징

캡슐화(encapsulation)

객체의 속성과 행위를 묶어서 하나의 요소로 처리하여 유지보수를 용이하게 하고,

구현에 관한 상세 사항을 외부에 감추는 기능을 함께 제공한다.

§상속성(inheritance)

두 클래스들 간의 관계로 기존의 클래스를 기반으로 하여 새로운 클래스를 정의하는 기능으로

높은 생산성과 신뢰성 있는 클래스를 정의할 수 있도록 한다.

§다형성(polymorphism)

객체의 종류에 따라 다른 연산을 수행하도록 하는 기능으로 프로그램의 확장성 및 유지보수성 증대를 제공한다.


서블릿 동작 과정


1. 사용자가 웹 브라우저를 이용하여 요청을 하면 웹 서버는 요청에 해당하는 정적인 웹 페이지를 찾는다.

 

2. 정적인 웹 페이지가 존재하지 않는 경우 웹 컨테이너에게 동적인 웹 페이지를 생성하도록 요청 정보를 전송한다.

 

3. 웹 컨테이너는 “HttpServletRequest객체와 “HttpServletResponse객체를 생성한다.

 

4. 웹 컨테이너는 해당 서블릿 객체로부터 서블릿 스레드를 생성하며, 이 때 생성된 요청, 응답 객체를 매개변수로 전달한다. 만약 서블릿 객체가 존재하지 않는 경우 서블릿 클래스를 메모리에 적재하고, 서블릿 객체를 생성한다.

5. 웹 컨테이너는 서블릿 스레드의 service() 메서드를 호출하고, 요청한 HTTP 메서드를 처리할 수 있는 메서드를 결정한다.

 

6. 요청한 HTTP 메서드를 실행하여 동적인 웹 페이지를 생성한 후, 이를 응답 객체에 저장한다.

7. 웹 컨테이너는 동적인 웹 페이지, 컨텐츠를 웹 서버에서 전송한다.

 

8. 웹 서버는 동적으로 생성된 웹 페이지, 컨텐츠에 응답 헤더를 추가하여 HTTP 응답을 작성하고 이를 웹 브라우저에게 전송한다.

- 웹 브라우저는 전송받은 HTTP 응답을 분석하고, 화면에 표시한다.


서블릿 생명 주기


서블릿 클래스 파일을 메모리에 적재(loading)하고, 생성자를 호출하여 인스턴트 생성

 

인스턴스화된 서블릿 객체의 초기화를 위해 init() 메서드 호출

 

③ 요청마다 새로운 서블릿 스레드 생성하고, service() 메서드 호출

 

④ 요청한 HTTP 메서드에 따라 doGet() 또는 doPost() 등을 호출

 

서블릿 소멸화를 위해 destroy() 메서드 호출

- 응답이 필요없거나 컨테이너로부터 종료 요청을 받은 경우 자원 정리 등 추가 작업을 처리한다.