1. Trang chủ
  2. » Luận Văn - Báo Cáo

Đồ án tốt nghiệp - Phân tích thiết kế hệ thống - LẬP TRÌNH JSP TECHNOLOGY docx

145 427 1

Đ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 145
Dung lượng 0,97 MB

Nội dung

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.. Một ngoại lệ là nếu chúng ta sử dụng thuộc tính session của page directive để

Trang 1

ĐỒ ÁN:

TECHNOLOGY

Trang 2

Phần I: JSP TECHNOLOGY

JavaServer Pages (JSP) là một kỹ thuật server-side do đó chúng ta không thể thực hiện bất kỳ hành động nào ở client JSP cho phép chúng ta tách thành phần động của trang ra khỏi thành phần tĩnh HTML Rất đơn giản, chúng ta chỉ cần viết một tài liệu HTML bình thường rồi sau đó bao quanh mã của thành phần

động trong các tag đặc biệt, hầu hết các tag bắt đầu với <% và kết thúc với %>

Ví dụ, đây là một phần của trang JSP, có kết quả trả về là “Thanks for reading jsp

book.” với URL là http://www.jsp.com/thank.jsp?title=jsp

Thanks for reading <i><%=request.getParameter(“title”)%><i>book

Kỹ thuật JSP là một thành phần trong đại gia đình Java; nó sử dùng ngôn ngữ kịch bản dựa vào ngôn ngữ lập trình Java, và các trang JSP được biên dịch

thành servlets Từ đó chúng ta cũng nhận biết được, JSP thì không phụ thuộc bất

kỳ nền (platform) nào Nó đáp ứng được khuynh hướng của Sun MicroSystem là

“write one, run anywhere”

Các trang JSP có thể gọi các thành phần JavaBeans, Enterprise JavaBeans

(EJB) hoặc custom tags để thực hiện các xử lý trên server Và như thế, kỹ thuật

JSP là thành phần chủ chốt trong kiến trúc khả chuyển của Java cho những ứng dụng dựa vào Web

Như đã biết, JSPs sẽ biên dịch thành servlets nhưng JSP không thể thay thế

servlet vì các lý do sau:

- Một số tác vụ được giải quyết rất tốt bằng servlet Ví dụ, các ứng dụng

xuất ra dữ liệu nhị phân hoặc chỉ xác định nơi gởi trở lại cho người

dùng (bằng cách dùng response.sendRedirect) được dùng servlet thì

tốt nhất

Trang 3

- 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ó

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 mọi ứ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 Một số so sánh các công nghệ được sử dụng với công nghệ khác?

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

Trang 4

- Theo một số web site thống kê, việc thực hiện các lệnh insert, update, delete nhanh nhất trong các hệ quản trị

- Miễn phí và mã nguồn mở (open source code)

b) Khuyết điểm

- Chưa hổ trợ một số chuẩn ANSI SQL92 như không cho các câu select lồng nhau, select into table, khoá ngoại, triggers, stored procedures,…

- Không có môi trường đồ hoạ

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

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

Trang 5

đố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 Tầm quan trọng của XML cùng với XSLT

a) 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 subset

Implementation

Trang 6

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 :

Trang 7

- 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, …

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

Trang 8

Template text

Trong nhiều trường hợp, phần lớn các trang JSP chỉ bao gồm HTML tĩnh,

được biết như là template text Có hai ngoại lệ phụ cho quy tắc “template text

được chuyển thẳng sang HTML tĩnh” Đầu tiên, nếu chúng ta muốn có <% trong

luồng xuất thì chúng ta cần phải đặt <\% trong template text Thứ hai, nếu chúng

ta muốn có chú thích trong JSP mà không có trong tài liệu kết quả, dùng:

Trang 9

1 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

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

Trang 10

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

config

Trang 11

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

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 12

đó 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();

out.println(“Current time:” + new java.util.Date());

a) 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à:

Trang 13

<meta name="author" content="Giang" />

"JSP,expressions,JavaServer,Pages,servlets" />

Trang 14

<meta name="description" content=

Code 1: expression.jsp (tiếp theo)

"A quick example of JSP expressions." />

<link rel="stylesheet" href="JSP-Styles.css"

Trang 15

<li>The <code>testParam</code> form parameter:

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:

Trang 17

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

Trang 18

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 scriptlets Chẳng hạn, đây là một trang JSP mà in ra số lần truy cập vào trang

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

Trang 19

<%= ++accessCount %></h2>

</body>

</html>

III JSP directives

Directives là các lệnh (chỉ thị) đến JSP container để xử lý trang JSP, chúng

tác động lên toàn bộ cấu trúc của lớp servlet Chúng có dạng sau:

<%@ directive {attr=“value”} %>

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:

