1. Trang chủ
  2. » Công Nghệ Thông Tin

Bài giảng Lập trình ứng dụng mạng: Bài 5 - GV. Võ Tấn Dũng

71 6 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 71
Dung lượng 1,1 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Bài giảng Lập trình ứng dụng mạng: Bài 5 JSP (Java Server Pages) nhằm trình bày về giới thiệu sơ lược về JSP, cơ chế làm việc của JSP...bài giảng trình bày súc tích, khoa học, giúp sinh viên tiếp bài học nhanh, chúc các bạn học tốt.

Trang 1

TRƯỜNG CAO ĐẲNG CÔNG NGHỆ THÔNG TIN TP.HCM

Trang 2

PHẦN 1

GIỚI THIỆU JSP

Trang 3

• 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

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

Trang 4

• Trang JSP đơn giản hiện thị ngày tháng hiện hành

• 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

Trang 6

<%}// end for loop %>

<H3> Isn't this fun</H3>

</body>

</html>

Kết qua sinh ra tại Web Browser:

My First JSP Page Hello, JSP World!

Trang 8

• Phần này giới thiệu về các cú pháp (syntax) sau đây:

Trang 9

• 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

• 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

Trang 10

• Cú pháp của Output Comments:

<! comment [ <%= expression %> ] >

• 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

• 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

OUTPUT COMMENTS

Trang 11

Ví dụ: đây là một code mẫu chứa trong tập tin jsp0002.jsp

<! File jsp002.jsp

02/13/2010

Mô tả các ghi chú nhằm xuất ra file HTML.

Mô tả các ghi chú ẩn - hidden comments.

Cũng mô tả các biểu thức - expressions.

<% This is hidden comment is won't %>

<% appear in the output HTML %>

Trang 12

Đâ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ả.

<! File jsp002.jsp

02/13/2010

Mô tả các ghi chú nhằm xuất ra file HTML.

Mô tả các ghi chú ẩn - hidden comments.

Cũng mô tả các biểu thức - expressions.

<! Date and time is Sat Feb 13 08:54:00 ICT 2010 >

<! The following space was produced by >

Trang 13

• 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 tronghidden comment Do đó hidden comment cũng không xuất

hiện ở Web Browser phía client

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

HIDDEN COMMENTS

Trang 14

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

• Một declaration có tầm vực trong một trang (page

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

Trang 15

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.

Trang 16

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

Trang 17

<%! java.util.Date myDate = new java.util.Date(); %>

<P>Some JSP expression follow<BR>

Trang 18

• Chúng ta vừa mới khảo sát:

Trang 19

PHẦN 3

SCRIPTLET

(mẩu kịch bản)

Trang 20

• Thẻ (tag) scriptlet dùng để chứ một đoạn mã Java rồi đượcnhú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ươngthức (method) hoặc biểu thức (expressions)

• Cú pháp của scriptlet như sau:

<% code fragment %>

Trang 21

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ẻ <jsp:useBean> (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

biểu này phải phù hợp với quy định cú pháp, văn phạm củangôn ngữ Java

Trang 22

<% }//end for loop %>

• Với Scriptlet, JSP cho phép ta nhúng và thực thi các

Servlet, JavaBean, Java Code

Trang 23

<! File jsp004.jsp 02/13/2010 Illustrates scriptlets >

<% myDate = new java.util.Date(); %>

The date is <%= myDate %> <BR>

<% two scriptlets follow %>

<% for(int i=0; i<11; i++){ %>

Trang 25

PHẦN 4

DIRECTIVE

(chỉ hướng)

Trang 26

Phần này trình bày hai loại Directive:

• Include 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" attributeN="valueN" %>

DIRECTIVE

Trang 27

• 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ư <html>, </html>, <body>, hoặc </body> 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ố

trình duyệt không chấp nhận đụng độ.

INCLUDE DIRECTIVE

Trang 29

<! File jsp005.jsp 02/15/2010 Illustrates the JSP Include

Trang 31

<! File jsp005a.html 02/15/2010 Illustrates the Include

Trang 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

Trang 33

Sự khác nhau giữa static include và dynamic include:

• 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

INCLUDE DIRECTIVE

Trang 34

• 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

<jsp:include> 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

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

PAGE DIRECTIVE

Trang 35

Cú pháp đầy đủ của Page Directive:

Trang 36

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

• 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

PAGE DIRECTIVE

Trang 37

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

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

PAGE DIRECTIVE

Trang 38

Một số ví dụ về Page Directive:

• <%@ page laguage=“java” %>

• <%@ page import=“java.util.*, java.lang.*” %>

• <%@ page buffer=“5kb” autoFlush=“false” %>

• <%@ page errorPage=“error.jsp” %>

• <%@ page info="Info about the page" %>

PAGE DIRECTIVE

Trang 39

Ví dụ:

<! File jsp006.jsp 02/16/2010 Illustrates the JSP Page Directive >

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

<html>

<body>

The date and time produced by a Date object using the import page directive to provide

the path to the Date class: <BR>

<B><%= new Date() %></B>

<BR><BR>

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

<B><%= new Button("The Label") %></B>

<BR><BR>

Information about the page provided by the info attribute

of a page dirctive and accessed using the <B>getServletInfo()</B>

method of the Servlet class.<BR>

<B><%=this.getServletInfo() %></B>

</body>

PAGE DIRECTIVE

Trang 40

• 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

PAGE DIRECTIVE

Trang 41

PHẦN 5

ACTIONS

Trang 42

• 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ènmộ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

Trang 43

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

<jsp:include page=“{relative URL | <%= expression

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

Trang 44

• Được dùng để tải những thành phần thêm vào (plugin) choWeb 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ẻ <object> vàthẻ <embed> có sẵn trong ngôn ngữ HTML

Trang 45

[ align="bottom | top | middle | left | right" ]

[ height="displayPixels" ] [ width="displayPixels" ] [ hspace="leftRightPixels" ] [ vspace="topBottomPixels" ]

[ jreversion="JREVersionNumber | 1.1" ]

[ nspluginurl="URLToPlugin" ] [ iepluginurl="URLToPlugin" ] > [ <jsp:params>

[ <jsp:param name="parameterName" value="{parameterValue |

Trang 46

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ọithẻ <jsp:plugin> 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

đế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

Trang 47

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ẻ <jsp:plugin> 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.

Ngày đăng: 11/05/2021, 00:58

🧩 Sản phẩm bạn có thể quan tâm