Luận văn Nghiên cứu công nghệ JSP & Java, xây dựng Website bán hàng cho công ty cổ phần chế biến gỗ Việt Đức Khai

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

pdf58 trang | Chia sẻ: lvbuiluyen | Lượt xem: 1990 | Lượt tải: 3download
Bạn đang xem trước 20 trang tài liệu Luận văn Nghiên cứu công nghệ JSP & Java, xây dựng Website bán hàng cho công ty cổ phần chế biến gỗ Việt Đức Khai, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
TRƯỜNG……………………… KHOA…………………… ĐỒ ÁN TỐT NGHIỆP: Đồ án tốt nghiệp đại học: " Nghiên cứu công nghệ JSP & Java, xây dựng Website bán hàng cho công ty cổ phần chế biến gỗ Việt Đức Kha " Đồ án tốt nghiệp đại học GVHD: Nguyễn Đức Thuần SVTH: Nguyễn Văn Ty Trang 1 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! Đồ án tốt nghiệp đại học GVHD: Nguyễn Đức Thuần SVTH: Nguyễn Văn Ty Trang 2 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 hồn thành tốt đồ án tốt nghiệp này. 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 Đồ án tốt nghiệp đại học GVHD: Nguyễn Đức Thuần SVTH: Nguyễn Văn Ty Trang 3 Đồ án tốt nghiệp đại học GVHD: Nguyễn Đức Thuần SVTH: Nguyễn Văn Ty Trang 4 Đồ án tốt nghiệp đại học GVHD: Nguyễn Đức Thuần SVTH: Nguyễn Văn Ty Trang 5 Chương I YÊU CẦU CỦA ĐỀ TÀI PHẦN I CƠ SỞ LÝ THUYẾT Đồ án tốt nghiệp đại học GVHD: Nguyễn Đức Thuần SVTH: Nguyễn Văn Ty Trang 6 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 tố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 đó.  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, xố 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 tố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). Hỗ trợ nhiều trình duyệt (như IE, Netscape..) Đồ án tốt nghiệp đại học GVHD: Nguyễn Đức Thuần SVTH: Nguyễn Văn Ty Trang 7 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 Ngồ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 tố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 tốn. Chương II 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 Đồ án tốt nghiệp đại học GVHD: Nguyễn Đức Thuần SVTH: Nguyễn Văn Ty Trang 8 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 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. Ngồ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 tố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 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 hồn tồn khác nhau, mặc dù thố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 số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ị Đồ án tốt nghiệp đại học GVHD: Nguyễn Đức Thuần SVTH: Nguyễn Văn Ty Trang 9 ả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 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: Error! Trong đó : appletName: tên của applet. 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. pubilc class appletName extendes Applet { public void init() {…} public void start() {…} public void stop() {…} public void destroy() {…} } Đồ án tốt nghiệp đại học GVHD: Nguyễn Đức Thuần SVTH: Nguyễn Văn Ty Trang 10 Destroy: thực hiện việc dọn dẹp chuẩn bị cho applet thố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 đã thốt khỏi applet rồi lại nạp applet lại một lần nữa. Vì mỗi khi thố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ị xố 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. Thốt khỏi trình duyệt: Khi ta chưa đóng trang Web chứa applet mà đã thố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 phần chạy trên lớp Đồ án tốt nghiệp đại học GVHD: Nguyễn Đức Thuần SVTH: Nguyễn Văn Ty Trang 11 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 tố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: Error! 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ó. 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. Public class mybeans implement java.io.Serializable { protect int the_value; // Phương thức khởi dựng Beans public mybeans {} //Khai báo phương thức đặt giá trị cho thuộc tính myvalue public void set_myvalue(int new value) { the_value = new_value; } //Khai báo phương thức trả về giá trị cho thuộc tính myvalue public int get_myvalue() { return the_value; } } Đồ án tốt nghiệp đại học GVHD: Nguyễn Đức Thuần SVTH: Nguyễn Văn Ty Trang 12 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. Error! 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à: Error! 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: Error! 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 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: //Đăng ký public void addPropertyChangeListtener (PropertyChangeListtener lsn) //Loại bỏ public void removePropertyChangeListtener (PropertyChangeListtener lsn) public void propertyChange (PropertyChangevent evt) Public void firePropertyChange (String propertyName, Object oldValue, Object newValue) Đồ án tốt nghiệp đại học GVHD: Nguyễn Đức Thuần SVTH: Nguyễn Văn Ty Trang 13 Error! 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à: Error! 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 của đối tượng VetoableChangeSupport từ thành phần JavaBeans như sau: Error! 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 ngồ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. public void addVetoableChangeListener (VetoableChangeListener lsn) public void removeVetoableChangeListener (VetoableChangeListener lsn) public void vetoableChange (PropertyChangevent evt) throws PropertyVetoException public void fireVetoableChange (String propertyName, Object oldValue, Object newValue) Đồ án tốt nghiệp đại học GVHD: N
Luận văn liên quan