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

Trường Đại Hoc BK Tp.HCM LẬP TRÌNH WEB CHẠY Ở SERVER CHƯƠNG V Baûn pdf

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 (622.04 KB, 42 trang )

Bản quyền ®2005- Khoa Công Nghệ Thông Tin
Trang 1
Trường Đại Học Bách Khoa Tp.HCM
CHƯƠNG V
LẬP TRÌNH WEB CHẠY Ở
SERVER
Trường Đại Học Bách Khoa Tp.HCM
Bản quyền ®2005- Khoa Công Nghệ Thông Tin
Trang 2
Nộidung
z LậptrìnhWeb vớiCGI
z LậptrìnhWeb vớiServlet
z LậptrìnhWeb vớiJSP
z LậptrìnhWeb với ASP (???)
z LậptrìnhWeb vớiPHP (tự học)
Trường Đại Học Bách Khoa Tp.HCM
Bản quyền ®2005- Khoa Công Nghệ Thông Tin
Trang 3
Lập trình web vớiCGI
z Trang HTML chỉ chứacácnội dung cốđịnh hoặccó
thể thao tác thay đổi qua DHTML ở client.
z Nhu cầusử dụng các trang web như một ứng dụng
(giao tiếpvớ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.
z CGI (Common Gateway Interface) là mộtchuẩn
(standard) để viết ứng dụng web.
Trường Đại Học Bách Khoa Tp.HCM
Bản quyền ®2005- Khoa Công Nghệ Thông Tin
Trang 4
Lập trình web vớiCGI


z Các đặc điểm
– Là ứng dụng chạytrênnền web server.
– Nhận thơng tin từ web browser và xuất thơng tin để web
browser hiểnthị thơng qua web server.
– Ứng dụng có thểđượcviếtvớibấtcứ ngơn ngữ lậptrình
có standard input và standard output. (C/C++, Perl, Shell
script, Dos shell…)
Trường Đại Học Bách Khoa Tp.HCM
Bản quyền ®2005- Khoa Công Nghệ Thông Tin
Trang 5
Lập trình web vớiCGI
z Cách thứchoạt động của ứng dụng web CGI
– Web server nhậnrequest ứ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ếnmơitrường(thơng qua standard input).
– Ứng dụng web CGI xử lý, giao tiếpvới các ứng dụng
khác (database, mail…), xuấtkếtquả dạng HTML qua
standard output đếnweb server.
– Web server nhậnkếtquả và trả về cho browser.
Trường Đại Học Bách Khoa Tp.HCM
Bản quyền ®2005- Khoa Công Nghệ Thông Tin
Trang 6
Lập trình web vớiCGI
z Hình vẽ minh họahoạt động CGI
Trường Đại Học Bách Khoa Tp.HCM
Bản quyền ®2005- Khoa Công Nghệ Thông Tin
Trang 7
Lập trình web vớiCGI
z Hình vẽ minh họahoạt động CGI (Perl)
Trường Đại Học Bách Khoa Tp.HCM

Bản quyền ®2005- Khoa Công Nghệ Thông Tin
Trang 8
Lập trình web vớiCGI
z Ví dụ (Perl)
#!/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 "<h2>Hello!</h2>\n";
foreach $key (sort(keys %ENV)) {
print "VARIABLE $key = $ENV{$key}<br>\n";
}
print "</body></html>\n";
Trường Đại Học Bách Khoa Tp.HCM
Bản quyền ®2005- Khoa Công Nghệ Thông Tin
Trang 9
Lập trình web vớiCGI
z Các biếnmơitrường
Trường Đại Học Bách Khoa Tp.HCM
Bản quyền ®2005- Khoa Công Nghệ Thông Tin
Trang 10
Lập trình web vớiCGI
z Các biếnmơitrường
z Ví dụ
Để in ra địachỉ IP của máy khách:
print "IP Address = $ENV{'REMOTE_ADDR'}\n";
z Mộtsố các ví dụ cụ thể
– Dùng phương thứcGET: biếnmơitrường lưu ý là QUERY_STRING

– Dùng phương thứcPOST.
– Lưucácbiến dùng COOKIE hoặcSession.
– LậptrìnhCGI kếtnốivớiCSDL.
Trường Đại Học Bách Khoa Tp.HCM
Bản quyền ®2005- Khoa Công Nghệ Thông Tin
Trang 11
Lập trình web vớiCGI
z Tài liệuthamkhảo
– Perl Programming
– />– />– />n.html
Trường Đại Học Bách Khoa Tp.HCM
Bản quyền ®2005- Khoa Công Nghệ Thông Tin
Trang 12
Giớithiệu Servlet
z Java servlet là những chương trình độclậpplatform
và nhỏ chạy ở phía server đượclậptrìnhđể mở rộng
chứcnăng của web server(Web server phảihỗ trợ
Java).
z Cơ chế hoạt động theo mơ hình CGI mở rộng.
z Chương trình servlet:
– Thường extends class HttpServlet. Khơng có method main.
– Phải đượcdịch ra ở dạng byte-code(.class) và khai báo với
web server.
Trường Đại Học Bách Khoa Tp.HCM
Bản quyền ®2005- Khoa Công Nghệ Thông Tin
Trang 13
Giớithiệu Servlet
z Cần có package servlet.jar để biên dịch
( />z Các server hiệnhỗ trợ Servlet:
– 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(
)
– />– …
z Tham khảo các tài liệuvề Servlet:
/>Trường Đại Học Bách Khoa Tp.HCM
Bản quyền ®2005- Khoa Công Nghệ Thông Tin
Trang 14
Vòng đờicủa Servlet
Khơng tồntại
(Doses not exist)
Tạora
(Instantiated)
Sẳnsàngphụcvụ
request (Instaniated &
Ready)
Phụcvụ
(Service)
Khơng sẳn
sàng
Unavailable
Huỷ
(Destroyed)
Trường Đại Học Bách Khoa Tp.HCM
Bản quyền ®2005- Khoa Công Nghệ Thông Tin
Trang 15
Lậptrìnhvới Servlet API (t.t)
z Java Servlet API gồm:

– javax.servlet.*
z Chứa các class và interface độclậpvới HTTP

javax.servlet.http.*
z Chứa các class cụ thể cho HTTP
z
Tấtcả sevlet đềuphảihiệnthựcgiaodiện
javax.servlet.Servlet.
z Tuy nhiên do chúng ta dùng giao thức HTTP nên
javax.servlet.http.HttpServlet là lớphiệnthựcgiaodiện
Servlet, nên
z Vì vậytathường phảikế thừatừ lớp này và override các
method doGet()/doPost().
Trường Đại Học Bách Khoa Tp.HCM
Bản quyền ®2005- Khoa Công Nghệ Thông Tin
Trang 16
Lậptrìnhvới Servlet API (t.t)
javax.servlet.ServletRequest
javax.servlet.http.HttpServletRequest
javax.servlet.ServletInputStream
Requests
javax.servlet.ServletExceptionServlet Exception
javax.servlet.ServletConfigCấuhìnhsevlet
javax.servlet.Servlet
javax.servlet.SingleThreadModel
javax.servlet.GenericServlet
javax.servlet.http.HttpServlet
Hiệnthựcservlet
Class/InterfaceMục đích
Trường Đại Học Bách Khoa Tp.HCM

Bản quyền ®2005- Khoa Công Nghệ Thông Tin
Trang 17
Lậptrìnhvới Servlet API (t.t)
Javax.servlet.http.Cookie
Java.servlet.http.HttpUtils
Kh
ác
Javax.servlet.RequestDispatcherServlet collaboration
Javax.servlet.ServletContextServlet context
Javax.servlet.http.HttpSession
Java.servlet.http.HttpSessionBindingListener
Session tracking
javax.servlet.ServletResponse
javax.servlet.http.HttpServletResponse
javax.servlet.ServletOutput
Responses
Class/InterfaceMục đích
Trường Đại Học Bách Khoa Tp.HCM
Bản quyền ®2005- Khoa Công Nghệ Thông Tin
Trang 18
Cơ chế hoạt động của servlet
z Web server nhậnucầutriệugọiservlettừ client.
z Nếu servlet chạylần đầu, web server load file
servlet tương ứng, khởitạo các thơng số bằng
qua method init()
z Nếu servlet đã đượckhởitạo, tạomột thread
để xử lý u cầu.
z Gọi methods doXxx() để xử lý các request tương ứng
theo giao thứcHTTP:
– doGet cho HTTP GET, doPost cho HTTP POST

Trường Đại Học Bách Khoa Tp.HCM
Bản quyền ®2005- Khoa Công Nghệ Thông Tin
Trang 19
Cấutrúcđơngiảncủamột Servlet
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 đốitượng “request” để đọcdữ liệutừ client
//dùng đốitượng “response” để xuấtdữ liệu cho client
PrintWriter out = response.getWriter();
//dùng đốitượng out để ghi (method print) dữ liệu cho client
}
}
Trường Đại Học Bách Khoa Tp.HCM
Bản quyền ®2005- Khoa Công Nghệ Thông Tin
Trang 20
Một Servlet đơngiản
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class HelloWorld extends HttpServlet {
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
PrintWriter out = response.getWriter();
out.println("Hello World");

}
}
Trường Đại Học Bách Khoa Tp.HCM
Bản quyền ®2005- Khoa Công Nghệ Thông Tin
Trang 21
Lập trình Web với Servlet
z API cho HttpServletRequest
1. Object getAttribute(String name)
2. void setAttribute(String name, Object att )
3. Enumeration getAttributeNames()
4. int getContentLength()
5. String getParameter(String name)
6. Enumeration getParameterNames()
7. Enumeration getParameterValues()
8. String getRemoteHost()
9. RequestDispatcher getRequestDispatcher( String path )
10. boolean isSecure()
11. ServletInputStream getServletInputStream()
12. int getContentLength()
13. …
Trường Đại Học Bách Khoa Tp.HCM
Bản quyền ®2005- Khoa Công Nghệ Thông Tin
Trang 22
Lập trình Web với Servlet
z Lấydữ liệutừ web client gởi đếnbằng servlet
– Dùng đốitượng của class HttpServletRequest
– Các methods để lấy thơng số:
z getParameter(“para-name”)
z getParameterValues(“para-name”)
String username=

