Tải bản đầy đủ (.doc) (117 trang)

ứng dụng cụ thể chương trình vào công ty liên doanh bêtông việt úc

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 (1.28 MB, 117 trang )

Luận Văn Tốt Nghiệp Bảng Nội Dung
Bảng Nội Dung
Bảng Nội Dung
PHẦN THỨ NHẤT JSP TECHNOLOGY 2
CHƯƠNG I CĂN BẢN VỀ JSP

2
I.Một số so sánh các công nghệ được sử dụng với công nghệ khác? 3
1.MySQL Server 3
1)Ưu diểm 3
2)Khuyết điểm 3
2.So sánh JSP với các công nghệ khác 3
1)JSP với ASP 3
2)JSP với PHP 4
3.Tầm quan trọng của XML cùng với XSLT 4
1)XML 4
2)XSLT 7
II.JSP scripting elements 7
1. CÁC BIẾN ĐƯỢC ĐỊNH NGHĨA SẴN TRONG JSP

8
2. BIỂU THỨC TRONG JSP

10
1)Biểu thức như là giá trị trong elements khác 11
2)Ví dụ expression.jsp 11
3. JSP SCRIPTLETS

12
4. KHAI BÁO TRONG JSP


13
III.JSP directives 14
1. THE PAGE DIRECTIVE

15
2. THE INCLUDE DIRECTIVE

19
3. THE TAGLIB DIRECTIVE

20
IV.Các action chuẩn 20
1. ACTION CHÈN VÀO FILES Ở THỜI GIAN REQUEST.

21
2. ACTION CHÈN VÀO APPLETS CHO JAVA PLUG-IN.

23
1)jsp:plugin action 24
2)jsp:param và jsp:params action 25
3)jsp:fallback action 25
3. ACTIONS DÙNG ĐỂ FORWARD VÀ SỬ DỤNG COMPONENTS.

26
1)Chuyển các request từ các trang JSP 26
2)Sử dụng component trong JSP 27
CHƯƠNG II JSP JAVABEANS

28
I.Khái niệm và các quy ước của Bean 28

1. KHÁI NIỆM.

28
2. CÁC QUY ƯỚC CỦA BEAN.

28
II.JSP sử dụng Beans 29
1. CÁC JSP ELEMENT DÙNG CHO BEAN.

29
1)jsp:useBean element 29
2)jsp:setProperty element 30
3)jsp:getProperty element 30
2. PHƯƠNG PHÁP CHUYỂN KIỂU TỰ ĐỘNG JSP  BEAN

30
3. TÌM HIỂU CÁCH INTROSPECTOR LÀM VIỆC.

31
1)Introspector là gì? 31
2)Thiết kế các phương thức mẫu dùng cho thuộc tính 32
3)Khai báo các phương thức một các tường minh 32
4. THUỘC TÍNH CỦA BEAN.

33
1)Các phương thức truy xuất 33
2)Các loại thuộc tính 33
III.Các giao tiếp bổ trợ cho Bean 37
1. GIAO TIẾP BEANINFO


37
2. GIAO TIẾP SERIALIZABLE

38
Vinh&An 04/05/2001 Trang
i
i
3
6
9
12
15
18
21
24
27
30
33
36
39
42
45
48
51
54
3
Luận Văn Tốt Nghiệp Bảng Nội Dung
3. GIAO TIẾP HTTPSESSIONBINDINGLISTENER

38

CHƯƠNG III TAG LIBRARIES

40
I.Tag library là gì ? 40
II.Cách dùng các tags trong JSP 41
1. KHAI BÁO CÁC TAG LIBRARY.

41
2. CÁC LOẠI TAG.

41
1)Các tag đơn giản 42
2)Các tag có thuộc tính 42
3)Các tag có nội dung 42
4)Các tag định nghĩa các biến kịch bản 43
5)Kết hợp các tag 43
III.Định nghĩa các tag 43
1. TAG HANDLER.

44
2. TAG LIBRARY DESCRIPTOR.

45
3. CÁC VÍ DỤ.

