본문 바로가기
IT ▶/Java & Web

[웹 프로그래밍 개념] 웹 Web 이란? (서블릿, JSP, 컨테이너, HTTP)

by 오프로 2020. 4. 4.

 

 

 

 

 

1> 웹 (Web) : 클라이언트가 서버에 정보를 요청하면 응답하는 콘텐츠

 

 

- 정적 웹 : 웹서버에 잇는 웹 문서를 클라이언트에 제공 (HTML, GIF, JPG, PDF, PPR )

 

- 동적 웹 : 요청 시마다 다른 웹 문서를 클라이언트에 제공 (CGI, ASP, PHP, 서블릿, JSP )

 

 

 

 

 

 

 

2> 서블릿 (Servlet) : 클라이언트가 웹 브라우저 통해 요청하면 서버에서 실행한 후 결과 클라이언트 전송

 

 

- 뷰를 통해 요청을 받은 것을 처리하는 컨트롤러 구현

 

 

서블릿 동작 원리

 

 

 

 

 

3> JSP (Java Server Page) : HTML 페이지 안에서 스크립트 형태 구현, View 뷰 페이지 만들 때 사용

 

 

- (View) : 간단히 클라이언트로부터 받은 요청 처리된 결과를 보여주는 페이지 (화면)

 

 

JSP 동작 원리

 

 

 

4> 웹 서비스 : RESTFUL 기반 (URI 방식으로 호출하여 HTTP 요청방식을 접근)

 

 

5> 웹 서버 (Web Server)

 

 

- 웹에서 서버 기능을 수행하는 프로그램

 

- HTTP 프로토콜 기반

 

- 클라이언트(브라우저) 요청을 처리하는 기능

 

 

Web서버 동작원리

 

 

 

6> 웹 어플리케이션 서버 (WAS)

 

 

- 웹서버의 기능을 분리하여 처리하는 기능

 

- 요청과 화면 표현 서비스만 웹서버에서 처리, 나머지 다른 기능을 WAS에서 처리

 

 

 

 

7> 컨테이너

 

 

- 웹 컴포넌트 저장소, 메모리 로딩, 객체 생섯 및 초기화, JSP 서블릿 변환 수행 프로그램

 

- 서블릿 컨테이너 : 클라이언트 요청에 따라 서블릿 수행

 

- JSP 컨테이너 : JSP 파일 -> 서블릿 소스 변환, 컴파일 프로그램

 

 

 

 

8> HTTP 프로토콜 통신

 

 

 

1. 의미

 

 

- 서버와 클라이언트 간 HTTP 프로토콜 기반 통신으로 동작

 

- TCP/IP 4계층 어플리케이션 계층 프로토콜

 

- 전송 계층에서 TCP 통해 웹브라우저와 웹 서버 간 통신

 

 

 

2. 주요 특징

 

 

- 무연결 : 연결을 유지하지 않은 상태로 요청, 응답을 통해 데이터 송수신 가능

 

- 무상태 : 이전 상태 정보가 유지되지 않는 특성

 

 

 

3. HTTP 요청정보

 

 

- 서비스 요청 : 웹브라우저에서 링크를 클릭하거나 버튼을 클릭하여 서비스를 요청하면 HTTP 요청정보를 생성하여 웹서버에 전달

 

- 요청정보 구조 : 헤더(요청방식 + URI + HTTP버전 등) + 바디

 

Header : METHOD Request-URI HTTP-Version

 

 

 

4. 요청방식

 

 

Web 클라이언트가 Web 서버에 요청하는 방식

 

 

- GET : 웹 브라우저 주소 URL을 직접 입력, URI 뒤에 ? 기호와 함께 문자열 전달

(정보 노출, 문자열 길이 제한), 빠른 속도

 

- POST : HTTP 요청정보 몸체(Body)에 정보 전달 (정보 노출X, 데이터 크기 제한 X),

느린 속도 (클라이언트 인코딩, 서버 디코딩으로 인하여)

 

- PUT : 파일 업로드 케이스, 보통 Update 같이 리소스 수정 시 PUT 사용 (CREATE or INSERT POST 방식)

 

- DELETE : 데이터 삭제 케이스

 

 

 

 

5. 요청 URI

 

 

Web 클라이언트 – 요청(서비스문서) -> Web 서버

 

URL = 프로토콜 서버주소 포트번호 서버자원(URI)

 

 

- 프로토콜 : 서버와 통신하기 위한 규약 (웹서버 : HTTP://, 오라클DBMS : jdbc:oracle:thin:@)

 

- 서버 주소 : 네트워크 통한 컴퓨터 IP 주소 또는 도메인

 

- 포트번호 : 서버로 접속하기 위한 정보 (0~65,535)

 

 

- URI : 포트번호 다음부터 URI

 

 

<URI 예시>

 

https://lovefor-you.tistory.com:80/294

 

서버주소

포트번호

URI

https://www.love-for.tistory.com

80

/123

 

 

 

 

6. 요청정보 헤더 (Header)

 

 

Accept

클라이언트 처리 파일형식

text/html, application/html+xml

Accept-Encoding

클라이언트 인코딩 방식

gzip, deflate, sdch

Accept-Language

클라이언트 지원 언어

ko-KR, en-US;q=0..1

User-Agent

웹 브라우저 정보

Chrome/51.1.123.12, Safari/123.12

Cache-Control

클라이언트가 서버한테 받은 응답 정보 저장 (재사용)

no-cache, no-store, max-age

 

 

 

7. HTTP 응답정보

 

 

웹서버에서 클라이언트로 응답

 

 

응답정보 = 상태줄 + 헤더 + 몸체(Body)

 

 

- 상태줄 : HTTP 버전, 상태코드 (Status-code), 상태코드 설명 (Reason-phrase)

 

- 상태코드 : 클라이언트 요청 처리결과, 3자리 숫자

 

 

200 : 정상처리

404 NOT FOUND : 클라이언트 요청한 URI에 해당하는 문서 정보가 서버에 없음)

400 Bad Request : 클라이언트 요청에 문법적인 오류 요청

 

 

 

- 응답정보 헤더

 

 

Cache-Control

응답 결과를 캐시에 저장할지 설정

public : 어떠한 캐시도 캐시 X

private : 공유된 캐시는 캐시 X

public, private, no-cache,

Connection

연결을 위한 정보로 클라이언트, 서버 중 하나가 연결 해제를 원하는 것

close

Connection-Encoding

메시지 전송 인코딩 지정

gzip

Content-Type

메시지 데이터 포맷

(클라이언트, 서버 동일하여야함)

text/html; charset=UTF-8

Date

서버 응답 시간

Tue, 1 June 2020 11:11:11 GMT

Server

서버 정보 (이름, 버전)

nginx

 

 

 

 

728x90
300x250