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

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

118 271 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 118
Dung lượng 3,59 MB

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

Nội dung

Đứng trước thực tế, thương mại điện tử vẫn còn quá mới và xa lạ ở nước tanhưng mức độ tác động của nó đối với nền kinh tế nước ta nói riêng và thếgiới nói chung là rất lớn, hơn nữa ở hầu

Trang 1

Luận Văn Tốt Nghiệp Bảng Nội Dung

B ng N i Dung ảng Nội Dung ội Dung

B ng N i Dung ảng Nội Dung ội Dung

PHẦN THỨ NHẤT JSP TECHNOLOGY

2

CHƯƠNG I CĂN BẢN VỀ JSP 2

I Một số so sánh các công nghệ được sử dụng với công nghệ khác? 3

1 MySQL Server 3

1) Ưu diểm 3

2) Khuyết điểm 3

2 So sánh JSP với các công nghệ khác 4

1) JSP với ASP 4

2) JSP với PHP 4

3 Tầm quan trọng của XML cùng với XSLT 4

1) XML 4

2) XSLT 7

II JSP scripting elements 7

1 Các biến được định nghĩa sẵn trong JSP 8

2 Biểu thức trong JSP 10

1) Biểu thức như là giá trị trong elements khác 11

2) Ví dụ expression.jsp 11

3 JSP scriptlets 12

4 Khai báo trong JSP 13

III JSP directives 14

1 The page directive 15

2 The include directive 18

3 The taglib directive 20

IV Các action chuẩn 20

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

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

1) jsp:plugin action 23

2) jsp:param và jsp:params action 24

3) jsp:fallback action 25

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

1) Chuyển các request từ các trang JSP 25

2) Sử dụng component trong JSP 26

CHƯƠNG II JSP JAVABEANS 27 I Khái niệm và các quy ước của Bean 27

1 Khái niệm 27

3

6

9

12

15

18

21

24

27

30

33

36

39

Trang 2

Luận Văn Tốt Nghiệp Bảng Nội Dung

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

II JSP sử dụng Beans 28

1 Các JSP element dùng cho Bean 28

1) jsp:useBean element 28

2) jsp:setProperty element 29

3) jsp:getProperty element 29

2 Phương pháp chuyển kiểu tự động JSP  Bean 30

3 Tìm hiểu cách INTROSPECTOR làm việc 30

1) Introspector là gì? 30

2) Thiết kế các phương thức mẫu dùng cho thuộc tính 31

3) Khai báo các phương thức một các tường minh 31

4 Thuộc tính của Bean 32

1) Các phương thức truy xuất 32

2) Các loại thuộc tính 32

III Các giao tiếp bổ trợ cho Bean 36

1 Giao tiếp BeanInfo 36

2 Giao tiếp Serializable 36

3 Giao tiếp HttpSessionBindingListener 37

CHƯƠNG III TAG LIBRARIES 39 I Tag library là gì ? 39

II Cách dùng các tags trong JSP 40

1 Khai báo các tag library 40

2 Các loại tag 40

1) Các tag đơn giản 41

2) Các tag có thuộc tính 41

3) Các tag có nội dung 41

4) Các tag định nghĩa các biến kịch bản 42

5) Kết hợp các tag 42

III Định nghĩa các tag 42

1 Tag handler 43

2 Tag library descriptor 44

3 Các ví dụ 44

1) Các tag đơn giản 45

2) Các tag có thuộc tính 47

3) Các tag có nội dung 49

4) Các tag định nghĩa các biến kịch bản 51

4 Tag handler được triệu gọi như thế nào? 55

42

45

48

51

54

57

60

63

66

69

72

75

Trang 3

Luận Văn Tốt Nghiệp Bảng Nội Dung

PHẦN THỨ HAI PHÂN TÍCH – THIẾT KẾ – CÀI ĐẶT

56

CHƯƠNG IV PHÂN TÍCH – THIẾT KẾ 56

I Phân Tích 56

1 Đặt vấn đề 56

2 Định nghĩa các yêu cầu 57

3 Phạm vi đề tài 58

4 Mô hình xử lý quan niệm 59

1) Sơ đồ ngữ cảnh 59

