728x90
1. 웹 관련 용어
✅ 웹
🔸웹의 의미
- 팀 버너스 리가 제안한 인터넷 기반의 정보 공유 서비스
- = World Wide Web, WWW, W3
- 인터넷 상에 분산되어 존재하는 다양한 정보를 통일된 방법으로 찾아볼 수 있게 하는 정보 서비스
- 인터넷 기반의 전 세계적인 정보 공유 공간
- 분산된 웹 서버에 존재하는 하이퍼텍스트(hypertext) 문서들이 서로 연결된 시스템
🔸하이퍼텍스트
- 웹 상에 존재하는 문서 형태로서 텍스트 외에 이미지, 동영상 등의 멀티미디어 요소를 포함 → 구조화된 문서
- 하이퍼링크(hyperlink)를 통해 다른 하이퍼텍스트와 연결됨 = 문서와 문서가 연결된 구조
- 웹 브라우저를 이용해 하이퍼텍스트를 볼 수 있음
- HTML로 표현되며 HTTP 프로토콜을 사용하여 전송됨
🔸W3C
- World Wide Web Consortium의 약자
- 국제 웹 표준화 기구 => HTML, HTTP, XML 등의 웹 관련 기술 관리
✅ 웹 문서
1. 정적 웹 문서
- 정적인 텍스트로 문서의 내용이 바뀌지 않음
- 클라이언트가 서버에게 정적 웹 문서를 요청하면, 서버는 해당 문서를 찾아서 전달함
- 정적 웹 문서를 요청하면 항상 동일한 결과가 전달됨
2. 동적 웹 문서
- 동적 웹 문서를 사용하여 최종 결과가 동적으로 만들어짐 => 클라이언트 측 처리와 서버 측 처리 방식이 있음
- JSP는 동적 웹 문서를 작성하는 기술
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)
- 서블릿 대신에 사용할 수 있는 스크립트 형식의 언어 => 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 |
---|