Presentation is loading. Please wait.

Presentation is loading. Please wait.

1강 01장. 웹과 자바.

Similar presentations


Presentation on theme: "1강 01장. 웹과 자바."— Presentation transcript:

1 1강 01장. 웹과 자바

2 자바는 객체지향 프로그래밍 언어이면서 웹 프로그래밍에 적합한 언어이다
자바는 객체지향 프로그래밍 언어이면서 웹 프로그래밍에 적합한 언어이다. 따라서 오늘날 많은 웹 서비스들이 자바 기반으로 개발되어 제공되고 있으며 자바 기반 웹 서비스의 효율성을 높이기 위한 많은 기술들이 발표되고 있는 실정이다. 이 장에서는 웹과 자바 기반 웹 서비스를 이해하는데 필요한 각종 용어들의 의미를 살펴보고, 자바 기반 웹 서비스가 어떤 구조와 구성요소를 가지고 제공되는지 알아본다.

3 자바 기반 웹 서비스 제공 방식을 이해 웹과 관련된 기본 용어에 관해 기술 JSP의 특징 및 관련 개념을 설명 HTTP 프로토콜을 이해

4 웹이란? 웹의 의미 인터넷 기반의 정보 공유 서비스 유럽 입자물리학 연구소(CERN)의 팀 버너스 리가 제안
World Wide Web, WWW, 또는 W3라 함 인터넷 상에 분산되어 존재하는 다양한 정보를 통일된 방법으로 찾아볼 수 있게 하는 정보 서비스 분산된 웹 서버에 존재하는 hypertext 문서들이 서로 연결된 시스템 유럽 입자물리학 연구소(CERN)의 팀 버너스 리가 제안 인터넷에 연결된 컴퓨터들을 통해 사람들이 정보를 공유할 수 있는 전 세계적인 정보 공간 하이퍼텍스트들이 상호 연결되어 있는 문서 시스템 하이퍼텍스트 형식으로 표현된 인터넷 상의 정보들을 효과적으로 검색하는 서비스(웹은 인터넷 상에서 동작하는 하나의 서비스) 1989년3월 물리학자 상호간의 신속한 정보 교환과 공동 연구를 위해 시작 넷스케이프의 전신인 모자익이 개발된 후 웹이 대중화

5 웹이란? 하이퍼텍스트 W3C 텍스트 뿐만 아니라 이미지, 동영상과 같은 멀티미디어 요소를 포함한 웹 페이지
텍스트 뿐만 아니라 이미지, 동영상과 같은 멀티미디어 요소를 포함한 웹 페이지 웹 브라우저를 이용해 볼 수 있으며, hyperlink로 다른 하이퍼텍스트와 연결됨 HTLM로 표현되며 HTTP 프로토콜을 사용하여 전송됨 W3C 월드와이드 웹 컨소시엄이 HTML, HTTP 등의 웹 관련 기술을 관리함 URL(Uniform Resource Locator) 네트워크 상에 존재하는 자원의 위치, 웹 사이트 상의 웹 페이지 뿐만 아니라 네트워크 상의 모드 자원의 위치 이러한 자원을 이용하려면 적당한 프로토콜을 알아야 함 scheme://domain:port/path?query_string#fragment_id 프로토콜 이름(스킴 이름): 호스트이름이 필요없는 형태 HTTP 1999년에 1.1이 발표됨 HTTP로 전달되는 요청/응답은 http: 로 시작하는 URL

6 웹 문서 정적 웹 문서 클라이언트가 서버에게 요청하면 응답되는 컨텐츠 클라이언트가 요청하면 항상 동일한 문서가 전달되는 경우
클라이언트가 요청하면 항상 동일한 문서가 전달되는 경우 정적인 텍스트로 문서의 내용이 바뀌지 않음

7 <HTML> <HEAD> <TITLE>내 홈 페이지</TITLE> </HEAD> <BODY> <h2>방문을 환영합니다.</h2> </BODY> </HTML>

8 웹 문서 동적 웹 문서 클라이언트에 전달되는 문서의 내용이 동적으로 바뀜 웹 문서에 동적인 요소를 포함시켜 클라이언트에 전송
클라이언트(웹 브라우저)가 해석하여 보여줌 JavaScript, Applet 서버가 어플리케이션을 통해 문서를 동적으로 생성한 후 클라이언트에 전송 CGI, JSP, ASP, PHP 등의 기술

9 웹 문서 정적 웹 문서 동적 웹 문서(서버 측 처리) Client Web Server Web Application Server
요청 a.html Client Web Server HTML 문서 동적 웹 문서(서버 측 처리) 요청 a.jsp Web Application Server Client Web Server HTML 문서 JSP 스크립트를 HTML 문서로 변환