2) Sơ đồ phân rã chức năng 59

3) Sơ đồ hệ thống 60

5 Mô hình dữ liệu quan niệm 66

II Thiết Kế 67

1 Thiết kế xử lý 67

1) Sơ đồ hệ thống mức vật lý 67

2) Các đơn vị thiết kế 67

3) Một số giải thuật được thể hiện bàng lưu đồ 68

2 Thiết kế cơ sở dữ liệu 73

1) Mô hình dữ liệu vật lý 73

2) Bảng mô tả chi tiết 74

3) Các ràng buộc toàn vẹn 78

4) Bảng tầm ảnh hưởng 79

3 Thiết kế chương trình 81

4 Thiết kế giao diện 82

CHƯƠNG V ỨNG DỤNG QUẢN LÝ CÔNG VIỆC 86 I Cài đặt và triển khai ứng dụng 86

1 Các phần mềm cần thiết 86

2 Triển khai ứng dụng web 86

3 Cài đặt ứng dụng The Web Work 88

II Hướng dẫn sử dụng 92

III Ứng dụng cụ thể chương trình vào công ty Liên Doanh Bêtông Việt Úc 96 KẾT LUẬN 100

HƯỚNG PHÁT TRIỂN 101

DANH SÁCH WEB SERVERS HỔ TRỢ JSP 102

BẢNG THUẬT NGỮ 103

Tài Liệu Tham Khảo 106

78

81

84

87

90

93

96

99

102

105

108

111

114

Trang 4

Luận Văn Tốt Nghiệp Bảng Nội Dung

Trang 5

Luận Văn Tốt Nghiệp Lời Giới Thiệu

Lời Giới Thiệu

Thương mại điện tử giờ đây đã thực sự trở thành một lĩnh vực sôi động củanền kinh tế, là xu hướng phát triển tất yếu của nền kinh tế trong thế kỷ 21 –

Kỷ nguyên công nghệ thông tin Đặc biệt là đối với các nước đang phát triểnnhư Việt Nam chúng ta Thương mại điện tử là cơ hội, là phương tiện để đưatin học vào quản lý, để thâm nhập vào thị trường toàn cầu,

Sự phát triển của công nghệ thông tin sẽ số hoá nền kinh tế, sự phát triển củathương mại điện tử sẽ giúp đẩy nhanh tốc độ toàn cầu hoá về thương mại.Các giao dịch, quản lý trên mạng sẽ xoá nhòa đi sự cách biệt về thời gian vàkhông gian giữa văn phòng làm việc và nơi cư ngụ, giữa các nước, các khuvực trên thế giới Mức độ ảnh hưởng của các công ty nhỏ đối với thị trườngthế giới cũng sẽ không thua kém gì so với các công ty lớn Xu hướng hướnghình thành các công ty “Vô trọng ” (Zero Gravity Company) ngày càng trởnên phổ biến, các công ty này có thể thành công mà không cần phụ thuộcvào vị trí, phòng ốc, tài sản, mà chỉ cần một số lượng nhân viên tối thiểu

và một máy tính kết nối vào mạng, điển hình như Yahoo, Amazon,

Đứng trước thực tế, thương mại điện tử vẫn còn quá mới và xa lạ ở nước tanhưng mức độ tác động của nó đối với nền kinh tế nước ta nói riêng và thếgiới nói chung là rất lớn, hơn nữa ở hầu hết các cơ quan nhà nước hay tưnhân, đều có khâu quản lý và phân công công việc cụ thể cho từng cá nhân

và tập thể (hay nhóm) nhằm mục đích khai thác các tiềm năng của Internet,nâng cao hiệu quả quản lý, năng suất công việc và được sự cho phép, độngviên của Thầy Synh, chúng em xin mượn luận văn tốt nghiệp này để nhằmxây dựng một chương trình ứng dụng thương mại điện tử vào quản lý, trìnhbày một số hiểu biết của mình về thương mại điện tử Tuy đã cố gắng rấtnhiều nhưng sự hiểu biết có hạn nên không thể tránh khỏi những sai sót, rấtmong nhận được sự góp ý và chỉ bảo của thầy cô và các bạn

