SlideShare a Scribd company logo
1 of 17
Download to read offline
April 2015
ED1.0
HR Kwon (hungrok@hanmail.net )
IT 강의자료
Web Server Page (ASP,PHP,JSP)
1
WSP 일반
 Web Server Page
. Web Client 의 http 요청에 대한 Web Server 의 동적인 action 으로 정의한다
. 일반적 으로 Client 가 html 페이지를 요청 (Request) 하는 것은
서버에서 특정한 action 없이, 서버가 지닌 해당 html page 를 가공 없이 응답 (Response) 하는 정적 인 것이다
. 이에 반해, 동적인 action 은 아래와 같이 두 가지 포괄적인 기능을 갖는 것이다
(1) html page 를 동적으로 만들어 Client 에게 Response 한다
(2) 특정한 action 을 수반한다 (예. DB, Email, File Handling,,)
. Web Server Page 일반
(1) html page 내에 Script 형태 로 표현된다
(2) ASP (Active) , PHP (Hypertext Preprocessor) , JSP (Java) 가 대표 적 인 서버에서 지원되는 Server Page 지원 Software 이다
(3) html page 확장자가 asp, php, jsp 로 특정화 되어있다
(4) Web Server 는 특정화 된 확장자 를 갖는 page 요청이 오면, 대응되는 각 Server Page 를 실행 시킨다
Web
Client
Web
Server
ASP
index.html
HTTP Request index.asp
HTTP Response
index.asp
동적 생성
Action
2
HTTP
 Hyper Text Transfer Protocol
. TCP (connection oriented) 응용 계층으로, Web 상에서 서버 와 client 간 data 전송방법
. Text 기반 Message, Message 의 종류를 구분하는 것을 Method 라 칭 하며, 작업 의 종류를 구분한다
. HTTP Message 는 Header 와 Body 로 구성
MAC Header IP Header TCP Header HTTP Message
Packet Switching
Network
HTTP
TCP
IP
Socket
Data Link & PHY
HTTP
TCP
IP
Socket
Data Link & PHY
Web
Browser
Client
Web
Browser
Server
< Method >
GET retrieve header and body
POST insert
PUT update
DELETE delete
HEAD retrieve header only
OPTIONS supported methods
TRACE echo test
WebKit
index.html
http://www.hungrok.com:80/index.html www.hungrok.com
3
HTTP
 URI (Uniform Resource Identifier)
. URI = URL (Locator) + URN (Name)
. URN : 불변하지 않는 자원이름, 거의 사용이 되지 않는다
. URL
주1. 서버의 resource 를 지칭 하며, 위치 및 query parameter 를 포함 할 수 있다 : http://host [:port] [ abs_path [?query]]
주2. 특정한 자원이 지정되지 않으면, 서버는 default 자원을 대상으로 한다 (/index.html)
주3. query parameter 는 Get Method 시 에만 사용된다 (?)
 Method 상세 설명
. 사용자 가 브라우저 에서 지정하여 사용하는 방식은 GET method 를 사용한다
Method 설명
GET . Request URI 에 명기된 Information 을 가져오는 것 (retrieve) 이다
. Information 은 정적인 data 뿐만 아니라 data producing process 도 의미한다
. 상기 사유로 Form 에 대하여 Get Method 를 사용하는 것이 가능하다
. Request Line : GET do1.asp ?name=kwon&age=28 HTTP/1.1
POST . Request URI 에 지정된 서버의 resource 에 새로운 종속물로서 Entity 를 보낸다
. Submit 개념으로 종속물은 Entity Body 로 간다
. 서버의 리소스는 서버의 action 을 의미하며, 무슨 action 을 하는지는 서버의 고유사항 이다
. 예 : Posting message, Providing a block of data (Form), Extending a database, File 송부
. Request Line : POST do1.asp HTTP/1.1
Entity Body : name=kwon&age=28
PUT . Request URI 에 지정된 서버의 resource 하부 (under) 에 stored 하는 목적으로 enclosed entity 를 보낸다
. Upload 개념으로 enclosed entity 는 Entity body 로 간다
. 만약 기존에 있는 resource 라고 하면, Replace 되어야 한다
. 보안을 위하여 서버에서 일반적으로 사용되지 않는다
. Request Line : PUT /image/mypicture.jpg HTTP/1.1  단일 파일만 전송가능 할 것이다 (?)
4
HTTP
 POST MultiPart 전송
. Multi Entity 를 보내는 것을 의미한다 (email 에서 다수의 첨부파일 송부 도 마찬가지 개념)
. Entity Header 의 Content-Type 에 정의를 한다 (이를 MIME 이라한다)
. HTML Form 을 사용하여 전송 시 Content-Type 사용 예
1) 단일 Part 송부, 쌍 (Key & Value) 으로 송부 : Content-Type = “application/x-www-form/urlencoded”
Entity Body = Name=Steve+Johnson&email=xyz@hanmail.net
2) 단일 Part 송부, text 로 송부 : Content-Type = “text/plain”
3) MultiPart 송부 : Content-Type = “multipart/form-data;boundary=XXXX”
boundary 는 특정한 text 형식으로 (예. “-------end of part --------”), 서버에서 Parsing 을 용이하게 하기 위함이다
. 파일을 송부하는 경우에는 MultiPart 방식 으로만 가능하다
. Form 사용 시 MultiPart 전송 모습
Resource
(action)
POST
Entity Header
Part 1
Entity Body
Part 2
Entity Body
Part 3
Entity Body
Boundary (Text)
Boundary (Text)
Boundary (Text)
Boundary (Text)
Content-Type =“multipart/form-data;boundary=XXXX”
Content-Disposition; form-data; name=“Name”
Content-Disposition; form-data; name=“email”
Content-Disposition; form-data; name=“upload”, filename=“x”
Content-Type =“text/html
5
HTTP
 MultiPart 전송
