SeSAC 35일차(2023-09-04)
Web Application Technology
Web Application Technology
- 웹 서버(Web Server)
- 웹을 통해 접근하는 사용자에게 적절한 응답을 줄 수 있도록 하는 서버 프로그래밍과 시스템을 의미
- 웹 브라우저(Web Browser)
- 웹 기반의 서비스를 받을 수 있도록 가능하게 해주는 프로그램
- HTTP(Hyper Text Transfer Protocol)
- HTTP(Hyper Text Transfer Protocol)란 WWW(World Wide Web)에서 웹 브라우저를 통해 볼 수 있게 해주는 인터넷 통신 규약
- Client의 요구(Request) 메시지
- Server의 응답(Reponse) 메시지
- Stateless 상태: 연결 상태를 유지하고 있지않다.
- 메시지의 구성
- 메시지 헤더(Message Header)
- HTTP 메시지의 부가적인 정보를 포함하고 있다.
- 날짜, 프로그램 이름과 버전 정보, 쿠키와 캐시에 대한 정보
- 헤더의 구성: “[헤더이름:헤더정보]+CRLF” 형태
- 헤더의 형태(요구/응답 메시지에 모두 사용)
- 일반헤더(General Header)
- 요구헤더(Request Header)
- 응답헤더(Response Header)
- 엔티티헤더(Entity Header)
- 메시지 바디(Message Body)
- 요구나 응답에 필요한 내용을 포함하고 있다.
- 메시지 헤더(Message Header)
- HTTP 요청 메시지 구조
- Client 요청 과정
- 클라이언트는 지정된 포트로 서버와 접촉한다.
- METHOD라는 HTTP 명령어를 지정함으로써 문서요청(request)을 요청메소드 URI, 프로토콜 형식의 순서로 보낸다.
- 클라이언트는 서버에게 옵션 헤더 정보를 보내 자신의 구성과 받아 들일 수 있는 문서 형식을 알린다.
- 요청에서 헤더를 보내기 전에 클라이언트는 부가적인 데이터를 보낼 수도 있다.
- 헤더 정보 다음에 빈칸(CR LF)으로 요청을 마치는 표시를 보낸다.
- Client 요청 과정
- HTTP 응답 메시지 구조
- 서버의 응답 과정
- 서버는 필드 3개(HTTP 버전, 상태코드)로 구성된 스타트 라인으로 응답한다.
- 스타트 라인 뒤에 서버 자체와 요청 문서에 대한 헤더 정보를 클라이언트에게 보냄
- 클라이언트 요청이 성공적이었으면 요청된 데이터가 보내진다. 거절된 경우 왜 거절되었는지 클라이언트가 읽을 수 있는 형태의 메시지를 응답한다.
- HTTP 1.0에서 서버가 요청된 데이터를 전송하고 나면 Connection:Keep-Alive 헤더를 전달 받지 않는한 클라이언트로부터 연결을 끊고 트랜잭션을 종료한다.
- HTTP 상태 코드 표
- 404: 서버는 요구된 URL을 찾을 수 없음
- 500: 서버에 내부적으로 오류가 발생하여 더 이상 진행할 수 없음
- 501: 요청된 request는 합법적이나 서버는 요구된 method를 지원하지 않음
- 서버의 응답 과정
- HTTP 수행 방식(메소드)
- 메소드는 서버에게 클라이언트 요청을 전달하는 방법을 의미
- 메소드는 request header 부분에 명시된다.
- HTTP에서 정의된 주요 메소드: GET, POST, HEAD
- GET
- 요청의 타입 중에서 가장 단순
- 정적인 자원에 접근하기 위한 요청에 가장 자주 사용
- 길이에 제한이 있다.
<form method="get" action="www.domain.com/sample.jsp"> <input type="text" name="name" value="홍길동"> <input type="text" name="name" value="홍길동"> </form>
- POST
- 데이터를 메시지 바디에 포함하여 입출력 스트림을 통해 처리
- 데이터 크기에 제한이 없다.
- 많은 양의 복잡한 정보를 전송할 필요가 있을 때 사용
<form method="post" action="www.domain.com/sample.jsp"> <input type="text" name="name" value="홍길동"> <input type="password" name="pass" value="1234"> <input type="submit" name="submit" value="전송"> </form>
- 그 외 수행 방식
- Head
- 헤더 정보만 서버에 요구하는 명령
- Put
- 메시지 바디 부분의 데이터를 지정한 요구 URL에 저장
- Delete
- 서버에서 요구 URL에 지정된 자원을 지운다.
- Trace
- 요구 메시지가 최종 수신처에 도달 경로를 알아낼 때 사용
- Options
- 요구 URL에서 지정한 차원을 요구하면 서버는 요구와 응답의 관계를 선택할 수 있는 권한을 클라이언트에게 부여한다.
- Head
- HTTP(Hyper Text Transfer Protocol)란 WWW(World Wide Web)에서 웹 브라우저를 통해 볼 수 있게 해주는 인터넷 통신 규약
- 웹 어플리케이션(Web Application)의 개요
- 웹 어플리케이션은 웹 브라우저를 통해 서버에 있는 프로그램과 데이터를 호출해 사용하는 방식의 어플리케이션을 말한다.
- 클라이언트 측 웹 기술
- SGML(Standard Generalized Markup Language)
- 국제 표준 문서 작성 언어로써 문서의 각 구성 요소가 논리적인 구조를 갖도록 문서의 계층적 구조를 설명할 수 있는 방법을 제시
- HTML(Hyper Text Markup Language)
- 인터넷에서 정보를 보여주기 위한 하이퍼 텍스트를 만드는 표준적인 언어이며 홈페이지를 만들 때 쓰이는 언어이다.
- DHTML(Dynamic HTML)
- 동적으로 표현할 수 있는 html을 말한다. 동적인 페이지란 자신에게 필요한 정보를 구하러 오는 사람들에게 쉽고 편하게 웹페이지를 경험할 수 있도록 해준다.
- XML(Extensible Markup Language)
- html과 같이 Markup Language이다. 마크업 언어를 정의하기 위한 언어이다. html과는 달리 태그를 정의할 수 있고 데이터를 기술할 수 있다.
- SGML(Standard Generalized Markup Language)
- 서버 측 웹 기술
- 서버 측 웹 기술은 클라이언트의 요청을 처리하기 위한 서버 측 프로그램 기술을 말한다.
- CGI(Common Gateway Interface)
- 웹브라우저에서 HTML로 여러가지 정보를 처리하지만, 그 기능만으로 모든 정보처리를 다 할 수 없다. 이것을 보충하기 위한 외부 프로그램과 웹 서버(HTTP Server) 간의 연결 역할을 하기 위한 규약이 CGI이다.
- PHP(Hypertext Preprocessor)
- 동적 홈페이지를 작성하기 위한 서버 베이스 스크립트 언어이다.
- 자바스크립터가 클라이언터에서 실행되는 스크립트 언어임에 비해 PHP는 웹 서버에서 실행된다.
- ASP(Active Server Pages)
- IIS 3.0 이상에서만 동작하는 서버용 스크립트 언어이다. WWW나 인트라넷에서 사용될 수 있는 대화형 HTML 페이지를 제작할 수 있도록 고안되었다.
- 서블릿(Servlet)
- 기존 CGI가 가지고 있는 성능저하를 개선하기 위해서 나온 자바 기반 웹 어플리케이션 기술이다.
- JSP(Java Server Page)
- HTML문서 안에 자바 코드를 넣는 형식으로 Server-side script 방식이다.
- 자바가 제공하는 모든 기능을 자유롭게 사용 가능하고 JDBC도 사용 가능하다.
- J2EE(Java2 Enterprise Edition)의 배경
- J2EE는 분산 객체, 효율적 자원 관리, 컴포넌트 기반 개발 등을 자바 환경에서 사용할 수 있도록 하는 표준 규약
- 네트워크 환경
- 서버와 클라이언트를 별도의 프로그램으로 개발
- 웹 환경
- 서버는 웹 브라우저를 통해 HTML 문서 양식을 보내주는 표면적인 일 외에도 웹 프로토콜을 효과적으로 지원할 수 있어야 한다.
- 많은 부하를 서버가 제대로 감당해야 한다.
- HTTP가 사용자의 세션을 지속적으로 유지하지 않는 단점을 서버쪽에서 극복할 수 있어야 한다.
- 분산 환경
- 분산 객체 기술에서는 산재한 자원을 객체 지향 개념을 적용시켜 분산 객체로 만들어 놓고 이들 사이의 의사 소통 규약을 정의한다.
- J2EE의 구성
- J2EE는 독립적인 것이 아니라 여러 가지 구성 요소들의 집합이다.
- 분산 객체와 컴포넌트 기반 개발은 EJB(Enterprise Java Beans)로 지원한다.
- 효율적인 자원 관리는 JTA, JDBC를 사용해서 담당한다.
- 웹 환경은 서블릿과 JSP 맡는다.
- J2EE 구성 요소
- EJB(Enterprise Java Beans)
- 서블릿(Servlet), JSP(Java Server Page)
- JDBC
- JNDI(Java Naming and Directory Interface)
- JavaMail
- JMS(Java Message Service)
- JTA(Java Transaction API)
- JAF(JavaBeans Activation Framework)
- RMI-IIOP
- JavaIDL
- J2EE는 독립적인 것이 아니라 여러 가지 구성 요소들의 집합이다.
728x90
'교육 (Today I Learned) > SeSAC' 카테고리의 다른 글
SeSAC 37일차 / 자바빈 (0) | 2023.09.07 |
---|---|
SeSAC 36일차 / Web Application Programming, Form 태그를 이용한 서블릿 개발, JSP 표준 action (1) | 2023.09.05 |
SeSAC 34일차 / Java Script, JSP 표준 Action (0) | 2023.09.02 |
SeSAC 33일차 / Java Script (0) | 2023.09.01 |
SeSAC 32일차 / HTML, JSP 실습 (0) | 2023.08.31 |