Quản lý công việc trên Web JSP – My SQL - Pdf 10

Đồ án tốt nghiệp Gvhd: Ts.Nguyễn Thúc
Hải
Phần I:
Phần I:
JSP TECHNOLOGY
JSP TECHNOLOGY
Chương I: CĂN BẢN VỀ JSP
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 book.” với URL là http://www.jsp.com/thank.jsp?
title= 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.

- 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.
Svth: Đinh Lê Giang Trang
2
SGML
HTML
XML
CDF
SMIL
CML
MML
Đồ án tốt nghiệp Gvhd: Ts.Nguyễn Thúc
Hải
- 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,
...)

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 :
- 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
Svth: Đinh Lê Giang Trang
4
Ví dụ với XML tags
<student>
<name>
<first>Giang</first>
<middle>Le</middle>
<last>Dinh</last>
</name>
<numberid>0750</numberid>
<age>22</age>
</student>
Ví dụ với HTML tags
<table>
<tr>
<td>Giang</td>
<td>Le</td>
<td>Dinh</td>

_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
Svth: Đinh Lê Giang Trang
5
Đồ án tốt nghiệp Gvhd: Ts.Nguyễn Thúc
Hải
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

đượ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

Tên Element Tên thuộc tính
jsp:setProperty name và value
jsp:include page
jsp:forward page
jsp:param value
b) Ví dụ expression.jsp.
Svth: Đinh Lê Giang Trang
8
Đồ án tốt nghiệp Gvhd: Ts.Nguyễn Thúc
Hải
Đâ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>

"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 " +
Svth: Đinh Lê Giang Trang
10
Đồ án tốt nghiệp Gvhd: Ts.Nguyễn Thúc

</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”} %>
Svth: Đinh Lê Giang Trang
11
Đồ án tốt nghiệp Gvhd: Ts.Nguyễn Thúc
Hải
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 sẽ
được mô tả phần sau trong chương
này.
<jsp:directive.page attr_list />
<%@ include file=”URL” %> <jsp:directive.include file=”URL” />
<%@ taglib attr_list %> : directive
này được trình bày trong chương III
Tag Libraries.
<jsp:root attr_list>
<!-- other elements-->
</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

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.
Svth: Đinh Lê Giang Trang
13
Đồ án tốt nghiệp Gvhd: Ts.Nguyễn Thúc
Hải
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

Đồ án tốt nghiệp Gvhd: Ts.Nguyễn Thúc
Hải
<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 {

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 &copy; 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
Svth: Đinh Lê Giang Trang
16
Đồ án tốt nghiệp Gvhd: Ts.Nguyễn Thúc
Hải
<?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>

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" />
</head>
<body>
<center>
<table boder="5">
<tr>
<th class="title">What's New at JspNews.com
</th>
</tr>
</table>
</center>

slip of the tongue, a popular television commentator was
heard to use the word "literally" when he did <i>not</i>
mean "figuratively."
<a href="http://www.espn.com/Slip.html">More details...</a>
2. Action chèn vào Applets cho Java Plug-In.
Với JSP, chúng ta không cần có bất kỳ cú pháp đặc biệt nào để include
vào các applet; chỉ dùng APPLET tag của HTML bình thường. Tuy nhiên, các
applet này phải sử dụng từ JDK 1.1 trở xuống vì cả hai trình duyệt phổ biết
nhất là Netscape 4.x và Internet Explorer 5.x vẫn chưa hổ trợ JDK 1.2. Do đó
applet có một số giới hạn sau:
- Để sử dụng Swing, chúng ta phải gởi các Swing files qua mạng.
Tiến trình này tốn rất nhiều thời gian và cũng thất bại trong
Svth: Đinh Lê Giang Trang
19
Đồ án tốt nghiệp Gvhd: Ts.Nguyễn Thúc
Hải
Internet Explorer 4 và Netscape 3.x (chỉ hổ trợ JDK 1.02) mà
Swing lại phụ thuộc vào JDK 1.1.
- Chúng ta không thể dùng Java 2D.
- Chúng ta không thể dùng gói collection (tập hợp) của Java 2.
- Mã của chúng ta chạy chậm hơn vì hầu hết các trình biên dòch
cho nền Java 2 được cải tiến rất đáng kể so với các trình biên
dòch từ JDK 1.1 trở xuống.
Hơn thế nữa, các phiên bản của các trình duyệt có một số mâu thuẫn
trong cách thức mà chúng hổ trợ AWT component khác nhau, làm cho việc thử
nghiệm và điều phối các giao tiếp người dùng trở nên phức tạp và nặng nề
hơn. Để giải quyết các vấn đề này, Sun đã phát triển Java Plug-In cho
Netscape và Internet Explorer mà cho phép chúng ta sử dụng Java 2 platform
cho các applet trong nhiều trình duyệt khác nhau.
Tuy nhiên, lại thật không may mắn là APPLET tag bình thường sẽ

Giống như APPLET tag.
jreversion
Xác đònh số phiên bản của Java Runtime Environment, các
giá trò có thể nhận là “1.1”, “1.2”.
nspluginurl
URL cho Netscape mà có thể download Plug-In. Giá trò mật
đònh sẽ hướng người dùng đến web site của Sun, nhưng với
intranet chúng ta có thể muốn chỉ dẫn người dùng đến một
bản sao cục bộ.
iepluginurl
URL cho Internet Explorer mà có thể download Plug-In.
b) jsp:param và jsp:params action.
jsp:param được dùng trong các actions khác như: jsp:include,
jsp:forward, jsp:plugin. Action này dùng để cung cấp cặp tên và giá trò (name/
value) cho các actions trên. Cụ thể với jsp:plugin, thì action này sẽ đònh rõ tên
và giá trò mà được truy cập từ trong applet bởi getParameter.
Tất cả jsp:param actions đều phải nằm trong jsp:params action. Ví dụ:
Code 12: Sử dụng Applet
<APPLET CODE=“MyApplet.class”
WIDTH=457 HEIGHT=350>
<PARAM NAME=“PARAM1” VALUE=“VALUE1”>
<PARAM NAME=“PARAM2” VALUE=“VALUE2”>
</APPLET>
trong JSP sử dụng như sau:
Svth: Đinh Lê Giang Trang
21
Đồ án tốt nghiệp Gvhd: Ts.Nguyễn Thúc
Hải
<jsp:plugin type=“applet” code=“MyApplet.class”
width=“457” height=“350” >

