728x90

 

1. 웹 관련 용어

 

✅ 웹

 

🔸웹의 의미

  • 팀 버너스 리가 제안한 인터넷 기반의 정보 공유 서비스
    • = World Wide Web, WWW, W3
    • 인터넷 상에 분산되어 존재하는 다양한 정보를 통일된 방법으로 찾아볼 수 있게 하는 정보 서비스
  • 인터넷 기반의 전 세계적인 정보 공유 공간
    • 분산된 웹 서버에 존재하는 하이퍼텍스트(hypertext) 문서들이 서로 연결된 시스템

 

🔸하이퍼텍스트

  • 웹 상에 존재하는 문서 형태로서 텍스트 외에 이미지, 동영상 등의 멀티미디어 요소를 포함 → 구조화된 문서
  • 하이퍼링크(hyperlink)를 통해 다른 하이퍼텍스트와 연결됨 = 문서와 문서가 연결된 구조
  • 웹 브라우저를 이용해 하이퍼텍스트를 볼 수 있음
  • HTML로 표현되며 HTTP 프로토콜을 사용하여 전송됨

 

🔸W3C

  • World Wide Web Consortium의 약자
  • 국제 웹 표준화 기구 => HTML, HTTP, XML 등의 웹 관련 기술 관리

 

 

 

 

 

✅ 웹 문서

 

1. 정적 웹 문서

출처: 방송통신대학교

  • 정적인 텍스트로 문서의 내용이 바뀌지 않음
  • 클라이언트가 서버에게 정적 웹 문서를 요청하면, 서버는 해당 문서를 찾아서 전달함
  • 정적 웹 문서를 요청하면 항상 동일한 결과가 전달됨

 

 

 

2. 동적 웹 문서

출처: 방송통신대학교

  • 동적 웹 문서를 사용하여 최종 결과가 동적으로 만들어짐 => 클라이언트 측 처리와 서버 측 처리 방식이 있음
  • JSP는 동적 웹 문서를 작성하는 기술

 

 

 

 

 

 

 

 


2. 웹 애플리케이션의 실행과 구성 요소

 

  • 웹 애플리케이션: 웹에서 실행되는 응용 프로그램
  • 웹 애플리케이션의 구분
    1. 클라이언트 측 실행 / 서버 측 실행
    2. 컴파일 방식 / 비컴파일 방식

 

 

 

🔸웹 서비스 제공과 구성 요소

출처: 방송통신대학교

  • 웹 클라이언트(브라우저): 웹 브라우저는 웹 서버에 요청을 보내고 응답 결과를 출력
  • 웹 서버: 클라이언트의 요청을 처리하도록 프로세스를 관리하고 요청을 처리한 결과를 클라이언트에게 보냄
  • 웹 애플리케이션 서버(WAS, 웹 컨테이너): 웹 애플리케이션의 실행 환경으로 JSP 프로그램을 실행시키고 결과를 웹 서버에 전달
  • 데이터베이스: 웹 서비스 수행에 필요한 데이터를 저장하고 제공

 

 

 

 

 

✅ 웹 애플리케이션과 실행 위치

클라이언트 측 실행 서버 측 실행
- 웹 문서에 동적 요소를 포함 시켜 클라이언트에게 전송
- 웹 브라우저가 해석하여 페이지를 생성
- 애플릿, Javascript, 플래시 
- 단점: 보안의 문제
- 서버에서 실행되어 응답 문서를 동적으로 생성
- 웹 애플리케이션 서버가 수행한 결과가 브라우저에 전송됨
- 서블릿, JSP, ASP, PHP, CGI 방식
- 단점: 서버의 부담

 

 

 

 

 

✅ 웹 애플리케이션의 구현 방식

컴파일 방식 비컴파일 방식
- 컴파일 과정을 통해 실행 파일이나 바이트 코드가 만들어져 사용됨
- Java, 서블릿, JSP
- Perl, C, C++을 이용한 *CGI 방식
- 매 요청마다 스크립트를 해석하여 실행하는 방식
- Javascript는 클라이언트에서 실행되는 스크립트 언어

 

 

 

🔸CGI(Common Gateway Interface)

출처: 방송통신대학교

  • 동적으로 웹 페이지를 생성하기 위한 방식 중 하나
    • 고급 언어 프로그램을 실행시켜 HTML 코드를 생성한 후 전달함

출처: 방송통신대학교

  • 웹 서버가 응용 프로그램을 직접 호출
    • 클라이언트의 요청이 있으면 해당 프로그램을 실행시키기 위해 개별 프로세스를 생성함 → 동일한 CGI를 요청해도 요청의 개수만큼 프로세스를 생성하므로 웹 서버에 부하를 줌

 

 

 

🔸WAS(Web Application Server)

출처: 방송통신대학교

  • 서버의 성능을 개선하기 위해 웹 서버의 기능을 분리
  • 웹 서비스의 처리를 위해 동적 페이지를 만들거나 비지니스 로직을 처리(동적 웹 서비스를 담당하는 서버)
  • 웹 애플리케이션을 실행하고 관리하는 별도의 전담 프로그램
    • 모든 요청에 대해 매번 프로세스를 생성하지 않고, 하나의 자바 가상 기계 내에서 수행함
    • 요청을 처리하기 위해 스레드를 생성
  • 웹 페이지 생성 외에도 많은 기능을 수행: API제공, 부하 균형(로드 밸런싱), 고장 조치 등

 

 

 

🔸웹 서버

