Đồ án Lập trình JSP Technology
ĐỒ ÁN:  
					LẬP TRÌNH JSP  
					TECHNOLOGY  
				Phần I:  
					JSP TECHNOLOGY  
					CĂN BẢN VỀ JSP  
					Chương I:  
					JavaServer Pages (JSP) là một kỹ thuật server-side do đó chúng ta không thể  
					thực hiện bất kỳ hành động nào ở client. JSP cho phép chúng ta tách thành phần  
					động của trang ra khỏi thành phần tĩnh HTML. Rất đơn giản, chúng ta chỉ cần  
					viết một tài liệu HTML bình thường rồi sau đó bao quanh mã của thành phần  
					động trong các tag đặc biệt, hầu hết các tag bắt đầu với <% và kết thúc với %>.  
					Ví dụ, đây là một phần của trang JSP, có kết quả trả về là “Thanks for reading jsp  
					
					Thanks for reading <i><%=request.getParameter(“title”)%><i>book.  
					Kỹ thuật JSP là một thành phần trong đại gia đình Java; nó sử dùng ngôn  
					ngữ kịch bản dựa vào ngôn ngữ lập trình Java, và các trang JSP được biên dịch  
					thành servlets. Từ đó chúng ta cũng nhận biết được, JSP thì không phụ thuộc bất  
					kỳ nền (platform) nào. Nó đáp ứng được khuynh hướng của Sun MicroSystem là  
					“write one, run anywhere”.  
					Các trang JSP có thể gọi các thành phần JavaBeans, Enterprise JavaBeans  
					(EJB) hoặc custom tags để thực hiện các xử lý trên server. Và như thế, kỹ thuật  
					JSP là thành phần chủ chốt trong kiến trúc khả chuyển của Java cho những ứng  
					dụng dựa vào Web.  
					Như đã biết, JSPs sẽ biên dịch thành servlets nhưng JSP không thể thay thế  
					servlet vì các lý do sau:  
					- Một số tác vụ được giải quyết rất tốt bằng servlet. Ví dụ, các ứng dụng  
					xuất ra dữ liệu nhị phân hoặc chỉ xác định nơi gởi trở lại cho người  
					dùng (bằng cách dùng response.sendRedirect) được dùng servlet thì  
					tốt nhất.  
				- Một số tác vụ khác lại được giải quyết rất tốt bằng JSP như các tình  
					huống mà cấu trúc nền tảng của trang HTML là cố định nhưng các giá  
					trị trong nó lại thay đổi.  
					- Còn các tác vụ còn lại cần sự kết hợp cả servlet và JSP. Ví dụ, trong  
					yêu cầu gốc được trả lời bằng một servlet mà thực hiện mọi công việc,  
					lưu trữ các kết quả trong các Beans và điều phối yêu cầu này đến một  
					trong những trang JSP có thể hiển thị nó.  
					Cả ba định hướng này đều có chổ đứng của nó. Chẳng có định hướng nào hổ  
					trợ đầy đủ cho mọi ứng dụng .  
					Trước khi đi vào chi tiết công nghệ JSP, chúng tôi có một vài so sánh các  
					công nghệ được sử dụng trong ứng dụng với các công nghệ khác.  
					I. Một số so sánh các công nghệ được sử dụng với công nghệ khác?  
					1. MySQL Server.  
					MySQL là hệ quản trị cơ sở dữ liệu quan hệ. Cơ sở dữ liệu là một tập dữ  
					liệu có cấu trúc và được lưu trữ trong các bảng riêng biệt, mỗi bảng được lưu  
					trong ba files với tên cơ sở dữ liệu là tên thư mục chứa các files đó. SQL được  
					viết tắt từ Structured Query Language, là ngôn ngữ chuẩn phổ biến nhất để truy  
					cập cơ sở dữ liệu. Sau đây là một số ưu và nhược điểm của MySQL với các hệ  
					quản trị cơ sở dữ liệu khác:  
					a) Ưu diểm.  
					- Chạy được trên rất nhiều nền khác nhau như Unix, Windows,  
					MacOS, ….  
					- MySQL là hệ quản trị nhanh, nhỏ gọn. Các script files có thể chạy  
					trên một số hệ quản trị khác như MS SQL Server, Oracle.  
				- Theo một số web site thống kê, việc thực hiện các lệnh insert,  
					update, delete nhanh nhất trong các hệ quản trị.  
					- Miễn phí và mã nguồn mở (open source code).  
					b) Khuyết điểm.  
					- Chưa hổ trợ một số chuẩn ANSI SQL92 như không cho các câu  
					select lồng nhau, select into table, khoá ngoại, triggers, stored  
					procedures,…  
					- Không có môi trường đồ hoạ.  
					2. So sánh JSP với các công nghệ khác.  
					a) JSP với ASP.  
					ASP là công nghệ tương đương từ Microsoft. JSP có ba lợi thế so với  
					ASP.  
					- Phần động được viết bằng Java, chứ không phải bằng các ngôn ngữ  
					script như VBScript, JavaScript. Vì thế nó mạnh mẽ hơn tốt hơn đối với các ứng  
					dụng phức tạp cần các thành phần sử dụng lại.  
					-
					JSP chạy được trên nhiều hệ điều hành và web servers khác nhau  
					ngay cả với IIS của Microsoft (cần có plugins từ Webphere, JRun, ...)  
					-
					Hổ trợ sự mở rộng tag với custom tag.  
					b) JSP với PHP.  
					Lợi điểm của JSP với PHP cũng như với ASP. JSP được viết bằng Java  
					mà chúng ta đã biết với các API mở rộng cho mạng, truy cập cơ sở dữ liệu, các  
				đối tượng phân tán, … trong khi với PHP đòi hỏi chúng ta phải học cả một ngôn  
					ngữ mới.  
					3. Tầm quan trọng của XML cùng với XSLT.  
					a) XML.  
					XML là tập con của SGML, nó kết hợp tính linh động và sức mạnh của  
					SGML cùng với một số tính năng hữu ích của HTML. Vì XML là tập con của  
					SGML nên nó cũng tương thích với các hệ thống dựa vào SGML đã có. XML là  
					lực đẩy cho các nghi thức trên internet và các phần mềm để dễ dàng xử lý và  
					truyền dữ liệu.  
					Ở trên đã nói XML là tập con của SGML và HTML là một sự cài đặt  
					của SGML, mô hình sau đây diễn tả mối quan hệ giữa các ngôn ngữ và các siêu  
					ngôn ngữ:  
					Metalanguages  
					Languages  
					SGML  
					HTML  
					Implementation  
					CDF  
					subset  
					SMIL  
					XML  
					CML  
					MML  
					Implementation  
				CDF : Channel Difinition Format – cho phép các tác giả của các Web  
					sites cho phép các người đăng ký biết khi nào Web site này thay đổi, CDF đã  
					được giới thiệu trong IE4 vì vậy nó chỉ làm việc với IE của Microsoft.  
					SMIL : Synchronized Multimedia Integration Language – được sử dụng  
					để đồng bộ hóa các dòng dữ liệu đa truyền thông được truyền qua internet.  
					CML : Chemical Markup Language – mô tả các công thức hóa học.  
					MML: Mathematical Markup language- mô tả các phương trình, biểu  
					thức toán học.  
					Tính tự mô tả dữ liệu của XML : các tags mô tả các vấn đề, các đối  
					tượng gần gủi với thế giới thực. Chúng ta sẽ thấy rõ hơn với hai ví dụ sau, đây là  
					ví dụ minh họa nên nó còn thiếu nhiều thuộc tính trong thế giới thực :  
					Ví dụ với HTML tags  
					<table>  
					Ví dụ với XML tags  
					<student>  
					<name>  
					<tr>  
					<first>Giang</first>  
					<middle>Le</middle>  
					<last>Dinh</last>  
					<td>Giang</td>  
					<td>Le</td>  
					<td>Dinh</td>  
					</name>  
					<numberid>0750</numberid>  
					<age>22</age>  
					</tr>  
					<tr>  
					<td>Number id : </td>  
					<td>0750</td>  
					</tr>  
					<tr>  
					<td>Age :</td>  
					<td>22</td>  
					</tr>  
					</table>  
					</student>  
				- XML có mối quan hệ chặt chẽ với JSP, đặt tả JSP hổ trợ cú pháp XML,  
					chúng ta có thể trộn lẫn mã chúng với nhau dễ dàng như JSP với HTML như thế  
					chúng ta có thể dùng JSP tự động phát sinh trang XML.  
					- Hiện nay có rất nhiều sản phẩm quản trị cơ sở dữ liệu mà mỗi sản  
					phẩm đều có các đặc tính riêng nó, do đó khi các cơ sở dữ liệu khác nhau cần  
					chuyển đổi dữ liệu với nhau lại không tương thích. Vì vậy người làm công việc  
					này cần phải biết nhiều sản phẩm quản trị cơ sở dữ liệu khác nhau. Do đó XML là  
					một định dạng chuẩn mà các hệ quản trị cần hổ trợ. Hiện nay có nhiều hệ quản trị  
					lớn hổ trợ XML như MS SQL Server, Oracle, …  
					b) XSLT.  
					Extensible Stylesheet Language Transformation (XSLT) là một ngôn ngữ  
					được tách ra từ ngôn ngữ XSL, “XSLT là một ngôn ngữ dùng để chuyển đổi các  
					XML document thành các XML document khác”. Nó được viết bằng XML, điều  
					này có nghĩa rằng sự chuyển đổi trong XSLT được trình bày như một well-  
					formed XML document. XSLT đóng vai trò quan trọng trong hướng phát triển  
					“phát sinh ngôn ngữ markup hướng người dùng”.  
					II. JSP scripting elements.  
					Các scripting elements trong JSP cho phép chúng ta chèn mã vào servlet mà  
					sẽ được phát sinh từ trang JSP. Có ba dạng sau:  
					- Biểu thức có dạng <%= expressions %>, được định giá trị và chèn vào  
					luồng xuất của servlet.  
					- Scriptlet có dạng <% code %>, được chèn vào phương thức  
					_jspService của servlet (được gọi là service).  
					- Khai báo có dạng <%! code %>, được chèn vào thân của lớp servlet,  
					như là các field của lớp thông thường.  
				Template text  
					Trong nhiều trường hợp, phần lớn các trang JSP chỉ bao gồm HTML tĩnh,  
					được biết như là template text. Có hai ngoại lệ phụ cho quy tắc “template text  
					được chuyển thẳng sang HTML tĩnh”. Đầu tiên, nếu chúng ta muốn có <% trong  
					luồng xuất thì chúng ta cần phải đặt <\% trong template text. Thứ hai, nếu chúng  
					ta muốn có chú thích trong JSP mà không có trong tài liệu kết quả, dùng:  
					<%-- JSP comments --%>  
					Chú thích HTML có dạng:  
					<!-- HTML comments -->  
					thì được chuyển qua tài liệu HTML thông thường.  
					Cú pháp XML  
					Trong JSP có rất nhiều element có cú pháp XML như jsp:useBean,  
					jsp:include, jsp:setProperty, ... Tuy nhiên scripting elements lại có hai dạng cú  
					pháp sau:  
					JSP Syntax  
					XML Syntax  
					<% = Expressions %>  
					<jsp:expression>  
					Java code  
					</jsp:expression>  
				<% Scriptlets %>  
					<jsp:scriptlet>  
					Java code  
					</jsp:scriptlet>  
					<%! Declarations %>  
					<jsp:declaration>  
					Java code  
					</jsp:declaration>  
					1. Các biến được định nghĩa sẵn trong JSP  
					Để đơn giản hoá mã trong các biểu thức hay scriptlets trong JSP, người ta  
					cung cấp cho chúng ta chín đối tượng đã được định nghĩa trước, có người còn gọi  
					là các đối tượng ngầm định. Do các khai báo trong JSP nằm ngoài phương thức  
					_jspService (được gọi bởi service) nên các đối tượng này không cho phép các  
					khai báo truy cập vào.  
					request  
					Biến này có kiểu là javax.servlet.http.HttpServletRequest, có phạm  
					vi trong một yêu cầu (request). Nó cho phép chúng ta truy cập vào  
					các tham số của request như loại request (GET, POST, …) và các  
					incoming HTTP header (cookies).  
					response  
					Có kiểu là javax.servlet.http.HttpServletResponse, có phạm vi toàn  
					trang (page). Chú ý rằng vì luồng xuất thì thường làm vật đệm cho  
				nên việc gán mã tình trạng của HTTP và response header thì hợp lý  
					trong JSP, mặc dù điều này thì không được phép trong servlet một  
					khi đã có luồng xuất nào được gởi đến client.  
					out  
					Có kiểu javax.servlet.jsp.JspWriter và phạm vi trong một trang  
					(page). Dùng để gởi các thông xuất đến client. Đối tượng out được  
					dùng thường xuyên trong scriptlets, các biểu thức tự động được đưa  
					vào luồng xuất nên hiếm khi cần tham chiếu đến đối tượng này.  
					session  
					Có phạm vi trong một phiên truyền (session) và kiểu tương ứng là  
					javax.servlet.http.HttpSession. Gọi về các phiên truyền được tạo tự  
					động vì thế biến này vẫn còn kết nối ngay cả chẳng có một tham  
					chiếu incoming session nào. Một ngoại lệ là nếu chúng ta sử dụng  
					thuộc tính session của page directive để tắc các phiên truyền, mà lại  
					cố tham chiếu đến biến session thì sẽ gây ra các lỗi vào lúc trang  
					JSP được dịch thành servlet.  
					application  
					Biến này có kiểu là javax.servlet.ServletContext, có phạm vi trong  
					toàn ứng dụng (application). ServletContext lấy từ một đối tượng  
					cấu hình servlet là getServletConfig().getContext(). Các trang JSP  
					có thể lưu trữ dữ liệu persistent trong đối tượng ServletContext tốt  
					hơn là trong các biến thể hiện. ServletContext có các phương thức  
					setAttribute và setAttribute mà cho phép chúng ta lưu trữ dữ liệu  
					config  
				Biến này có phạm vi trang (page) và có kiểu tương ứng là  
					javax.servlet.ServletConfig.  
					pageContext  
					Biến này có kiểu là javax.servlet.jsp.PageContext và có phạm vi là  
					trang (page). pageContext cho phép một điểm truy cập duy nhất tới  
					nhiều thuộc tính của trang và cung cấp một nơi thuận tiện để lưu  
					trữ dữ liệu dùng chung. Biến pageContext lưu trữ giá trị của  
					javax.servlet.jsp.PageContext cùng với trang hiện hành. Có thể  
					xem chi tiết trong chương II về JavaBeans.  
					page  
					Biến này đồng nghĩa với this và điều này thì không hữu ích trong  
					ngôn ngữ lập trình Java, có kiểu là java.lang.Object và có phạm vi  
					trang (page).  
					exception  
					Trong một trang lỗi, chúng ta có thể truy cập vào đối tượng  
					exception. Biến này có kiểu là java.lang.Throwable và phạm vị là  
					trang (page).  
					2. Biểu thức trong JSP  
					Biểu thức trong JSP được dùng để chèn các giá trị trực tiếp vào luồng xuất.  
					Nó có dạng sau:  
					<%= Java expressions %>  
					Biểu thức này được định trị, được chuyển thành chuổi, và được chèn vào  
					trong trang. Sự định trị diễn ra ở thời gian runtime (khi trang được yêu cầu) và do  
				đó có đầy đủ quyền truy cập các thông tin của yêu cầu này. Ví dụ sau đây mô tả  
					ngày/giờ mà trang được yêu cầu:  
					Current time: <%= new java.util.Date() %>  
					Trong Java mỗi câu lệnh đều có dấu ‘;’ kết thúc dòng. Tại sao biểu thức  
					trong JSP lại không có dấu ‘;’? Vì biểu thức này được đưa vào luồng xuất chẳng  
					hạn như PrintWriter. Với ví dụ trên có thể chuyển vào servlet như sau:  
					PrintWriter out = response.getWriter();  
					out.println(“Current time:” + new java.util.Date());  
					a) Biểu thức như là giá trị trong elements khác.  
					Biểu thức có thể được sử dụng trong các thuộc tính của các elements  
					khác. Giá trị từ các biểu thức này sẽ được tính vào thời gian yêu cầu (request  
					time). Các elements cho phép sử dụng biểu thức trong các thuộc tính của chúng  
					là:  
					Tên Element  
					jsp:setProperty  
					jsp:include  
					Tên thuộc tính  
					name và value  
					page  
					jsp:forward  
					page  
				jsp:param  
					value  
					b) Ví dụ expression.jsp.  
					Đây là một ví dụ hoàn chỉnh đầu tiên của JSP. Nó chỉ hiển thị thời gian  
					hiện thời, tên máy,.. khi file này được truy cập.  
					Code 1: expression.jsp  
					<?xml version="1.0" encoding="ISO-8859-1" ?>  
					<!DOCTYPE html  
					PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"  
					"DTD/xhtml1-strict.dtd">  
					<!-- Example of JSP Expressions. -->  
					<html>  
					<head>  
					<title>JSP Expressions</title>  
					<meta name="author" content="Giang" />  
					<meta  
					name="keywords"  
					content=  
					"JSP,expressions,JavaServer,Pages,servlets" />  
				<meta name="description" content=  
					Code 1: expression.jsp (tiếp theo)  
					"A quick example of JSP expressions." />  
					<link rel="stylesheet" href="JSP-Styles.css"  
					type="text/css" />  
					</head>  
					<body>  
					<h2>JSP Expressions</h2>  
					<ul>  
					<li>  
					Current time: <%= new java.util.Date() %>  
					</li>  
					<li>  
					Your hostname:<%=request.getRemoteHost()%>  
					</li>  
					<li>Your session ID: <%= session.getId() %></li>  
				<li>The <code>testParam</code> form parameter:  
					<%= request.getParameter("testParam") %>  
					</li>  
					</ul>  
					</body>  
					</html>  
					3. JSP scriptlets  
					Scriptlets là những đoạn mã có chứa bất kỳ mã Java nào nằm giữa “<%”  
					và “%>”. Nếu chúng ta muốn thực hiện thứ gì đó phức tạp hơn là chỉ chèn vào  
					một biểu thức đơn giản thì JSP scriptlets cho phép chúng ta thêm bất kỳ đoạn mã  
					Java nào vào trang JSP. Các scriptlets này được đưa vào phương thức _jspService  
					(mà được gọi bởi service) của servlet. Có cú pháp:  
					<% Java Code %>  
					Code 2: scriptlet.jsp  
					<?xml version="1.0" encoding="ISO-8859-1" ?>  
					<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0  
					Strict//EN" "DTD/xhtml1-strict.dtd">  
					<!-- Example of JSP Scriptlets. -->  
				<html>  
					Code 2: scriptlet.jsp (tiếp theo)  
					<head>  
					<title>JSP Scriptlets</title>  
					</head>  
					<%  
					String bgColor = request.getParameter("bgColor");  
					boolean hasExplicitColor;  
					if (bgColor != null) {  
					hasExplicitColor = true;  
					} else {  
					hasExplicitColor = false;  
					bgColor = "WHITE";  
					}
					%>  
					<body bgcolor="<%= bgColor %>">  
					<h2 align="center">Color Testing</h2>  
				<%  
					if (hasExplicitColor) {  
					out.println("You supplied an explicit background color  
					of " + bgColor + ".");  
					} else {  
					out.println("Using default background color of WHITE. "  
					+ "Supply the bgColor request attribute to try " +  
					"a standard color, an RRGGBB value, or to see " +  
					"if your browser supports X11 color names.");  
					}
					%>  
					</body>  
					</html>  
					4. Khai báo trong JSP  
					Một khai báo trong JSP cho phép chúng ta định nghĩa các phương thức  
					hoặc các trường (biến) có phạm vi toàn trang. Khai báo sẽ được chèn vào trong  
					lớp của servlet (bên ngoài phương thức _jspService được gọi bởi service để xử lý  
					một yêu cầu). Một khai báo có dạng sau:  
					<%! Java Code %>  
				Các khai báo trong JSP thì không phát sinh ra bất kỳ thông xuất nào,  
					chúng thường được dùng để liên kết với các biểu thức hoặc scriptlets. Chẳng hạn,  
					đây là một trang JSP mà in ra số lần truy cập vào trang.  
					Code 3: declaration.jsp  
					<?xml version="1.0" encoding="ISO-8859-1" ?>  
					<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0  
					Strict//EN" "DTD/xhtml1-strict.dtd">  
					<!-- Example of JSP Declarations. -->  
					<html>  
					<head>  
					<title>JSP Declarations </title>  
					<link rel="styleshhet" href="JSP-Styles.css" type="text/css"  
					/>  
					</head>  
					<body>  
					<h1>JSP Declarations</h1>  
					<%! private int accessCount = 0; %>  
					<h2>Accesses to page since server reboot:  
				<%= ++accessCount %></h2>  
					</body>  
					</html>  
					III. JSP directives.  
					Directives là các lệnh (chỉ thị) đến JSP container để xử lý trang JSP, chúng  
					tác động lên toàn bộ cấu trúc của lớp servlet. Chúng có dạng sau:  
					<%@ directive {attr=“value”} %>  
					Cú pháp này thì dễ để soạn thảo, ngắn gọn, súc tích nhưng không tương thích  
					với XML (Cú pháp XML ở dưới).  
					Directives thì không xuất bất kỳ thứ gì ra luồng xuất out. Chỉ có ba directives  
					trong JSP: page, include và taglib.  
					Cú pháp XML  
					Tương tự như scripting elements, các directives cũng có hai dạng cú pháp:  
					JSP Syntax  
					XML Syntax  
					<%@ page attr_list %> : attr_list <jsp:directive.page attr_list />  
					sẽ được mô tả phần sau trong  
					chương này.  
				<%@ include file=”URL” %>  
					<jsp:directive.include file=”URL”  
					/>  
					<%@ taglib attr_list %> : <jsp:root attr_list>  
					directive này được trình bày  
					<!-- other elements-->  
					trong chương III Tag Libraries.  
					</jsp:root>  
					1. The page directive  
					page directive cho phép chúng ta điều khiển cấu trúc của servlet bằng  
					cách đưa vào các lớp, đặt MIME type, …. Một page directive có thể được đặt bất  
					cứ nơi nào trong trang JSP.  
					<%@ page import=“java.util.*, com.legiang.*” %>  
					page directive định nghĩa một số thuộc tính phụ thuộc vào trang và giao  
					tiếp giữa các thuộc tính này với JSP container.  
					language  
					Định nghĩa ngôn ngữ kịch bản được sử dụng trong scriptlets, biểu  
					thức và khai báo. Trong JSP 1.2 là phiên bản mới nhất chỉ có hổ  
					trợ “java” cho thuộc tính này do đó “java” này cũng là giá trị mật  
					định.  
					<%@ page language=“java” %>  
					extends  
				Thuộc tính này chỉ định lớp cha (superclass) của servlet sẽ được  
					phát sinh cho trang JSP, có dạng sau:  
					<%@ page extends=“package.class” %>  
					Chú ý rằng khi sử dụng thuộc tính này phải hết sức cẩn thận vì tại  
					server có thể đã dùng lớp cha mật định.  
					import  
					Thuộc tính này mô tả các kiểu sẵn dùng trong môi trường kịch bản  
					(theo java). Chúng ta có thể import vào từng lớp hoặc cả một gói  
					(package).  
					<%@ page import=“package.class | package.*” %>  
					Nếu import vào nhiều lớp hay packages thì cách nhau dấu “,”.  
					session  
					Thuộc tính session kiểm soát liệu có hay không một trang tham gia  
					vào HTTP session. Có hai giá trị “true” và “false”. Mật định là  
					“true”, chỉ ra rằng biến ngầm định session nên được nối kết với  
					session hiện hành. Giá trị “false” có nghĩa rằng chẳng có session  
					nào được sử dụng tự động và nếu cố truy cập vào biến session sẽ  
					trả lỗi vào lúc trang được dịch thành servlet.  
					buffer  
					Thộc tính này xác định kích thước của vùng đệm được sử dụng bởi  
					biến out. Có dạng sau:  
					<%@ page buffer=“none | sizekb” %>  
				Thuộc tính này có giá trị mật định là “8kb”, giá trị “none” chẳng  
					có vùng đệm nào được cấp và tất cả dữ liệu xuất sẽ được ghi trực  
					tiếp qua ServletResponse, PrintWriter.  
					autoFlush  
					Xác định liệu luồng xuất có vùng đệm được tự động flush (giá trị  
					“true” mật định) khi vùng đệm đầy hay sẽ tung ra một ngoại lệ khi  
					vùng đệm tràn (“false”).  
					Chú ý rằng sẽ không hợp lý nếu đặt autoFlush=“false” khi  
					buffer=“none”.  
					isThreadSafe  
					Xác định mức độ an toàn của tiểu trình (thread) được cài đặt trong  
					trang (với giao tiếp SingleThreadModel), “true” là giá trị mật định.  
					info  
					Định nghĩa một chuỗi có thể truy xuất từ servlet bằng phương thức  
					getServletInfo().  
					<%@ page info=“Some Message” %>  
					errorPage  
					Thuộc tính này xác định một trang JSP nên bất kỳ các ngoại lệ nào  
					được tung ra nhưng không bắt ngoại lệ này trong trang hiện hành.  
					<%@ page errorPage=“Ralative URL” %>  
					Ngoại lệ tung ra sẽ có sẵn trong biến ngầm định exception.  
					isErrorPage  
				Xác định trang JSP hiện thời có thể hoạt động như một trang lỗi  
					cho một trang JSP khác. Giá trị “false” là mật định cho thuộc tính  
					này.  
					contentType  
					Thuộc tính này gán Content-Type cho response header, mô tả kiểu  
					MIME của tài liệu được gởi đến client. Thuộc tính contentType có  
					một trong hai dạng sau:  
					<%@ page contentType=“MIME-Type” %>  
					<%@  
					page  
					contentType=“MIME-Type;  
					charset=Character-Set” %>  
					Một số kiểu MIME-Type thường dùng: “text/html”, “text/xml”,  
					“text/plain”, “image/gif”, “image/jpeg”.  
					pageEncoding  
					Định nghĩa bộ mã hoá ký tự cho trang JSP (character encoding),  
					thuộc tính này hổ trợ cho bộ mã Unicode và Latin-1, có giá trị mật  
					định là “ISO-8859-1”  
					Code 4: pagedirective.jsp  
					<?xml version="1.0" encoding="ISO-8859-1" ?>  
					<!DOCTYPE html  
					PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"  
					"DTD/xhtml1-strict.dtd">  
				<html>  
					<head>  
					<title>The page Directive</titlle>  
					<link rel="styleshhet" href="JSP-Styles.css"  
					type="text/css" />  
					</head>  
					<body>  
					<h2>The page Directive</h2>  
					Ví dụ 4: pagedirective.jsp (tiếp theo)  
					<%-- JSP page directive --%>  
					<%@  
					page  
					import="java.util.*,  
					com.legiang.*"  
					contenType="text/html" %>  
					<%-- JSP Declaration (xem phần I.II.4) --%>  
					<%!  
					private String randomID() {  
					int num = (int)(Math.random()*10000000.0);  
					return("id" + num);  
					}
				private final String NO_VALUE = "<i>No Value</i>";  
					%>  
					<%-- JSP Scriptlet (xem phần I.3) --%>  
					<%  
					Cookie[] cookies = request.getCookies();  
					String oldID = ServletUtilities.getCookieValue(cookies, "userID",  
					NO_VALUE);  
					String newID;  
					if (oldID.equals(NO_VALUE)) {  
					newID = randomID();  
					} else {  
					newID = oldID;  
					}
					LongLivedCookiecookie = new LongLivedCookie ("userID" ,  
					newID);  
					response.addCookie(cookie);  
					%>  
					<%-- JSP Expressions (xem phần I.II.2) --%>  
					This page was accessed at <%= new Date() %> with a userID  
				cookie of <%= oldID %>.  
					</body>  
					</html>  
					2.The include directive  
					Chúng ta sử dụng include directive để đưa một file vào tài liệu JSP chính  
					vào lúc tài liệu dịch thành servlet (mà thường vào lần đầu tiên truy cập vào trang  
					này). Có cú pháp như sau:  
					<%@ include=“Relative URL” %>  
					Thật sự JSP chia làm hai nhánh để include một file vào một tài liệu chính.  
					File được include thì được chèn vào trang vào lúc biên dịch, Còn nhánh còn lại  
					thì được chèn vào tại thời gian yêu cầu (request) với element là jsp:include sẽ  
					được trình bày trong mục IV. Các action chuẩn.  
					File được include vào không những chứa HTML tĩnh mà còn chứa được mã  
					JSP động. Đặc tính này cho phép chúng ta tạo các thanh định hướng, các phần  
					thông tin cần tương tác, đếm số trang, ... riêng trên một file khi chúng ta có nhiều  
					trang sử dụng lại chúng. Nếu file được include thay đổi thì tất cả JSP files sử  
					dụng nó cần phải được cập nhật lại.  
					Ví dụ về include directive  
					File đầu tiên là một đoạn của trang chứa các thông tin tương tác cần thiết  
					cho file thứ hai dùng lại bằng include directive.  
				Code 5: contact.jsp  
					<%@ page import="java.util.Date" %>  
					<%-- Các biến sau sẽ trở thành các fields trong servlet khi JSP file  
					gọi file này. --%>  
					<%! private int accessCount = 0;  
					private Date accessDate = new Date();  
					private String accessHost = "<i>No previous access</i>";  
					%>  
					<hr/>  
					This page © 2000  
					<a href="http//www.LG.com/">my-company.com</a>.  
					This page has been accessed <%= ++accessCount %>  
					times since server reboot. It was last accessed from  
					<%= accessHost %> at <%= accessDate %>.  
					<% accessHost = request.getRemoteHost(); %>  
					<% accessDate = new Date(); %>  
				Code 6: includedirective.jsp  
					<?xml version="1.0" encoding="ISO-8859-1" ?>  
					<!DOCTYPE html  
					PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"  
					"DTD/xhtml1-strict.dtd">  
					Code 6: includedirective.jsp  
					<!-- Example of including files at page translation time. -->  
					<html>  
					<head>  
					<title>The include Directive</title>  
					<link rel="styleshhet" href="JSP-Styles.css" type="text/css" />  
					</head>  
					<body>  
					<table boder=5 align="center">  
					<tr>  
					<th class="title">Some Random Page</th>  
				</tr>  
					</ table >  
					<p>Information about our products and services.</p>  
					<p>Le, Le, Le.</p>  
					<p>Giang, Giang, Giang.</p>  
					<%@ include file="contact.jsp" %>  
					</body>  
					</html>  
					3. The taglib directive  
					Directive này định nghĩa thư viện tag và tiếp đầu ngữ cho những custom  
					tag được sử dụng trong trang JSP. Có cú pháp sau:  
					<%@ taglib uri=“URIToTagLib” prefix=“tagPrefix”%>  
					taglib directive sẽ được trình bày chi tiết trong chương III.  
					IV. Các action chuẩn.  
					Actions chẳng qua là elements được định nghĩa trong bản đặc tả JSP và luôn  
					luôn có sẵn trong các JSP file mà không cần import vào bất kỳ thứ gì và chúng có  
					cú pháp XML. Có chín actions chuẩn: jsp:include, jsp:useBean, jsp:setProperty,  
					jsp:getProperty, jsp:plugin, jsp:forward, jsp:fallback, jsp:params, jsp:param sẽ  
					được giới thiệu trong mục này.  
				1. Action chèn vào files ở thời gian request.  
					Với include directive cho phép chúng ta thêm vào các tài liệu chứa mã  
					JSP vào nhiều trang khác nhau nhưng lại có vấn đề là đòi hỏi chúng ta phải cập  
					nhật lại ngày sữa đổi của trang khi file được include thay đổi. Để loại bỏ vấn đề  
					này đặt tả JSP cung cấp cho chúng ta một action là <jsp:include> để include các  
					file vào thời gian yêu cầu (request). Mặc khác, do trang được biên dịch thành  
					servlet vào thời gian yêu cầu vì thế các file được include không thể chứa mã JSP.  
					Cú pháp của action này là:  
					<jsp:include page=“Relative URL” flush=“true”>  
					Ví dụ sau sử dụng jsp:include action để include bốn file html, ví dụ này  
					chỉ hiện thị các thông tin của các web sites nỗi tiếng.  
					Code 7: includerequest.jsp  
					<?xml version="1.0" encoding="ISO-8859-1" ?>  
					<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"  
					"DTD/xhtml1-strict.dtd">  
					<!-- Example of including files at request time. -->  
					<html>  
					<head>  
					<title>What’s New</title>  
					<link rel="stylesheet" href="JSP-Styles.css" type="text/css" />  
				Tải về để xem bản đầy đủ
Bạn đang xem 30 trang mẫu của tài liệu "Đồ án Lập trình JSP Technology", để tải tài liệu gốc về máy hãy click vào nút Download ở trên.
        
        
        File đính kèm:
do_an_lap_trinh_jsp_technology.pdf