Tuy nhiên điều này chỉ là đònh hướng thường dùng chứ không có nghóa
là chỉ có một cách để thực hiện. Do đó để đơn giản và dễ sử dụng hơn trong
Svth: Đinh Lê Giang Trang
22
Đồ án tốt nghiệp Gvhd: Ts.Nguyễn Thúc
Hải
việc nhúng mã RequestDispatcher trong một scriptlet chúng ta có thể sử dụng
jsp:forward action. Ví dụ:
Code 14: Sử dụng jspforward
<% String dest;
if (Math.random() > 0.5) {
dest = “page1.jsp”;
} else {
dest = “page2.jsp”;
}
%>
<jsp:forward page=“<%= dest %>” />
Action này cho phép điều phối một request hiện hành vào lúc runtime
đến một tài nguyên tónh, trang JSP hay lớp servlet trong cùng một ứng dụng.
b) Sử dụng component trong JSP.
Chúng ta có thể sử dụng các actions sau để sử dụng lại các component
(Beans) trong JSP: jsp:useBean, jsp:setProperty, jsp:getProperty. Các action
này được trình bày trong chương II.
Svth: Đinh Lê Giang Trang
23
Đồ án tốt nghiệp Gvhd: Ts.Nguyễn Thúc
Hải
Chương II : JSP JAVABEANS
I. Khái niệm và các quy ước của Bean.
1. Khái niệm.

Svth: Đinh Lê Giang Trang
24
Đồ án tốt nghiệp Gvhd: Ts.Nguyễn Thúc
Hải
II. JSP sử dụng Beans.
1. Các JSP element dùng cho Bean.
a) jsp:useBean element
Cho phép chúng ta tải một Bean với tên và phạm vi xác đònh vào
trang JSP.
Cú pháp:
<jsp:useBean id = “beanName” scope = “value”
typeSpec>
<!-- các element khác -->
</jsp:useBean>
Nếu không có body, tức là không có tag nào trong thân của
jsp:useBean thì có cú pháp là empty tag.
TypeSpec có thể hoặc (|) trong các thuộc tính sau:
TypeSpec ::= class = “className” |
class = “className” type = “typeName” |
type = “typeName” class = “className” |
beanName = “beanName” type = “typeName” |
type = “typeName” beanName = “beanName” |
type = “typeName”
Các giá trò của thuộc tính scope:
- page
Đây là giá trò mặc đònh của scope. Bean với giá trò này sẽ
có sẵn từ javax.servlet.jsp.PageContext trong trang hiện
hành. Bean sẽ được loại bỏ khi một response gởi trở về
client hoặc request được chuyển tới một trang mới.
- request


Nhờ tải bản gốc

Tài liệu, ebook tham khảo khác

Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status