Lập trình ứng dụng web - Chương 6: Lập trình web với các công nghệ phổ biến

Servlet là một ứng dụng (class) Java chạy trên nền web server.

Cơ chế hoạt động theo mô hình CGI mở rộng.

Chương trình phải được dịch ra ở dạng byte-code(.class), khai báo với web server. Web server phải hỗ trợ Java.

Phải extends class HttpServlet. Không có method main.

 

ppt 49 trang dienloan 15440
Bạn đang xem 20 trang mẫu của tài liệu "Lập trình ứng dụng web - Chương 6: Lập trình web với các công nghệ phổ biến", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

Tóm tắt nội dung tài liệu: Lập trình ứng dụng web - Chương 6: Lập trình web với các công nghệ phổ biến

Lập trình ứng dụng web - Chương 6: Lập trình web với các công nghệ phổ biến
CHƯƠNG 6: LẬP TRÌNH WEB VỚI CÁC CÔNG NGHỆ PHỔ BIẾN 
6.1 Giới thiệu Servlet /JSP 
6.2 Lập trình web với Servlet 
6.3 Lập trình web v ới JSP 
6.4 Giới thiệu ASP 
6.5 Lập trình web với ASP 
1 
Lập trình mạng – Chương 6 
6.1 Giới thiệu Servlet /JSP 
Servlet là một ứng dụng (class) Java chạy trên nền web server. 
Cơ chế hoạt động theo mô hình CGI mở rộng . 
Chương trình phải được dịch ra ở dạng byte- code(.class ), khai báo với web server. Web server phải hỗ trợ Java. 
Phải extends class HttpServlet . Không có method main. 
2 
Lập trình mạng – Chương 6 
6.1 Giới thiệu Servlet /JSP 
Cần có package servlet.jar để biên dịch (  ) 
Các server hiện hỗ trợ Servlet : 
Apache Tomcat (  ) 
Sun’s Java Web Server, free, hiện không cho download ( http:// wwws.sun.com/software/jwebserver / ) 
New Atlanta’s ServletExec , tích hợp ServletEngine vào các web server(  ) 
Tham khảo các tài liệu về Servlet : http:// java.sun.com/products/servlet/docs.html 
3 
Lập trình mạng – Chương 6 
6.1 Giới thiệu Servlet /JSP 
Cấu trúc đơn giản của mộ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 đối tượng “request” để đọc dữ liệu từ client 
	 // đối tượng “response” để xuất dữ liệu cho client 
	 PrintWriter out = response.getWriter (); 
	// dùng đối tượng out để ghi (method print) dữ liệu cho client 
	} 
} 
4 
Lập trình mạng – Chương 6 
6.1 Giới thiệu Servlet /JSP 
Biên dịch như một class Java. 
File *.class dịch được phải đặt vào đúng thư mục quy định sẵn của web server. 
Tomcat: $/ webpages /WEB-INF/classes 
JWS: $/ servlets 
Cấu hình cho web server đối với mỗi servlet : 
Tomcat: hiệu chỉnh file web.xml trong thư mục $/ webpages /WEB-INF theo DTD  
JWS: Cấu hình bằng web-based tool được cung cấp . 
5 
Lập trình mạng – Chương 6 
6.1 Giới thiệu Servlet /JSP 
Cơ chế hoạt động của một servlet : 
Web server nhận yêu cầu triệu gọi servlet từ client. 
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() 
Nếu servlet đã được khởi tạo , tạo một thread để xử lý yêu cầu . 
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 
6 
Lập trình mạng – Chương 6 
6.2 Lập trình web với Servlet 
Lấy dữ liệu từ web client gởi đến bằng servlet : 
Dùng đối tượng của class HttpServletRequest 
Các methods để lấy thông số : 
getParameter(“para -name”) 
getParameterValues(“para -name”) 
String username= request.getParameter(“username ”); 
String[] choice = request.getParameterValues(“comments ”); 
Dùng đối tượng của class HttpServletRequest để lấy các thông tin HTTP header 
7 
Lập trình mạng – Chương 6 
6.2 Lập trình web với Servlet 
Ví dụ lấy tất cả các thông số từ client 
Enumeration parameter_names = request.getParameterNames (); 
while(parameter_names.hasMoreElements ()){ 
	String para = parameter_names.nextElement (); 
	 out.print(para + “ = ”); 
	String[] paraValues = getParameterValues(para ); 
	 if(paraValues.lenght ()==1){ 
	 out.println(paraValues[0]); 
	}else{ 
	 for(int i = 0, i< paraValues.lenght(),i ++){ 
	 out.print(paraValues[i ]+ “-”); 
	 } 
	} 
} 
8 
Lập trình mạng – Chương 6 
6.2 Lập trình web với Servlet 
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ấ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 : 
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 
9 
Lập trình mạng – Chương 6 
6.2 Lập trình web với Servlet 
Lấy các thông số HTTP request header: 
Lấy các giá trị của biến môi trường CGI: 
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 ”) 
10 
Lập trình mạng – Chương 6 
6.2 Lập trình web với Servlet 
Gởi dữ liệu cho web client: dùng đối tượng của class HttpServletResponse : 
Tạo đối tượng PrintWriter để ghi dữ liệu gởi 
PrintWriter out = response.getWriter (); 
Xử lý các mã HTTP trả về với các method của class HttpServletResponse : 
void setStatus(int statusCode ) : gởi các mã response 
void sendError(int errorCode,String msg ): gởi mã lỗi theo giao thức HTTP và message 
void sendRedirect(String URL) : chuyển đến một trang URL khác 
Các mã có thể theo giao thức HTTP hoặc dùng các hằng số trong class HttpServletResponse . 
11 
Lập trình mạng – Chương 6 
6.2 Lập trình web với Servlet 
Xử lý Cookie với web browser: 
Chức năng Cookie 
Kết hợp với web browser để lưu các thông số cần thiết . 
Thông tin có thể dùng để thiết lập phiên làm việc(session ) trong các ứng dụng thương mại điện tử(e -commerce). 
Lưu trữ username, password 
Thông tin để customize web site cho user hay dùng cho cơ chế personalization 
12 
Lập trình mạng – Chương 6 
6.2 Lập trình web với Servlet 
Ghi thông tin Cookie lên máy client: 
Thông tin được truyền đi trong field Set-Cookie HTTP header 
Dùng method addCookie(Cookie cookie) của class HttpServletResponse . 
Các thuộc tính quan trọng trong class Cookie: 
Cookie name: setName(String name) – getName () 
Cookie value: setValue(String value) – getValue () 
Max Age: setMaxAge(int seconds) – getMaxAge () 
13 
Lập trình mạng – Chương 6 
6.2 Lập trình web với Servlet 
Ví dụ : 
String user=“”,pass=“”; 
Cookie[] cookies = request.getCookies (); 
if(cookies.length ==0){ 
	user = request.getParameter(“username ”); 
	pass = request.getParameter(“password ”); 
	Cookie name_cookie = new Cookie(“username”,user ); response.addCookie(name_cookie ); 
	Cookie pass_cookie = new Cookie(“password”,pass ); response.addCookie(pass_cookie ); 
}else{ 
	 for(int i=0;i< cookies.length;i ++){ 
	Cookie cookie = cookies[i ]; 
	 if(cookie.getName().equals(“username ”)) user= cookie.getValue (); 
	 if(cookie.getName().equals(“password ”)) pass= cookie.getValue (); 
	} 
} 
14 
Lập trình mạng – Chương 6 
6.2 Lập trình web với Servlet 
Lưu thông tin về phiên làm việc của user: class HttpSession . 
Có thể dùng để lưu bất kỳ đối tượng nào . 
Đối tượng của class HttpSession được trả về từ method getSession () của class HttpServletRequest . 
Các method thường sử dụng : 
Object getValue(String name) [2.2: getAttribute ] 
void putValue(String name,Object object) [2.2: putAttribute ] 
void removeValue(String name) [2.2: removeAttribute ] 
String[] getValueNames () [ Enumeration getAttributeNames () ] 
String getId () 
void setMaxInactiveInterval(int seconds) 
15 
Lập trình mạng – Chương 6 
6.2 Lập trình web với Servlet 
Ví dụ lưu ShoppingCart vào session 
HttpSession session = request.getSession(true ); 
ShoppingCart cart = ( ShoppingCart)session.getValue(“ShoppingCart ”); 
if(cart ==null){ 
	cart = new ShoppingCart (); 
	 session.putValue(“ShoppingCart”,cart ); 
} 
// process(cart ) 
16 
Lập trình mạng – Chương 6 
6.2 Lập trình web với Servlet 
Xử lý kết nối database 
Dùng JDBC (Java DataBase Connectivity) để kết nối và thao tác với database. 
Quy trình xử lý : 
Tạo JDBC driver và URL database 
Thiết lập connection đến URL database 
Tạo đối tượng statement 
Thực thi các câu lệnh SQL 
Xử lý kết quả thực thi 
Đóng kết nối đến database. 
17 
Lập trình mạng – Chương 6 
6.2 Lập trình web với Servlet 
Kết nối đến database thông qua OBDC trên Windows: 
Tạo DataSourceName trong ODBC 
Connection con = null; Statement stmt = null; ResultSet rs = null; 
String driver = “ sun.jdbc.odbc.JdbcOdbcDriver ”; 
String databaseURL = “ jdbc:odbc:DataSourceName ”; 
try{ 
	 Class.forName(driver ); 
	con = DriverManager.getConnection(databaseURL ); 
	stmt = con.createStatement () 
	 rs = stmt.executeQuery(strSQL ); 
	 while(rs.next ()){	 
	 out.println(rs.getString[1]+”-” rs.getInt(“quantity ”));// 
	} 
	 con.close (); 
} cacth(SQLException se){	 con.close (); } 
18 
Lập trình mạng – Chương 6 
6.2 Lập trình web với Servlet 
Có thể kết nối database server bất kỳ có driver hỗ trợ . 
Kết nối đến Oracle Database Server: 
driver=“ oracle.jdbc.driver.OracleDriver ” 
databaseURL =“jdbc:oracle:thin@localhost:1521:”+dbName 
con = DriverManager.getConnection(databaseURL,user,password ) 
Kết nối đến Sysbase : 
driver=“ com.sysbase.jdbc.SysDriver ” 
databaseURL = “jdbc:sysbase:Tds:localhost:1521?SERVICENAME=“+ dbName 
con = DriverManager.getConnection(databaseURL,user,password ) 
19 
Lập trình mạng – Chương 6 
6.2 Lập trình web với Servlet 
Dùng Prepared Statements trong các câu lệnh thay đổi dữ liệu : 
String preSQLString = 
“UPDATE students SET score = ? WHERE ID=?”; 
PreparedStatement pre_stmt = connection.prepareStatement(preSQLString ); 
float[] scores = getScores (); 
String[] studentIDs = getStudentIDs (); 
for(int i=0;i< studentIDs.length;i ++){ 
	 pre_stmt.setFloat(1,scores[i]); 
	 pre_stmt.setString(2, studentIDs[i ]); 
	 pre_stmt.execute (); 
} 
20 
Lập trình mạng – Chương 6 
6.2 Lập trình web với Servlet 
Dùng cơ chế Connection Pooling 
Tạo một dãy các Connection sẵn sàng . 
Dùng cơ chế thread và đồng bộ để chia xẻ các Connection . 
public synchronized Connection getConnection () throws SQLException { 
	 if(!availableConnections.isEmpty ()){ 
	 Connection con = availableConnections.lastElement (); 
	 availableConnections.removeElementAt ( 
	availableConnections.size()-1); 
	 busyConnections.addElement(con ); 
	 return con;	 
	}else{ 
	 // 
	} 
} 
21 
Lập trình mạng – Chương 6 
6.3 Lập trình web v ới JSP 
JSP (Java Server Pages) là một trang HTML xen các đoạn mã Java. 
Trang JSP sẽ được web server biên dịch theo thành bytecode , cơ chế hoạt động tương tự như Servlet . 
Được tạo sẵn các đối tượng của các class HttpServletRequest và HttpServletResponse để xử lý giao tiếp với web client. 
22 
Lập trình mạng – Chương 6 
6.3 Lập trình web v ới JSP 
Các đoạn mã Java trong trang JSP được đặt trong tag: 
Giá trị biểu thức : 
Khai báo các biến 
Java code 
Chú thích 
Các khai báo chỉ thị ( derective ): 
23 
Lập trình mạng – Chương 6 
6.3 Lập trình web v ới JSP 
Ví dụ trang JSP 
 Request Information 