. JAVA 에서 POST 를 사용하여 file 송부 하는 template code
HttpURLConnection conn = null; BufferedReader br = null; DataOutputStream dos = null; DataInputStream inStream = null;
InputStream is = null; OutputStream os = null; boolean ret = false;
String StrMessage = "";
String exsistingFileName = "C:account.xls";
String lineEnd = " ";
String twoHyphens = "--";
String boundary = "*****";
int bytesRead, bytesAvailable, bufferSize; byte[] buffer; int maxBufferSize = 1*1024*1024;
String responseFromServer = "";
String urlString = "http://localhost:8080/FileUpload/requestupload";
FileInputStream fileInputStream = new FileInputStream( new File(exsistingFileName) );
url = new URL(urlString);
conn = (HttpURLConnection) url.openConnection();
conn.setDoInput(true);
conn.setDoOutput(true);
conn.setUseCaches(false);
conn.setRequestMethod("POST");
conn.setRequestProperty("Connection", "Keep-Alive");
conn.setRequestProperty("Content-Type", "multipart/form-data;boundary="+boundary);
dos = new DataOutputStream( conn.getOutputStream() );
dos.writeBytes(twoHyphens + boundary + lineEnd);
dos.writeBytes("Content-Disposition: form-data; name="upload";" + " filename="" + exsistingFileName +""" + lineEnd);
dos.writeBytes(lineEnd);
// create a buffer of maximum size
bytesAvailable = fileInputStream.available();
bufferSize = Math.min(bytesAvailable, maxBufferSize);
buffer = new byte[bufferSize];
// read file and write it into form...
bytesRead = fileInputStream.read(buffer, 0, bufferSize);
while (bytesRead > 0)
{ dos.write(buffer, 0, bufferSize); bytesAvailable = fileInputStream.available(); bufferSize = Math.min(bytesAvailable, maxBufferSize);
bytesRead = fileInputStream.read(buffer, 0, bufferSize); }
// send multipart form data necesssary after file data...
dos.writeBytes(lineEnd);
dos.writeBytes(twoHyphens + boundary + twoHyphens + lineEnd);
6
HTTP
 Message 구성
. Request Line : GET /my/main.html HTML/1.1
. Response Line : HTTP/1.1 200 OK
< Request Header >
Accept
Accept-Charset
Accept-Encoding
Accept-Language
Authorization
Expect
From
Host
If-Match
If-Modified-Since
If-None-Match
If-Range
If-Unmodified-Since
Max-Forwards
Proxy-Authorization
Range
Referrer
TE
User-Agent
< Response Header >
Accept-Ranges
Age
ETag
Location
Proxy-Authenticate
Retry-After
Server
Vary
WWW-Authenticate
< General Header >
Cache-Control
Connection
Date
Pragma
Trailer
Transfer-Encoding
Upgrade
Via
Warning
< Entity Header >
Allow
Content-Encoding
Content-Language
Content-Length
Content-Location
Content-MD5
Content-Range
Content-Type
Expires
Last-Modified
< Cookie Header >
Set-Cookie
Cookie
Request Message
. Request Line
. General Header
. Request Header
. Cookie Header
. Entity Header
Entity Body
If Entity Header
Response Message
. Response Line
. General Header
. Response Header
. Cookie Header
. Entity Header
Entity Body
If Entity Header
7
ASP
 Active Server Page
. Microsoft 가 제공한다
. Window 가 제공하는 Web Server 기능 및 APS 엔진 기능이 활성화 되어야 한다
: 제어판 (Control Panel)  Window feature enable / disable  IIS (Internet Information Server) 활성화
. 내장객체 (제공되는 ASP 객체) 를 제공한다
. Active-X 를 사용하여 개발된 것 이다
 제공되는 ASP 객체 (Object) 의 사용
. 제공되는 객체는 아래와 같이 4가지 로 분류 할 수 있다
1) VBScript Function 으로 제공 (Built-in Functions)
2) 직접사용 객체 : Request, Response
3) Instance 생성 객체 : by CreateObject
4) Server 객체 를 통해서 사용하는 객체 : by Server.CreateObject
 객체의 구성
. 객체들은 아래 4 가지 를 지니고 있다. 특정한 객체 는 Property 만으로 구성 되기도 한다
1) Contents (Collection) : 해당 객체가 지니는 Data Set
2) Property
3) Method
4) Event
8
ASP
 ASP 내장객체 모습
. CDO : Collaboration Data Objects for email
. ADO : ActiveX Data Objects for database
ASP
엔진
Instance 생성객체
. CDO
Server 객체
. Session 객체
. Application 객체
. FileSystem
. Dictionary
. AdRotator
. Browser Capa.
. Content Linking
. Content Lotator
. ADO
직접사용 객체
. Request
. Response
ASP
<Script>
CreateObject
Server.CreateObject
FileSystem 하부
. File
. TextStream
. Driver
. Folder
file
Data Base
email
ADO 세부
. Command
. Connection
. Field
. Parameter
. Property
. Record
. Recordset
. Stream
VBScript Function
. Date, Time
. String, Array
. Conversion
. Format
. Math
. Others
Global.asa
html
9
ASP
 Script
. 종류 : VBScript, JavaScript
. <% ….. %> 로 표현된다
. Script 내부구성
1) Variable
2) Procedure : <head> 내부에 위치한다
3) Statements : Function, Conditional, Looping,,
4) Directive : #include
 Variable
. 선언 (특정한 data type 선언이 없다) : dim xyz, dim abc(x) // abc (x) is for Array
. 위치에 따른 Scope
1) Local 변수 : Procedure 내부에 위치, Procedure 실행이 종료되면 소멸
2) 전역변수 : 하나의 ASP file 내에서 만 access
3) 광역변수 : 여러 ASP file (하나의 Application 내) 에서 access , Session variable 과 Application variable 에 해당
< VBScript >
<!DOCTYPE html>
<html>
< body>
< %
response.write("Hello World!")
%>
< /body>
< /html>
< JavaScript >
<%@ language="javascript"%>
<!DOCTYPE html>
<html>
< body>
< %
Response.Write("Hello World!")
%>
< /body>
< /html>
< Procedure >
<head>
< %
sub vbproc(num1,num2)
response.write(num1*num2)
end sub
%>
< Function>
Function myfunction()
some statements
myfunction=some value
End Function
10
ASP
 Session Object
. 각 사용자 고유정보 (Cookie) 를 관리하기 위한 Interface 역할을 하는 Object 이다
. 사용자 별 하나의 Session Object 이 배당된다
. Global.asa 파일에 Session_OnStart Procedure 로 시작된다
 Application Object
. 다수의 ASP 파일 과 함께 특정한 기능을 수행하는 것을 의미한다
. 전체 User 가 Share 한다
. Global.asa 파일에 Application_OnStart Procedure 로 시작된다
 Global.asa 파일