Trang 7

thường rồi sau đó bao quanh mã của thành phần động trong các tag đặc biệt, hầu hết các tag bắt đầu với <% và kết thúc với %> Ví dụ,

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

reading vinh an book.” với URL là http://www.vinhan.com/thank.jsp?title=vinh+an

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

%><i>book

Kỹ thuật JSP là một thành phần trong đại gia đình Java; nó sử dùngngô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 đượckhuynh hướng của Sun MicroSystem là “write one, run anywhere”.Các trang JSP có thể gọi các thành phần JavaBeans, Enterprise

JavaBeans (EJB) hoặc custom tags để thực hiện các xử lý trên server.

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

Như đã biết, JSPs sẽ biên dịch thành servlets nhưng JSP không thể thay thế servlet vì các lý do sau:

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

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

cho người dùng (bằng cách dùng response.sendRedirect) được

dùng servlet thì tốt nhất.

- Một số tác vụ khác lại được giải quyết rất tốt bằng JSP như cáctình huống mà cấu trúc nền tảng của trang HTML là cố định nhưngcá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ọicông việc, lưu trữ các kết quả trong các Beans và điều phối yêu cầunày đến một trong những trang JSP có thể hiển thị nó

Trang 8

cơ sở dữ liệu Sau đây là một số ưu và nhược điểm của MySQLvới các hệ quản trị cơ sở dữ liệu khác:

1) Ưu diểm.

- Chạy được trên rất nhiều nền khác nhau như Unix,Windows, MacOS, …

- MySQL là hệ quản trị nhanh, nhỏ gọn Các script files

có thể chạy trên một số hệ quản trị khác như MS SQLServer, Oracle

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

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

2) Khuyết điểm.

- Chưa hổ trợ một số chuẩn ANSI SQL92 như khôngcho 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ạ

Trang 9

- Hổ trợ sự mở rộng tag với custom tag.

Lợi điểm của JSP với PHP cũng như với ASP JSP được viếtbằng Java mà chúng ta đã biết với các API mở rộng chomạng, truy cập cơ sở dữ liệu, các đối tượng phân tán, …trong khi với PHP đòi hỏi chúng ta phải học cả một ngônngữ mới

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ủaHTML Vì XML là tập con của SGML nên nó cũng tươngthí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ữ:

Trang 10

XML

CDF SMIL CML MML

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ềnthông được truyền qua internet

CML : Chemical Markup Language – mô tả các công thứchóa học

MML: Mathematical Markup language- mô tả các phươngtrì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ònthiếu nhiều thuộc tính trong thế giới thực :

Trang 11

JSP Technology Căn Bản Về JSP

- XML cĩ mối quan hệ chặt chẽ với JSP, đặt tả JSP hổtrợ cú pháp XML, chúng ta cĩ thể trộn lẫn mã chúng vớinhau 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 đĩ khicác cơ sở dữ liệu khác nhau cần chuyển đổi dữ liệu vớinhau lại khơng tương thích Vì vậy người làm cơng việcnày cần phải biết nhiều sản phẩm quản trị cơ sở dữ liệukhác nhau Do đĩ XML là một định dạng chuẩn mà các

hệ quản trị cần hổ trợ Hiện nay cĩ nhiều hệ quản trị lớn

hổ trợ XML như MS SQL Server, Oracle, … Để hiểu rỏhơn chúng tơi vẽ hai hình sau:

SQL Server Database

Oracle Database

Legacy ISAM / VSAM Database

POET Database Files

Mô Hình Chuyển Đổi Dữ Liệu

Trang 12

JSP Technology Căn Bản Về JSP

SQL Server Database

Oracle Database

Legacy ISAM / VSAM Database

POET Database Files

Mô Hình Chuyển Đổi Dữ Liệu

Giữa CSDL Và XML

Common XML Format

Extensible Stylesheet Language Transformation (XSLT) làmột ngơn ngữ được tách ra từ ngơn ngữ XSL, “XSLT là mộtngơn ngữ dùng để chuyển đổi các XML document thành cácXML 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ị quantrọng trong hướng phát triển “phát sinh ngơn ngữ markuphướng người dùng”

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 13