JSP Request Method: request.getMethod () 
Request URI: request.getRequestURI () 
Request Protocol: request.getProtocol () 
Servlet path: request.getServletPath () 
Path info: request.getPathInfo () 
Path translated: 
24 
Lập trình mạng – Chương 6 
6.3 Lập trình web v ới JSP 
Các đối tượng được xây dựng sẵn trong một trang JSP: 
request : đối tượng class HttpServletRequest 
response : đối tượng class HttpServletResponse 
out : đối tượng class PrintWriter 
session : đối tượng class HttpSession tạo ra từ method getSession () của đối tượng request 
application: đối tượng class ServletContext 
config : đối tượng class ServletConfig 
25 
Lập trình mạng – Chương 6 
6.4 Giới thiệu ASP 
ASP là một trang HTML có chứa các mã script (VBScript hay JavaScript). Các script này có thể : 
Lấy thông tin từ user. 
Sinh nội dung động . 
Thao tác với database. 
Trang ASP được chạy trên web-server hỗ trợ (server-side) 
26 
Lập trình mạng – Chương 6 
6.4 Giới thiệu ASP 
Các công cụ : 
Soạn thảo : 
Có thể dùng trình soạn thảo văn bản text bất kỳ . 
Các công cụ trực quan : Ms. Visual InterDev, Ms. FrontPage, Macromedia Dreamweaver  
Web server: 
Win9x : Personal Web Server 
Win NT/2000 : Internet Information Services. 
Chili!Soft :  (UNIX support) 
HalcyonSoft : http:// www.halcyonsoft.com 
27 
Lập trình mạng – Chương 6 
6.4 Giới thiệu ASP 
Thêm script xử lý vào trang ASP: 
Đặt mã trong cặp dấu : 
Ví dụ : 
Dùng tag SCRIPT : 
. 
Ví dụ : 
	 REM Hello World 