. Server Object 가 사용하는 파일로 아래 5가지 를 표현한다
1) Application events : Application Object 의 procedure (Start, End)
2) Session events : Session Object 의 procedure (Start, End)
3) <Object> 선언 : 서버객체를 통하여 사용되는 객체들을 선언
4) TypeLibrary 선언 :
5) #include Directive :
11
PHP
 Hypertext Pre Processor
. Open 소스기반 Script Language 로 범용적 으로 사용된다.
. 윈도우 용과 Linux 용으로 제공되며, PHP License 와 GPL License 를 지닌다 (www.php.net)
. Web Server 역할까지 하는 것은 아니다 (IIS 나 Apache 같은 Web Server 를 필요로 한다)
. 아래와 같은 내장객체를 지원한다
1) Super Global 변수 : $GLOBALS, $_SERVER, $_GET, $_POST, $_REQUEST, $_FILES,$_ENV, $_COOKIE, $_SESSION
2) Array, String
3) Date, Time, Calendar, TimeZone, Math
4) ZIP, XML
5) FTP, HTTP, Mail
6) Cookie
7) Database (MySQL), MySQL is provided from Oracle
8) File System
9) Session Manager
10) Filter
 Script
. Script 표현 : <?php ……. ?>
. 구성
1) 상수 : define (A, 3)
2) 변수 : $abc = 10
3) 객체모형 (Class) : Data type 이 Object 이다
4) Function : function myFunction() {}
5) Statements : Conditional, Looping, include, require
12
PHP
 Variable
. 아래와 같이 3가지 scope
1) Local : Function 내부에 변수, Function 이 종료되면 소멸
2) Static : Function 내부에 변수이나 Static 으로 선언, Function 이 종료되어도 Scope 에 존재한다
3) Global : Function 외부에 존재, Function 내부에서 사용시 global keyword 로 사용하여야 한다
. 명시적 이지 않은 Data Type : String, Integer, Float, Boolean, Array, Object, Null, Resource
주1. $cars = array(“ab” “ac” “ad” ) ;
주2. Array 는 3가지
1) Indexed Array : 순서가 있는 일반 Array
2) Associative Array : 쌍 (key 와 Value) 가 있는 Array
3) Multidimensional Array
주3. 객체모형 (Class) 에 의하여 생성된 객체의 Data type 이 Object 이다
13
PHP
 Script
. Template Scripts
<?php
define("GREETING", "Welcome to W3Schools.com!"); // 상수
$x = 5; // global variable
function myTest() {
global x ;
echo "<p>Variable x inside function is: $x</p>";
}
myTest();
class Car {
function Car() {
$this->model = "VW";
}
}
// create an object and show object properties
$herbie = new Car();
echo $herbie->model;
$t = date("H");
if ($t < "10") {
echo "Have a good morning!";
} elseif ($t < "20") {
echo "Have a good day!";
} else {
echo "Have a good night!";
}
?>
14
JSP
 JSP (Java Server Page) , Servlet
. 서버에서 실행되는 Java Class 로서 , 아래 와 같은 목적 이다
(1) Dynamic html page ; 주어진 Parameter 에 대응하는 HTML page 를 동적으로 만들어서 client 에 제공한다, http://URL/index.jsp
(2) Interact with FORM ; Post 되어진 FORM 객체에 대하여 특정한 기능을 수행한다 , FORM action = /Servlet/test1
. MVC (Model View Control) 사용모델
(1) JSP Only : View, Controller 역할을 JSP 혼자 담당
(2) JSP / Servlet : View 는 JSP 가 담당하고, Controller 역할은 Servlet 이 담당
(3) JSP / JavaBean : View 는 JSP 가 담당하고, Controller 역할은 JavaBean 이 담당
Web
Client
Web
Server
Servlet
(test1)
HTTP Post ?action=/Servelt/test1
Form
action=/Servlet/test1
Do Action
Web
Client
Web
Server
JSP
index.html
HTTP Get ?name=kwon
HTTP Response
index.jsp
동적 생성
참고 (HTTP)
. abs_path 및 Parameter 는
URL 의 Optional 정보로서
Request Line 에 포함된다
15
JSP
 JSP
. HTML 문서 (Page) 내에 3가지 (지시어, Scripting, Action) Element 로 표현된다
. HTML 파일 확장 자 명 은 “jsp” 로 한다
. Runtime 에 javax.servlet.http.HttpServlet 을 상속받는 Servlet class 가 만들어 지고 JSP Container 가 life cycle 을 주관한다
(궁극적 으로는 Servlet 과 동류의 개념이다)
. Servlet 을 사용하면 HTML 문서를 만들기가 난이 하여 (PrintWriter 를 이용) , 편의 목적으로 나옴
. EE 에서 제공하는 JSP 의 암묵적 객체 : request, response, out, session, application, config, pageContext, page, exception
. MS 의 ASP (Active Server Page) 나 PHP 와 동일한 기능이다
. 지시어 Element : <%@ page ….. > , Page 와 Include 지시어 두 가지 이다
. Page 지시어 : language, import, session, buffer, autoFlush, isThreadSafe, info, errorPage, isErrorPage,
: contentType, pageEncoding, extends
.Scripting Element :
(1) Declaration <%! ……. %> : 멤버변수 나 메소드 를 선언할 때 사용
(2) Expression <%= …… %> : 간단한 data 출력이나 메소드 호출에 사용
(3) Scriptlet <% …….. %> : 순수 Java code 만 가능, Page 의 간결성을 위하여 사용이 권고되지 않고 JavaBeans 를 대신사용
. Action Element : <jsp: ….. />
16
JSP
 Servlet
. Client HTTP message 에서 URL (Parameter 가 포함된) 로 사용이 되어진다 (HTTP POST ?action=/Servlet/test1)
. Server 측에서 수행되는, JAVA 로 구현된 CGI (Common Gateway Interface) 이다
. Web.xml 파일을 필요로 한다
. 반드시 javax.servlet.http.HttpServlet 을 상속 하여야 한다
. Servlet Container 가 Life Cycle 을 관리한다 (init  service  destroy)
. 주요한 Servlet Container 로는 Tomcat, Jetty, Jboss 등이 있다
public class ServletTest extends HttpServelet
{
@Override
public void init(){}
@Override
public void service(){}
@Override
public void doGet(){}
@Override
public void doPost(){}
@Override
public void destroy(){}
}
Web Server
Servlet
Container
Web Client
Servlet
Class
Web Server
HTTP Request
HTTP Response
service
doGet or doPost
By doGet or doPost
Web Application 설정파일
1) Servlet 정보
2) Error Page 정보
3) Listener 정보
4) Filter 정보
5) 보안설정 정보
web.xml

