TRƯỜNG CAO ĐẲNG CÔNG NGHỆ THÔNG TIN TP.HCM
LẬP TRÌNH ỨNG DỤNG MẠNG LẬP TRÌNH ỨNG DỤNG MẠNG BÀI 5 BÀI 5 JSP (Java Server Pages) JSP (Java Server Pages) JSP (Java Server Pages)
1
GIẢNG VIÊN: VÕ TẤN DŨNG
g n ũ D n ấ T õ V
:
V G
PHẦN 1
GIGIỚỚI THI
U JSP I THIỆỆU JSP
2
g n ũ D n ấ T õ V
:
V G
JSP LÀÀ GÌ?GÌ? JSP L
• JSP (Java Server Pages) cho phép ta chèn các đoạn mã Java vào trong các tập tin văn bản dạng HTML hay XML. Sau đó, các tập tin này sẽ được chuyển đổi thành Java Servlets để thực hiện việc tạo các trang web động.
• Công nghệ Java Server Pages hiện đang là một phương
pháp tạo web động thu hút sự chú ý của các nhà phát triển ứng dụng web. JSP cung cấp phương tiện đơn giản để tạo ra những trang web động.
• Công nghệ JSP là một thành phần trong họ Java, sử dụng
3
ngôn ngữ Java như là ngôn ngữ kịch bản (script). Hiện nay JSP cùng với các thành phần JavaBean, Enterprise JavaBean tạo nên sức mạnh cho họ Java trong việc xây dựng các ứng dụng web.
g n ũ D n ấ T õ V
:
V G
JSP LÀÀ GÌ?GÌ? JSP L
• Trang JSP đơn giản hiện thị ngày tháng hiện hành
The time on the server is <%= new java.util.Date() %>
4
• Server xử lý thành phần của JSP để chuyển đổi thành dữ liệu tĩnh trên trang HTML để trình bày trên Web browser
g n ũ D n ấ T õ V
:
V G
A JSP CCƠ Ơ CHCHẾẾ LLÀÀM VIM VIỆỆC CC CỦỦA JSP
• Khi người sử
dụng gọi trang JSP lần đầu tiên, Web Server triệu gọi trình biên dịch dịch trang JSP (trong trường hợp này là JDK) thành tập tin Java, kế đến tập tin java (Java Servlet) này sẽ biên dịch ra class. Chạy class để sinh ra các trang HTML.
5
g n ũ D n ấ T õ V
:
V G
VVíí ddụụ: : mmộộtt trang
trang JSPJSP
Một trang JSP:
Kết qua sinh ra tại Web Browser:
My First JSP Page Hello, JSP World!
My First JSP Page
Hello, JSP World!
<%for(int i=0; i<11; i++) {%>
<%=i %>
<%}// end for loop %>
Isn't this fun
0 1 2 3 4 5 6 7 8 9 10
Isn't this fun
6
g n ũ D n ấ T õ V
:
V G
PHẦN 2 COMMENTS COMMENTS DECLARATIONS DECLARATIONS EXPRESSIONS EXPRESSIONS
7
g n ũ D n ấ T õ V
:
V G
COMMENTS,DECLARATIONS,EXPRESSIONS COMMENTS,DECLARATIONS,EXPRESSIONS
• Phần này giới thiệu về các cú pháp (syntax) sau đây:
• Comments (các ghi chú) • Declarations (các khai báo) • Expressions (các biểu thức)
8
g n ũ D n ấ T õ V
:
V G
COMMENTS (ccáácc ghighi chchúú)) COMMENTS (
• Comments: là những chú thích, ghi chú được chèn vào để giải thích cho người đọc code HTML hoặc JSP dễ hiểu. Servlet không biên dịch thành phần này.
• Trang JSP chứa hai loại comments là:
• Hidden comment (hay còn gọi là JSP comment). • Output comment (hay còn gọi là HTML comment). • Output comments được xuất vào HTML file để gửi đến
client.
9
• Hidden comment chỉ hiển thị trong source code của trang JSP mà không xuất vào HTML file để gửi đến client. Hidden comment là ẩn đối với HTML file.
g n ũ D n ấ T õ V
:
V G
OUTPUT COMMENTS OUTPUT COMMENTS
• Cú pháp của Output Comments:
• Cú pháp này sinh ra một ghi chú được thấy trong HTML
file. HTML file này được sinh ra bởi JSP file.
10
• Trong cú pháp này ta thấy Output comment có thể chứa hay không chứa một biểu thức (expression) của JSP. Những gì chứa trong dấu ngoặc vuông có nghĩa là tùy chọn. Biểu thức JSP (expression) sẽ được tìm hiểu ở các slide sau.
g n ũ D n ấ T õ V
:
V G
OUTPUT COMMENTS OUTPUT COMMENTS
Ví dụ: đây là một code mẫu chứa trong tập tin jsp0002.jsp
Trong ví dụ này, xuất liệu Date và Time được sinh ra bởi biểu thức nhúng trong comment nhưng Date và Time này cũng không xuất hiện trong Web Browser (dù Date và Time này có xuất hiện trong HTML file).
<%-- This is hidden comment is won't --%> <%-- appear in the output HTML --%>11
g n ũ D n ấ T õ V
:
V G
OUTPUT COMMENTS OUTPUT COMMENTS
Đây là file HTML được sinh ra từ file JSP của slide trước. Nhưng file HTML này không xuất
gì ra Web Browser cả.
Với cách chèn biểu thức vào ghi chú trong JSP cho phép ta thực hiện ghi chú động (dynamic comments) trên HTML file.
12
g n ũ D n ấ T õ V
:
V G
HIDDEN COMMENTS HIDDEN COMMENTS
• Hidden comment được dùng để ghi chú trong các file JSP nhưng không xuất ra các file HTML khi gửi xuống client. Cú pháp:
<%-- hidden comment --%>
• JSP engine bỏ qua, không xử lý bất kỳ code nào nằm trong hidden comment. Do đó hidden comment cũng không xuất hiện ở Web Browser phía client.
13
• Ta thấy có bốn ký tự --%> nằm trong cú pháp của hidden comment. Cho nên nếu muốn chúng xuất hiện là chuỗi trong hidden comment thì ta phải viết là --%\> (có dấu xuyệt)
g n ũ D n ấ T õ V
:
V G
DECLARATIONS (ccáácc khai DECLARATIONS (
khai bbááoo))
• Declaration được dùng để khai báo các biến (variable) các phương thức (method) được dùng sau đó trong các JSP source file. Cú pháp declaration (chú ý dấu chấm than):
<%! declarations %>
Ví dụ:
<%! int a = 100, b = 2; %> <%! java.util.Date myDate = new java.util.Date(); %>
Tầm vực (Scope): • Một declaration có tầm vực trong một trang (page
14
scope). Có nghĩa là một khai báo (declaration) biến hay hàm trong một trang sẽ được sử dụng hợp lệ bởi các scriptlets, expressions và các declarations khác trong cùng một JSP source file.
g n ũ D n ấ T õ V
:
V G
DECLARATIONS (ccáácc khai DECLARATIONS (
khai bbááoo))
Theo Sun, có một số nguyên tắc sử dụng cho các JSP declarations: • Một declaration phải chứa ít nhất một phát biểu khai báo hoàn chỉnh. • Có thể khai báo nhiều biến (variables) hoặc phương thức (methods) trong một thẻ (tag) declaration, nhưng phải cách nhau bởi dấu chấm phẩy.
• Các declaration phải hợp lệ trong các ngôn ngữ kịch bản (scripting
language) được dùng trong JSP file. Các declaration phải phù hợp với đặc tả của ngôn ngữ Java.
• Một đặc tả phải được kết thúc bằng một dấu chấm phẩy. Nguyên tắc này giống với nguyên tắc dành cho Scriptlet, nhưng khác với nguyên tắc dành cho một Expression.
• Ta phải khai báo một biến hoặc là một phương thức trước khi sử dụng
chúng trong file JSP.
• Cũng có thể dùng một biến hoặc một phương thức được khai báo
trong packages imported bởi Page Directive, vì thế không cần phải khai báo lại chúng lần nữa trong một declaration.
15
g n ũ D n ấ T õ V
:
V G
EXPRESSIONS (ccáácc bibiểểuu ththứứcc)) EXPRESSIONS (
• Cú pháp cho một tag (thẻ) để khai báo một biểu thức như
sau (chú ý dấu bằng theo sau dấu %):
<%= expression %>
16
• Biểu thức chứa trong thẻ sẽ được tính toán, sau đó kết quả được chuyển sang chuỗi (String) để chèn vào file HTML với vị trí tương ứng của nó trong JSP file.
g n ũ D n ấ T õ V
:
V G
VVíí ddụụ
Some JSP expression follow a = 100 b = 2 a/b = 50 The date is Sat Feb 13 12:25:16 ICT 2010
<%-- Some JSP declarations follow --%> <%! int a = 100, b =2; %> <%! java.util.Date myDate = new java.util.Date(); %>Some JSP expression follow
a = <%= a %>
b = <%= b %>
a/b = <%= a/b %>
The date is <%= myDate %>
17
g n ũ D n ấ T õ V
:
V G
TTóómm ttắắtt
• Chúng ta vừa mới khảo sát:
• Output comments:
• Hidden comments:
<%-- hidden comment --%>
• Declarations:
<%! declarations %>
• Expressions:
18
<%= expression %>
g n ũ D n ấ T õ V
:
V G
PHẦN 3 SCRIPTLET SCRIPTLET ((mmẩẩuu kkịịchch bbảảnn))
19
g n ũ D n ấ T õ V
:
V G
P SCRIPTLET CCÚÚ PHPHÁÁP SCRIPTLET
• Thẻ (tag) scriptlet dùng để chứ một đoạn mã Java rồi được
nhúng (chèn) vào trong mã HTML.
• Một scriptlet có thể chứa số lượng bất kỳ các phát biểu
(statements) các khai báo biến (variable), khai báo phương thức (method) hoặc biểu thức (expressions).
• Cú pháp của scriptlet như sau:
<% code fragment %>
20
g n ũ D n ấ T õ V
:
V G
DDùùngng Scriptlet
Scriptlet đđểể llààmm ggìì??
Theo Sun, ta có thể dùng scriptlets cho các việc sau đây:
• Dùng khai báo biến, khai báo phương thức sẽ được dùng
trong file JSP.
• Viết các biểu thức hợp lệ (tương tự như phần khai báo
biểu thức expression của phần trước).
• Sử dụng bất kỳ đối tượng tiềm ẩn (implicit) hoặc bất kỳ đối
tượng nào đã được khai báo bằng thẻ
• Để viết bất kỳ phát biểu hợp lệ nào (statement). Các phát
21
biểu này phải phù hợp với quy định cú pháp, văn phạm của ngôn ngữ Java.
g n ũ D n ấ T õ V
:
V G
Scriptlet VVíí ddụụ Scriptlet
• Ví dụ:
<% c = a/b; %>
• Ví dụ:
<% myDate = new java.util.Date(); %>
• Ví dụ:
<% for (int i=0; i<11; i++) { %>
<%= i %>
<% }//end for loop %>
• Với Scriptlet, JSP cho phép ta nhúng và thực thi các
22
Servlet, JavaBean, Java Code.
g n ũ D n ấ T õ V
:
V G
Scriptlet VVíí ddụụ Scriptlet
Kết quả tại Web Browser phía Client:
a = 100 b = 2 c = 50 The date is Sat Feb 13 14:17:45 ICT 2010
<%--Some JSP declaration follow--%>
<%! int a = 100, b = 2, c; %>
<%! java.util.Date myDate; %>
a = <%= a%>
b = <%= b%>
<%-- scriptlet follows --%>
<%c=a/b;%>
c = <%= c %>
<%-- scriptlet follows --%>
<% myDate = new java.util.Date(); %>
The date is <%= myDate %>
<%-- two scriptlets follow --%>
<% for(int i=0; i<11; i++){ %>
<%= i%>
<% }//end for loop %>
23
0 1 2 3 4 5 6 7 8 9 10
g n ũ D n ấ T õ V
:
V G
TTóómm ttắắtt
• Chúng ta đã học được các thẻ sau: Output comments:
Hidden comments:
<%-- hidden comment --%>
Declarations:
<%! declarations %>
Expressions:
<%= expression %>
Scriptlets:
<% code fragment %>
24
g n ũ D n ấ T õ V
:
V G
PHẦN 4 DIRECTIVE DIRECTIVE ((chchỉỉ hhưướớngng))
25
g n ũ D n ấ T õ V
:
V G
DIRECTIVE DIRECTIVE
Include Directive.
Phần này trình bày hai loại Directive: • • Page Directive.
Cú pháp:
<%@ directivename attribute=value %>
Nếu có nhiều thuộc tính thì dùng cú pháp sau:
<%@ directive attribute1="value1" attribute2="value2"
26
... attributeN="valueN" %>
g n ũ D n ấ T õ V
:
V G
INCLUDE DIRECTIVE INCLUDE DIRECTIVE
•
Include directive được dùng để chèn một file vào trong một trang JSP khi trang JSP được biên dịch.
• File được chèn vào trang JSP được gọi là included file.
Included file có thể là: • JSP file. • HTML file. • Text file. • File được viết code bằng ngôn ngữ Java.
• Khi chèn file, chú ý cẩn thận để included file không có chứa các thẻ như , ,
, hoặc . Bởi vì cả nội dung của included file được thêm vào JSP file, nếu có các thẻ đó trong included file sẽ gây đụng độ với các thẻ tương tự trong JSP file.• Chú ý: một số trình duyệt web chấp nhận đụng độ, một số
27
trình duyệt không chấp nhận đụng độ.
g n ũ D n ấ T õ V
:
V G
INCLUDE DIRECTIVE INCLUDE DIRECTIVE
28
• Ví dụ: <%@ include file="jsp005a.jsp" %> <%@ include file="jsp005a.htm" %>
g n ũ D n ấ T õ V
:
V G
: INCLUDE DIRECTIVE (jsp005.jsp) VVíí ddụụ: INCLUDE DIRECTIVE (jsp005.jsp)
The date and time produced by an include file:
<%@ include file="jsp005a.jsp" %>
Include an HTML file here:
<%@ include file="jsp005a.htm" %>
29
g n ũ D n ấ T õ V
:
V G
: INCLUDE DIRECTIVE (jsp005a.jsp) VVíí ddụụ: INCLUDE DIRECTIVE (jsp005a.jsp)
<%-- Produce a String containing the current date and time --%> <%= new java.util.Date() %>
30
g n ũ D n ấ T õ V
:
V G
: INCLUDE DIRECTIVE (jsp005a.html) VVíí ddụụ: INCLUDE DIRECTIVE (jsp005a.html)
An included HTML file
31
g n ũ D n ấ T õ V
:
V G
VVíí ddụụ: INCLUDE DIRECTIVE (
: INCLUDE DIRECTIVE (kkếếtt ququảả))
32
The date and time produced by an include file: Mon Feb 15 14:47:47 ICT 2010 Include an HTML file here: An included HTML file
g n ũ D n ấ T õ V
:
V G
INCLUDE DIRECTIVE INCLUDE DIRECTIVE
Sự khác nhau giữa static include và dynamic include: • Cú pháp static include:
<%@ include file=“tên-file” %> • Ví dụ: <%@ include file=”filename.jsp” %>
• Cú pháp dynamic include:
• Ví dụ: is
• Static Include: nội dung văn bản của included file sẽ được chèn vào
JSP file. Việc này xảy ra ở giai đoạn translation. Nó giống như cắt dán văn bản.
• Dynamic Include: included file sẽ được dịch riêng với JSP file. Kết
quả (response) sau khi dịch của included file sẽ được chèn vào JSP file. Việc này xảy ra ở giai đoạn run-time.
• Static include không thể chấp nhận truyền đối số, còn dynamic include thì chấp nhận truyền đối số. Static includes chạy nhanh hơn dynamic includes
33
g n ũ D n ấ T õ V
:
V G
PAGE DIRECTIVE PAGE DIRECTIVE
• Page directive được dùng để định nghĩa các thuộc tính
áp dụng cho cả một trang JSP và bất cứ static file nào
được chèn vào nó bằng Include Directive hoặc
• Cú pháp đơn giản: <%@ page attributes=value%> • Ta có thể sử dụng page directive nhiều lần để thiết lập giá
trị cho các thuộc tính trong một JSP page (translation unit). Nhưng nếu dùng cho thuộc tính import thì chỉ được sử dụng không quá một lần.
• Ta có thể đặt page directive bất cứ chỗ nào trong
34
translation unit và nó có tầm vực trên cả một translation unit. Để khai báo rõ ràng và dễ hiểu thì nên đặt các page directive ở đầu trang JSP chính.
g n ũ D n ấ T õ V
:
V G
PAGE DIRECTIVE PAGE DIRECTIVE
Cú pháp đầy đủ của Page Directive: <%@ page
[ language="java" ] [ extends="package.class" ] [ import= "{ package.class | package.* }, ..." ] [ session="true|false" ] [ buffer="none|8kb|sizekb" ] [ autoFlush="true|false" ] [ isThreadSafe="true|false" ] [ info="text" ] [ errorPage="relativeURL" ] [ contentType="mimeType [ ;charset=characterSet ]" |
"text/html ; charset=ISO-8859-1" ]
35
[ isErrorPage="true|false" ]
%>
g n ũ D n ấ T õ V
:
V G
PAGE DIRECTIVE PAGE DIRECTIVE
Ý nghĩa của các thuộc tính của Page Directive: •
language: Chỉ định ngôn ngữ lập trình sẽ được sử dụng (ngôn ngữ kịch bản) trong trang văn bản JSP. Hiện nay trang JSP chỉ sử dụng một ngôn ngữ duy nhất đó là Java.
• extends: chỉ định địa chỉ lớp cha của lớp mà trang jsp cần sử dụng. import: đây là thuộc tính rất quan trọng, thường sử dụng cho bất kỳ • trang JSP nào cần đến các lớp của Java cũng như của người sử dụng. Với thuộc tính này ta có thể chỉ ra lớp cụ thể hoặc tập hợp các lớp cần dung.
• session: nếu có giá trị là true, trang JSP của ta có thể sử dụng
“phiên giao dịch” để trao đổi và lưu giữ thông tin giữa các trang JSP với nhau. Ngược lại, trang JSP không thể dung các đối tượng session cho bất cứ công việc gì. Giá trị mặc định của thuộc tính này là true.
36
• buffer: chỉ định kích thước vùng đệm cần dung cho trang JSP (tính theo kilobytes). Giá trị mặc định là 8KB. Thuộc tính này dung với thuộc tính autoFlush. (flush:làm sạch).
g n ũ D n ấ T õ V
:
V G
PAGE DIRECTIVE PAGE DIRECTIVE
Ý nghĩa của các thuộc tính của Page Directive (tiếp theo): • autoFlush: giá trị mặc định là true. Nếu mang giá trị false, một
•
•
exception sẽ phát sinh để báo lỗi khi bộ đệm tràn. isThreadSafe: cho phép tính chất đa luồng hay không. Nếu mang giá trị true, động cơ JSP được phép gửi nhiều yêu cầu đến trang JSP cùng một lúc (mang tính chất đồng thời). Ngược lại, với giá trị false, chúng ta chỉ có thể nhận tại mỗi thời điểm một yêu cầu. Thuộc tính này có giá trị mặc định là true. info: chỉ định những thông tin về trang JSP có thể truy cập thông qua hành vi Servlet.getServletInfo().
• errorPage và isErrorPage: phục vụ cho dò tìm lỗi khi phiên
dịch trang JSP, khi isError là true thì các exception sẽ chuyển đến trang chỉ định trong errorPage.
37
• contentType: dung để mã hóa trang văn bản JSP trước khi gửi tới trình duyệt. Giá trị mặc địnhcho mimeType là text/html và characterSet mặc định là IS0-8859-1.
g n ũ D n ấ T õ V
:
V G
PAGE DIRECTIVE PAGE DIRECTIVE
Một số ví dụ về Page Directive:
38
• <%@ page laguage=“java” %> • <%@ page import=“java.util.*, java.lang.*” %> • <%@ page buffer=“5kb” autoFlush=“false” %> • <%@ page errorPage=“error.jsp” %> • <%@ page info="Info about the page" %>
g n ũ D n ấ T õ V
:
V G
PAGE DIRECTIVE PAGE DIRECTIVE
Ví dụ: <%-- Some page directives for the import attribute --%> <%@ page import="java.util.Date" %> <%@ page import="java.awt.*" %> <%-- A page directives for the info attribute --%> <%@ page info="Info about the page" %>
The date and time produced by a Date object using the import page directive to provide
the path to the Date class:
<%= new Date() %>
The default String representation of a Button object
produced by using the wildcard version of the
import page directive to provide the path to the Button class:
<%= new Button("The Label") %>
Information about the page provided by the info attribute
of a page dirctive and accessed using the getServletInfo()
method of the Servlet class.
<%=this.getServletInfo() %>
39
g n ũ D n ấ T õ V
:
V G
PAGE DIRECTIVE PAGE DIRECTIVE
• Kết quả:
The date and time produced by a Date object using the import page directive to provide the path to the Date class: Tue Feb 16 17:02:57 ICT 2010
The default String representation of a Button object produced by using the wildcard version of the import page directive to provide the path to the Button class: java.awt.Button[button0,0,0,0x0,invalid,label=The Label]
Information about the page provided by the info attribute of a page dirctive and accessed using the getServletInfo() method of the Servlet class. Info about the page
40
g n ũ D n ấ T õ V
:
V G
PHẦN 5 ACTIONS ACTIONS
41
g n ũ D n ấ T õ V
:
V G
ACTIONS ACTIONS
• Các JSP actions được sử dụng để điều khiển các hành vi
của servlet engine. Ta có thể dùng actions để tự động chèn một file, sử dụng một JavaBean trong JSP, chuyển tiếp từ một trang JSP đến một trang web khác hoặc sinh ra một HTML file.
• Các actions được trình bày ở đây gồm có:
42
• jsp:include • jsp:useBean • jsp:setProperty • jsp:getProperty • jsp:forward • jsp:plugin
g n ũ D n ấ T õ V
:
V G
Action jsp:include Action jsp:include
• Action này được dùng để chèn một tập tin khác vào trong tập tin JSP. Action này chèn file bên ngoài vào khi file đó được yêu cầu trong file JSP chính. Khi thực hiện các thao tác trong tập tin được chèn vào rồi thì JSP Engine mới thực hiện các công việc còn lại của trang JSP chính.
• Cú pháp:
• Trong đó: page=“{relative URL | <%= expression %>}" chỉ định vị trí tập tin cần gắn vào hoặc biểu thức thuộc kiểu String có giá trị là địa chỉ URL tương đối.
• Ví dụ:
43
•
g n ũ D n ấ T õ V
:
V G
Action jsp:plugin Action jsp:plugin
• Được dùng để tải những thành phần thêm vào (plugin) cho Web Browser khi cần thi hành một applet hoặc một Bean nào đó. Action này cũng dùng thay cho các thẻ
• Ví dụ:
codebase="/html">
Unable to load applet
44
g n ũ D n ấ T õ V
:
V G
Action jsp:plugin Action jsp:plugin
• Cú pháp:
[ type="bean | applet"
code="classFileName"
codebase="classFileDirectoryName"
[ name="instanceName" ]
[ archive="URIToArchive, ..." ]
[ align="bottom | top | middle | left | right" ]
[ height="displayPixels" ]
[ width="displayPixels" ]
[ hspace="leftRightPixels" ]
[ vspace="topBottomPixels" ]
[ jreversion="JREVersionNumber | 1.1" ]
[ nspluginurl="URLToPlugin" ]
[ iepluginurl="URLToPlugin" ] >
[ [
45
g n ũ D n ấ T õ V
:
V G
Action jsp:plugin Action jsp:plugin Trong đó: •
type="bean | applet“: cho biết loại đối tượng mà plug-in sẽ thực thi. Ta phải xác định hoặc là Bean hoặc là Applet. Không có giá trị default cho thuộc tính này.
• code="classFileName“: tên tập tin class cần thi hành. • codebase="classFileDirectoryName": đường dẫn đến
thư mục chứa tập tin Java class. Nếu không cung cấp giá
trị cho thuộc tính này thì đường dẫn chứa JSP file đang gọi
thẻ
• name="instanceName“: tên đối tượng Bean hoặc Applet
(instance of the Bean or applet).
• archive="URIToArchive, ...“: danh sách các đường dẫn
46
đến các tập tin lưu trữ (archive files) sẽ được nạp trước để phục vụ cho lớp chính. Các đường dẫn cách nhau bởi dấu phẩy.
(còn ở slide tiếp theo)
g n ũ D n ấ T õ V
:
V G
Action jsp:plugin Action jsp:plugin
Trong đó: • align="bottom | top | middle | left | right“: Cho biết vị trí xuất hiện
của image, object, hoặc applet là ở dưới, ở trên, ở giữa, bên trái, bên
phải tùy thuộc vào vị trí của thẻ
rộng của vùng chứa của object hoặc applet trong trang web.
•
• hspace="leftRightPixels" vspace="topBottomPixels“: khoảng cách theo các chiều ngang (h-horizon) và chiều đứng (v-vertical) của vùng chứa của object hoặc applet. jreversion="JREVersionNumber | 1.1“: version của Java Runtime Environment (JRE) mà applet hoặc Bean yêu cầu. Giá trị ngầm định là 1.1.
• nspluginurl="URLToPlugin“ hoặc iepluginurl="URLToPlugin“: địa
chỉ URL, nơi để tải xuống JRE plug-in cho trình duyệt Netscape Navigator hoặc Internet Explorer.
(còn ở slide tiếp theo)
47
g n ũ D n ấ T õ V
:
V G
Action jsp:plugin Action jsp:plugin
•
48
•
g n ũ D n ấ T õ V
:
V G
VVíí ddụụ vvềề jsp:plugin
Action jsp:plugin Action
• Ví dụ:
Bây giờ là:
Xin gởi đến bạn thông báo này.
Applet ở trên được plugin từ một trang JSP dùng định nhãn jsp:plugin
49
g n ũ D n ấ T õ V
:
V G
VVíí ddụụ vvềề jsp:plugin
Action jsp:plugin Action
• Kết quả chạy ví dụ:
50
g n ũ D n ấ T õ V
:
V G
The The jsp:useBean
Action jsp:useBean Action
Dùng để khai báo việc sử dụng một JavaBean trong JSP.
• Cú pháp:
id=“name" scope="page | request | session | application"
class=“packagename.classname” > Trong đó: 51 • id=“name“: đặt tên cho JavaBean là name.
• scope="page | request | session | application“: cho biết
tầm vực hoạt động của Bean. Có 4 tầm vực là page,
request, session, application. Ngầm định là page. • class="packagename.classname“: classname tên đầy
đủ của lớp Bean. Đây là tên tập tin .class sau khi đã
biên dịch từ mã nguồn java. Tên này có phân biệt hoa
thường. Còn packagename là tên gói chứa lớp. 52 Kết quả tại
Web Browser 53 • Dùng để thiết lập các giá trị cho các thuộc tính của một Bean đã được gắn vào JSP bởi thẻ • Cú pháp:
name=“name"
{ property= "*" |
property="propertyName" [ param="parameterName" ] |
property="propertyName" value="{string | <%= expression %>}" } 54 Trong đó:
• name=“name”: cho biết tên của Bean đã được định nghĩa trước đó bởi action • property=“*”: lưu tất cả các giá trị mà người dùng web
nhập vào (là các tham số của đối tượng request) tương
ứng với các thuộc tính của bean. Tên của các thuộc tính
trong Bean phải trùng với tên của các tham số trong đối
tượng request. Giá trị của các tham số lưu trong đối tượng
request này thường được nhập từ form của HTML. • property="propertyName" [ param="parameterName" ]:
Truyền một giá trị trong đối tượng request đến thuộc tính
trong Bean. Tham số này có thể có tên khác với thuộc tính
của bean, trong trường hợp này phải khai báo thêm giá trị
cho param. Nếu thuộc tính của Bean và tham số yêu cầu
gởi đến có cùng tên thì ta có thể bỏ qua param. 55 (còn tiếp ở slide sau) • Ví dụ: ...
g
n
ũ
D
n
ấ
T
õ
V
:
V
G
VVíí ddụụ vvềề jsp:useBean
Action
jsp:useBean Action
g
n
ũ
D
n
ấ
T
õ
V
:
V
G
VVíí ddụụ vvềề jsp:useBean
Action
jsp:useBean Action
g
n
ũ
D
n
ấ
T
õ
V
:
V
G
Action
jsp:setProperty Action
jsp:setProperty
/>
Ví dụ:
g
n
ũ
D
n
ấ
T
õ
V
:
V
G
Action
jsp:setProperty Action
jsp:setProperty
g
n
ũ
D
n
ấ
T
õ
V
:
V
G
Action
jsp:setProperty Action
jsp:setProperty
Trong đó: (tiếp theo)
• property="propertyName" value="{string | <%=
• Ví dụ:
•
56
expression %>}“: gán giá trị cho một thuộc tính của Bean bằng một chuỗi hoặc một biểu thức. Nếu là String thì String sẽ được chuyển đổi sang kiểu giá trị phù hợp với kiểu dữ liệu của thuộc tính của Bean. Trường hợp sử dụng biểu thức thì kết quả sau khi tính toán biểu thức phải phù hợp với kiểu thuộc tính của Bean.
g n ũ D n ấ T õ V
:
V G
Action jsp:getProperty Action jsp:getProperty
• Action jsp:getProperty này dùng để trả về giá trị thuộc tính của Bean, chuyển đổi giá trị này sang chuỗi, sau đó đặt vào đối tượng out. Khi đó, có thể lấy giá trị của thuộc tính Bean để hiện thị lên trang JSP.
• Cú pháp:
property="propertyName" /> • Trong đó: • name=“Name”: là tên của đối tượng Bean đã mô tả trong thẻ • property="propertyName“: là tên của thuộc tính trong 57 Bean mà ta cần lấy giá trị ra. • Ví dụ (BeanTest.jsp)
g
n
ũ
D
n
ấ
T
õ
V
:
V
G
VVíí ddụụ vvềề jsp:getProperty
Action
jsp:getProperty Action
Reusing JavaBeans in JSP |
---|
Message:
58
g n ũ D n ấ T õ V
:
V G
VVíí ddụụ vvềề jsp:getProperty
Action jsp:getProperty Action
Ví dụ: (SimpleBean.java) package hall; public class SimpleBean
{
private String message = "No message specified"; public String getMessage() {
return(message);
} public void setMessage(String message) {
this.message = message;
59
}
}
g n ũ D n ấ T õ V
:
V G
VVíí ddụụ vvềề jsp:getProperty
Action jsp:getProperty Action
• Kết quả tại Web Browser:
60
g n ũ D n ấ T õ V
:
V G
Action jsp:forward Action jsp:forward
•
jsp:getProperty action được dùng để chuyển yều cầu của client (từ đối tượng request của client) đến một tập tin HTML, JSP hoặc servlet khác để xử lý.
• Cú pháp:
{"relativeURL" | "<%= expression %>"} /> • Trong đó: {"relativeURL" | "<%= expression %>"}: là một String hoặc
một biểu thức cho biết địa chỉ URL chỉ đến nơi chứa tập tin
mà ta muốn chuyển yêu cầu đến. • Ví dụ: • 62 • Trong Java có chứa sẵn một số đối tượng để thuận tiện cho việc lập trình Web. Các đối tượng này được gọi là đối
đối ẩn hay đối tượng được định nghĩa trước (predefined
objects). • Các đối tượng đó là: 63 • request
• response
• out
• session
• application
• config
• pageContext
• page • Đối tượng Request dùng để chứa những yêu cầu từ phía máy khách. • Là phần tử của lớp con của javax.servlet.servletRequest.
• Có các phương thức hay sử dụng là: 64 • getParameterNames()
• getParameter()
• getParameterValues(). •
g
n
ũ
D
n
ấ
T
õ
V
:
V
G
PHẦN 6
ĐĐỐỐI TI TƯƯỢỢNG NG ẨẨNN
(implicit objects)
(implicit objects)
g
n
ũ
D
n
ấ
T
õ
V
:
V
G
(implicit objects)
ĐĐốốii ttưượợngng ẩẩnn (implicit objects)
g
n
ũ
D
n
ấ
T
õ
V
:
V
G
Request
ĐĐốốii ttưượợngng Request
g
n
ũ
D
n
ấ
T
õ
V
:
V
G
Request
ĐĐốốii ttưượợngng Request
Ví dụ:
<% String bgColor = request.getParameter("COLOR"); %>
<% if (bgColor == null) { %>
<% } else { %>
<% } %>
Example Scriptlet: Conditionally sets background color
<% if (bgColor == null) { %>You did not supply a color, I used white.
<% } else { %>
Here is the color you requested.
<% } %>
65
g n ũ D n ấ T õ V
:
V G
Request ĐĐốốii ttưượợngng Request
• Nếu ta nhập vào thanh địa chỉ của trình duyệt chuỗi sau:
• http://localhost:8084/Bai5_LTUDM/BGColor.jsp?COLOR=FF0000 •
thì màu nền của trình duyệt sẽ chuyển sang màu đỏ. • Nếu ta nhập vào thanh địa chỉ của trình duyệt chuỗi sau: • http://localhost:8084/Bai5_LTUDM/BGColor.jsp •
thì màu nền của trình duyệt sẽ chuyển sang màu đỏ.
66
g n ũ D n ấ T õ V
:
V G
ĐĐốốii ttưượợngng OutOut
• Dùng để xuất các thông tin ra màn hình của trình duyệt.
Thay vì với màn hình ở chế độ console, Java sử dụng đối tượng out của lớp System. Ở đây - với Scriptlet Java – sử dụng đối tượng out để có tác động giống như việc hiển thị văn bản Web.
67
• Đây là đối tượng của lớp javax.servlet.jsp.JspWriter. • Các hàm: • clear() • clearBuffer() • flush() • getBuffer() • getRemaining()
g n ũ D n ấ T õ V
:
V G
ĐĐốốii ttưượợngng OutOut
• Ví dụ:
Using Predefined Objects
- Your Hostname: <%= request.getRemoteHost() %>
- Your Session ID: <%= session.getId() %>
- The value of INFO parameter: <%=request.getParameter("INFO") %>
- <% out.println("Da lay xong cac gia tri Host, Seesion va Info"); %>
68
g n ũ D n ấ T õ V
:
V G
ĐĐốốii ttưượợngng OutOut
• Nhập chuỗi địa chỉ
http://localhost:8084/Bai5_LTUDM/session1.jsp?INFO=100
vào thanh địa chỉ của trình duyệt thì ta được kết quả sau:
69
g n ũ D n ấ T õ V
:
V G
ĐĐốốii ttưượợngng Session &
Session & ccáácc đđốốii ttưượợngng khkháácc
70
• Khi muốn truyền giá trị từ trang web này đến trang web khác trong một phiên làm việc thì ta có thể sử dụng đối tượng session. Đối tượng này thuộc lớp javax.servlet.http.HttpSession. • Một số phương thức của session: • getId() • getValue() • getValueName() • putId()
• Bên cạnh đó ta còn có các đối tượng ẩn khác là như response, page, pageContext, application, config, exception. Các đối tượng này sẽ được xem xét ở các bài sau (xem thêm trong bài 4 và bài 5 của ebook “Java Server Page” của tác giả Phạm Hữu Khang).
g n ũ D n ấ T õ V
:
V G
HẾT
BBÀÀI 5I 5
71