28 
Lập trình mạng – Chương 6 
6.5 Lập trình web v ới ASP 
Đối tượng xử lý request sẵn có của ASP: Request . 
Lấy thông tin người dùng nhập từ Form: 
Request.Form(“field_name ”) 
Request.Form(index ) 
Một số field đặc biệt : checkbox, ratio, các field cùng tên  
29 
Lập trình mạng – Chương 6 
6.5 Lập trình web v ới ASP 
Đối tượng xử lý response sẵn có của ASP: Response 
Các phương thức chính : 
Reponse.Write(“String ”) 
Reponse.Redirect(“URL ”) 
30 
Lập trình mạng – Chương 6 
6.5 Lập trình web v ới ASP 
Đối tượng Application: 
Quản lý thông tin về ứng dụng . Có thể dùng để lưu trữ dữ liệu , đối tượng . 
Đối tượng Session: 
Quản lý thông tin về phiên làm việc(session ), có thể lưu dữ liệu , đối tượng của một session 
Đố tượng Server: 
Đặt các thuộc tính , tạo đối tượng mới  
31 
Lập trình mạng – Chương 6 
6.5 Lập trình web v ới ASP 
Thao tác database: có thể dùng ADO để thao tác . 
Ví dụ về đọc dữ liệu từ database 
Dim objRecordset 
Set objRecordset = Server.CreateObject(“ADODB.Recordset ”) 
objRecordset.Open “ table-name ”, “DSN= dsn ” 
Do While NOT objRecordset.EOF 
	 Response.Write objRecordset(“ field -name”) 
	 objRecordset.MoveNext 