More Related Content

What's hot

좌충우돌 ORM 개발기 | Devon 2012
좌충우돌 ORM 개발기 | Devon 2012좌충우돌 ORM 개발기 | Devon 2012
좌충우돌 ORM 개발기 | Devon 2012
Daum DNA
 

What's hot (20)

4-3. jquery
4-3. jquery4-3. jquery
4-3. jquery
 
[162] jpa와 모던 자바 데이터 저장 기술
[162] jpa와 모던 자바 데이터 저장 기술[162] jpa와 모던 자바 데이터 저장 기술
[162] jpa와 모던 자바 데이터 저장 기술
 
4-2. ajax
4-2. ajax4-2. ajax
4-2. ajax
 
자바야 놀자 PPT
자바야 놀자 PPT자바야 놀자 PPT
자바야 놀자 PPT
 
Java programming pdf
Java programming pdfJava programming pdf
Java programming pdf
 
5-4. html5 offline and storage
5-4. html5 offline and storage5-4. html5 offline and storage
5-4. html5 offline and storage
 
DDD 구현기초 (거의 Final 버전)
DDD 구현기초 (거의 Final 버전)DDD 구현기초 (거의 Final 버전)
DDD 구현기초 (거의 Final 버전)
 
Ajax 기술문서 - 김연수
Ajax 기술문서 - 김연수Ajax 기술문서 - 김연수
Ajax 기술문서 - 김연수
 
Ji 개발 리뷰 (신림프로그래머)
Ji 개발 리뷰 (신림프로그래머)Ji 개발 리뷰 (신림프로그래머)
Ji 개발 리뷰 (신림프로그래머)
 
Ksug2015 - JPA3, JPA 내부구조
Ksug2015 - JPA3, JPA 내부구조Ksug2015 - JPA3, JPA 내부구조
Ksug2015 - JPA3, JPA 내부구조
 
파이썬 플라스크 이해하기
파이썬 플라스크 이해하기 파이썬 플라스크 이해하기
파이썬 플라스크 이해하기
 
4-1. javascript
4-1. javascript4-1. javascript
4-1. javascript
 
MyBatis에서 JPA로
MyBatis에서 JPA로MyBatis에서 JPA로
MyBatis에서 JPA로
 
Java 변수자료형
Java 변수자료형Java 변수자료형
Java 변수자료형
 
파이썬 namespace Binding 이해하기
파이썬 namespace Binding 이해하기 파이썬 namespace Binding 이해하기
파이썬 namespace Binding 이해하기
 
Ksug2015 jpa5 스프링과jpa
Ksug2015 jpa5 스프링과jpaKsug2015 jpa5 스프링과jpa
Ksug2015 jpa5 스프링과jpa
 
좌충우돌 ORM 개발기 | Devon 2012
좌충우돌 ORM 개발기 | Devon 2012좌충우돌 ORM 개발기 | Devon 2012
좌충우돌 ORM 개발기 | Devon 2012
 
Ksug2015 - JPA1, JPA 소개
Ksug2015 - JPA1, JPA 소개Ksug2015 - JPA1, JPA 소개
Ksug2015 - JPA1, JPA 소개
 
5-3. html5 device access
5-3. html5 device access5-3. html5 device access
5-3. html5 device access
 
Ksug2015 - JPA2, JPA 기초와매핑
Ksug2015 - JPA2, JPA 기초와매핑Ksug2015 - JPA2, JPA 기초와매핑
Ksug2015 - JPA2, JPA 기초와매핑
 

Viewers also liked

IT 인프라의 새로운 대안 Amazon Web Service
IT 인프라의 새로운 대안 Amazon Web ServiceIT 인프라의 새로운 대안 Amazon Web Service
IT 인프라의 새로운 대안 Amazon Web Service
Gun-su Jang
 
(140118) #fitalk detection of anti-forensics artifacts using ioa fs
(140118) #fitalk   detection of anti-forensics artifacts using ioa fs(140118) #fitalk   detection of anti-forensics artifacts using ioa fs
(140118) #fitalk detection of anti-forensics artifacts using ioa fs
INSIGHT FORENSIC
 

Viewers also liked (20)

Jsp convert to Servlet
Jsp convert to ServletJsp convert to Servlet
Jsp convert to Servlet
 
Server
ServerServer
Server
 
SoftLayer에서 VM 생성해보기!
SoftLayer에서 VM 생성해보기!SoftLayer에서 VM 생성해보기!
SoftLayer에서 VM 생성해보기!
 
코딩에는 좋은 노트북이 필요 없다
코딩에는 좋은 노트북이 필요 없다코딩에는 좋은 노트북이 필요 없다
코딩에는 좋은 노트북이 필요 없다
 
SoftLayer에서 웹 애플리케이션 호스팅하기 - WordPress on SoftLayer
SoftLayer에서 웹 애플리케이션 호스팅하기 - WordPress on SoftLayerSoftLayer에서 웹 애플리케이션 호스팅하기 - WordPress on SoftLayer
SoftLayer에서 웹 애플리케이션 호스팅하기 - WordPress on SoftLayer
 
SoftLayer 서비스 설명 5차 - 보안
SoftLayer 서비스 설명 5차 - 보안SoftLayer 서비스 설명 5차 - 보안
SoftLayer 서비스 설명 5차 - 보안
 
서버/인프라를 지탱하는 기술
서버/인프라를 지탱하는 기술서버/인프라를 지탱하는 기술
서버/인프라를 지탱하는 기술
 
[Td 2015]두근두근 asp.net 5(한상훈)
[Td 2015]두근두근 asp.net 5(한상훈)[Td 2015]두근두근 asp.net 5(한상훈)
[Td 2015]두근두근 asp.net 5(한상훈)
 
IT 인프라의 새로운 대안 Amazon Web Service
IT 인프라의 새로운 대안 Amazon Web ServiceIT 인프라의 새로운 대안 Amazon Web Service
IT 인프라의 새로운 대안 Amazon Web Service
 
web study 1day
web study 1dayweb study 1day
web study 1day
 
Web to sns
Web to snsWeb to sns
Web to sns
 
