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 |