ĐỒ ÁN TỐT NGHIỆP ĐỀ TÀI: NGHIÊN CỨU JSP VÀ JAVA, XÂY DỰNG WEBSITE BÁN HÀNG CHO CÔNG TY CỔ PHẦN CHẾ BIẾN GỖ VIỆT ĐỨC – KHAVIWOOD
Chương trình mới được cài đặt trên môi trường windows, chưa được cài đặt thử nghiệm trên môi trường khác.
Xây dựng hệ thống trợ giúp cho người sử dụng.
Bổ sung thêm cho phần quản trị.
Dĩ nhiên có nhiều kiểu tiện ích DLL đi kèm với ODBC. Ví dụ như một trong các DLL sẽ cho phép ta làm chủ nguồn dữ liệu ODBC. Còn giao diện chủ cho ODBC có trog file CPL (bảng điều khiển) ở thư mục SYSTEM .
ODBC đưa ra đảm bảo rằng có thể cung cấp được phương pháp để lấy nội dung trong cơ......
Ñoà aùn toát nghieäp ñaïi hoïc GVHD: Nguyeãn Ñöùc Thuaàn
ĐỒ ÁN TỐT NGHIỆP ĐỀ TÀI: NGHIÊN CỨU
JSP VÀ JAVA, XÂY DỰNG WEBSITE BÁN
HÀNG CHO CÔNG TY CỔ PHẦN CHẾ BIẾN
GỖ VIỆT ĐỨC – KHAVIWOOD
Thành ph H Chí Minh, tháng n m …..
SVTH: Nguyeãn Vaên Ty Trang 1
Ñoà aùn toát nghieäp ñaïi hoïc GVHD: Nguyeãn Ñöùc Thuaàn
Mục lục
LỜI NÓI ĐẦU........................................................................................................................ 3
Chương I................................................................................................................................ 5
1. Về mặt ứng dụng. ........................................................................................................... 5
2. Về mặt kỹ thuật .................................................................................................................. 6
3. Một số yêu cầu khác ........................................................................................................... 7
I. GIỚI THIỆU NGÔN NGỮ LẬP TRÌNH JAVA. ................................................................... 8
1. Tạo một applet: ................................................................................................................ 11
2. JavaBeans. ....................................................................................................................... 13
3. Java Script. ...................................................................................................................... 20
1.2. Hiển thị kết xuất bằng cú pháp ....................................................................... 22
2.1. Đối tượng Request: ....................................................................................................... 24
2.4. Đối tượng Application:.................................................................................................. 26
2.6. Đối tượng Config: ......................................................................................................... 27
SVTH: Nguyeãn Vaên Ty Trang 2
Ñoà aùn toát nghieäp ñaïi hoïc GVHD: Nguyeãn Ñöùc Thuaàn
LỜI NÓI ĐẦU
Ngày nay, Internet ngày càng trở nên cần thiết cho cuộc
sống, đặc biệt trong lĩnh vực kinh doanh. Thương mại
điện tử hiện đang là ngành kinh tế thu lợi nhuận cao
của nhiều nước trên thế giới. Mặc dù vậy, nước ta lại
chưa phát triển loại hình này do các điều kiện khách
quan. Tuy nhiên, sớm hay muộn thì chắc chắn cũng phải
có phần đáp ứng được nhu cầu của khách hàng và nhà
thương mại. Vì buôn bán là một hoạt động không thể
thiếu trong đời sống hiện nay, và cũng nhờ sự phát triển
của thương mại điện tử mà các nhà thương mại có cơ
hội quảng cáo sản phẩm của mình rộng rãi hơn.
Với thương mại điện tử, chúng ta không còn phải đến
trực tiếp cửa hàng vừa tốn thời gian, sức khỏe. Giờ đây,
chúng ta có thể ngồi tại nhà mà có thể mua được bất kỳ
một món hàng nào. Thật là tuyệt vời!
Chính vì thế, em đã chọn đề tài “Nghiên cứu JSP và
Java, xây dựng website bán hàng cho Công ty Cổ Phần
Chế biến gỗ Việt Đức” nhằm làm quen với thương mại
điện tử và bắt kịp sự phát triển của nước ta cũng như
thế giới. Do thời gian hạn chế, việc tìm hiểu và xây
dựng một ứng dụng trên công nghệ Java (một công
nghệ mới) đối với em rất khó khăn. Dù vậy, ứng dụng
cũng đã triển khai được phần lớn các yêu cầu chính mà
một ứng dụng thương mại điện tử cần đáp ứng.
Em xin chân thành cảm ơn thầy Nguyễn Đức Thuần đã
tận tình hướng dẫn, giúp em hoàn thành tốt đồ án tốt
nghiệp này.
SVTH: Nguyeãn Vaên Ty Trang 3
Ñoà aùn toát nghieäp ñaïi hoïc GVHD: Nguyeãn Ñöùc Thuaàn
Em xin chân thành cảm ơn !
Nha Trang, tháng 08 năm 2003.
SVTH : Nguyễn Văn Ty
Lớp : 40TH
MSSV: 8D15075
SVTH: Nguyeãn Vaên Ty Trang 4
Ñoà aùn toát nghieäp ñaïi hoïc GVHD: Nguyeãn Ñöùc Thuaàn
Chương I
YÊU CẦU CỦA ĐỀ TÀI
1. Về mặt ứng dụng.
Xây dựng hệ thống quản lý các dịch vụ bán hàng trên
mạng, trong đó hệ thống cho phép các dịch vụ đăng ký
một không gian để bán những mặt hàng mình có trên
mạng. Mỗi dịch vụ sẽ có một account riêng trong hệ
thống, họ có thể cập nhật các mặt hàng, thay đổi thông
tin của dịch vụ và quản lý những đơn đặt hàng của
khách mua hàng thông qua hệ thống. Tuy nhiên, dịch vụ
hay mặt hàng của dịch vụ chỉ thực sự hoạt động khi đã
thanh toán những chi phí cần thiết cho hệ thống. Đối
với những khách hàng vào hệ thống để mua hàng, hệ
thống phải hỗ trợ sao cho khách hàng có thể tìm kiếm,
chọn và đặt hàng một cách dễ dàng. Khi khách hàng đặt
mua sản phẩm, hệ thống sẽ chuyển đơn đặt hàng này
đến dịch vụ bán hàng. Việc giao và nhận hàng diễn ra
nội bộ giữa người bán với người mua, hệ thống không
tham gia trực tiếp vào việc bán hàng. Hệ thống đóng vai
trò như một siêu thị ảo, môi giới cho khách mua hàng
với dịch vụ.
Về phía khách hàng
Các khách hàng có thể đăng kí mua hàng, cũng như
việc xem và lựa chọn những sản phẩm qua mạng nếu
họ đồng ý với những sản phẩm đó.
SVTH: Nguyeãn Vaên Ty Trang 5
Ñoà aùn toát nghieäp ñaïi hoïc GVHD: Nguyeãn Ñöùc Thuaàn
Khách hàng có thể dễ dàng xem hàng, hoặc đăng
ký mua hàng bất cứ lúc nào thông qua mạng máy tính
khi mà máy chủ đã khởi động.
Các khách hàng có thể dễ dàng tìm thấy sản phẩm
mà mình cần, việc đăng kí mua hàng chỉ thông qua thao
tác nhấn chuột trên sản phẩm mà mình lựa chọn.
Các khách hàng còn có thể theo dõi được những
sản phẩm mới mà công ty chuẩn bị bán ra trong một
thời gian sắp tới.
Khi cần thiết thì khách hàng có thể hỏi đáp thông
qua công ty, hoặc thông qua diễn đàn nhằm góp ý cũng
như việc thắc mắc với công ty. Diễn đàn sẽ giúp cho
khách hàng giải quyết các vấn đề mà mình không giải
quyết được.
Về phía người quản lý
Người quản lý có thể theo dõi thành viên, đơn hàng
của các khách hàng đang tham gia mua hàng của công
ty mình (như số lượng mặt hàng, số tiền, của khách
hàng …) và nắm các thông tin của khách hàng như
email, địa chỉ để liên lạc khi cần.
Người quản lý có thể thêm sản phẩm, xoá sản
phẩm, thêm người quản lý, người sử dụng thông qua
chương trình đã được xây dựng.
2. Về mặt kỹ thuật
Bài toán đòi hỏi hệ thống phải có những khả năng về
kỹ thuật như sau:
Ứng dụng triển khai trên môi trường JSP.
Hỗ trợ nhiều hệ điều hành (cho phía client).
SVTH: Nguyeãn Vaên Ty Trang 6
Ñoà aùn toát nghieäp ñaïi hoïc GVHD: Nguyeãn Ñöùc Thuaàn
Hỗ trợ nhiều trình duyệt (như IE, Netscape..)
Hỗ trợ nhiều người dùng.
Số lượng người tham gia đăng ký mua hàng không giới
hạn.
Số lượng các sản phẩm, người đăng ký sử dụng thêm
vào không giới hạn.
3. Một số yêu cầu khác
Ngoài các yêu cầu trên, ứng dụng có thể:
Dễ dàng cài đặt.
Dễ dàng sử dụng.
Như vậy, trước những yêu cầu của bài toán đặt ra như
trên, ta cần khảo sát công nghệ và lựa chọn giải pháp
thích hợp để có thể triển khai ứng dụng theo yêu cầu
của bài toán.
Chương II
SVTH: Nguyeãn Vaên Ty Trang 7
Ñoà aùn toát nghieäp ñaïi hoïc GVHD: Nguyeãn Ñöùc Thuaàn
NGÔN NGỮ LẬP TRÌNH JAVA ĐỐI VỚI
ỨNG DỤNG MẠNG
I. GIỚI THIỆU NGÔN NGỮ LẬP TRÌNH JAVA.
Ông tổ của Java không ai khác chính là James Gosling,
một lập trình viên của công ty Sun Microsystems. Cuối
năm 1990 James Gosling được Sun Microsystem giao
nhiệm vụ xây dựng một phần mềm cho các mặt hàng
điện dân dụng với mục tiêu nhỏ gọn và tương thích với
nhiều thiết bị phần cứng khác nhau, thế là Java ra đời.
Đầu tiên Java có tên là Oak (cây sồi) nhưng vì có sự
trùng tên nên Oak được đổi tên thành Java như hiện
nay.
Java được thiết kế cho mục đích đa nền (không phụ
thuộc vào bất kỳ hệ điều hành nào) nên chương trình
Java sau khi biên dịch cho ra một file nhị phân khác với
các file nhị phân thực thi của Windows như .exe hay
.com. java biên dịch ra mã nhị phân gọi là byte-code có
đuôi mở rộng là .class và được triệu gọi thực thi trong
máy ảo Java (Java Virtual Machine – JVM). Máy ảo
Java thực sự là một trình thông dịch bình thường có khả
năng thực thi các mã byte-code tương tự như bộ xử lý
của máy tính thực thi các mã nhị phân là các chỉ thị mã
máy. Nói đúng hơn máy ảo Java là một kiến trúc của bộ
xử lý nhưng thực thi bằng cơ chế phần mềm thay vì
phần cứng. Chính vì lý do đó mà ta chỉ cần viết máy ảo
Java cho từng hệ điều hành thì chương trình Java
(.class) có thể chạy như nhau trong mọi hệ điều hành
dưới nền một kiến trúc máy ảo. Cha đẻ của Java là
hãng Sun Microsystem chịu trách nhiệm xây dựng các
SVTH: Nguyeãn Vaên Ty Trang 8
Ñoà aùn toát nghieäp ñaïi hoïc GVHD: Nguyeãn Ñöùc Thuaàn
máy ảo Java cho những hệ điều hành khác nhau. Nhiệm
vụ của lập trình viên là chỉ viết chương trình mã nguồn
Java sau đó biên dịch chương trình ra dạng file thực thi
byte-code để chạy trên máy ảo.
Java có thể dùng để viết chương trình ứng dụng tương
tự như mọi ngôn ngữ lập trình khác. Java thiên về lập
trình cho các ứng dụng mạng và Internet. Ngoài ra ta
có thể dùng Java để viết các Applet hoặc Servlet hay
trang JSP là những thành phần ứng dụng dành cho
trình duyệt Internet (browser) và trình chủ (Web
server).
Java là một ngôn ngữ đơn giản, hướng đối tượng, phân
tán, thông dịch mạnh mẽ, bảo mật, cấu trúc độc lập, khả
chuyển, hiệu quả cao và linh động (the Java TM
Language an Overview – sun Microsystems). Đó là
những đặc điểm quan trọng mà không phải bất cứ một
ngôn ngữ lập trình nào cũng có được.
Applet là những mẫu chương trình nhỏ được nhúng và
chạy ngay trong trình duyệt. Applet giúp bạn thực hiện
được rất nhiều tương tác bên trong trình duyệt. Có thể
nói Java ra đời và nổi tiếng chính là nhờ khả năng viết
Applet của nó. Mặc dù vậy, ngày nay các Applet không
còn được sử dụng nhiều trên các trình duyệt. Chúng
được thay thế bằng ngôn ngữ kịch bản JavaScript. Tuy
nhiên vẫn còn nhiều điều mà Applet có khả năng lập
trình mạnh mẽ hơn JavaScript như giao tiếp với Web
server, thực hiên công việc tính toán phức tạp, vẽ đồ thị,
bảo mật…
Servlet là một thành phần đối tượng chủ yếu phục vụ
cho mục đích tích hợp và chạy trên các trình chủ Web
SVTH: Nguyeãn Vaên Ty Trang 9
Ñoà aùn toát nghieäp ñaïi hoïc GVHD: Nguyeãn Ñöùc Thuaàn
server. Servlet giúp xử lý và tạo ra các trang Web động.
Servlet có thể kết hợp với các trang Java Server Page -
JSP là các trang Script chạy phía máy chủ để tạo các
trang Web động, tương tác với cơ sở dữ liệu tương tự
như Servlet.
JavaScript và Java hoàn toàn khác nhau, mặc dù
thoáng nghe đến tên gọi bạn có thể nghĩ rằng chúng đều
xuất phát từ Java. JavaScript là một ngôn ngữ kịch bản
ra đời và phát triển bởi Nescape Communication trong
khi Java được phát triển bởi Sun Mcrosystem. Mặc dù
vậy, ngày nay chúng trở nên thân thiết và gần gũi với
nhau hơn bao giờ hết. Java và JavaScript có cú pháp
lập trình rất giống nhau và rất giống với C/C++ nên rất
thuận tiện để người dùng học cả hai ngôn ngữ song
song với nhau. JavaScript thường được dùng để kiểm
soát và điều khiển các hoạt động của trình khách.
JavaScript có thể tạo các hiệu ứng động cho trang Web
như thay đổi màu sắc, hiển thị ảnh động, tương tác với
người dùng bằng chuột, phím, kiểm tra dữ liệu nhập vào
trước khi gởi về trình chủ để xữ lý.
JavaBeans là một thành phần đối tượng được xây dựng
từ ngôn ngữ Java, là những khối mã xây dựng sẵn và có
thể dùng lại được. Nó đang trở nên ngày càng phổ biến
đối với các ứng dụng phân tán (distributed application)
trên mạng.
Java Server Page - JSP đặc biệt cung cấp cho những
nhà phát triển Web một nền tảng để tạo ra các nội dung
động trên máy chủ sử dụng HTML và XML, vì mã Java
có tính bảo mật, nhanh, và độc lập với máy chủ. JSP là
phần mở rộng đặc biệt của Java Servlet, đơn giản hơn
SVTH: Nguyeãn Vaên Ty Trang 10
Ñoà aùn toát nghieäp ñaïi hoïc GVHD: Nguyeãn Ñöùc Thuaàn
Servlet. JSP được nhúng vào các trang HTML để tạo ra
các trang động từ trình chủ phục vụ cho trình khách.
Trên đây là một số đặc tính quan trọng và các nhánh
phát triển của ngôn ngữ Java. Với những đặc tính mạng
mẽ như vậy, Java là sự lựa chọn tốt nhất cho các ứng
dụng mạng.
Applet Java:
Applet như đã nói là những mẫu chương trình nhỏ chạy
ngay trong trình duyệt và tương tác với trình duyệt. Vì
applet đã nói là những mẫu chương trình nhỏ chạy ngay
trong trình duyệt và tương tác với trình duyệt. Vì vậy
applet phải tuân thủ theo một cấu trúc nhất định để có
thể chạy được trên các trình duyệt khác nhau.
1. Tạo một applet:
Khuôn mẫu của một applet thể hiện ở bốn phương thức
sau:
Trong đó :
appletName: tên của applet.
SVTH: Nguyeãn Vaên Ty Trang 11
Ñoà aùn toát nghieäp ñaïi hoïc GVHD: Nguyeãn Ñöùc Thuaàn
Init: để khởi tạo một applet khi một applet được nap
(loaded) hay được nạp lại (reloaded).
Start: bắt đầu hoạt động của applet khi applet được nạp
hay khi người dùng thăm lại trang chứa applet.
Stop: chấm dứt hoạt động của applet khi người dùng rời
khỏi trang chứa applet hay đóng trình duyệt.
Destroy: thực hiện việc dọn dẹp chuẩn bị cho applet
thoát hẳn (unloading).
Không phải applet nào cũng dùng đủ 4 phương thức
này, các phương thức bị bỏ qua khi viết một applet sẽ
được trình duyệt tự thực hiện khi nạp applet đó.
* Vòng đời của một applet:
Nạp một applet:
Khi một applet được nạp có các sự kiện xảy ra như sau:
Một instance của lớp con applet được tạo ra, có nghĩa
là một đối tượng applet được tạo ra.
Đối tượng applet này tự khởi tạo mình, có nghĩa là tự
cài đặt, nhận các giá trị (phương thức init() được gọi
đến).
Đối tượng applet này bắt đầu chạy (phương thức start()
được gọi).
Rời khỏi hay trở về trang Web:Khi người dùng sang
trang mới (không chứa applet của ta), applet thực hiện
phương thức stop(). Khi người dùng trở về trang chứa
applet, applet lại kích hoạt phương thức start(). Quá
trình này cũng xảy ra khi người dùng thu nhỏ cửa sổ
(minimize) rồi mở lại (restore).
Nạp lại một applet:Thông thường các trình duyệt cho
phép người dùng nạp lại applet, nghĩa là người dùng đã
thoát khỏi applet rồi lại nạp applet lại một lần nữa. Vì
SVTH: Nguyeãn Vaên Ty Trang 12
Ñoà aùn toát nghieäp ñaïi hoïc GVHD: Nguyeãn Ñöùc Thuaàn
mỗi khi thoát khỏi applet phương thức stop() sẽ được
gọi, sau đó destroy sẽ được gọi để thực hiện việc dọn
dẹp cho hệ thống. Như thế applet sẽ giải phóng tất cả
các tài nguyên mà nó đã dùng. Cuối cùng applet chính
thức bị xoá bỏ khỏi bộ nhớ. Và khi được nạp lại, quá
trình nạp sẽ xảy ra y như lần đầu applet được nạp.
Thoát khỏi trình duyệt: Khi ta chưa đóng trang Web
chứa applet mà đã thoát khỏi trình duyệt, applet sẽ lập
tức tự khởi động phương thức stop() rồi thực hiện
phương thức dọn dẹp destroy() trước khi trình duyệt bị
đóng.
2. JavaBeans.
JavaBeans do Sun Microsystem phát triển dựa trên nền
tản của Java. JavaBeans là những giao tiếp lập trình
được dùng để tạo ra những khối mã xây dựng sẵn và có
thể dùng lại được. Những thành phần JavaBeans có thể
được nhúng vào trong một ứng dụng, liên kết với các
thành phần JavaBeans khác hay được dùng để kết nối
với các ứng dụng. Bằng cách dùng các thành phần
JavaBeans các nhà phát triển ứng dụng có thể giảm các
khối lượng mã mà họ phải viết. Họ có thể tự tạo ra các
thành phần JavaBeans riêng biệt hoặc mua lại chúng từ
các nhà phát triển thứ ba khác.
Trong thời gian qua, môi trường Internet đã trở thành
động lực chính cho hướng tiếp cận thành phần
(component) dựa trên Java. Nó đang trở nên ngày càng
phổ biến với các ứng dụng phân tán (distributed
application) trên mạng. Theo mô hình này một thành
phần của ứng dụng sẽ chạy trên máy khách (client), một
SVTH: Nguyeãn Vaên Ty Trang 13
Ñoà aùn toát nghieäp ñaïi hoïc GVHD: Nguyeãn Ñöùc Thuaàn
phần chạy trên lớp trung gian, phần còn lại sẽ chạy trên
máy chủ (server) với tác vụ xử lý cơ sở dữ liệu hay tính
toán phức tạp. Các ứng dụng Java xây dựng bằng các
thành phần JavaBeans có thể đáp ứng cho cả hai phía
client và server.
Không có một bí ẩn nào trong việc tạo ra một lớp đối
tượng JavaBeans. Ta xây dựng lớp đối tượng
JavaBeans bằng cách cài đặt giao diện (interface)
java.io.Serializable. Tiếp đến ta thiết lập và xây dựng
các phương thức mang tên get, set để trình bày cách gọi
những thuộc tính của Beans trong trang JSP.
Cấu trúc của một đối tượng Beans như sau:
Các thuộc tính (property) của thành phần JavaBeans:
Thuộc tính là một trong những khía cạnh quan trọng
nhất trong JavaBeans, thuộc tính biểu diễn những trạng
thái (state) mà một thành phần JavaBeans có thể có.
SVTH: Nguyeãn Vaên Ty Trang 14
Ñoà aùn toát nghieäp ñaïi hoïc GVHD: Nguyeãn Ñöùc Thuaàn
Người dùng đa số tương tác với JavaBeans qua các
thuộc tính của nó. Bằng cách thay đổi các thuộc tính
các nhà phát triển ứng dụng sẽ đem đến cho đối tượng
thành phần một diện mạo (apperance) và một cách
hành xử (behavior) khác.
Thuộc tính thể hiện sự thay đổi (bound property):
JavaBeans là từng thành phần riêng biệt nhưng vẫn có
thể kết nối được với nhau qua cơ chế gởi thông báo
(message). Khi thuộc tính của một thành phần
JavaBeans A thay đổi nó có thể thông báo cho một
thành phần JavaBeans B khác biết để thành phần
JavaBeans B này có cơ hội cập nhật lại những thông tin
cần thiết đối với thành phần A mà nó sử dụng.
Cơ chế cài đặt một thuộc tính có thể thông báo cho các
thành phần JavaBeans khác biết khi nó thay đổi như
sau: cài đặt hai phương thức dùng để đăng ký và loại bỏ
một đối tượng listener.
Mỗi thành phần JavaBeans khác phải tự cài đặt một đối
tượng listener từ giao diện PropertyChangeListtener có
nhiệm vụ phản ứng lại những thay đổi này, sau đó đăng
ký lại với thành phần JavaBeans A nhờ vào các phương
thức trên.
Phương thức cần cài đặt cho giao diện
PropertyChangeListtener là:
SVTH: Nguyeãn Vaên Ty Trang 15
Ñoà aùn toát nghieäp ñaïi hoïc GVHD: Nguyeãn Ñöùc Thuaàn
Các thủ tục trên đây chỉ thực hiện nhiệm vụ đăng ký và
tạo đối tượng listener mà thôi. Để các đối tượng listener
có thể nhận biết sự thay đổi của thuộc tính, ta phải gọi
phương thức firePropertyChange của đối tượng
PropertyChangeSupport từ thành phần JavaBeans A
như sau:
Phương thức này sẽ thông báo đến mọi đối tượng
listener (bằng cách gọi phương thức propertyChange
của listener) đã đăng ký với thuộc tính của thành phần
JavaBeans A, sự thay đổi bao gồm giá trị trước khi thay
đổi, giá trị sau khi thay đổi và tên của thuộc tính bị thay
đổi.
Thuộc tính ràng buộc (constraint property):
Hạn chế của thuộc tính bound property là các đối tượng
listener chỉ phản ứng lại khi giá trị thuộc tính đã bị thay
đổi. Java cung cấp một khả năng khác mạnh hơn đó là
tạo thuộc tính bị ràng buộc (constraint property), tương
tự như thuộc tính bound mỗi lần thuộc tính constraint
định thay đổi giá trị (chỉ dự định chứ chưa thay đổi) nó
sẽ thông báo đến tất cả các đối tượng listener đã đăng
ký, đối tượng listener có quyền từ chối không cho phép
thay đổi và như vậy thuộc tính vẫn phải giữ nguyên giá
trị ban đầu. Ngược lại nếu đối tượng listener cho phép
SVTH: Nguyeãn Vaên Ty Trang 16
Ñoà aùn toát nghieäp ñaïi hoïc GVHD: Nguyeãn Ñöùc Thuaàn
thì quá trình thay đổi giá trị cho thuộc tính mới diễn ra
tiếp tục.
Để đăng ký đối tượng listener cho thuộc tính ràng buộc,
thành phần JavaBeans phải cài đặt hai phương thức sau
đây:
Mỗi thành phần JavaBeans khác phải tự cài đặt một đối
tượng listener từ giao diện VetoableChangeListener có
nhiệm vụ phản ứng lại những thay đổi này (cho phép
hay không cho phép thuộc tính thay đổi), sau đó đăng ký
với thành phần JavaBeans nhờ vào các phương thức
trên (add dùng để đăng ký còn remove dùng để loại bỏ
đối tượng listener).
Phương thức cần cài đặt cho giao diện
VetoableChangeListener là:
Nếu đối tượng listener không đồng ý thay đổi thuộc tính
nó sẽ ném ra ngoại lệ PropertyVetoException, thành
phần JavaBeans sẽ bắt lấy và huỷ bỏ quá trình thay đổi
trị cho thuộc tính.
Cũng như thuộc tính dạng bound, khi thuộc tính
constraint có dự định thay đổi giá trị trong phương thức
setter nó cần thông báo cho các đối tượng listener đã
đăng ký với nó bằng phương thức fireVetoableChange
SVTH: Nguyeãn Vaên Ty Trang 17
Ñoà aùn toát nghieäp ñaïi hoïc GVHD: Nguyeãn Ñöùc Thuaàn
của đối tượng VetoableChangeSupport từ thành phần
JavaBeans như sau:
Phương thức này sẽ thông báo đến mọi đối tượng
listener (bằng cách gọi phương thức vetoableChange
của listener) đã đăng ký với thành phần JavaBeans.
* Xử lý tình huống của thành phần JavaBeans:
Đối tượng nào sản sinh ra tình huống được gọi là nơi
phát sinh tình huống (event source), đối tượng nào dùng
để tiếp nhận và xử lý các tình huống phát sinh từ đối
tượng khác được gọi là đối tượng listener.
Các tình huống nội tại (event state):
Một thành phần JavaBeans ngoài việc gởi tình huống
đến những đối tượng khác còn phải lo xử lý các tình
huống mà bản thân hệ thống gởi đến mình.
Nếu xét về vai trò thì bản thân hệ thống là nơi phát sinh
tình huống còn thành phần JavaBeans phải tiếp nhận và
xử lý các tình huống này.
Để nhận biết được tình huống mà hệ thống đưa đến,
thành phần JavaBeans phải xây dựng một đối tượng
listener và đăng ký đối tượng này với hệ thống. Các đối
tượng mà Java đã thiết kế sẵn dành cho từng tình huống
cụ thể như sau:
ComponentListener Listener dùng để nhận biết các
tình huống khi đối tượng bị thay đổi kích thước (resize),
di chuyển (move), hiện ra (show) hay dấu đi (hidden).
SVTH: Nguyeãn Vaên Ty Trang 18
Ñoà aùn toát nghieäp ñaïi hoïc GVHD: Nguyeãn Ñöùc Thuaàn
FocusListener Listener nhận biết tình huống là
Focus (là tình huống mà đối tượng nhận nhiều quyền ưu
tiên nhất)
KeyListener Listener nhận biết các tình huống xuất
phát từ bàn phím.
MouseListener Listener nhận biết tình huống xuất
phát từ việc bấm chuột như kích chuột trái, kích chuột
phải hay kích đôi.
MouseMotionListener Listener nhận biết tình huống di
chuyển chuột.
WindowListener Listener nhận biết tình huống một cửa
sổ bị đóng lại, mở ra, thu nhỏ thành biểu tượng…
ActionListener Listener nhận biết tình huống mà đối
tượng sẽ phải thực thi một tác vụ nào đó.
AdjustmentListener Listener nhận biết tình huống mà
đối tượng thay đổi giá trị (như vị trí thanh trượt của
thành phần scrollbar chẳng hạn).
ItemListener Listener nhận biết tình huống mà một
phần tử thay đổi trạng thái (như trong các thành phần
checkbox, choice…).
Có hai cách để tạo đối tượng listener giúp thành phần
JavaBeans tiếp nhận tình huống mà hệ thống đưa đến.
Cách thứ nhất là tạo ra một đối tượng listener riêng biệt
sau đó thành phần JavaBeans sẽ đăng ký với hệ thống
đối tượng listener này. Cách thứ hai là dùng chính bản
thân thành phần JavaBeans cài đặt cho giao diện
listener và đăng ký với hệ thống qua biến this.
SVTH: Nguyeãn Vaên Ty Trang 19
Ñoà aùn toát nghieäp ñaïi hoïc GVHD: Nguyeãn Ñöùc Thuaàn
3. Java Script.
3.1. JavaScript là gì?
Về nguồn gốc thì Java và JavaScript không liên quan gì
với nhau. Java do Sun Microsystem khởi xướng còn
JavaScript tiền thân lại ra đời từ ngôn ngữ đặc tả
(scripting language) do hãng Netscape Communications
đưa ra với tên là LiveScript. Sau một thoả thuận giữa
Sun và Netscape ngôn ngữ LiveScript và Java đã cùng
bắt tay nhau để tạo nên ngôn ngữ JavaScript. Tuy nhiên
Java và JavaScript vẫn khác nhau về cơ bản. Java là
một ngôn ngữ lập trình mạnh mẽ, có thể dùng để viết
applet hay bất kỳ một ứng dụng nào (chạy độc lập hoặc
chạy trên mạng) còn JavaScript chỉ là một ngôn ngữ
đặc tả dùng để thay đổi tương tác với bản thân trình
duyệt mà thôi.
Sau đây là bảng so sánh các đặc điểm khác nhau cơ bản
giữa hai ngôn ngữ Java và JavaScript:
JavaScript Java
Phát triển từ Netscape Communications Phát triển từ
sun Microsystem
Các dòng lệnh được thông dịch bởi trình duyệt
(brower). Các dòng lệnh được biên dịch ra mã máy
(JVM) trước khi cho thực thi.
Nền tảng dựa trên các đối tượng được xây dựng sẵn
(object base). Các đối tượng này không cho phép thừa
kế để tạo ra những đối tượng mới. Nền tảng dựa trên
cơ sở hướng đối tượng (object oriented), tất cả đều quy
SVTH: Nguyeãn Vaên Ty Trang 20