Een digitale bibliotheek of alleen Google?
Een digitale bibliotheek of alleen Google?Een digitale bibliotheek of alleen Google?
Een digitale bibliotheek of alleen Google?
 
비영리 사업에서 꼭 필요한 인터넷 도구 (유승철)
비영리 사업에서 꼭 필요한 인터넷 도구 (유승철)비영리 사업에서 꼭 필요한 인터넷 도구 (유승철)
비영리 사업에서 꼭 필요한 인터넷 도구 (유승철)
 
IT 일반기술 강의자료_ed10
IT 일반기술 강의자료_ed10IT 일반기술 강의자료_ed10
IT 일반기술 강의자료_ed10
 
제5회인터넷리더십프로그램_왕초보를 위한 트위터 완벽 활용_정진호
제5회인터넷리더십프로그램_왕초보를 위한 트위터 완벽 활용_정진호제5회인터넷리더십프로그램_왕초보를 위한 트위터 완벽 활용_정진호
제5회인터넷리더십프로그램_왕초보를 위한 트위터 완벽 활용_정진호
 
(120616) #fitalk web browser forensics - part iii
(120616) #fitalk   web browser forensics - part iii(120616) #fitalk   web browser forensics - part iii
(120616) #fitalk web browser forensics - part iii
 
2013 꿈다락 토요문화학교 유스보이스 8경 잡지만들기 결과물 - Case
2013 꿈다락 토요문화학교 유스보이스 8경 잡지만들기 결과물 - Case2013 꿈다락 토요문화학교 유스보이스 8경 잡지만들기 결과물 - Case
2013 꿈다락 토요문화학교 유스보이스 8경 잡지만들기 결과물 - Case
 
(150124) #fitalk advanced $usn jrnl forensics (english)
(150124) #fitalk   advanced $usn jrnl forensics (english)(150124) #fitalk   advanced $usn jrnl forensics (english)
(150124) #fitalk advanced $usn jrnl forensics (english)
 
(140118) #fitalk detection of anti-forensics artifacts using ioa fs
(140118) #fitalk   detection of anti-forensics artifacts using ioa fs(140118) #fitalk   detection of anti-forensics artifacts using ioa fs
(140118) #fitalk detection of anti-forensics artifacts using ioa fs
 
Pusher create web notification service via javascript
Pusher create web notification service via javascriptPusher create web notification service via javascript
Pusher create web notification service via javascript
 

Similar to Web server page_ed10

Ksug 세미나 (윤성준) (20121208)
Ksug 세미나 (윤성준) (20121208)Ksug 세미나 (윤성준) (20121208)
Ksug 세미나 (윤성준) (20121208)
Sungjoon Yoon
 
Do IoT Yourself 3rd : Open API - revision 3
Do IoT Yourself 3rd : Open API - revision 3Do IoT Yourself 3rd : Open API - revision 3
Do IoT Yourself 3rd : Open API - revision 3
Hyunghun Cho
 

Similar to Web server page_ed10 (20)

서버성능개선 류우림
서버성능개선 류우림서버성능개선 류우림
서버성능개선 류우림
 
Node.js 첫걸음
Node.js 첫걸음Node.js 첫걸음
Node.js 첫걸음
 
리스펙토링 세미나 - 웹 브라우저 동작 개념, Node.js를 통한 서버 이해, REST API
리스펙토링 세미나 - 웹 브라우저 동작 개념, Node.js를 통한 서버 이해, REST API리스펙토링 세미나 - 웹 브라우저 동작 개념, Node.js를 통한 서버 이해, REST API
리스펙토링 세미나 - 웹 브라우저 동작 개념, Node.js를 통한 서버 이해, REST API
 
Web server
Web serverWeb server
Web server
 
Html5
Html5 Html5
Html5
 
DGMIT 제3회 R&D 컨퍼런스 r&d1 team : HTTP 프로토콜 개요
DGMIT 제3회 R&D 컨퍼런스 r&d1 team : HTTP 프로토콜 개요DGMIT 제3회 R&D 컨퍼런스 r&d1 team : HTTP 프로토콜 개요
DGMIT 제3회 R&D 컨퍼런스 r&d1 team : HTTP 프로토콜 개요
 
Spring portfolio2
Spring portfolio2Spring portfolio2
Spring portfolio2
 
Ksug 세미나 (윤성준) (20121208)
Ksug 세미나 (윤성준) (20121208)Ksug 세미나 (윤성준) (20121208)
Ksug 세미나 (윤성준) (20121208)
 
REST Ovewview
REST OvewviewREST Ovewview
REST Ovewview
 
대용량 분산 아키텍쳐 설계 #5. rest
대용량 분산 아키텍쳐 설계 #5. rest대용량 분산 아키텍쳐 설계 #5. rest
대용량 분산 아키텍쳐 설계 #5. rest
 
7. html5 api
7. html5 api7. html5 api
7. html5 api
 
파이썬 웹 프로그래밍 2탄
파이썬 웹 프로그래밍 2탄 파이썬 웹 프로그래밍 2탄
파이썬 웹 프로그래밍 2탄
 
Elastic Search Performance Optimization - Deview 2014
Elastic Search Performance Optimization - Deview 2014Elastic Search Performance Optimization - Deview 2014
Elastic Search Performance Optimization - Deview 2014
 
막하는 스터디 첫 번째 만남 Node.js
막하는 스터디 첫 번째 만남 Node.js막하는 스터디 첫 번째 만남 Node.js
막하는 스터디 첫 번째 만남 Node.js
 
HTTP 발표자료 - 김연수
HTTP 발표자료 - 김연수HTTP 발표자료 - 김연수
HTTP 발표자료 - 김연수
 
REST API Development with Spring
REST API Development with SpringREST API Development with Spring
REST API Development with Spring
 
HTTP 완벽가이드 - ch5. web server
HTTP 완벽가이드 - ch5. web serverHTTP 완벽가이드 - ch5. web server
HTTP 완벽가이드 - ch5. web server
 
Json view 예제 설명
Json view 예제 설명Json view 예제 설명
Json view 예제 설명
 
Do IoT Yourself 3rd : Open API - revision 3
Do IoT Yourself 3rd : Open API - revision 3Do IoT Yourself 3rd : Open API - revision 3
Do IoT Yourself 3rd : Open API - revision 3
 
