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
/>