<%@ page attr_list %> : attr_list

sẽ được mô tả phần sau trong

chương này

<jsp:directive.page attr_list />

Trang 20

<%@ include file=”URL” %> <jsp:directive.include file=”URL”

/>

<%@ taglib attr_list %> :

directive này được trình bày

trong chương III Tag Libraries

<jsp:root attr_list>

<! other elements >

</jsp:root>

1 The page directive

page directive cho phép chúng ta điều khiển cấu trúc của servlet bằng

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.legiang.*” %>

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

Trang 21

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.*” %> 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” %>

Trang 22

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

<%@ page errorPage=“Ralative URL” %>

Ngoại lệ tung ra sẽ có sẵn trong biến ngầm định exception

isErrorPage

Trang 23

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

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”

Trang 24

<html>

<head>

<title>The page Directive</titlle>

<link rel="styleshhet" href="JSP-Styles.css"

type="text/css" />

</head>

<body>

<h2>The page Directive</h2>

Ví dụ 4: pagedirective.jsp (tiếp theo)

private String randomID() {

int num = (int)(Math.random()*10000000.0);

return("id" + num);

}

Trang 25

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

<% JSP Expressions (xem phần I.II.2) %>

This page was accessed at <%= new Date() %> with a userID

Trang 26

cookie of <%= oldID %>

</body>

</html>

2 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 IV 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

Trang 27

Code 5: contact.jsp

<%@ page import="java.util.Date" %>

<% Các biến sau sẽ trở thành các fields trong servlet khi JSP file gọi file này %>

<%! private int accessCount = 0;

private Date accessDate = new Date();

private String accessHost = "<i>No previous access</i>";

%>

<hr/>

This page &copy; 2000

<a href="http//www.LG.com/">my-company.com</a>

This page has been accessed <%= ++accessCount %>

times since server reboot It was last accessed from

<%= accessHost %> at <%= accessDate %>

<% accessHost = request.getRemoteHost(); %>

<% accessDate = new Date(); %>

Trang 28

<title>The include Directive</title>

<link rel="styleshhet" href="JSP-Styles.css" type="text/css" />

Trang 29

</tr>

</ table >

<p>Information about our products and services.</p>

<p>Le, Le, Le.</p>

<p>Giang, Giang, Giang.</p>

<%@ include file="contact.jsp" %>

</body>

</html>

3 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 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 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

Trang 30

1 Action chèn vào files ở thời gian request

Với include directive cho phép chúng ta thêm vào các tài liệu chứa mã

JSP vào nhiều trang khác nhau nhưng lại có vấn đề là đòi hỏi chúng ta phải cập nhật lại ngày sữa đổi của trang khi file được include thay đổi Để loại bỏ vấn đề

này đặt tả JSP cung cấp cho chúng ta một action là <jsp:include> để include các

file vào thời gian yêu cầu (request) Mặc khác, do trang được biên dịch thành

servlet vào thời gian yêu cầu vì thế các file được include không thể chứa mã JSP

Cú pháp của action này là:

<jsp:include page=“Relative URL” flush=“true”>

Ví dụ sau sử dụng jsp:include action để include bốn file html, ví dụ này

chỉ hiện thị các thông tin của các web sites nỗi tiếng

Trang 31

<li><jsp:include page="item1.html" flush="true" /></li>

<li><jsp:include page="item2.html" flush="true" /></li>

<li><jsp:include page="item3.html" flush="true" /></li>

<li><jsp:include page="item4.html" flush="true" /></li>

</ol>

</body>

Trang 32

</html>

Code 8: item1.html

<b>Bill Gates acts humble.</b> In a startling and unexpected

development, Microsoft big wig Bill Gates put on an open act of humility yesterday

<a href="http://www.microsoft.com/Never.html">More details </a>

Code 9: item2.html

<b>Scott McNealy acts serious.</b> In an unexpected twist,

wisecracking Sun head Scott McNealy was sober and subdued at yesterday's meeting

<a href="http://www.sun.com/Imposter.html">More details </a>

Code 10: item3.html

Trang 33

<b>Larry Ellison acts conciliatory.</b> Catching his competitors off guard yesterday, Oracle prez Larry Ellison referred to his

rivals in friendly and respectful terms

<b href="http://www.oracle.com/Mistake.html">More details </a>

Code 11: item4.html

<b>Sportscaster uses "literally" correctly.</b> In an apparent

slip of the tongue, a popular television commentator was

heard to use the word "literally" when he did <i>not</i>

mean "figuratively."

<a href="http://www.espn.com/Slip.html">More details </a>

2 Action chèn vào Applets cho Java Plug-In

Với JSP, chúng ta không cần có bất kỳ cú pháp đặc biệt nào để include