JSP Technology Căn Bản Về JSP

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

HTML tĩnh, được biết như là template text Có hai ngoại lệ phụ

cho quy tắc “template text được chuyển thẳng sang HTMLtĩ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àiliệu kết quả, dùng:

Trong JSP có rất nhiều element có cú pháp XML như

jsp:useBean, jsp:include, jsp:setProperty, Tuy nhiên

scripting elements lại có hai dạng cú pháp sau:

Để đơ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

Trang 14

JSP Technology Căn Bản Về JSP

Biến này có kiểu là javax.servlet.http.HttpServletRequest,

có phạm vi trong một yêu cầu (request) Nó cho phép

chúng ta truy cập vào các tham số của request như loại

request (GET, POST, …) và các incoming HTTP header

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 khicầ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ếtnối ngay cả chẳng có một tham chiếu incoming sessionnà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

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épchúng ta lưu trữ dữ liệu

Trang 15

javax.servlet.jsp.PageContext cùng với trang hiện hành.

Có thể xem chi tiết trong chương II về JavaBeans

page

Biến này đồng nghĩa với this và điều này thì không hữu

ích trong ngôn ngữ lập trình Java, có kiểu là

java.lang.Object và có phạm vi trang (page).

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 saobiể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();

Trang 16

JSP Technology Căn Bản Về JSP

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

Biểu thức có thể được sử dụng trong các thuộc tính của cácelements khác Giá trị từ các biểu thức này sẽ được tính vàothờ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à:

jsp:setProperty name và value

<meta name="author" content="Vinh&An" />

<meta name="keywords" content=

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

<meta name="description" content=

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

"A quick example of JSP expressions." />

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

Trang 17

Scriptlets là những đoạn mã có chứa bất kỳ mã Java nào nằm

giữa “<%” và “%>” Nếu chúng ta muốn thực hiện thứ gì đóphức tạp hơn là chỉ chèn vào một biểu thức đơn giản thì JSP

scriptlets cho phép chúng ta thêm bất kỳ đoạn mã Java nào vào

trang JSP Các scriptlets này được đưa vào phương thức

_jspService (mà được gọi bởi service) của servlet Có cú pháp:

<% Java Code %>

Code 2: scriptlet.jsp

<?xml version="1.0" encoding="ISO-8859-1" ?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "DTD/xhtml1-strict.dtd">

Trang 18

} else { hasExplicitColor = false;

} else { out.println("Using default background color of WHITE " + "Supply the bgColor request attribute to try " +

"a standard color, an RRGGBB value, or to see " + "if your browser supports X11 color names.");

}

%>

</body>

</html>

Một khai báo trong JSP cho phép chúng ta định nghĩa cácphươ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:

Trang 19

<! Example of JSP Declarations >

<html>

<head>

<title>JSP Declarations </title>

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

</head>

<body>

<h1>JSP Declarations</h1>

<%! private int accessCount = 0; %>

<h2>Accesses to page since server reboot:

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

</body>

</html>

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ó

Trang 20

JSP Technology Căn Bản Về JSP

<%@ page attr_list %> : attr_list sẽ được mô tả phầnsau trong chương này

<jsp:directive.page attr_list />

<%@ include file=”URL”

%>

<jsp:directive.include file=”URL”/>

<%@ taglib attr_list %> : directive này được trình bàytrong chương III Tag

Libraries

<jsp:root attr_list>

<! other elements >

</jsp:root>

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

bằng cách đưa vào các lớp, đặt MIME type, … Một page

directive có thể được đặt bất cứ nơi nào trong trang JSP

<%@ page import=“java.util.*, com.vinhan.*” %>

page directive định nghĩa một số thuộc tính phụ thuộc vào trang

và giao tiếp giữa các thuộc tính này với JSP container.

language

Định nghĩa ngôn ngữ kịch bản được sử dụng trong

scriptlets, biểu thức và khai báo Trong JSP 1.2 là phiên

bản mới nhất chỉ có hổ trợ “java” cho thuộc tính này do

đó “java” này cũng là giá trị mật định

<%@ page language=“java” %>

extends