Loop 
32 
Lập trình mạng – Chương 6 
6.5 Lập trình web v ới ASP 
Đọc dữ liệu bằng câu lệnh SQL: 
strSQL = “Select * FROM table WHERE .” 
objRecordset.Open strSQL , “DSN= dsn ” 
Dùng in dữ liệu theo dạng bảng , danh sách , listbox  
Có thể dùng cách này để hiện thực việc tìm kiếm . 
33 
Lập trình mạng – Chương 6 
6.5 Lập trình web v ới ASP 
Thêm mới record: 
	 Set obj-Recordset-name = Server.CreateObject( “ADODB.Recordset ” ) 
objRecordset-name. Open “table-name”, “ DSN= dsn ”, _ adOpenDynamic , adLockOptimistic 
obj-Recordset-name. AddNew 
	 obj-Recordset-name . Fields( “ field-name ” ) =  
	 obj-Recordset-name . Update 
	‘. 
	 obj-Recordset-name . Close 
34 
Lập trình mạng – Chương 6 
6.5 Lập trình web v ới ASP 
Cập nhật thông tin trong record: 
strSQLUpdate = “ UPDATE table SET field1=, field2= WHERE  ” 
objRecordset . Excute strSQLUpdate 
35 
Lập trình mạng – Chương 6 
LẬP TRÌNH WEB VỚI PHP 
Giới thiệu về PHP 
Truy cập biến form 
Quản lý session, cookie 
Truy xuất cơ sở dữ liệu 
Một số chức năng khác ( tham khảo ) 
36 
Lập trình mạng – Chương 6 
Giới thiệu về PHP 
Là một ngôn ngữ lập trình ứng dụng web 
Mã lệnh PHP được nhúng vào trang HTML tương tự JSP hay ASP 
Hoạt động theo cơ chế thông dịch với PHP engine tích hợp vào web server. PHP engine hiện tại được hỗ trợ trên nhiều loại web server ( trên các hệ điều hành khác nhau ) => PHP có tính portable cao 
Các web server phổ biến có thể cài đặt PHP engine: IIS, Apache. Apache và PHP thường có sẵn trong Linux 
37 
Lập trình mạng – Chương 6 
Giới thiệu về PHP 
Cài đặt PHP trên Windows 
Cài đặt PHP lên máy , có thể download từ :  http:// www.php.net / ,  
Cấu hình một số thông số cần thiết trong file $Windows/ php.ini : 
error_log = {filename} 
post_max_size = 8M 
file_uploads = { On|Off } 
upload_tmp_dir = {directory} 
session.save_path = {directory} 
session.auto_start = {0|1} 
38 
Lập trình mạng – Chương 6 
Giới thiệu về PHP 
Cấu hình PHP trên IIS 
Chọn Properties của web site 
Cấu hình tương tự hình bên 
39 
Lập trình mạng – Chương 6 
Giới thiệu về PHP 
Ví dụ một trang PHP đơn giản 
 PHP Hello World! 
