본문 바로가기

JSP/Theory

Chapter 1. Overview of JSP

Chapter 1. Overview of JSP

1. Web Programming

 - Web Programming Language

  · 동적으로 Data를 처리하고 표시하기 위해 개발된 언어

 - Web Programming 

  · Client와 Server로 이루어진 방식

  · Client가 Web Browser를 통해 특정 Page를 Web Server에 요청(request)하게 되면 Web Server가 이를 처리한 후 결과를 다시 Client(Web Browser)에게 응답(response)하게 되는 구조

 - Web Programming Language 종류

  · CGI(Common Gateway Interface)

  ◦ Web Page에 동적으로 변하는 Data를 처리하고 표시하기 위해서 가장 먼저 개발된 언어

  ◦ 특징

   ▹ Web Server와 외부 Program 사이에서 정보를 주고받는 방법이나 규약들을 말한다.

   ▹ Web Browser와 동적 Contents 생성을 맡은 Program 사이에서 정보를 주고받는 Interface

   ▹ 서버의 자원을 과도하게 사용하는 문제점이 있어 UNIX Platform 이외에는 거의 사용되지 않는다.

  · ASP(Active Server Page)

  ◦ Microsoft에서 개발한 Visual Basic이라는 언어를 기반으로 사용하며 Script 방식으로 동적인 Web Page를 작성할 수 있도록 지원하는 언어

  ◦ 특징

   ▹ ActiveX라는 제공된 Component를 사용할 수 있으며 이를 직접 개발하기 위한 기능도 제공한다.

   ▹ 최근에는 보안상 이유로 ActiveX 대신에 Ajax를 사용해 처리하고 있다.

   ▹ .Net 기반의 ASP.Net 또한 제공한다.

  · PHP(Personal HomePage tools / Professional Hypertext Preprocessor)

  ◦ 어떤 Platform에서든지 동작하며 C언어의 문법과 유사해 기존의 개발자들이 쉽게 사용할 수 있다.

  ◦ 특징

   ▹ 적은 명령어만으로 Programming이 가능하다.

   ▹ Component를 지원하지 않으며 보안에 취약하다.

 - Servlet & JSP

  · Servlet(Server+Applet) 

  ◦ JAVA 언어를 기반으로 하는 동적 Web Page를 작성할 수 있도록 지원하는 언어

  ◦ 특징

   ▹ Multi Threading에 의해 사용자 요구를 처리하고 가공해서 이에 대한 결과를 사용자에게 응답한다.

   ▹ JAVA Program과 작성하는 형식이 거의 같기 때문에 JAVA를 학습하지 않으면 사용하기 어려우며 JAVA Code 안에 HTML Tag가 혼재되어 있어서 작업에 대한 분리적인 측면에서 효율성이 떨어진다.

  · JSP(Java Server Pages)

  ◦ JAVA 언어를 기반으로 하지만 Servlet보다는 JAVA Code에 덜 의존적인 언어

  ◦ 특징

   ▹ JSP와 같은 처리 구조를 가지며 Page의 요청이 있을 시 최초 한번 Java Code로 변환된 후 Servlet Class로 Compile되는 방식이다.

   ▹ JSP를 실행하면 Servlet으로 변환된다.

   ▹ 최근 JSP는 사용자용 화면인 View의 구현에 Servlet은 사용자용 View와 Program 사이에 Controller로 주로 사용한다.

 - Web Application의 구조 및 구성 요소

  · Web Application

  ◦ Web 기반으로 실행되는 Program

  · Web Application 처리 순서

  ◦ Web Browser가 Web Server에 어떠한 Page를 요청

  ◦ 해당 Web Server는 Web Browser의 요청을 받아 요청된 Page의 Logic alc Database와의 연동을 위해 Web Application Server에 이들의 처리를 요청

  ◦ Web Application Server는 Database와의 연동이 필요한 경우 이를 수행

  ◦ Logic 및 Database 작업의 처리 결과를 Web Server에 돌려보냄

  ◦ Web Server는 Web Browser에 결과를 응답

  · Web Application 구성 요소

  ◦ Web Browser

   ▹ Web에서 Client로써 사용자에게 제공되는 Program이다.

   ▹ Example

    ▸  IE

    ▸  Chrome

    ▸  Safari

    ▸  FireFox

  ◦ Web Server

   ▹ Web Browser의 요청을 받아들이는 곳으로 작업의 결과도 Web Browser에게 응답을 하는 역할을 한다.

   ▹ Example

    ▸  Apache

    ▸  IIS

  ◦ WAS(Web Application Server)

   ▹ 요청된 Page의 Logic 및 Database와의 연동을 처리하는 역할을 한다.

   ▹ Application Server라고도 한다.

   ▹ Example

    ▸  WebLogic

    ▸  WebSphere

    ▸  jeus

    ▸  Resin

    ▸  Apache Tomcat

  ◦ Database

   ▹ Data의 저장소로 Web에서 발생한 Data가 저장되는 곳

   ▹ 사용자의 입장에서 가장 안쪽에 있기 때문에 Back-end Server라고도 부른다.

   ▹ Example

    ▸  Oracle

    ▸  Sysbase

    ▸  Informix

    ▸  DB2

    ▸  MsSQL

    ▸  MySQL


