교육 (Today I Learned)/SeSAC

SeSAC 35일차 / Web Application Technology

Bay Im 2023. 9. 5. 12:59
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)
        • 요구나 응답에 필요한 내용을 포함하고 있다.
    • HTTP 요청 메시지 구조
      • Client 요청 과정
        1. 클라이언트는 지정된 포트로 서버와 접촉한다.
        2. METHOD라는 HTTP 명령어를 지정함으로써 문서요청(request)을 요청메소드 URI, 프로토콜 형식의 순서로 보낸다.
        3. 클라이언트는 서버에게 옵션 헤더 정보를 보내 자신의 구성과 받아 들일 수 있는 문서 형식을 알린다.
        4. 요청에서 헤더를 보내기 전에 클라이언트는 부가적인 데이터를 보낼 수도 있다.
        5. 헤더 정보 다음에 빈칸(CR LF)으로 요청을 마치는 표시를 보낸다.
    • HTTP 응답 메시지 구조
      • 서버의 응답 과정
        1. 서버는 필드 3개(HTTP 버전, 상태코드)로 구성된 스타트 라인으로 응답한다.
        2. 스타트 라인 뒤에 서버 자체와 요청 문서에 대한 헤더 정보를 클라이언트에게 보냄
        3. 클라이언트 요청이 성공적이었으면 요청된 데이터가 보내진다. 거절된 경우 왜 거절되었는지 클라이언트가 읽을 수 있는 형태의 메시지를 응답한다.
        4. 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에서 지정한 차원을 요구하면 서버는 요구와 응답의 관계를 선택할 수 있는 권한을 클라이언트에게 부여한다.

 

  • 웹 어플리케이션(Web Application)의 개요
    • 웹 어플리케이션은 웹 브라우저를 통해 서버에 있는 프로그램과 데이터를 호출해 사용하는 방식의 어플리케이션을 말한다.

 

  • 클라이언트 측 웹 기술
    • SGML(Standard Generalized Markup Language)
      • 국제 표준 문서 작성 언어로써 문서의 각 구성 요소가 논리적인 구조를 갖도록 문서의 계층적 구조를 설명할 수 있는 방법을 제시
    • HTML(Hyper Text Markup Language)
      • 인터넷에서 정보를 보여주기 위한 하이퍼 텍스트를 만드는 표준적인 언어이며 홈페이지를 만들 때 쓰이는 언어이다.
    • DHTML(Dynamic HTML)
      • 동적으로 표현할 수 있는 html을 말한다. 동적인 페이지란 자신에게 필요한 정보를 구하러 오는 사람들에게 쉽고 편하게 웹페이지를 경험할 수 있도록 해준다.
    • XML(Extensible Markup Language)
      • html과 같이 Markup Language이다. 마크업 언어를 정의하기 위한 언어이다. html과는 달리 태그를 정의할 수 있고 데이터를 기술할 수 있다.

 

  • 서버 측 웹 기술
    • 서버 측 웹 기술은 클라이언트의 요청을 처리하기 위한 서버 측 프로그램 기술을 말한다.
    • 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

 

728x90