46
1)Các tag đơn giản 46
2)Các tag có thuộc tính 48
3)Các tag có nội dung 50
4)Các tag định nghĩa các biến kịch bản 53

4. TAG HANDLER ĐƯỢC TRIỆU GỌI NHƯ THẾ NÀO?

57
PHẦN THỨ HAI PHÂN TÍCH – THIẾT KẾ – CÀI ĐẶT 56
CHƯƠNG IV PHÂN TÍCH – THIẾT KẾ

56
I.Phân Tích 56
1. ĐẶT VẤN ĐỀ.

56
2. ĐỊNH NGHĨA CÁC YÊU CẦU.

57
3. PHẠM VI ĐỀ TÀI.

58
4. MÔ HÌNH XỬ LÝ QUAN NIỆM.

59
1)Sơ đồ ngữ cảnh 59
2)Sơ đồ phân rã chức năng 59
3)Sơ đồ hệ thống 60
5. MÔ HÌNH DỮ LIỆU QUAN NIỆM.

66
II.Thiết Kế 67
6. THIẾT KẾ XỬ LÝ.

67

1)Sơ đồ hệ thống mức vật lý 67
2)Các đơn vị thiết kế 67
3)Một số giải thuật được thể hiện bàng lưu đồ 68
7. THIẾT KẾ CƠ SỞ DỮ LIỆU

73
4)Mô hình dữ liệu vật lý 73
5)Bảng mô tả chi tiết 73
6)Các ràng buộc toàn vẹn 78
7)Bảng tầm ảnh hưởng 80
8. THIẾT KẾ CHƯƠNG TRÌNH.

83
9. THIẾT KẾ GIAO DIỆN.

84
CHƯƠNG V ỨNG DỤNG QUẢN LÝ CÔNG VIỆC

88
I.Cài đặt và triển khai ứng dụng 88
1. CÁC PHẦN MỀM CẦN THIẾT.

88
2. TRIỂN KHAI ỨNG DỤNG WEB.

88
3. CÀI ĐẶT ỨNG DỤNG THE WEB WORK.

90
II. Hướng dẫn sử dụng 94

III. Ứng dụng cụ thể chương trình vào công ty Liên Doanh Bêtông Việt Úc 98
KẾT LUẬN 102
HƯỚNG PHÁT TRIỂN 103
DANH SÁCH WEB SERVERS HỔ TRỢ JSP 104
Vinh&An 04/05/2001 Trang
ii
ii
57
60
63
66
69
72
75
78
81
84
87
90
93
96
99
102
105
6
Luận Văn Tốt Nghiệp Bảng Nội Dung
BẢNG THUẬT NGỮ 105
TÀI LIỆU THAM KHẢO 108
Vinh&An 04/05/2001 Trang
iii

iii
108
9
Luận Văn Tốt Nghiệp Lời Giới Thiệu
Lời Giới Thiệu
Lời Giới Thiệu
Thương mại điện tử giờ đây đã thực sự trở thành một lĩnh vực sôi động của
nền kinh tế, là xu hướng phát triển tất yếu của nền kinh tế trong thế kỷ 21 –
Kỷ nguyên công nghệ thông tin. Đặc biệt là đối với các nước đang phát triển
như Việt Nam chúng ta. Thương mại điện tử là cơ hội, là phương tiện để đưa
tin học vào quản lý, để thâm nhập vào thị trường toàn cầu, . . .
Sự phát triển của công nghệ thông tin sẽ số hoá nền kinh tế, sự phát triển của
thương mại điện tử sẽ giúp đẩy nhanh tốc độ toàn cầu hoá về thương mại.
Các giao dịch, quản lý trên mạng sẽ xoá nhòa đi sự cách biệt về thời gian và
không gian giữa văn phòng làm việc và nơi cư ngụ, giữa các nước, các khu
vực trên thế giới. Mức độ ảnh hưởng của các công ty nhỏ đối với thị trường
thế giới cũng sẽ không thua kém gì so với các công ty lớn. Xu hướng hướng
hình thành các công ty “Vô trọng ” (Zero Gravity Company) ngày càng trở
nên phổ biến, các công ty này có thể thành công mà không cần phụ thuộc
vào vị trí, phòng ốc, tài sản, . . . mà chỉ cần một số lượng nhân viên tối thiểu
và một máy tính kết nối vào mạng, điển hình như Yahoo, Amazon, . . .
Đứng trước thực tế, thương mại điện tử vẫn còn quá mới và xa lạ ở nước ta
nhưng mức độ tác động của nó đối với nền kinh tế nước ta nói riêng và thế
giới nói chung là rất lớn, hơn nữa ở hầu hết các cơ quan nhà nước hay tư
nhân, đều có khâu quản lý và phân công công việc cụ thể cho từng cá nhân
và tập thể (hay nhóm) nhằm mục đích khai thác các tiềm năng của Internet,
nâng cao hiệu quả quản lý, năng suất công việc và được sự cho phép, động
viên của Thầy Synh, chúng em xin mượn luận văn tốt nghiệp này để nhằm
xây dựng một chương trình ứng dụng thương mại điện tử vào quản lý, trình
bày một số hiểu biết của mình về thương mại điện tử. Tuy đã cố gắng rất