vào các applet; chỉ dùng APPLET tag của HTML bình thường Tuy nhiên, các

applet này phải sử dụng từ JDK 1.1 trở xuống vì cả hai trình duyệt phổ biết nhất

là Netscape 4.x và Internet Explorer 5.x vẫn chưa hổ trợ JDK 1.2 Do đó applet có một số giới hạn sau:

- Để sử dụng Swing, chúng ta phải gởi các Swing files qua mạng Tiến trình này tốn rất nhiều thời gian và cũng thất bại trong Internet

Trang 34

Explorer 4 và Netscape 3.x (chỉ hổ trợ JDK 1.02) mà Swing lại phụ thuộc vào JDK 1.1

- Chúng ta không thể dùng Java 2D

- Chúng ta không thể dùng gói collection (tập hợp) của Java 2

- Mã của chúng ta chạy chậm hơn vì hầu hết các trình biên dịch cho nền Java 2 được cải tiến rất đáng kể so với các trình biên dịch từ JDK 1.1 trở xuống

Hơn thế nữa, các phiên bản của các trình duyệt có một số mâu thuẫn trong cách thức mà chúng hổ trợ AWT component khác nhau, làm cho việc thử nghiệm

và điều phối các giao tiếp người dùng trở nên phức tạp và nặng nề hơn Để giải quyết các vấn đề này, Sun đã phát triển Java Plug-In cho Netscape và Internet Explorer mà cho phép chúng ta sử dụng Java 2 platform cho các applet trong nhiều trình duyệt khác nhau

Tuy nhiên, lại thật không may mắn là APPLET tag bình thường sẽ không

làm việc với Plug-In vì các trình duyệt được thiết kế riêng chỉ sử dụng máy ảo (Virtual Machine) có sẳn của chúng khi chúng gặp APPLET Thay vì thế, chúng

ta phải sử dụng OBJECT tag đối với IE và EMBED tag đối với Netscape Hơn

nữa vì chúng ta không biết loại trình duyệt nào sẽ truy cập vào trang chúng ta nên chúng ta phải hoặc là include cả OBJECT lẫn EMBED (đặt EMBED trong phần COMMENT của OBJECT) hoặc là xác định loại trình duyệt vào thời gian yêu

cầu để dùng tag đúng cho loại trình duyệt đó Quá trình này thì hiển nhiên nhưng

nhàm chán và mất thời gian

Action jsp:plugin chỉ dẫn server xây dựng một tag thích hợp cho các

applet mà sử dụng Plug-In

a) jsp:plugin action

Trang 35

Phương cách đơn giản nhất để sử dụng jsp:plugin là cung cấp cho nó bốn thuộc tính: type, code, width, height Chúng ta định giá trị “applet” cho thuộc

tính type và ba thuộc tính còn lại sử dụng giống như APPLET tag bình thường Với ngoại lệ là các action thì có cú pháp XML nên các thuộc tính trong nó cũng phải theo qui ước XML Ví dụ với APPLET tag trong HTML

Ngoài bốn thuộc tính này jsp:plugin còn có các thuộc tính sau và hầu hết

giống (nhưng không phải là tất cả) như các thuộc tính của APPLET tag

codebase, align, archive, hspace, name, vspace, title

Giống như APPLET tag

jreversion

Xác định số phiên bản của Java Runtime Environment, các giá trị có thể nhận là “1.1”, “1.2”

nspluginurl

Trang 36

URL cho Netscape mà có thể download Plug-In Giá trị mật định sẽ hướng người dùng đến web site của Sun, nhưng với intranet chúng ta có thể muốn chỉ dẫn người dùng đến một bản sao cục bộ

iepluginurl

URL cho Internet Explorer mà có thể download Plug-In

b) jsp:param và jsp:params action

jsp:param được dùng trong các actions khác như: jsp:include,

jsp:forward, jsp:plugin Action này dùng để cung cấp cặp tên và giá trị

(name/value) cho các actions trên Cụ thể với jsp:plugin, thì action này sẽ định rõ

tên và giá trị mà được truy cập từ trong applet bởi getParameter

Tất cả jsp:param actions đều phải nằm trong jsp:params action Ví dụ:

Code 12: Sử dụng Applet

<APPLET CODE=“MyApplet.class”

WIDTH=457 HEIGHT=350>

<PARAM NAME=“PARAM1” VALUE=“VALUE1”>

<PARAM NAME=“PARAM2” VALUE=“VALUE2”>

</APPLET>

trong JSP sử dụng như sau:

Trang 37

<jsp:plugin type=“applet” code=“MyApplet.class” width=“457” height=“350” >

<jsp:params>

<jsp:param name=“PARAM1” value=“VALUE1” />

</jsp:params>

</jsp:plugin>

c) jsp:fallback action

