Tải bản đầy đủ (.pdf) (42 trang)

lập trình mạng nguyễn cao đạt chương5a lập trình web chay o server sinhvienzone com

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (649.72 KB, 42 trang )

Trường Đại Học Bách Khoa Tp.HCM

CHƯƠNG V

Si

nh
Vi
en

Zo

ne

.C

om

LẬP TRÌNH WEB CHẠY Ở
SERVER

Trang 1

Bản quyền ®2005- Khoa Công Nghệ Thông Tin
SinhVienZone.com

/>

Trường Đại Học Bách Khoa Tp.HCM

z


z

.C

ne

Zo

z

nh
Vi
en

z

Lập trình Web với CGI
Lập trình Web với Servlet
Lập trình Web với JSP
Lập trình Web với ASP (???)
Lập trình Web với PHP (tự học)

Si

z

om

Nội dung


Trang 2

Bản quyền ®2005- Khoa Công Nghệ Thông Tin
SinhVienZone.com

/>

Trường Đại Học Bách Khoa Tp.HCM

om

Lập trình web với CGI

.C

Trang HTML chỉ chứa các nội dung cố định hoặc có
thể thao tác thay đổi qua DHTML ở client.
Nhu cầu sử dụng các trang web như một ứng dụng
(giao tiếp với user, tìm kiếm, nội dung thay đổi,
tương tác các ứng dụng, với database…)=> ứng
dụng web.
CGI (Common Gateway Interface) là một chuẩn
(standard) để viết ứng dụng web.

nh
Vi
en

z


Si

z

Zo

ne

z

Trang 3

Bản quyền ®2005- Khoa Công Nghệ Thông Tin
SinhVienZone.com

/>

Trường Đại Học Bách Khoa Tp.HCM



ne

Zo



Là ứng dụng chạy trên nền web server.
Nhận thơng tin từ web browser và xuất thơng tin để web
browser hiển thị thơng qua web server.

Ứng dụng có thể được viết với bất cứ ngơn ngữ lập trình
có standard input và standard output. (C/C++, Perl, Shell
script, Dos shell…)

nh
Vi
en



.C

Các đặc điểm

Si

z

om

Lập trình web với CGI

Trang 4

Bản quyền ®2005- Khoa Công Nghệ Thông Tin
SinhVienZone.com

/>

Trường Đại Học Bách Khoa Tp.HCM


om

Lập trình web với CGI

.C

Cách thức hoạt động của ứng dụng web CGI





ne

Zo



Web server nhận request ứng dụng CGI từ browser.
Web server gọi ứng dụng CGI, truyền các thơng số bằng
các biến mơi trường(thơng qua standard input).
Ứng dụng web CGI xử lý, giao tiếp với các ứng dụng
khác (database, mail…), xuất kết quả dạng HTML qua
standard output đến web server.
Web server nhận kết quả và trả về cho browser.

nh
Vi
en




Si

z

Trang 5

Bản quyền ®2005- Khoa Công Nghệ Thông Tin
SinhVienZone.com

/>

Trường Đại Học Bách Khoa Tp.HCM

om

Lập trình web với CGI

nh
Vi
en

Zo

ne

.C


Hình vẽ minh họa hoạt động CGI

Si

z

Trang 6

Bản quyền ®2005- Khoa Công Nghệ Thông Tin
SinhVienZone.com

/>

Trường Đại Học Bách Khoa Tp.HCM

om

Lập trình web với CGI

nh
Vi
en

Zo

ne

.C

Hình vẽ minh họa hoạt động CGI (Perl)


Si

z

Trang 7

Bản quyền ®2005- Khoa Công Nghệ Thông Tin
SinhVienZone.com

/>

Trường Đại Học Bách Khoa Tp.HCM

.C

Ví dụ (Perl)

nh
Vi
en

Zo

ne