nhiều nhưng sự hiểu biết có hạn nên không thể tránh khỏi những sai sót, rất
mong nhận được sự góp ý và chỉ bảo của thầy cô và các bạn.
111
114
117
120
123
126
129
132
135
138
JSP Technology Căn Bản Về JSP
Phần thứ nhất
JSP Technology
JSP Technology
Vinh&An 04/05/2001 Trang
1
1
12
141
144
147
JSP Technology Căn Bản Về JSP
Phần thứ nhất
Phần thứ nhất
JSP Technology
JSP Technology
Chương I
Chương I

Căn Bản Về JSP
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 vinh an book.” với URL là />title=vinh+an
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ó.
Vinh&An 04/05/2001 Trang
2
2
150
153
156
159
162
165
168
171
174
177
180
183
15
JSP Technology Căn Bản Về JSP
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 moi ứ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.
I.
Một số so sánh các công nghệ được sử dụng với công nghệ
Một số so sánh các công nghệ được sử dụng với công nghệ
khác?

khác?
1.
1.
MySQL Server.
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:
1) Ư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).
2) 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.
2.
So sánh JSP với các công nghệ khác.

So sánh JSP với các công nghệ khác.
1) JSP với ASP.
Vinh&An 04/05/2001 Trang
3
3
186
189
192
195
198
201
204
207
210
213
HTML
JSP Technology Căn Bản Về JSP
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.
2) 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.
3.
Tầm quan trọng của XML cùng với XSLT.
Tầm quan trọng của XML cùng với XSLT.
1) 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
Implementation
Vinh&An 04/05/2001 Trang
4
4
18
216
219
222
225
228
231
234

237
240
243
246
SGML
XML
CDF
SMIL
CML
MML
JSP Technology Căn Bản Về JSP
subset
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 :
Vinh&An 04/05/2001 Trang

5
5
Ví dụ với XML tags
<student>
<name>
<first>Vinh</first>
<middle>Tran Ngoc</middle>
<last>Nguyen</last>
</name>
<numberid>0750</numberid>
<age>22</age>
</student>
Ví dụ với HTML tags
<table>
<tr>
<td>Vinh</td>
<td>Tran Ngoc</td>
<td>Nguyen</td>
</tr>
<tr>
<td>Number id : </td>
<td>0750</td>
</tr>
<tr>
<td>Age :</td>
<td>22</td>
</tr>
</table>
249
252

255
258
261
264
267
270
273
276
279
282
21
JSP Technology Căn Bản Về JSP
- 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, … Để hiểu rỏ
hơn chúng tơi vẽ hai hình sau:
SQL Server
Database
Oracle
Database
Legacy ISAM /