Thuộc tính này chỉ định lớp cha (superclass) của servlet

sẽ được phát sinh cho trang JSP, có dạng sau:

<%@ page extends=“package.class” %>

Chú ý rằng khi sử dụng thuộc tính này phải hết sức cẩnthậ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.*” %>

Trang 21

JSP Technology Căn Bản Về JSP

Nếu import vào nhiều lớp hay packages thì cách nhaudấu “,”

session

Thuộc tính session kiểm soát liệu có hay không một trang

tham gia vào HTTP session Có hai giá trị “true” và

“false” Mật định là “true”, chỉ ra rằng biến ngầm định

session nên được nối kết với session hiện hành Giá trị

“false” có nghĩa rằng chẳng có session nào được sử dụng

tự động và nếu cố truy cập vào biến session sẽ trả lỗi vào

lúc trang được dịch thành servlet.

buffer

Thộc tính này xác định kích thước của vùng đệm được sử

dụng bởi biến out Có dạng sau:

<%@ page buffer=“none | sizekb” %>

Thuộc tính này có giá trị mật định là “8kb”, giá trị

“none” chẳng có vùng đệm nào được cấp và tất cả dữ liệu

xuất sẽ được ghi trực tiếp qua ServletResponse,

PrintWriter.

autoFlush

Xác định liệu luồng xuất có vùng đệm được tự động flush(giá trị “true” mật định) khi vùng đệm đầy hay sẽ tung ramộ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”

Trang 22

JSP Technology Căn Bản Về JSP

Thuộc tính này xác định một trang JSP nên bất kỳ cácngoại lệ nào được tung ra nhưng không bắt ngoại lệ nàytrong trang hiện hành

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

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

exception.

isErrorPage

Xác định trang JSP hiện thời có thể hoạt động như mộttrang lỗi cho một trang JSP khác Giá trị “false” là mậtđịnh cho thuộc tính này

contentType

Thuộc tính này gán Content-Type cho response header,

mô tả kiểu MIME của tài liệu được gởi đến client Thuộc

tính contentType có một trong hai dạng sau:

<%@ page contentType=“MIME-Type” %>

<%@ page contentType=“MIME-Type;

charset=Character-Set” %>

Một số kiểu MIME-Type thường dùng: “text/html”,

“text/xml”, “text/plain”, “image/gif”, “image/jpeg”

pageEncoding

Định nghĩa bộ mã hoá ký tự cho trang JSP (characterencoding), thuộc tính này hổ trợ cho bộ mã Unicode vàLatin-1, có giá trị mật định là “ISO-8859-1”

Code 4: pagedirective.jsp

<?xml version="1.0" encoding="ISO-8859-1" ?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"

"DTD/xhtml1-strict.dtd">

<html>

<head>

<title>The page Directive</titlle>

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

Trang 23

JSP Technology Căn Bản Về JSP

<h2>The page Directive</h2>

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

String newID;

if (oldID.equals(NO_VALUE)) { newID = randomID();

} else { newID = oldID;

}LongLivedCookiecookie = new LongLivedCookie ("userID" , newID);

response.addCookie(cookie);

%>

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

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

Trang 24

JSP Technology Căn Bản Về JSP

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àiliệu chính File được include thì được chèn vào trang vào lúcbiên dịch, Còn nhánh còn lại thì được chèn vào tại thời gian yêu

cầu (request) với element là jsp:include sẽ được trình bày trong

mục III Các action chuẩn.

File được include vào không những chứa HTML tĩnh mà cònchứa được mã JSP động Đặc tính này cho phép chúng ta tạocá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ụnglại chúng

Nếu file được include thay đổi thì tất cả JSP files sử dụng nócần phải được cập nhật lại

Ví dụ về include directive

File đầu tiên là một đoạn của trang chứa các thông tin tương

tác cần thiết cho file thứ hai dùng lại bằng include directive.

Code 5: contact.jsp

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

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

<%! private int accessCount = 0;

private Date accessDate = new Date();

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

%>

<hr/>

This page &copy; 2000

<a href="http//www.vinhan.com/">my-company.com</a>.This page has been accessed <%= ++accessCount %>

times since server reboot It was last accessed from