#!/perl/bin/perl
#Remember : this path will vary depending on
#where Perl is located
print "Content-type:text/html\n\n";

print "<html><head><title>HELLO!</title></head>";
print "<body>\n";
print "

Hello!

\n";
foreach $key (sort(keys %ENV)) {
print "VARIABLE $key = $ENV{$key}
\n";
}
print "</body></html>\n";

Si

z

om

Lập trình web với CGI

Trang 8

Bản quyền ®2005- Khoa Công Nghệ Thông Tin
SinhVienZone.com

/>

Trường Đại Học Bách Khoa Tp.HCM

nh
Vi
en

Zo


ne

.C

Các biến mơi trường

Si

z

om

Lập trình web với CGI

Trang 9

Bản quyền ®2005- Khoa Công Nghệ Thông Tin
SinhVienZone.com

/>

Trường Đại Học Bách Khoa Tp.HCM

z

Ví dụ

.C


Các biến mơi trường

nh
Vi
en

Zo

ne

z

om

Lập trình web với CGI

Để in ra địa chỉ IP của máy khách:
print "IP Address = $ENV{'REMOTE_ADDR'}\n";

Một số các ví dụ cụ thể





Si

z

Dùng phương thức GET: biến mơi trường lưu ý là QUERY_STRING

Dùng phương thức POST.
Lưu các biến dùng COOKIE hoặc Session.
Lập trình CGI kết nối với CSDL.
Trang 10

Bản quyền ®2005- Khoa Công Nghệ Thông Tin
SinhVienZone.com

/>

Trường Đại Học Bách Khoa Tp.HCM




Zo



Perl Programming
/> /> />n.html

nh
Vi
en



ne


Tài liệu tham khảo

Si

z

.C

om

Lập trình web với CGI

Trang 11

Bản quyền ®2005- Khoa Công Nghệ Thông Tin
SinhVienZone.com

/>

Trường Đại Học Bách Khoa Tp.HCM

.C

Java servlet là những chương trình độc lập platform
và nhỏ chạy ở phía server được lập trình để mở rộng
chức năng của web server(Web server phải hỗ trợ
Java).
Cơ chế hoạt động theo mơ hình CGI mở rộng.
Chương trình servlet:


z




Thường extends class HttpServlet. Khơng có method main.
Phải được dịch ra ở dạng byte-code(.class) và khai báo với
web server.

Si

z

nh
Vi
en

Zo

ne

z

om

Giới thiệu Servlet

Trang 12

Bản quyền ®2005- Khoa Công Nghệ Thông Tin

SinhVienZone.com

/>

Trường Đại Học Bách Khoa Tp.HCM

.C

ne




z

Zo