<? 
	echo "Welcome to PHP"; 
?> 
40 
Lập trình mạng – Chương 6 
Giới thiệu về PHP 
Cú pháp PHP tương tự C và Java 
Được viết chèn vào mã HTML theo các dạng : 
	/* commands */ 
Tên biến trong PHP được đặt sau dấu $ 
41 
Lập trình mạng – Chương 6 
Truy xuất biến Form 
Dùng chính tên biến đã đặt cho FORM, ví dụ file doLogin.php : 
	From login.html 
 <? php 
	echo " Today is: ". date(); 
	echo " Server:".$Server . " "; 
 echo " Username:$Username ". ""; 
	?> 
42 
Lập trình mạng – Chương 6 
Xây dựng hàm và sử dụng lại mã 
Chèn một trang khác vào PHP: 
require(filename ); 
Sử dụng lại mã : 
include(filename ); 
Có thể viết hàm trong trang PHP như khái niệm của lập trình cấu trúc 
	 function check($user , $pass, &$result) { 
	# các lệnh thực thi hoặc gọi các hàm khác 
	} 
	 check($username,$password,$result ); 
	 if($result ==1){ /*..*/ } 
43 
Lập trình mạng – Chương 6 
Xây dựng hàm và sử dụng lại mã 
Có thể viết mã PHP theo lập trình hướng đối tượng 
	 class classname { 
	//[ var $ atrr ]*; 
	function fucn_name([parameter ]){ 
	// 
	} 
	} 
	$object = new classname (); 
	&object-> attr ; 
	&object-> fucn_name([parameter ]); 