request.getParameter(“username”);
String[] choice =
request.getParameterValues(“comments”);
– Dùng đốitượng của class HttpServletRequest để lấy các
thơng tin HTTP header
– Ví dụ: Request Parameter
Trường Đại Học Bách Khoa Tp.HCM
Bản quyền ®2005- Khoa Công Nghệ Thông Tin
Trang 23
Lập trình Web với Servlet
z Lấy các thơng số HTTP request header
– class HttpServletRequest cung cấp các method để lấy các thơng số
request header.
– String getHeader(header-name): lấynội dung của header-name
– Enumeration getHeaderNames(): lấytấtcả các header-name.
– Mộtsố method điểnhình:
z Cookie[] getCookies(): dãy Cookie từ client
z int getContentLength(): trả giá trị Content-Length
z int getContentType(): trả giá trị Content-Type
z int getRemoteUser(): giá trị username nếu có authenticate
– Ví dụ: Request Header
Trường Đại Học Bách Khoa Tp.HCM
Bản quyền ®2005- Khoa Công Nghệ Thông Tin
Trang 24
Lập trình Web với Servlet
z Lấy các thơng số HTTP request header (t.t)
– Lấycácgiátrị củabiếnmơitrường CGI:
z QUERY_STRING: getQueryString()
z REMOTE_ADDR: getRemoteAddr()
z REMOTE_HOST: getRemoteHost()

z REQUEST_METHOD: getMethod()
z PATH_INFO: getPathInfo()
z SCRIPT_NAME: getServletPath()
z SERVER_NAME: getServerName()
z SERVER_PORT: getServerPort()
z HTTP_XXX_YYY: getHeader(“Xxx-Yyy”)
z …
-Vídụ : Request Info
Trường Đại Học Bách Khoa Tp.HCM
Bản quyền ®2005- Khoa Công Nghệ Thông Tin
Trang 25
Lập trình Web với Servlet
z API cho HttpServletResponse
1. String getCharaterEncoding()
2. ServletOutputStream getOutputStream()
3. PrintWriter getWriter()
4. setContentLength( int len )
5. setContentType( String type )
6. setBufferSize( int len )
7. int getBufferSize()
8. flushBuffer()
9. …

×