Apache Tomcat ()
Sun’s Java Web Server, free, hiện khơng cho download
( />New Atlanta’s ServletExec, tích hợp ServletEngine vào các web
server()

nh
Vi
en

z


Cần có package servlet.jar để biên dịch
( />Các server hiện hỗ trợ Servlet:



/>




Si

z

om

Giới thiệu Servlet

Tham khảo các tài liệu về Servlet:

/>Trang 13

Bản quyền ®2005- Khoa Công Nghệ Thông Tin
SinhVienZone.com

/>

Trường Đại Học Bách Khoa Tp.HCM

.C


om

Vòng đời của Servlet

Tạo ra
(Instantiated)

nh
Vi
en

Zo

ne

Khơng tồn tại
(Doses not exist)

Si

Khơng sẳn
sàng
Unavailable

Huỷ
(Destroyed)

Sẳn sàng phục vụ
request (Instaniated &

Ready)

Phục vụ
(Service)
Trang 14

Bản quyền ®2005- Khoa Công Nghệ Thông Tin
SinhVienZone.com

/>

Trường Đại Học Bách Khoa Tp.HCM



Chứa các class cụ thể cho HTTP

Tất cả sevlet đều phải hiện thực giao diện
javax.servlet.Servlet.
Tuy nhiên do chúng ta dùng giao thức HTTP nên
javax.servlet.http.HttpServlet là lớp hiện thực giao diện
Servlet, nên
Vì vậy ta thường phải kế thừa từ lớp này và override các
method doGet()/doPost().

Si

z

.C


javax.servlet.http.*
z

z

Chứa các class và interface độc lập với HTTP

Zo

z

ne

Java Servlet API gồm:
– javax.servlet.*

nh
Vi
en

z

om

Lập trình với Servlet API (t.t)

z

Trang 15


Bản quyền ®2005- Khoa Công Nghệ Thông Tin
SinhVienZone.com

/>

Trường Đại Học Bách Khoa Tp.HCM

.C

om

Lập trình với Servlet API (t.t)
Class/Interface

Hiện thực servlet

javax.servlet.Servlet
javax.servlet.SingleThreadModel
javax.servlet.GenericServlet
javax.servlet.http.HttpServlet

Cấu hình sevlet

nh
Vi
en

Zo


ne

Mục đích

javax.servlet.ServletConfig

Requests

Si

Servlet Exception

javax.servlet.ServletException
javax.servlet.ServletRequest
javax.servlet.http.HttpServletRequest
javax.servlet.ServletInputStream
Trang 16

Bản quyền ®2005- Khoa Công Nghệ Thông Tin
SinhVienZone.com

/>

Trường Đại Học Bách Khoa Tp.HCM

.C

om

Lập trình với Servlet API (t.t)

Class/Interface

Responses

javax.servlet.ServletResponse
javax.servlet.http.HttpServletResponse
javax.servlet.ServletOutput

nh
Vi
en

Zo

ne

Mục đích

Javax.servlet.http.HttpSession
Java.servlet.http.HttpSessionBindingListener

Servlet context

Javax.servlet.ServletContext

Si

Session tracking

Servlet collaboration


Javax.servlet.RequestDispatcher

Khác

Javax.servlet.http.Cookie
Java.servlet.http.HttpUtils
Trang 17

Bản quyền ®2005- Khoa Công Nghệ Thông Tin
SinhVienZone.com

/>

Trường Đại Học Bách Khoa Tp.HCM

om

Cơ chế hoạt động của servlet

.C

Web server nhận u cầu triệu gọi servlet từ client.

ne

z

Nếu servlet chạy lần đầu, web server load file
servlet tương ứng, khởi tạo các thơng số bằng

qua method init()
z Nếu servlet đã được khởi tạo, tạo một thread
để xử lý u cầu.

nh
Vi
en

Zo

z

Gọi methods doXxx() để xử lý các request tương ứng
theo giao thức HTTP:
– doGet cho HTTP GET, doPost cho HTTP POST

Si

z

Trang 18

Bản quyền ®2005- Khoa Công Nghệ Thông Tin
SinhVienZone.com

/>

Trường Đại Học Bách Khoa Tp.HCM

om


Cấu trúc đơn giản của một Servlet

nh
Vi
en

Zo

ne

.C

import java.io.*;
import java.servlet.*;
import java.servlet.http.*;
public class Sample extends HttpServlet{
public doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException,IOException{
//dùng đối tượng “request” để đọc dữ liệu từ client
//dùng đối tượng “response” để xuất dữ liệu cho client

PrintWriter out = response.getWriter();
}
}

Si

//dùng đối tượng out để ghi (method print) dữ liệu cho client


Trang 19

Bản quyền ®2005- Khoa Công Nghệ Thông Tin
SinhVienZone.com

/>

Trường Đại Học Bách Khoa Tp.HCM

om

Một Servlet đơn giản

Zo

ne

.C

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

Si

nh
Vi
en


public class HelloWorld extends HttpServlet {
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
PrintWriter out = response.getWriter();
out.println("Hello World");
}
}
Trang 20

Bản quyền ®2005- Khoa Công Nghệ Thông Tin
SinhVienZone.com

/>

Trường Đại Học Bách Khoa Tp.HCM

om

Lập trình Web với Servlet
API cho HttpServletRequest

1.

Object getAttribute(String name)
void setAttribute(String name, Object att )
Enumeration getAttributeNames()
int getContentLength()
String getParameter(String name)
Enumeration getParameterNames()

Enumeration getParameterValues()
String getRemoteHost()
RequestDispatcher getRequestDispatcher( String path )
boolean isSecure()
ServletInputStream getServletInputStream()
int getContentLength()


5.
6.
7.
8.
9.
10.
11.
12.
13.

ne

Zo

4.

nh
Vi
en

3.


Si

2.

.C

z

Trang 21

Bản quyền ®2005- Khoa Công Nghệ Thông Tin
SinhVienZone.com

/>

Trường Đại Học Bách Khoa Tp.HCM

om

Lập trình Web với Servlet

.C

Lấy dữ liệu từ web client gởi đến bằng servlet

ne

nh
Vi
en




Dùng đối tượng của class HttpServletRequest
Các methods để lấy thơng số:
z getParameter(“para-name”)
z getParameterValues(“para-name”)

Zo



String username=
request.getParameter(“username”);
String[] choice =
request.getParameterValues(“comments”);

Si

z




Dùng đối tượng của class HttpServletRequest để lấy các
thơng tin HTTP header
Ví dụ: Request Parameter
Trang 22

Bản quyền ®2005- Khoa Công Nghệ Thông Tin

SinhVienZone.com

/>

Trường Đại Học Bách Khoa Tp.HCM

Lấy các thơng số HTTP request header




ne

Zo



class HttpServletRequest cung cấp các method để lấy các thơng số
request header.
String getHeader(header-name): lấy nội dung của header-name
Enumeration getHeaderNames(): lấy tất cả các header-name.
Một số method điển hình:
z
z
z
z



nh

Vi
en



Cookie[] getCookies(): dãy Cookie từ client
int getContentLength(): trả giá trị Content-Length
int getContentType(): trả giá trị Content-Type
int getRemoteUser(): giá trị username nếu có authenticate

Si

z

.C

om

Lập trình Web với Servlet

Ví dụ: Request Header
Trang 23

Bản quyền ®2005- Khoa Công Nghệ Thông Tin
SinhVienZone.com

/>

Trường Đại Học Bách Khoa Tp.HCM


om

Lập trình Web với Servlet

z
z
z
z
z
z
z
z
z

QUERY_STRING: getQueryString()
REMOTE_ADDR: getRemoteAddr()
REMOTE_HOST: getRemoteHost()
REQUEST_METHOD: getMethod()
PATH_INFO: getPathInfo()
SCRIPT_NAME: getServletPath()
SERVER_NAME: getServerName()
SERVER_PORT: getServerPort()
HTTP_XXX_YYY: getHeader(“Xxx-Yyy”)


Zo

z

ne


Lấy các giá trị của biến mơi trường CGI:

nh
Vi
en



.C

Lấy các thơng số HTTP request header (t.t)

Si

z

- Ví dụ : Request Info
Trang 24

Bản quyền ®2005- Khoa Công Nghệ Thông Tin
SinhVienZone.com

/>

Trường Đại Học Bách Khoa Tp.HCM

om

Lập trình Web với Servlet


3.
4.
5.
6.
7.
8.
9.

.C

ne

Zo

2.

nh
Vi
en

1.

API cho HttpServletResponse
String getCharaterEncoding()
ServletOutputStream getOutputStream()
PrintWriter getWriter()
setContentLength( int len )
setContentType( String type )
setBufferSize( int len )

int getBufferSize()
flushBuffer()


Si

z

Trang 25

Bản quyền ®2005- Khoa Công Nghệ Thông Tin
SinhVienZone.com

/>

×