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

A simple date

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ẻ (thẻ này sẽ được trình bày ở các slide sau).

• Để 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 . Trang JSP và các static file được chèn vào nó được gọi là một translation unit.

• 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:

}" flush="true" />

• 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à thẻ có sẵn trong ngôn ngữ HTML.

• 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" ] > [ ]+ ]

[ text message for user ]

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ẻ này sẽ được sử dụng.

• 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ẻ xuất hiện trong file JSP. • height="displayPixels" width="displayPixels“: chiều cao và chiều

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

[ ]+: các tham số và các giá trị cần để truyền cho applet hoặc bean. Để truyền nhiều tham số thì ta có thể dùng nhiều thẻ trong thẻ . • Giá trị của thuộc tính name là một chuỗi có phân biệt hoa thường để cho biết tên của thuộc tính của Bean hoặc applet sẽ nhận giá trị trong thuộc tính value. Thuộc tính value là một biểu thức hoặc một chuỗi. Các applet sẽ đọc tham số thông qua phương thức java.applet.Applet.getParameter method.

48

text message for user : khi plugin không khởi động được thì chuỗi chứa trong text message for user sẽ xuất hiện.

g n ũ D n ấ T õ V

:

V G

VVíí ddụụ vvềề jsp:plugin

Action jsp:plugin Action

• Ví dụ: Ví dụ về plugin một applet

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.

g n ũ D n ấ T õ V

:

V G

VVíí ddụụ vvềề jsp:useBean

Action jsp:useBean Action

52

g n ũ D n ấ T õ V

:

V G

VVíí ddụụ vvềề jsp:useBean

Action jsp:useBean Action

Kết quả tại Web Browser

53

g n ũ D n ấ T õ V

:

V G

Action jsp:setProperty Action jsp:setProperty

• 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 %>}"

}

/> Ví dụ:

54

g n ũ D n ấ T õ V

:

V G

Action jsp:setProperty Action jsp:setProperty

Trong đó: • name=“name”: cho biết tên của Bean đã được định nghĩa

trước đó bởi action . Do đó thẻ .

• 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)

g n ũ D n ấ T õ V

:

V G

Action jsp:setProperty Action jsp:setProperty

Trong đó: (tiếp theo) • property="propertyName" value="{string | <%=

• Ví dụ:

...

• 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.

g n ũ D n ấ T õ V

:

V G

VVíí ddụụ vvềề jsp:getProperty

Action jsp:getProperty Action

• Ví dụ (BeanTest.jsp)

Reusing JavaBeans in JSP

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ụ:

61

g n ũ D n ấ T õ V

:

V G

PHẦN 6 ĐĐỐỐI TI TƯƯỢỢNG NG ẨẨNN (implicit objects) (implicit objects)

62

g n ũ D n ấ T õ V

:

V G

(implicit objects) ĐĐốốii ttưượợngng ẩẩnn (implicit objects)

• 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

g n ũ D n ấ T õ V

:

V G

Request ĐĐốốii ttưượợngng Request

• Đố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

Request ĐĐốốii ttưượợngng Request

Ví dụ:

JSP: Scriptlets 2

<% 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ụ:

JSP Expressions: Predefined Objects

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

g n ũ D n ấ T õ V

:

V G

Có thể bạn quan tâm

Tài liêu mới