10 <TITLE> Hello JSP! </TITLE> </HEAD> <BODY>
page language="java" contentType="text/html;charset=euc-kr" %> <HTML> <HEAD> <TITLE> Hello JSP! </TITLE> </HEAD> <BODY> 지금 시간은 : <% out.print(new java.util.Date( )); %> </BODY> </HTML> 디렉티브 (Directive) 스크립트릿 (Scriptlet)

11 웹 어플리케이션의 구성 웹 브라우저 웹 서버 웹 어플리케이션 서버 데이터베이스 웹 서비스를 요청하고 결과를 제공받는 클라이언트
클라이언트의 요청을 처리하도록 프로세스를 관리 웹 어플리케이션 서버 JSP 프로그램을 실행시키고 결과를 웹 서버에 전달 데이터베이스 웹 서비스 수행에 필요한 데이터를 저장

12 웹 서버 웹 어플리케이션 서버 웹 브라우저 (웹 컨테이너/EJB 컨테이너 ) 데이터베이스
In Java Platform, Enterprise Edition, a web container, also known as a Servlet container "implements the web component contract of the Java EE architecture".[1] This contract specifies a runtime environment for web components that includes security, concurrency, lifecycle management, transaction, deployment, and other services. A web container provides the same services as a JSP container as well as a federated view of the Java EE (formerly J2EE) platform APIs. 서블릿이나 JSP 페이지를 웹 컴포넌트라 함(그 외의 것은 EJB 컴포넌트로 비즈니스 로직을 처리) 서블릿은 Java 클래스이며 동적인 요청을 처리하고 응답을 만듦 JSP 페이지는 텍스트기반 문서로 서블릿으로 실행됨 웹 컴포넌트외에 비즈니스로직을 처리하는(EJB) 모듈까지 포함하여 어플리케이션 서버라 함 웹 컨테이너는 JSP 페이지와 서블릿 컴포넌트의 실행을 관리 ■ Java EE server: The runtime portion of a Java EE product. A Java EE server provides EJB and web containers. ■ Enterprise JavaBeans (EJB) container:Manages the execution of enterprise beans for Java EE applications. Enterprise beans and their container run on the Java EE server. ■ Web container:Manages the execution of JSP page and servlet components for Java EE applications. Web components and their container run on the Java EE server.

13 웹 어플리케이션 웹 어플리케이션의 실행 위치 클라이언트 측 서버 측 웹 브라우저에서 스크립트를 해석하여 페이지를 생성
애플릿, JavaScript, 플래시 등 보안의 문제 서버 측 웹 어플리케이션 서버가 수행한 결과를 브라우저에 전송 Java 서블릿, JSP, CGI, ASP 등 서버의 부담 동적웹응용은 업무 처리를 위해 일련의 트랜잭션을 처리하는 프로그램 집합. 데이터 처리를 포함 클라이언트 스크립트 요청하는 파일을 그대로 브라우저로 전송하고 브라우저가 그 파일 내에 있는 스크립트 언어를 해석하여 페이지 자체를 동적으로 만들어 주는 기술 종류 자바스크립트(JavaScript) DHTML(Dynamic HTML) CSS (Cascading Style Sheet) Flash 와 관련된 Actionscript Ajax (Asynchronous JavaScript and XML) 최근 Web 2.0의 패러다임을 실현하기 위해서 클라이언트 측 스크립팅 기술의 중요성이 크게 부각

14 웹 어플리케이션 컴파일 방식과 스크립트 방식 컴파일 방식은 실행 파일이나 바이트 코드가 만들어져 사용됨
Perl, C, C++, Java 서블릿, JSP 스크립트 방식은 매 요청마다 스크립트를 해석하여 실행하는 방식 클라이언트 측/서버 측 스크립트

15 CGI와 WAS CGI(Common Gateway Interface) 동적 컨텐츠를 생성하기 위한 서버 프로그래밍 방식
웹 서버를 통해 소프트웨어를 호출하는 방법 프로그램을 사용하여 HTML 코드를 만듦 초기 웹 프로그래밍에 사용된 기술 클라이언트의 요청이 있으면 해당 프로그램을 실행시키기 위해 개별 프로세스를 생성함 동일한 CGI를 요청해도 요청의 개수만큼 프로세스를 생성

16 CGI 프로그램 printf(“<html><head><title>CGI 문서</title></head>”); printf(“\n<body>”); printf(“\n \”저희 사이트를 방문해 주셔서 감사합니다.\””); printf(““\n</body></html>”); ...