VSAM Database
POET
Database
Files
Mô Hình Chuyển Đổi Dữ Liệu
Giữa Các CSDL
Vinh&An 04/05/2001 Trang
6
6
285
288
291
294
297
JSP Technology Căn Bản Về JSP
SQL Server
Database
Oracle
Database
Legacy ISAM /
VSAM Database
POET
Database
Files
Mô Hình Chuyển Đổi Dữ Liệu
Giữa CSDL Và XML
Common
XML
Format
2) 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.
II.
JSP scripting elements.
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
Template text
Vinh&An 04/05/2001 Trang
7
7
24
300
303
306
309

312
315
318
JSP Technology Căn Bản Về JSP
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
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.
1.
Các biến được định nghĩa sẵn trong JSP
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
Vinh&An 04/05/2001 Trang
8
8
321
324
327
330
333
336
339
342
27
JSP Technology Căn Bản Về JSP
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
Vinh&An 04/05/2001 Trang
9
9
345
348
351
354
357
360
363
366
369
372
375
378
JSP Technology Căn Bản Về JSP
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.
2.
Biểu thức trong JSP
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();
Vinh&An 04/05/2001 Trang
10
10

30
381
384
387
390
393
396
399
402
405
408
411
JSP Technology Căn Bản Về JSP
out.println(“Current time:” + new java.util.Date());
1)
1)
Biểu thức như là giá trị trong elements khác.
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 Tên thuộc tính
jsp:setProperty name và value
jsp:include page
jsp:forward page
jsp:param value
2)
2)
Ví dụ expression.jsp.

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="Vinh&An" />
<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" />
Vinh&An 04/05/2001 Trang
11
11
414
417
420
423
426
429
432

435
438
33
JSP Technology Căn Bản Về JSP
</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.
3.
JSP scriptlets
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>
Vinh&An 04/05/2001 Trang
12
12
441
444
447
450
453
456
459
462
465
468
471
474
JSP Technology Căn Bản Về JSP
<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.
4.
Khai báo trong JSP

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
Vinh&An 04/05/2001 Trang
13
13
36
477
480
483
486
489
492
495
498
501
504
507
510
JSP Technology Căn Bản Về JSP
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.
III.
JSP directives.
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
Vinh&An 04/05/2001 Trang
14
14
513
516
519
522
525
528
531
534
537
540
543
546
39
JSP Technology Căn Bản Về JSP
<%@ 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.
1.
The page directive
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.vinhan.*” %>
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.*” %>
Vinh&An 04/05/2001 Trang
15
15
549
552
555
558
561
564
567
570
JSP Technology Căn Bản Về JSP
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
Vinh&An 04/05/2001 Trang
16
16
42
573
576
579
582
585
588
591
594
597
600

603
JSP Technology Căn Bản Về JSP
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>
Vinh&An 04/05/2001 Trang
17
17
606
609
612
615
618
621
624
627
630
633
636
45
JSP Technology Căn Bản Về JSP
<h2>The page Directive</h2>
Ví dụ 4: pagedirective.jsp (tiếp theo)
<% JSP page directive %>
<%@ page import="java.util.*, com.vinhan.*"
contenType="text/html" %>
<% JSP Declaration (xem phần I.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.2) %>
This page was accessed at <%= new Date() %> with a
userID
cookie of <%= oldID %>.
</body>
</html>
Vinh&An 04/05/2001 Trang

18
18
639
642
645
648
651
654
657
660
663
666
669
672
JSP Technology Căn Bản Về JSP
2.
2.
The include directive
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 III. 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 &copy; 2000
<a href="http//www.vinhan.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(); %>
Vinh&An 04/05/2001 Trang
19
19
48
675
678

681
684
687
690
693
696
699
702
705
708
JSP Technology Căn Bản Về JSP
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>Vinh, Vinh, Vinh.</p>
<p>An, An, An.</p>
<%@ include file="contact.jsp" %>
</body>
</html>
3.
3.
The taglib directive
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.
IV.
Các action chuẩn.
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
Vinh&An 04/05/2001 Trang
20
20
711
714
717
720
723

726
729
732
735
738
741
51
JSP Technology Căn Bản Về JSP
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.
1.
Action chèn vào files ở thời gian request.
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>
Vinh&An 04/05/2001 Trang
21
21
744
747
750
753
756
759
762
765
768
771

774
777

×