44 
Lập trình mạng – Chương 6 
Q uản lý session và cookie 
Gán giá các giá trị cookie: 
setcookie(“cookie_name ”, value); 
Bằng sesion : 
	 session_set_cookie_params($var ); 
Lấy giá trị cookie: 
$ cookie_value = $ HTTP_COOKIE_VARS[“cookie_name ”] 
Bằng session: 
	$ var = session_get_cookie_params (); 
45 
Lập trình mạng – Chương 6 
Q uản lý session và cookie 
Lưu trữ biến vào sesion : 
	 session_start (); //ref php.ini 
	$ var = value; 
	 session_register($var ); 
Sử dụng biến trong session: 
biến sau khi đã lưu trữ vào session thì có thể sử dụng như một biến dữ liệu bình thường trong web site 
46 
Lập trình mạng – Chương 6 
Q uản lý session và cookie 
Kiểm tra một session đã đăng ký chưa : 
session_is_registered(“var ”); 
Ex: 
	if ( session_is_registered(“Login ”)) { 
	} else{ 
	} 
Xoá một biến đã được lưu trong session: 
	 session_unregister(“var ”); 
47 
Lập trình mạng – Chương 6 
Truy xu ất cơ sở dữ liệu 
PHP cung cấp các hàm truy xuất database khác nhau cho mỗi hệ quản trị cơ sở dữ liệu khác nhau 
Thao tác với hệ DBMS MySQL : 
Tạo kết nối : 
	$db = mysql_connect(“server”,”user”,”pass ”); 
	 if(!$db ) { //error } 
Chọn database: 
	 mysql_select_db(“database ”); 
	 mysql_select_db(“database”,$conn_var ); 
48 
Lập trình mạng – Chương 6 
Thao tác với hệ DBMS MySQL 
Thực thi câu truy vấn : 
	 int mysql_query(string sql,[db_connect ]); 
	 int mysql_query(string database, string sql , [ db_connect ]); 
	$result = mysql_query($sql ); 
	 if(mysql_num_rows($result )!= 0){ 
	 while($row = mysql_fetch_array($result )) 
	{ 
	$fieldname = $ row[“fieldname ”]; 
	} 
	} 
Đóng kết nối : 
	 mysql_close($conn_var ); 
49 
Lập trình mạng – Chương 6 

File đính kèm:

  • pptlap_trinh_ung_dung_web_chuong_6_lap_trinh_web_voi_cac_cong_n.ppt