17 CGI와 WAS WAS(Web Application Server) 동적인 웹 서비스를 전담하는 별도의 서버
모든 요청에 대해 매번 프로세스를 생성하지 않고 하나의 자바 가상 기계 내에서 수행함 요청을 처리하기 위해 스레드를 생성함 CGI 별도의 WAS가 필요하지 않다. C, Perl 등의 언어로 개발할 수 있다. client의 요청이 많아질수록 성능이 급격히 떨어진다. WAS 별도의 WAS가 필요하다. Java, .NET 등의 언어로 개발할 수 있다. client의 요청이 많아지더라도 성능이 급격히 떨어지지는 않는다.

18 CGI와 WAS CGI : 웹 서버가 응용 프로그램을 직접 호출 WAS : 동적 웹 서비스를 담당하는 서버
클라이언트의 요청이 많아지면 급격히 성능이 저하됨 program Client Web Server program program WAS : 동적 웹 서비스를 담당하는 서버 스레드 방식을 사용함 교재 23쪽 그림1.3 아래에서 프로세스가 아니고 프로그램임 thread Web Application Server Client Web Server thread thread

19 웹 서버와 웹 어플리케이션 서버 웹 서버 클라이언트로부터의 요청을 받고 결과를 전달하는 기능 HTTP 프로토콜을 사용함
Apache HTTP Server, IIS HTTP 프로토콜을 사용함 클라이언트와 웹 서버 사이에 웹 문서를 전송하기 위한 통신 규약 웹 서버를 HTTP 서버라고도 함 Windows 서버의 IIS

20 웹 서버와 웹 어플리케이션 서버 웹 서버의 구체적 기능 클라이언트가 요청한 웹 문서를 찾아 전달
문제가 있으면 정해진 코드 값으로 응답 클라이언트 요청에 대한 기본적 사용자 인증을 처리 프로그램 실행 요청이 있으면 처리 후 그 결과를 전달 여러 웹 클라이언트로부터의 요구를 하나의 웹 서버가 처리하게 되면 서버의 부하가 가중되고 속도 및 보안 등의 성능에 문제가 생기게 된다. 이러한 이유 때문에 여러 개의 웹 서버가 동시에 구동되도록 하는 방법을 사용하기도 하지만 이보다는 [그림 1.1]에서와 같이 웹 서버의 기능을 구조적으로 분리하여 처리하려는 목적으로 제시된 것이 바로 웹 어플리케이션 서버이다.

21 웹 서버와 웹 어플리케이션 서버 웹 어플리케이션 서버 Client 서버의 성능을 개선하기 위해 웹 서버의 기능을 분리
웹 서비스의 처리를 위해 동적 페이지를 만들거나 비즈니스 로직을 담당 Web Browser Web Server 어플리케이션 서버는 어플리케이션의 실행 환경을 제공 여러 컴포넌트로 구성. 대개 웹 서버와 같은 머신에서 수행되며 동적 페이지를 만드는 것이 주된 일. 대부분의 상용 WAS들은 웹 서버나 컨테이너의 기능 외에 트랜잭션, 보안, 트래픽 관리, DB 연결 관리, 사용자 관리 등 다양하고 강력한 기능을 제공하는 패키지들로 구성된다. 웹 서버와 연동됨 Java EE Web Server Apache, IIS client가 요청한 페이지를 그대로 client에게 전달 WAS WebLogic, WebSphere, iPlanet, Oracle 9iAS JEUS 여러 client의 요청을 동시에 처리 client 요청의 처리에 필요한 business logic의 실행 .NET 또는 J2EE platform 사용 Web Application Server(WAS) Client

22 자바와 웹 프로그래밍 서블릿 Server + Applet Java 언어에 기초한 웹 프로그램의 개발 기술
확장된 CGI 방식이나 마찬가지로 디자인과 로직 처리가 혼재 CGI와 달리 스레드 기술을 이용 Java 언어로 서블릿 클래스를 만들고 컴파일된 바이트 코드를 서버에 탑재하여 웹 서비스를 제공 소스를 수정하면 다시 컴파일하여 서버에 탑재해야 함 교재 7장 개발 작업의 효율성이 낮은 문제점이 노출되었다. 이후, 서블릿의 이러한 단점을 보완하기위해 스크립트 방식의 자바 기반 웹 프로그래밍 표준으로 JSP가 제안되었다. JSP는 일일이 프로그램 코드를 컴파일 하여 탑재하는 방식이 아니라 JSP로 작성된 소스코드를 서버에 탑재하면 웹 어플리케이션 서버나 웹 컨테이너가 자동으로 JSP 페이지들을 컴파일 하여 웹 서비스를 제공하는 방식을 채택하였기 때문에 개발 작업의 효율성도 높아졌고 이에 따라 웹 서비스를 제공하는 주요 기술로 자리를 잡게 되었다. JSP 표준으로 개발된 프로그램은 웹 어플리케이션 서버에 의해 서블릿 클래스로 변환되고 컴파일되어 서비스를 제공한다. 따라서 JSP 표준이 웹 서비스의 주요 기술이 되었다고 해서 서블릿 기술이 없어지거나 사용되지 않는 것은 아니며 두 가지 표준은 웹 서비스를 제공하는 주요 기술로 함께 발전하고 있다.