jsp:fallback cung cấp văn bản thay thế đối với các trình duyệt không hổ trợ

OBJECT hay EMDEB Chúng ta sử dụng action này giống như là dùng văn bản

thay thế được đặt trong APPLET tag Ví dụ chúng ta có thể thay thế

Trang 38

3 Actions dùng để forward và sử dụng Components

a) Chuyển các request từ các trang JSP

Tình huống chuyển request phổ biến nhất là request đó, đầu tiên, bắt nguốn

từ servlet và servlet đó chuyển request này đến trang JSP Lý do để servlet thường

xử lý request gốc là để kiểm tra các tham số trong request và thiết lập Beans nên

đòi hỏi nhiều công việc lập trình và nó thuận tiện để lập trình trong servlet hơn là

trong tài liệu JSP Nguyên nhân mà trang đích thường lại là tài liệu JSP là JSP rất đơn giản trong tiến trình tạo ra tài liệu HTML

Tuy nhiên điều này chỉ là định hướng thường dùng chứ không có nghĩa là chỉ có một cách để thực hiện Do đó để đơn giản và dễ sử dụng hơn trong việc

nhúng mã RequestDispatcher trong một scriptlet chúng ta có thể sử dụng

jsp:forward action Ví dụ:

Trang 39

Code 14: Sử dụng jspforward

<% String dest;

if (Math.random() > 0.5) { dest = “page1.jsp”;

} else { dest = “page2.jsp”;

}

%>

<jsp:forward page=“<%= dest %>” />

Action này cho phép điều phối một request hiện hành vào lúc runtime đến

một tài nguyên tĩnh, trang JSP hay lớp servlet trong cùng một ứng dụng

Trang 40

Đồ án tốt nghiệp Gvhd: Ts.Nguyễn Thúc Hải

Svth: Đinh Lê Giang Trang 40

JavaSoft về Bean: “JavaBean là một component phần mềm có thể dùng lại được,

có thể được thực hiện trực quan bằng môi trường phát triển tích hợp IDE (Integrated Development Environment).”

JavaBean API: tuân theo các quy ước được xác định bởi JavaBean API,

cho phép JSP container tương tác với Beans ở mức lập trình mặc dù JSP

container thực sự chẳng hiểu Bean thực hiện những gì và hoạt động ra sao Đối

với JSP, chúng ta chỉ quan tân đến các khía cạnh API rồi ra các dấu hiệu cho những hàm tạo của Bean và các phương thức truy cập thuộc tính xử lý

Giống như bất kỳ lớp Java nào, các thể hiện của Bean đơn thuần chỉ là các đối tượng Java Chúng ta thường có sự lựa chọn hoặc là tham chiếu tới Beans và các phương thức của chúng trực tiếp qua mã Java trong các lớp khác hoặc là

thông qua các scripting element trong trang JSP Vì các scripting element cũng

theo các quy ước của Bean nên chúng ta có thể làm việc với Beans mà không cần

phải viết một đoạn mã Java nào Bean container như JSP container, có thể cung

cấp sự truy cập dễ dàng vào Beans và các thuộc tính của chúng

2 Các quy ước của Bean

Khi định nghĩa Bean chúng ta phải tuân theo các quy tắc sau:

- Tên lớp của Bean phải có tiếp vĩ ngữ là Bean chẳng hạn UserBean, DataAccessBean, .Thật sự thì quy tắc này không là yêu cầu bắt

Ngày đăng: 27/06/2014, 17:20

HÌNH ẢNH LIÊN QUAN

Bảng sau mô tả tính sẳn dùng của biến kịch bản và các phương thức  để xác lập và xác lập lại giá trị của biến - Đồ án tốt nghiệp - Phân tích thiết kế hệ thống - LẬP TRÌNH JSP TECHNOLOGY docx
Bảng sau mô tả tính sẳn dùng của biến kịch bản và các phương thức để xác lập và xác lập lại giá trị của biến (Trang 81)
Sơ đồ thực thể kết hợp (ERD): - Đồ án tốt nghiệp - Phân tích thiết kế hệ thống - LẬP TRÌNH JSP TECHNOLOGY docx
Sơ đồ th ực thể kết hợp (ERD): (Trang 101)
Sơ đồ thực thể kết hợp (ERD): - Đồ án tốt nghiệp - Phân tích thiết kế hệ thống - LẬP TRÌNH JSP TECHNOLOGY docx
Sơ đồ th ực thể kết hợp (ERD): (Trang 109)
Sơ đồ cấu trúc chương trình. - Đồ án tốt nghiệp - Phân tích thiết kế hệ thống - LẬP TRÌNH JSP TECHNOLOGY docx
Sơ đồ c ấu trúc chương trình (Trang 126)

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w