Trang 25

JSP Technology Căn Bản Về JSP

Code 6: includedirective.jsp

<?xml version="1.0" encoding="ISO-8859-1" ?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"

<title>The include Directive</title>

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

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

<p>Vinh, Vinh, Vinh.</p>

<p>An, An, An.</p>

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

</body>

</html>

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.

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

Trang 26

JSP Technology Căn Bản Về JSP

chuẩn: jsp:include, jsp:useBean, jsp:setProperty, jsp:getProperty,

jsp:plugin, jsp:forward, jsp:fallback, jsp:params, jsp:param sẽ

được giới thiệu trong mục này

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

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

cấp cho chúng ta một action là <jsp:include> để include các

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

biên dịch thành servlet vào thời gian yêu cầu vì thế các file được include không thể chứa mã JSP Cú pháp của action này

là:

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

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

ví dụ này chỉ hiện thị các thông tin của các web sites nỗi tiếng

Code 7: includerequest.jsp

<?xml version="1.0" encoding="ISO-8859-1" ?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "DTD/xhtml1-strict.dtd">

<! Example of including files at request time >

Trang 27

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>

Trang 28

JSP Technology Căn Bản Về JSP

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>

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 quamạng Tiến trình này tốn rất nhiều thời gian và cũng thất bạitrong Internet Explorer 4 và Netscape 3.x (chỉ hổ trợ JDK1.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êndịch cho nền Java 2 được cải tiến rất đáng kể so với các trìnhbiê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âuthuẫn trong cách thức mà chúng hổ trợ AWT component khácnhau, làm cho việc thử nghiệm và điều phối các giao tiếp ngườidù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à InternetExplorer mà cho phép chúng ta sử dụng Java 2 platform cho cácapplet 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úngkhi chúng gặp APPLET Thay vì thế, chúng ta phải sử dụng

Trang 29

JSP Technology Căn Bản Về JSP

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àotrang chúng ta nên chúng ta phải hoặc là include cả OBJECTlẫn EMBED (đặt EMBED trong phần COMMENT củaOBJECT) 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

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.

Trang 30

JSP Technology Căn Bản Về JSP

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ườidùng đến một bản sao cục bộ

iepluginurl

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

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

trong JSP sử dụng như sau:

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

Trang 31

JSP Technology Căn Bản Về JSP

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ế

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 trongtiế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ử

Trang 32

JSP Technology Căn Bản Về JSP

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.

Chúng ta có thể sử dụng các actions sau để sử dụng lại các

component (Beans) trong JSP: jsp:useBean, jsp:setProperty,

jsp:getProperty Các action này được trình bày trong chương

Trang 33

Định nghĩa chính thức của 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 tachỉ quan tân đến các khía cạnh API rồi ra các dấu hiệu chonhững hàm tạo của Bean và các phương thức truy cập thuộctính xử lý

Giống như bất kỳ lớp Java nào, các thể hiện của Bean đơnthuần chỉ là các đối tượng Java Chúng ta thường có sự lựachọn hoặc là tham chiếu tới Beans và các phương thức củachú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

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ạnUserBean, DataAccessBean, Thật sự thì quy tắc này không

là yêu cầu bắt buộc nhưng nó là một định hướng thông dụng

và cho phép những nhà phát triển khác hiểu ngay lập tức vaitrò của lớp này

- Một Bean phải có một hàm tạo không có tham số

Trang 34

TypeSpec có thể hoặc (|) trong các thuộc tính sau:

TypeSpec ::= class = “className” |

class = “className” type = “typeName” | type = “typeName” class = “className” | beanName = “beanName” type = “typeName” | type = “typeName” beanName = “beanName” | type = “typeName”

Các giá trị của thuộc tính scope:

- page

Đây là giá trị mặc định của scope Bean với giá trị này

sẽ có sẵn từ javax.servlet.jsp.PageContext trong trang hiện hành Bean sẽ được loại bỏ khi một response gởi trở về client hoặc request được chuyển tới một trang

Trang 35

JSP Technology JSP JavaBeans

Bean có giá trị này thì có sẵn từ đối tượng

ServletRequest của trang hiện hành và bất kỳ trang

được include hay forward nào bằng cách sử dụng

phương thức getAttribute(name) Bean sẽ bị huỷ bỏ khi một response gởi trở về client.

- session

Bean được sử dụng trong bất kỳ trang nào có tham giavào một session của client Có phạm vi trong cả mộtsession của client Bean này được lưu trữ trong đối

<jsp:setProperty name = “beanName” options />

options có thể hoặc (|) trong các thuộc tính sau:

options::=property =“*” |

property =“propertyName” | property =“propertyName” param =“paraName” | property =“propertyName”

value =“{<%= expr%> | string}”

Các thuộc tính của một thành phần JSP thì không giới hạn giátrị chuổi (string) nhưng rất quan trọng để hiểu rằng tất cả giá trị

của thuộc tính được truy cập qua <jsp:getProperty> tag sẽ được

Trang 36

JSP Technology JSP JavaBeans

chuyển thành kiểu chuổi Tuy nhiên, phương thức getter không

cần trả về kiểu String một cách tường minh vì JSP container sẽ

tự động chuyển giá trị trả về này thành kiểu String nếu cần

thiết Đối với các kiểu dữ liệu cơ bản của Java, sự chuyển đổiđược thể hiện trong bảng sau:

Property

boolean Java.lang.Boolean.toString(boolean)byte Java.lang.Byte.toString(byte)

char Java.lang.Character.toString(char)double Java.lang.Double.toString(double)int Java.lang.Integer.toString(int)float Java.lang.Float.toString(float)long Java.lang.Long.toString(long)

Tương tự, tất cả phương thức setter của thuộc tính được truy

cập với <jsp:setProperty> tag sẽ được tự động chuyển từ String sang một kiểu gốc thích hợp bởi JSP container Điều này được

thực hiện qua các phương thức của các lớp vỏ bọc Java

Property Type Conversion from String

boolean or Boolean

java.lang.Boolean.valueOf(string)

byte or Byte java.lang.Byte.valueOf(string)char or Character java.lang.Character.valueOf(string)double or Double java.lang.Double.valueOf(string)int or Integer java.lang.Integer.valueOf(string)float or Float java.lang.Float.valueOf(string)long or Long java.lang.Long.valueOf(string)

Trang 37

JSP Technology JSP JavaBeans

Introspector là bộ phân tích mà qua đó Java xem xét các

đoạn mã của chương trình để tìm ra những phương thứcdùng để xây dựng và áp dụng cho từng thuộc tính cũng nhưtình huống cụ thể Chúng ta không cần quan tâm đến cáckhai báo phức tạp khác Ví dụ thiết lập hai phương thức sau:

public void setAge(int age) public int getAge()

Theo cách này Bean container sẽ hiểu là chương trình muốntạo ra thuộc tính là age có kiểu int – Bean container sẽchuyển các thuộc tính theo quy tắc:

FoorBar  foorBar

Z  zURL  URL

thuộc tính.

Đối với thuộc tính mang những trị đơn, hai phương thức

getter và setter được viết theo mẫu sau (với getter và setter

xem 4.Thuộc tính của Bean):

public void setAttributeName(AttributeType param) public AttributeType getAttributeName()

Đối với thuộc tính mang những trị kiểu boolean, phương

thức getter được dùng với tiếp đầu ngữ là is thay cho get:

public void setAttributeName(AttributeType param) public boolean isAttributeName()

Đối với thuộc tính gồm nhiều phần tử (index attribute) các

phương thức getter và setter cũng được thiết lập tương tự.

Chúng ta có thể sử dụng một cặp phương thức hay cả haicặp phương thức cũng được

public void setAttributeName(int index, AttributeType value)

public AttributeType getAttributeName()

Trang 38

JSP Technology JSP JavaBeans

Nếu không muốn bộ phân tích Introspector ngầm định,

chúng ta có thể khai báo và xử lý các phương thức một cáchtường minh nhờ vào một lớp phụ dùng để mô tả các phương

thức được gọi là BeanInfo Khi Beans có tên là xxx được

biên dịch, trước tiên Bean container sẽ đi tìm lớp có tên là

xxxBeanInfo Nếu lớp này tồn tại, các thông tin trong lớp

xxxBeanInfo sẽ được xử lý trước và áp dụng cho cácphương thức được tìm thấy Các phương thức không được

mô tả trong xxxBeanInfo sẽ được áp dụng cách phân tích kiểu Introspector mặc định Xem thêm III Các giao tiếp bổ

trợ cho Bean.

Thuộc tính thật ra chỉ là những biến nằm trong một lớp, tuynhiên những biến này không nên sử dụng trực tiếp mà nênthông qua các phương thức để truy xuất chúng Thôngthường biến được dùng vào hai mục đích đó là gán dữ liệu

và lấy dữ liệu ra để tính toán Java đưa ra hai loại phươngthức để đáp ứng cho nhu cầu truy xuất biến đó là các

phương thức getter mang ý nghĩa đọc dữ liệu từ biến và các phương thức setter mang ý nghĩa gán dữ liệu cho biến.

Chúng ta hãy xem các ví dụ sau:

- Thuộc tính mang những giá trị đơn

Bean sau đây lấy thời gian của hệ thống

Code 15: Java file

package com.vinhan.bean;

import java util.*;

public class CurrentTimeBean { /*Data members*/

private int hours;

private int minutes;

Trang 39

JSP Technology JSP JavaBeans

Code 15: Java file (tiếp theo)

public CurrentTimeBean() { Date now = new Date();

this.hours = now.getHours();

this.minutes = now.getMinutes();

} public int getHours() { return hours;

} public int getMinutes() { return minutes();

- Thuộc tính mang giá trị boolean

Code 17: Java file

} public void setAuthorized(boolean authorized) { this.authorized = authorized;

Trang 40

JSP Technology JSP JavaBeans

public boolean isAuthorized() {

Code 17: Java file (tiếp theo)

return authorized;

}}

- Thuộc tính mang giá trị mảng

Ví dụ này sẽ xây dựng một component mà có thể thựchiện các tính toán tĩnh trên một dãy số

Code 19: Java file

} public double getAverage() { double sum = this.getSum();

if (sum == 0) return 0;

else return sum/numbers.length;

Ngày đăng: 05/01/2015, 09:39

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. - ứng dụng cụ thể chương trình vào công ty liên doanh bêtông việt úc
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 58)
1) 1) Sơ đồ ngữ cảnh. Sơ đồ ngữ cảnh. - ứng dụng cụ thể chương trình vào công ty liên doanh bêtông việt úc
1 1) Sơ đồ ngữ cảnh. Sơ đồ ngữ cảnh (Trang 67)
3) 3) Sơ đồ hệ thống. Sơ đồ hệ thống. - ứng dụng cụ thể chương trình vào công ty liên doanh bêtông việt úc
3 3) Sơ đồ hệ thống. Sơ đồ hệ thống (Trang 68)
Sơ đồ thực thể kết hợp (ERD): - ứng dụng cụ thể chương trình vào công ty liên doanh bêtông việt úc
Sơ đồ th ực thể kết hợp (ERD): (Trang 74)
1) Sơ đồ hệ thống mức vật lý. - ứng dụng cụ thể chương trình vào công ty liên doanh bêtông việt úc
1 Sơ đồ hệ thống mức vật lý (Trang 75)
Sơ đồ thực thể kết hợp (ERD): - ứng dụng cụ thể chương trình vào công ty liên doanh bêtông việt úc
Sơ đồ th ực thể kết hợp (ERD): (Trang 81)
7) Bảng tầm ảnh hưởng. - ứng dụng cụ thể chương trình vào công ty liên doanh bêtông việt úc
7 Bảng tầm ảnh hưởng (Trang 88)
Sơ đồ cấu trúc chương trình. - ứng dụng cụ thể chương trình vào công ty liên doanh bêtông việt úc
Sơ đồ c ấu trúc chương trình (Trang 91)
Sơ đồ tổ chức quản lý. - ứng dụng cụ thể chương trình vào công ty liên doanh bêtông việt úc
Sơ đồ t ổ chức quản lý (Trang 106)

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

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

TÀI LIỆU LIÊN QUAN

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

w