2. Web Application 처리 방식 및 구현 방식

 - Web Application 처리 방식

  · CGI(Common Gateway Interface)

  ◦ Web Server가 Application Program을 직접 호출하는 구조

  ◦ Application Program은 Process를 생성해 처리하게 되는데 1개의 요청에 대해 1개의 Process가 생성되어 그 요청을 처리한 뒤 종료한다.

  ◦ 요청마다 하나의 Process가 생성되기 때문에 System에 많은 부하를 가져온다.

  · Web Application Server 방식

  ◦ Web Server가 Application Program을 직접 처리하지 않고 Web Application Server까 처리하도록 넘기는 방식

  ◦ 여러 명의 사용자가 동일한 Page를 요청하여 같은 Application Program므을 처리할 때 오직 하나의 Process만을 할당한다.

  ◦ 사용자의 요청은 Thread 방식으로 처리한다.

 - Web Application 구현 방식

  · Script 종류

  ◦ Client Side Script

   ▹ JavaScript, VBScript와 같이 Client 쪽에서 처리하는 Script

  ◦ Server Side Script

   ▹ ASP, JSP, PHP와 같이 Server 쪽에서 처리하는 Script

  · Execute Code 방식

  ◦ 미리 Compile된 실행 Program을 사용자의 요청에 따라 실행

  ◦ 미리 Compile된 Program을 실행하기 때문에 번역에 시간이 적게 걸린다.

  · Script Code 방식

  ◦ 사용자의 요청이 있을 때 Script Code를 번역하여 번역된 Code를 실행

  ◦ 어떠한 Page가 처음 요청되었을 때 단 한번만 번역이 실행되고, 이후에는 해당 Page의 요청이 있는 경우에 번역되어 있는 Code가 실행된다.

  ◦ Execute Code 방식과 실행 속도 면에서는 차이가 거의 없다.


3. JSP & Servlet

 - JSP(JavaServer Pages)

  · Sun Microsystems 사의 Java Servlet 기술을 확장시킨 기술

  · Web 환경 상에서 순수한 Java만으로 Server Side Module을 개발하기 위한 기술

  · J2EE를 구성하는 기술 중 하나이다.

  · Servlet과 같이 Server Side에서 DBMS와 같은 Back-end Server와 연동하여 해당 Server의 Data를 가공하여 화면에 표시할 수 있고 여러 조건에 따라 표시할 수 있는 내용을 동적으로 처리할수 있는 기능을 제공한다.

  · JSP 언어의 특징

  ◦ 객체 지향

  ◦ Platform에 독립적

  ◦ Network 지향적

  ◦ 보안성이 높다

  ◦ Multi-Thread 지원

  ◦ 기존 Java Programmer에 대해 구독성이 높음

 - J2EE

  · Container가 관리하는 Component(Container-managed Component) Group과 Service API Group으로 분류

  · Container

  ◦ 여러 가지 Component를 가지고 있고 Component가 제공하는 각종 Service를 관리하는 Runtime 환경을 제공

  ◦ Service API는 실제로 사용하는 각종 Service를 환경을 제공

  ◦ Container를 구성하는 기술

   ▹ Servlet

    ▸ Server 쪽에서 실행되는 Program

   ▹ JSP(Java Server Page)

    ▸ Component를 Web Page에 내장시켜 통합시키는 기능을 가지고 있다.

    ▸ Servlet을 확장시킨 Version

   ▹ EJB(Enterprise Java Beans)

    ▸ EJB Spec은 확장 가능하고 다중 사용자 처리에 안전하며 Transaction 기능을 인식하는 분산된 Business Application Component를 개발하기 위해 필요한 표준화된 Model을 제공한다.

  · Service API

  ◦ JDBC(Java database connectivity)

   ▹ DataSource나 분산 Transaction 지원 기능 제공

   ▹ 기능

    ▸  DataSource 객체 : Database Resource Pooling을 처리

    ▸  분산 Transaction 지원 기능 : 몇몇 분산된 Business Component들이 하나의 단일 Transaction을 이룰 수 있게 한다.

  ◦ XML(eXtensible Markup Language)

   ▹ J2EE에서 Deployment Descriptors를 작성하는 Format으로 사용

   ▹ Application 환경을 설정할 때 주로 사용하며 Tomcat에서 확인 가능하다.

  ◦ JavaMail

   ▹ 대규모 Application에서 E-mail Message를 보내고 읽을 수 있는 기능을 제공

  ◦ JTA(Java Transaction API)

   ▹ Component에 대한 Transaction 관리를 자동화할 수 있는 Spec을 정의

  ◦ JMS(Java Messaging System)

   ▹ Component 간에 비동기적이며 Error가 발생해도 잘 견딜 수 있는 Application Message를 주고받을 수 있게 해주는 무정지 Network 구현(Fault-tolerant)을 제공하는 API를 제공한다.

  ◦ JNDI

   ▹ 기업형의 Naming과 Directory Serviceㄷ에 접근할 수 있게 하는 API를 제공한다.

 - Servlet

  · Multi-Threading으로 사용자 요구를 처리하고 가공한 후 이에 대한 결과를 내보내는 구조

  · Client를 Thread로 처리하기 때문에 다수의 Client 요구를 효과적으로 처리할 수 있다.

  · JSP Page는 화면에 결과를 표시하는 정적인 부분을 담당하고, Servlet은 Web Application의 흐름을 제어해서 효율적인 Web Site를 구성한다.

  · HTTP Protocol

  ◦ 비연결성(Connectionless), 비상태성(Stateless)으로 연결을 유지하지 않고 Server의 상태에 상관하지 않는다.

  ◦ Web Browser는 HTTP Protocol에 맞게 요청을 Web Server에 전송하고 Web Server도 HTTP Protocol에 맞게 요청에 따른 응답을 Web Browser에 전송한다.

  ◦ HTTP Method