23 서블릿 프로그램 public class HelloServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html; charset=EUC_KR"); java.io.PrintWriter out = response.getWriter(); out.println("<HTML><HEAD><TITLE>로그인</TITLE></HEAD>"); out.println<BODY><H2>헬로 서블릿</H2>"); out.println(“오늘의 날짜와 시간은 : “+new java.util.Date()); out.println("</BODY></HTML>"); }

24 자바와 웹 프로그래밍 JSP 서블릿을 서버측 스크립트로 구성한 언어 특징
J2EE를 구성하는 기술 중의 하나 특징 스크립트 방식 Java 언어의 특성을 활용 표현 언어, 표현식, 액션 태그 등의 스크립트적 요소를 제공 다양한 개발 환경이 오픈 소스로 제공됨 웹 컨테이너가 자동으로 JSP 페이지들을 서블릿으로 변환하고 컴파일 하여 웹 서비스를 제공하는 방식

25 클라이언트 WAS / 웹 컨테이너 변환 요청(.jsp) 서블릿 JSP 페이지 (Java 프로그램) 컴파일 서블릿
(클래스 파일) 응답(HTML) 최초 요청 시에 해당 페이지에 대해 컴파일을 통하여 서블릿이 구성되고 메모리로 적재 이후 요청들에 대해서는 이미 적재되어 있는 서블릿에서 바로 응답 서버의 자원을 효율적으로 활용하면서 동시에 응답속도도 상당히 빠르다. JSP는 다른 언어에 비해 느리게 처리되는 편이 아니다. 웹 사이트의 응답 속도는 언어 자체의 영향 보다는 서버의 관리 기술 및 로직 처리의 적정성 및 효율성에 더 많은 의존도가 있다 클라이언트 WAS / 웹 컨테이너

26 자바와 웹 프로그래밍 왜 JSP인가? .NET 기술은 윈도우 환경에 의존적이어서 개발과 운용 환경에 제약이 있음
폐쇄적/개방적

27 컨테이너 서블릿이 실행되기 위한 환경 서블릿 컨테이너 자바 실행 환경 웹 서버 서블릿/JSP 컨테이너
Java로 구현된 서블릿 엔진 Tomcat, WebLogic, WebSphere, IAS 등

28 컨테이너 JSP 컨테이너 JSP 프로그램을 서블릿 프로그램으로 변환하는 기능의 프로그램
서블릿 컨테이너에 의해 실행됨 대부분의 서블릿 컨테이너와 WAS들은 JSP 컨테이너를 포함함 JSP 컨테이너는 JSP 엔진과 동의어 JSP 컨테이너는 JSP 페이지를 번역, 실행,처리 JSP는 서블릿으로 구현되어 있음 웹 서버가 Java로 작성되었다면 JSP 컨테이너는 웹서버에 포함되어 있음 그렇지 않으면 웹 서버에 의해 사용됨

29 HTTP 프로토콜의 이해 HTTP 전송 계층 TCP 프로토콜에 기초한 어플리케이션 계층 프로토콜
WWW 서비스를 위해 웹 서버와 클라이언트가 통신하는 규약 특징 Connection oriented & Stateless 요청을 위해 접속을 해야 함 서버가 응답한 후에 서버는 클라이언트의 상태를 유지하지 않음 웹 서버의 부담을 줄이나 상태 관리를 위해 쿠키나 세션 등이 필요 HTTP 요청과 응답 형식의 통신 연결 설정, 요청 메시지 전송, 응답 메시지 전송, 연결 끊기 데이터를 주고받기 위한 프로토콜은 크게 서비스 계층과 전송 계층으로 구분 HTTP는 HTML 형태로 만들어진 멀티미디어 정보를 주고받기 위해 사용되는 서비스 계층 프로토콜 TCP/IP는 인터넷에 연결된 호스트 간에 서로 데이터를 주고받을 수 있게 하는 전송 계층 프로토콜 HTTP 외에 FTP, Telnet, SMTP 등이 공통적으로 이용하는 데이터 전송 수단 HTTP는 클라이언트가 서버에 TCP 접속을 처리한 후에 요청/응답 형식으로 통신하는 기술이다. 그러므로 서버와 클라이언트가 주고받는 요청 및 응답 메시지는 HTTP를 이용한 통신의 핵심이라 할 수 있다. 각 메시지는 시작 라인, 헤더, 메시지 몸체로 구성되어 있다.


Download ppt "1강 01장. 웹과 자바."

Similar presentations


Ads by Google