[HTTP 101] 웹 개발자라면 반드시 알아야하는 HTTP의 기초
[HTTP 101] 웹 개발자라면 반드시 알아야하는 HTTP의 기초[HTTP 101] 웹 개발자라면 반드시 알아야하는 HTTP의 기초
[HTTP 101] 웹 개발자라면 반드시 알아야하는 HTTP의 기초
 

Web server page_ed10

  • 1. April 2015 ED1.0 HR Kwon (hungrok@hanmail.net ) IT 강의자료 Web Server Page (ASP,PHP,JSP)
  • 2. 1 WSP 일반  Web Server Page . Web Client 의 http 요청에 대한 Web Server 의 동적인 action 으로 정의한다 . 일반적 으로 Client 가 html 페이지를 요청 (Request) 하는 것은 서버에서 특정한 action 없이, 서버가 지닌 해당 html page 를 가공 없이 응답 (Response) 하는 정적 인 것이다 . 이에 반해, 동적인 action 은 아래와 같이 두 가지 포괄적인 기능을 갖는 것이다 (1) html page 를 동적으로 만들어 Client 에게 Response 한다 (2) 특정한 action 을 수반한다 (예. DB, Email, File Handling,,) . Web Server Page 일반 (1) html page 내에 Script 형태 로 표현된다 (2) ASP (Active) , PHP (Hypertext Preprocessor) , JSP (Java) 가 대표 적 인 서버에서 지원되는 Server Page 지원 Software 이다 (3) html page 확장자가 asp, php, jsp 로 특정화 되어있다 (4) Web Server 는 특정화 된 확장자 를 갖는 page 요청이 오면, 대응되는 각 Server Page 를 실행 시킨다 Web Client Web Server ASP index.html HTTP Request index.asp HTTP Response index.asp 동적 생성 Action
  • 3. 2 HTTP  Hyper Text Transfer Protocol . TCP (connection oriented) 응용 계층으로, Web 상에서 서버 와 client 간 data 전송방법 . Text 기반 Message, Message 의 종류를 구분하는 것을 Method 라 칭 하며, 작업 의 종류를 구분한다 . HTTP Message 는 Header 와 Body 로 구성 MAC Header IP Header TCP Header HTTP Message Packet Switching Network HTTP TCP IP Socket Data Link & PHY HTTP TCP IP Socket Data Link & PHY Web Browser Client Web Browser Server < Method > GET retrieve header and body POST insert PUT update DELETE delete HEAD retrieve header only OPTIONS supported methods TRACE echo test WebKit index.html http://www.hungrok.com:80/index.html www.hungrok.com
  • 4. 3 HTTP  URI (Uniform Resource Identifier) . URI = URL (Locator) + URN (Name) . URN : 불변하지 않는 자원이름, 거의 사용이 되지 않는다 . URL 주1. 서버의 resource 를 지칭 하며, 위치 및 query parameter 를 포함 할 수 있다 : http://host [:port] [ abs_path [?query]] 주2. 특정한 자원이 지정되지 않으면, 서버는 default 자원을 대상으로 한다 (/index.html) 주3. query parameter 는 Get Method 시 에만 사용된다 (?)  Method 상세 설명 . 사용자 가 브라우저 에서 지정하여 사용하는 방식은 GET method 를 사용한다 Method 설명 GET . Request URI 에 명기된 Information 을 가져오는 것 (retrieve) 이다 . Information 은 정적인 data 뿐만 아니라 data producing process 도 의미한다 . 상기 사유로 Form 에 대하여 Get Method 를 사용하는 것이 가능하다 . Request Line : GET do1.asp ?name=kwon&age=28 HTTP/1.1 POST . Request URI 에 지정된 서버의 resource 에 새로운 종속물로서 Entity 를 보낸다 . Submit 개념으로 종속물은 Entity Body 로 간다 . 서버의 리소스는 서버의 action 을 의미하며, 무슨 action 을 하는지는 서버의 고유사항 이다 . 예 : Posting message, Providing a block of data (Form), Extending a database, File 송부 . Request Line : POST do1.asp HTTP/1.1 Entity Body : name=kwon&age=28 PUT . Request URI 에 지정된 서버의 resource 하부 (under) 에 stored 하는 목적으로 enclosed entity 를 보낸다 . Upload 개념으로 enclosed entity 는 Entity body 로 간다 . 만약 기존에 있는 resource 라고 하면, Replace 되어야 한다 . 보안을 위하여 서버에서 일반적으로 사용되지 않는다 . Request Line : PUT /image/mypicture.jpg HTTP/1.1  단일 파일만 전송가능 할 것이다 (?)
  • 5. 4 HTTP  POST MultiPart 전송 . Multi Entity 를 보내는 것을 의미한다 (email 에서 다수의 첨부파일 송부 도 마찬가지 개념) . Entity Header 의 Content-Type 에 정의를 한다 (이를 MIME 이라한다) . HTML Form 을 사용하여 전송 시 Content-Type 사용 예 1) 단일 Part 송부, 쌍 (Key & Value) 으로 송부 : Content-Type = “application/x-www-form/urlencoded” Entity Body = Name=Steve+Johnson&email=xyz@hanmail.net 2) 단일 Part 송부, text 로 송부 : Content-Type = “text/plain” 3) MultiPart 송부 : Content-Type = “multipart/form-data;boundary=XXXX” boundary 는 특정한 text 형식으로 (예. “-------end of part --------”), 서버에서 Parsing 을 용이하게 하기 위함이다 . 파일을 송부하는 경우에는 MultiPart 방식 으로만 가능하다 . Form 사용 시 MultiPart 전송 모습 Resource (action) POST Entity Header Part 1 Entity Body Part 2 Entity Body Part 3 Entity Body Boundary (Text) Boundary (Text) Boundary (Text) Boundary (Text) Content-Type =“multipart/form-data;boundary=XXXX” Content-Disposition; form-data; name=“Name” Content-Disposition; form-data; name=“email” Content-Disposition; form-data; name=“upload”, filename=“x” Content-Type =“text/html
  • 6. 5 HTTP  MultiPart 전송 . JAVA 에서 POST 를 사용하여 file 송부 하는 template code HttpURLConnection conn = null; BufferedReader br = null; DataOutputStream dos = null; DataInputStream inStream = null; InputStream is = null; OutputStream os = null; boolean ret = false; String StrMessage = ""; String exsistingFileName = "C:account.xls"; String lineEnd = " "; String twoHyphens = "--"; String boundary = "*****"; int bytesRead, bytesAvailable, bufferSize; byte[] buffer; int maxBufferSize = 1*1024*1024; String responseFromServer = ""; String urlString = "http://localhost:8080/FileUpload/requestupload"; FileInputStream fileInputStream = new FileInputStream( new File(exsistingFileName) ); url = new URL(urlString); conn = (HttpURLConnection) url.openConnection(); conn.setDoInput(true); conn.setDoOutput(true); conn.setUseCaches(false); conn.setRequestMethod("POST"); conn.setRequestProperty("Connection", "Keep-Alive"); conn.setRequestProperty("Content-Type", "multipart/form-data;boundary="+boundary); dos = new DataOutputStream( conn.getOutputStream() ); dos.writeBytes(twoHyphens + boundary + lineEnd); dos.writeBytes("Content-Disposition: form-data; name="upload";" + " filename="" + exsistingFileName +""" + lineEnd); dos.writeBytes(lineEnd); // create a buffer of maximum size bytesAvailable = fileInputStream.available(); bufferSize = Math.min(bytesAvailable, maxBufferSize); buffer = new byte[bufferSize]; // read file and write it into form... bytesRead = fileInputStream.read(buffer, 0, bufferSize); while (bytesRead > 0) { dos.write(buffer, 0, bufferSize); bytesAvailable = fileInputStream.available(); bufferSize = Math.min(bytesAvailable, maxBufferSize); bytesRead = fileInputStream.read(buffer, 0, bufferSize); } // send multipart form data necesssary after file data... dos.writeBytes(lineEnd); dos.writeBytes(twoHyphens + boundary + twoHyphens + lineEnd);
  • 7. 6 HTTP  Message 구성 . Request Line : GET /my/main.html HTML/1.1 . Response Line : HTTP/1.1 200 OK < Request Header > Accept Accept-Charset Accept-Encoding Accept-Language Authorization Expect From Host If-Match If-Modified-Since If-None-Match If-Range If-Unmodified-Since Max-Forwards Proxy-Authorization Range Referrer TE User-Agent < Response Header > Accept-Ranges Age ETag Location Proxy-Authenticate Retry-After Server Vary WWW-Authenticate < General Header > Cache-Control Connection Date Pragma Trailer Transfer-Encoding Upgrade Via Warning < Entity Header > Allow Content-Encoding Content-Language Content-Length Content-Location Content-MD5 Content-Range Content-Type Expires Last-Modified < Cookie Header > Set-Cookie Cookie Request Message . Request Line . General Header . Request Header . Cookie Header . Entity Header Entity Body If Entity Header Response Message . Response Line . General Header . Response Header . Cookie Header . Entity Header Entity Body If Entity Header
  • 8. 7 ASP  Active Server Page . Microsoft 가 제공한다 . Window 가 제공하는 Web Server 기능 및 APS 엔진 기능이 활성화 되어야 한다 : 제어판 (Control Panel)  Window feature enable / disable  IIS (Internet Information Server) 활성화 . 내장객체 (제공되는 ASP 객체) 를 제공한다 . Active-X 를 사용하여 개발된 것 이다  제공되는 ASP 객체 (Object) 의 사용 . 제공되는 객체는 아래와 같이 4가지 로 분류 할 수 있다 1) VBScript Function 으로 제공 (Built-in Functions) 2) 직접사용 객체 : Request, Response 3) Instance 생성 객체 : by CreateObject 4) Server 객체 를 통해서 사용하는 객체 : by Server.CreateObject  객체의 구성 . 객체들은 아래 4 가지 를 지니고 있다. 특정한 객체 는 Property 만으로 구성 되기도 한다 1) Contents (Collection) : 해당 객체가 지니는 Data Set 2) Property 3) Method 4) Event
  • 9. 8 ASP  ASP 내장객체 모습 . CDO : Collaboration Data Objects for email . ADO : ActiveX Data Objects for database ASP 엔진 Instance 생성객체 . CDO Server 객체 . Session 객체 . Application 객체 . FileSystem . Dictionary . AdRotator . Browser Capa. . Content Linking . Content Lotator . ADO 직접사용 객체 . Request . Response ASP <Script> CreateObject Server.CreateObject FileSystem 하부 . File . TextStream . Driver . Folder file Data Base email ADO 세부 . Command . Connection . Field . Parameter . Property . Record . Recordset . Stream VBScript Function . Date, Time . String, Array . Conversion . Format . Math . Others Global.asa html
  • 10. 9 ASP  Script . 종류 : VBScript, JavaScript . <% ….. %> 로 표현된다 . Script 내부구성 1) Variable 2) Procedure : <head> 내부에 위치한다 3) Statements : Function, Conditional, Looping,, 4) Directive : #include  Variable . 선언 (특정한 data type 선언이 없다) : dim xyz, dim abc(x) // abc (x) is for Array . 위치에 따른 Scope 1) Local 변수 : Procedure 내부에 위치, Procedure 실행이 종료되면 소멸 2) 전역변수 : 하나의 ASP file 내에서 만 access 3) 광역변수 : 여러 ASP file (하나의 Application 내) 에서 access , Session variable 과 Application variable 에 해당 < VBScript > <!DOCTYPE html> <html> < body> < % response.write("Hello World!") %> < /body> < /html> < JavaScript > <%@ language="javascript"%> <!DOCTYPE html> <html> < body> < % Response.Write("Hello World!") %> < /body> < /html> < Procedure > <head> < % sub vbproc(num1,num2) response.write(num1*num2) end sub %> < Function> Function myfunction() some statements myfunction=some value End Function
  • 11. 10 ASP  Session Object . 각 사용자 고유정보 (Cookie) 를 관리하기 위한 Interface 역할을 하는 Object 이다 . 사용자 별 하나의 Session Object 이 배당된다 . Global.asa 파일에 Session_OnStart Procedure 로 시작된다  Application Object . 다수의 ASP 파일 과 함께 특정한 기능을 수행하는 것을 의미한다 . 전체 User 가 Share 한다 . Global.asa 파일에 Application_OnStart Procedure 로 시작된다  Global.asa 파일 . Server Object 가 사용하는 파일로 아래 5가지 를 표현한다 1) Application events : Application Object 의 procedure (Start, End) 2) Session events : Session Object 의 procedure (Start, End) 3) <Object> 선언 : 서버객체를 통하여 사용되는 객체들을 선언 4) TypeLibrary 선언 : 5) #include Directive :
  • 12. 11 PHP  Hypertext Pre Processor . Open 소스기반 Script Language 로 범용적 으로 사용된다. . 윈도우 용과 Linux 용으로 제공되며, PHP License 와 GPL License 를 지닌다 (www.php.net) . Web Server 역할까지 하는 것은 아니다 (IIS 나 Apache 같은 Web Server 를 필요로 한다) . 아래와 같은 내장객체를 지원한다 1) Super Global 변수 : $GLOBALS, $_SERVER, $_GET, $_POST, $_REQUEST, $_FILES,$_ENV, $_COOKIE, $_SESSION 2) Array, String 3) Date, Time, Calendar, TimeZone, Math 4) ZIP, XML 5) FTP, HTTP, Mail 6) Cookie 7) Database (MySQL), MySQL is provided from Oracle 8) File System 9) Session Manager 10) Filter  Script . Script 표현 : <?php ……. ?> . 구성 1) 상수 : define (A, 3) 2) 변수 : $abc = 10 3) 객체모형 (Class) : Data type 이 Object 이다 4) Function : function myFunction() {} 5) Statements : Conditional, Looping, include, require
  • 13. 12 PHP  Variable . 아래와 같이 3가지 scope 1) Local : Function 내부에 변수, Function 이 종료되면 소멸 2) Static : Function 내부에 변수이나 Static 으로 선언, Function 이 종료되어도 Scope 에 존재한다 3) Global : Function 외부에 존재, Function 내부에서 사용시 global keyword 로 사용하여야 한다 . 명시적 이지 않은 Data Type : String, Integer, Float, Boolean, Array, Object, Null, Resource 주1. $cars = array(“ab” “ac” “ad” ) ; 주2. Array 는 3가지 1) Indexed Array : 순서가 있는 일반 Array 2) Associative Array : 쌍 (key 와 Value) 가 있는 Array 3) Multidimensional Array 주3. 객체모형 (Class) 에 의하여 생성된 객체의 Data type 이 Object 이다
  • 14. 13 PHP  Script . Template Scripts <?php define("GREETING", "Welcome to W3Schools.com!"); // 상수 $x = 5; // global variable function myTest() { global x ; echo "<p>Variable x inside function is: $x</p>"; } myTest(); class Car { function Car() { $this->model = "VW"; } } // create an object and show object properties $herbie = new Car(); echo $herbie->model; $t = date("H"); if ($t < "10") { echo "Have a good morning!"; } elseif ($t < "20") { echo "Have a good day!"; } else { echo "Have a good night!"; } ?>
  • 15. 14 JSP  JSP (Java Server Page) , Servlet . 서버에서 실행되는 Java Class 로서 , 아래 와 같은 목적 이다 (1) Dynamic html page ; 주어진 Parameter 에 대응하는 HTML page 를 동적으로 만들어서 client 에 제공한다, http://URL/index.jsp (2) Interact with FORM ; Post 되어진 FORM 객체에 대하여 특정한 기능을 수행한다 , FORM action = /Servlet/test1 . MVC (Model View Control) 사용모델 (1) JSP Only : View, Controller 역할을 JSP 혼자 담당 (2) JSP / Servlet : View 는 JSP 가 담당하고, Controller 역할은 Servlet 이 담당 (3) JSP / JavaBean : View 는 JSP 가 담당하고, Controller 역할은 JavaBean 이 담당 Web Client Web Server Servlet (test1) HTTP Post ?action=/Servelt/test1 Form action=/Servlet/test1 Do Action Web Client Web Server JSP index.html HTTP Get ?name=kwon HTTP Response index.jsp 동적 생성 참고 (HTTP) . abs_path 및 Parameter 는 URL 의 Optional 정보로서 Request Line 에 포함된다
  • 16. 15 JSP  JSP . HTML 문서 (Page) 내에 3가지 (지시어, Scripting, Action) Element 로 표현된다 . HTML 파일 확장 자 명 은 “jsp” 로 한다 . Runtime 에 javax.servlet.http.HttpServlet 을 상속받는 Servlet class 가 만들어 지고 JSP Container 가 life cycle 을 주관한다 (궁극적 으로는 Servlet 과 동류의 개념이다) . Servlet 을 사용하면 HTML 문서를 만들기가 난이 하여 (PrintWriter 를 이용) , 편의 목적으로 나옴 . EE 에서 제공하는 JSP 의 암묵적 객체 : request, response, out, session, application, config, pageContext, page, exception . MS 의 ASP (Active Server Page) 나 PHP 와 동일한 기능이다 . 지시어 Element : <%@ page ….. > , Page 와 Include 지시어 두 가지 이다 . Page 지시어 : language, import, session, buffer, autoFlush, isThreadSafe, info, errorPage, isErrorPage, : contentType, pageEncoding, extends .Scripting Element : (1) Declaration <%! ……. %> : 멤버변수 나 메소드 를 선언할 때 사용 (2) Expression <%= …… %> : 간단한 data 출력이나 메소드 호출에 사용 (3) Scriptlet <% …….. %> : 순수 Java code 만 가능, Page 의 간결성을 위하여 사용이 권고되지 않고 JavaBeans 를 대신사용 . Action Element : <jsp: ….. />
  • 17. 16 JSP  Servlet . Client HTTP message 에서 URL (Parameter 가 포함된) 로 사용이 되어진다 (HTTP POST ?action=/Servlet/test1) . Server 측에서 수행되는, JAVA 로 구현된 CGI (Common Gateway Interface) 이다 . Web.xml 파일을 필요로 한다 . 반드시 javax.servlet.http.HttpServlet 을 상속 하여야 한다 . Servlet Container 가 Life Cycle 을 관리한다 (init  service  destroy) . 주요한 Servlet Container 로는 Tomcat, Jetty, Jboss 등이 있다 public class ServletTest extends HttpServelet { @Override public void init(){} @Override public void service(){} @Override public void doGet(){} @Override public void doPost(){} @Override public void destroy(){} } Web Server Servlet Container Web Client Servlet Class Web Server HTTP Request HTTP Response service doGet or doPost By doGet or doPost Web Application 설정파일 1) Servlet 정보 2) Error Page 정보 3) Listener 정보 4) Filter 정보 5) 보안설정 정보 web.xml