출처: 방송통신대학교

  • 클라이언트로부터 요청을 받고 결과를 전달하는 기능
    • 예) Apache HTTP Server, IIS, NginX
  • HTTP 프로토콜을 사용하여 클라이언트와 통신함
    • HTTP는 클라이언트와 웹 서버 간에 웹 문서를 전송하기 위한 통신 규약이며 웹 서버를 HTTP 서버라고 함
  • 구체적인 기능
    • 클라이언트가 요청한 웹 문서를 찾아 전달
    • 클라이언트 요청에 대한 기본적 사용자 인증을 처리
    • 문제가 있으면 정해진 코드 값으로 응답
    • 프로그램 실행 요청이 있으면 처리 후 그 결과를 전달

 

 

 

 

 

 

 


3. JSP와 웹 컨테이너

 

✅ 서블릿

출처: 방송통신대학교

  • Server + Applet = Servelt
    • 웹 페이지를 동적으로 생성하기 위한 서버 측 Java 클래스
    • Java 언어에 기초한 웹 프로그램 개발 기술
  • Java 언어로 서블릿 클래스를 만들고, 컴파일된 바이트 코드를 서버에 탑재하여 웹 서비스를 제공 → 소스를 수정하면 다시 컴파일하여 서버에 탑재해야 함

 

 

 

 

 

✅ JSP(JavaServer Pages)

JSP의 처리과정

  • 서블릿 대신에 사용할 수 있는 스크립트 형식의 언어 => HTML 페이지 내에 삽입됨
  • JSP 페이지는 서블릿으로 변환됨
    • 웹 애플리케이션 서버가 자동으로 JSP페이지를 변환하고 컴파일하여 웹 서비스를 제공
  • Java EE를 구성하는 기술 중 하나 (예:JSTL)
  • 특징
    • 스크립트 언어로 HTML 페이지에 삽입됨
    • Java 언어의 특성을 활용
    • 표현 언어, 표현식, 액션 태그 등의 스크립트적 요소를 제공
    • 다양한 개발 환경이 오픈 소스로 제공됨
    • JSP는 오픈 소스 형태로 운영되므로 다양한 기술이 지원됨
    • JSP 기술은 플랫폼에 독립적(.NET 기술은 개발과 운용 환경에 제약이 있음)

 

 

 

 

 

✅ 웹 컨테이너(=WAS)

  • 웹 컴포넌트를 저장하고 서블릿의 생명주기를 관리 => 클라이언트의 서블릿 요청을 실행시키는 역할
  • 서블릿 컨테이너라고도 함
    • Java로 구현된 서블릿 엔진(서블릿 실행 환경)
    • JSP를 서블릿으로 변환하는 기능을 포함
  • Tomcat, WildFly, WebLogic, WebSphere, JBoss 등

 

 

 

 

 

🔸웹 서버에서 서블릿이 실행되기 위한 환경

  • 웹 서버
  • 자바 실행 환경(JDK)
  • 서블릿 컨테이너(예: Tomcat)

 

 

 

 

 

🔸JSP 컨테이너

  • JSP 페이지를 서블릿 프로그램으로 변환
  • 대부분의 서블릿 컨테이너는 JSP컨테이너 기능을 포함
  • JSP 컨테이너 자체가 서블릿으로 구현되어 있으며 서블릿 컨테이너에 의해 실행됨

 

 

 

 

 

 

 


4. HTTP 프로토콜

 

✅ HTTP 프로토콜

  • 웹 서버와 클라이언트가 통신하는 규약으로 TCP 프로토콜에 기초한 애플리케이션 계층 프로토콜
  • Connection oriented & Stateless 특성
    • 요청을 위해 접속을 해야 함
    • 서버가 응답한 후에 서버는 클라이언트의 상태를 유지하지 않음
    • 웹 서버의 부담이 줄어드나 상태 관리를 위해 쿠키 세션 등이 필요
  • HTTP 요청과 응답 절차
    • 연결 설정 → 요청 메세지 전송 → 응답 메세지 전송 → 연결 끊기

 

 

 

 

 

 

✅HTTP 요청 메세지 구조

 

1. 시작 라인: 요청 방식, URI, 버전 번호

  • GET: 웹 서버에게 요청 대상에 대해 처리 방식을 지정
  • /index.html: 서버에 존재하는 파일의 URI
  • HTTP/1.1:HTTP의 버전

 

2. 요청 헤더

  • 한 라인에 하나씩 헤더 정보를 기술
  • 각 라인은 "헤더필드이름:값" 형식으로 구성됨
  • 요청 헤더의 끝에 공백 라인을 둠

예) 요청 헤더

3. 요청 메세지 몸체

  • POST 요청 방식에서만 의미있음
  • HTML 폼에서 작성한 데이터를 POST 방식으로 전송할 때 사용

 

 

 

 

 

✅ HTTP 응답 메세지 구조

  • 시작 라인, 응답 헤더, 응답 몸체로 구성
    • 시작 라인 구성: HTTP 버전, 서버의 응답 코드, 설명

출처: 방송통신대학교

🔸서버의 응답 코드와 설명

200 OK 클라이언트 요청이 성공적으로 끝남
400 Bad Request 잘못된 요청
401 Unauthorized 인증 오류
403 Forbidden 사용자 허가 모드 오류
404 Not Found 요청한 문서가 존재하지 않음
405 Method Not Allowed 요청한 방식을 지원하지 않음
500 Internal Sever Error 서버에서의 실행 오류
503 Server Unavailable 일시적으로 요청을 처리할 수 없음

 

 

 

 

 

728x90

'KNOU > JSP프로그래밍' 카테고리의 다른 글

[JSP프로그래밍] 2. 개발 환경 설정하기  (0) 2022.10.30

+ Recent posts