Method

Explain

Get

HTTP header에 정보를 실어 보냄, Method 생략 시 기본 값, URL 뒤에 요청 Query가 붙음, 

전달 속도 빠름, 256Byte가 한계, 적은 양의 Data 전송 시 효율적

Post

HTTP의 Body에 정보를 실어 보냄, Data 크기의 제한이 없음, 보안에 좋음

Head

Header의 정보만 얻어낼 때 사용

Put

Resource를 저장할 때 사용

Delete

Resource를 제거할 때 사용

Put과 Delete를 허용하면 Server의 안정성이 떨어진다.

Trace

Client에서 Server까지 가는 경로를 추적

Option

Server의 성능 등을 확인할 때 사용

  · Servlet 동작 원리

  ◦ HTTP Servelt이나 다른 종류의 Servlet을 생성하려면 Servlet API를 사용해야한다.

  ◦ Servlet은 javax.servlet 또는 javax.servlet.http Package의 Class와 Interface를 사용해 만들 수 있다.

  ◦ Java Servlet과 같이 main Method를 필요로 하지 않으며 특정 Method를 Server가 호출해 실행한다.

  ◦ Protocol에 독립적인 Generic Servlet은 요청을 처리하기 위해 Service() Method를 재정의해야 한다.

  ◦ Generic Servlet의 사용자 요청 처리

  ◦ HTTP Servlet의 요청과 응답 과정

   ▹ Client의 Service 요청(객체의 생성 유무 확인)

   ▹ 객체가 있을 경우 생성 안하고 없을 경우 생성

   ▹ Invoker 생성(작업용 요청(request) 하나당 1개씩 Thread를 하나씩 만듦)

   ▹ Invoker에서 생성된 Thread에서 Service Method 호출(Thread의 run Method와 유사, Client당 1개씩 생성)

   ▹ 처리 결과를 Client에게 보냄

  ◦ Servlet의 요청과 응답의 과정에서의 Container & Service()

   ▹ Container의 일 순서

    ▸ 객체의 유무 판단

    ▸ 객체가 없을 시 생성

    ▸ Thread 생성

    ▸ Service() 호출

    ▸ HttpServlet Class의 Service가 doGet(0 자동 호출

   ▹ Service() Method

    ▸ Request가 올 때마다 doGet()을 호출

    ▸ doGet()은 HttpServletdp 의해 지원 받는 Method 중 하나로 요청을 처리

'JSP > Theory' 카테고리의 다른 글

Chapter 4. JSP Page 구성 요소  (0) 2015.09.07
Chapter 3. JSP 개발환경 구축 II  (0) 2015.09.06
Chapter 2. JSP 개발환경 구축 I  (0) 2015.09.06