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

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

57 1,7K 8
Tài liệu đã được kiểm tra trùng lặp

Đ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 57
Dung lượng 1,7 MB

Nội dung

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

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!

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.

Lớp : 40 TH

MSSV: 8D15075

Trang 5

Chương I YÊU CẦU CỦA ĐỀ TÀI

PHẦN I

CƠ SỞ LÝ THUYẾT

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ốngcho 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ênmạ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ặthà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 muahà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áchhà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ìmkiế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ánhà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ớidịch vụ

 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ặcthô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úpcho 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áchhà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 )

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

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ủacông ty Sun Microsystems Cuối năm 1990 James Gosling được Sun Microsystemgiao 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êunhỏ 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 Đầutiê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ànhJava 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ềuhà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ớicá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

Trang 8

Java (Java Virtual Machine – JVM) Máy ảo Java thực sự là một trình thông dịch bìnhthườ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ínhthực thi các mã nhị phân là các chỉ thị mã máỵ Nói đúng hơn máy ảo Java là một kiếntrú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 Javặ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 ảọCha đẻ của Java là hãng Sun Microsystem chịu trách nhiệm xây dựng các máy ảo Javacho những hệ điều hành khác nhaụ Nhiệm vụ của lập trình viên là chỉ viết chươngtrì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 ảọ

Java có thể dùng để viết chương trình ứng dụng tương tự như mọi ngôn ngữ lậptrì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 ứngdụ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 TMLanguage 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ìnhduyệ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 đượcthay 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êncô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ạyphí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ừ Javạ 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 SunMcrosystem 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ơnbao 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 nhaụ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ị

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ướckhi 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ộtnề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ủaJava Servlet, đơn giản hơn Servlet JSP được nhúng vào các trang HTML để tạo ra cáctrang độ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 ứngdụ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ạyngay 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ủ theomộ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

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ùngthă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 applethay đóng trình duyệt

pubilc class appletName extendes Applet

{

public void init() {…}

public void start() {…}

public void stop() {…}

public void destroy() {…}

}

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ứaapplet của ta), applet thực hiện phương thức stop() Khi người dùng trở về trang chứaapplet, applet lại kích hoạt phương thức start() Quá trình này cũng xảy ra khi ngườidù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ạiapplet, 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àinguyê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ỏitrì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ươngthứ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 ứngdụ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ầnJavaBeans 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ướngtiếp cận thành phần (component) dựa trên Java Nó đang trở nên ngày càng phổ biếnvới các ứng dụng phân tán (distributed application) trên mạng Theo mô hình này mộtthà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ớptrung 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

Trang 11

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âydự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ó.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ầnmộ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ớinhau 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;

} }

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 JavaBeanskhá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ừ giaodiệ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à:

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ảigọ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ọiphươ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 ứnglạ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 boundmỗ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ộctí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 JavaBeansphả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)

Trang 13

Mỗi thành phần JavaBeans khác phải tự cài đặt một đối tượng listener từ giaodiện VetoableChangeListener có nhiệm vụ phản ứng lại những thay đổi này (cho phéphay không cho phép thuộc tính thay đổi), sau đó đăng ký với thành phần JavaBeansnhờ vào các phương thức trên (add dùng để đăng ký còn remove dùng để loại bỏ đốitượ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 đổitrị 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 đổigiá 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:

Phương thức này sẽ thông báo đến mọi đối tượng listener (bằng cách gọiphươ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áccò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ànhphầ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ảixâ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:

public void removeVetoableChangeListener (VetoableChangeListener lsn)

public void vetoableChange (PropertyChangevent evt)

throws PropertyVetoException

public void fireVetoableChange (String propertyName, Object oldValue,

Object newValue)

Trang 14

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)

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ìnhhuố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ệtsau đó 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

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 SunMicrosystem 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 taynhau để 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ônngữ đặc tả dùng để thay đổi tương tác với bản thân trình duyệt mà thôi

Trang 15

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:

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 về đốitượng và có khả năng thừa kế để tạo ranhững đối tượng mới phong phú hơn

Không cần phải khai báo dữ liệu

trước khi sử dụng Dữ liệu cần phải khai báo tường minhtrước khi sử dụng.Ngăn cấm các chức năng truy xuất

<SCRIPT> như sau:

Nếu Java hơi khô khan thì ngược lại JavaScript rất sống động với những hìnhảnh cũng như kỹ xảo dùng để tương tác với trang Web JavaScript cũng có thể điềukhiển được Applet nếu như applet cho phép điều đó

II JAVA SERVER PAGE – JSP.

JSP là công nghệ rất mạnh để tạo ra trang HTML về phía trình chủ JSP là phần

mở rộng trực tiếp của Java Servlet Bộ diễn dịch JSP sẽ ánh xạ trực tiếp mã Java thànhServlet Viết JSP ta không cần trải qua quá trình biên dịch tập tin thực thi class nhưtrong Servlet JSP cung cấp mô hình lập trình Web dễ dàng và tiệân dụng hơn Servlet

<SCRIPT LANGUAGE = “JavaScript “ SRC =”javacode.txt”>

< SCRIPT>

<SCRIPT LANGUAGE = “JavaScript “>

// Các đoạn mã lệnh của JavaScript được đặt ở đây

< SCRIPT>

Trang 16

Thay vì sử dụng cú pháp <%%>để diễn đạt một khối gồm nhiều lệnh ta có thể

sử dụng cú pháp <%=%> chỉ để hiển thị kết xuất của một giá trị biến hay hàm nào đó

Trang 17

</html>

JSP còn cung cấp thêm cho ta cú pháp chú thích <% %> Tất cả các khốilệnh Java và HTML nằm giữa hai dấu chú thích này sẽ được trình biên dịch trang bỏqua không quan tâm đến Ví dụ:

1.4 Khai báo phương thức và biến hằng <%!%>

Một cú pháp nữa mà JSP cung cấp đó là <%! %> Cú pháp này cho phép tađịnh nghĩa một hoặc nhiều phương thức và biến Phương thức và biến sau đó có thểđược triệu gọi bất kỳ nơi đâu trong trang JSP

2 Các đối tượng của JSP:

Trong JSP chúng ta có thể truy cập một số đối tượng của JSP mà không cầnphải khai báo Trình dịch JSP sẽ nhận dạng những đối tượng này và dịch sang trangServlet

2.1 Đối tượng Request:

Đối tượng Request đại diện cho đối tượngjavax.servlet.http.HttpServletRequest Giao diện HttpServlet được định nghĩa như mộtđối tượng truy cập đến thông tin header của giao thức HTTP được gởi về trình khách.Đối tượng request thường được truyền như đối số cho phương thức service(), ví dụ:

Một trong những ứng dụng thông thường nhất của đối tượng request là nắm giữcác tham số Chúng ta có thể thấy điều này bằng cách gọi phương thức getParameter()của request Phương thức này thừa kế từ lớp cha là javax.ServletRequest Phương thứcnày nhận tên tham số và trả về giá trị chuỗi tương ứng với tên của tham số đó Phươngthức getParameter() sẽ trả về giá trị của tham số mà nó giữ, nếu tham số này là null, nó

sẽ trả về giá trị null

public void jspService (HttpServletRequest request, HttpServiceResponse response) throws IOException, Servlet ( )

Trang 18

Ngồi ra, vì đối tượng request đại diện cho đối tượngjavax.servlet.http.HttpServletRequest nên có thể sử dụng các phương thức củajavax.servlet.http.HttpServletRequest trên request như getSession(), getCookies(),getRemoteUser()…

2.2 Đối tượng Response:

Một đối tượng khác của JSP là đối tượng response Đối tượng response chophép phản hồi thông tin xử lý từ trình chủ trở về trình duyệt Hầu hết ứng dụng thôngthường của đối tượng response là dùng để xuất HTML ra trình duyệt Đối tượngresponse thường gọi phương thức getWriter() để thực hiện kết xuất

Các phương thức mà đối tượng respons thường sử dụng được liệt kê như sau:

- response.sendRedirect(java.lang.String location): gởi đối tượngresponse một lần nữa đến một trang JSP được chỉ định trong đối sốcủa phương thức

- response.setContenType(java.lang.String type): Định dạng nội dungxuất là kiểu type - đối số của phương thức

2.3 Đối tượng Session:

Đối tượng session tham chiếu đến đối tượng javax.servlet.http.HttpSession Đốitượng session dùng để lưu các đối tượng khác từ những yêu cầu của client Chúng đưa

ra hầu hết trạng thái đầy đủ của HTTP

Đối tượng session được khởi tạo bằng cách gọi phương thứcpageContext.getSession() để tạo ra trang servlet Cú pháp như sau:

Khi cần một biến nào đó có giá trị tồn cục từ khi mở cho đến khi kết thúc trìnhduyệt, ta chọn đối tượng session Đối tượng session sẽ tạo biến cục bộ cho phép lưumột giá trị nào đó từ trang JSP này đến trang JSP khác trong suốt phiên làm việc củachúng ta

Để đối tượng session có thể lưu giữ những biến của chương trình ta cần phảikhai báo như sau:

Trong đó name là tên biến value là giá trị của biến

Khi cần truy xuất một biến nào đó của đối tượng session ta cần phải sử dụngphương thức getAtribute() như sau: name chính là tên của biến mà ta cần truy xuất

session getAttribute(java.lang.String name) session = pageContext.getSession()

session.setAttribute(java.lang.String name, java.lang.Object value)

Trang 19

2.4 Đối tượng Application:

Đối tượng application tham chiếu đến javax.servlet.ServletContext cho phéplưu giữ cấu hình tồn cục của Servlet và JSP Cách đối tượng application khởi tạo nhưsau:

Trong đó pageContext là một đối tượng JspFactory

Đối tượng application có phạm vi hoạt động ở cấp ứng dụng, nghĩa là có thể giữgiá trị của tất cả các trang JSP ở những session khác nhau cho tới khi JSP engine bịđóng lại

Tương tự như session, ta có thể gọi phương thức application.setAtribute() đểlấy về giá trị lưu giữ trong application

Phương thức application.setAtribute() được dùng để đặt trị cho biến cần chứatrong application

2.5 Đối tượng Out:

Đối tượng out đùng để ghi kết xuất gởi về trình duyệt Đối tượng out hình thành

từ lớp java.io.Writer

Ví dụ:

dùng để ghi câu “Hello world!” lên trình duyệt của máy khách

2.6 Đối tượng Config:

Đối tượng config tượng trưng cho lớp ServletConfig, nó được định nghĩa là đốitượng tạo bởi servlet chứa các thông tin cấu hình của servlet Với thông tin cấu hìnhnày servlet sẽ truy cập đối tượng ServletContext Phương thức khởi dựng như sau:

pageContext là một đối tượng JspFactory

Trong nhiều trường hợp ta không cần phải sử dụng đối tượng config Truy cậpđến ServletContext thông qua đối tượng application cũng đạt được kết quả tương tự

2.7 Đối tượng Exception:

Đối tượng Exception chỉ tồn tại trong trang xử lý lỗi (error page) Nó dùng đểtham chiếu đến nguyên nhân gây ra lỗi mà trang xử lý lỗi có liên quan

Lỗi có thể xuất hiện trong quá trình hoạt động của trang JSP ở hai giai đoạn:giai đoạn thứ nhất lỗi thường phát sinh ở bước khởi tạo Ở bước này trang JSP nhậnyêu cầu từ trình khách và chuẩn bị thực thi, tuy nhiên trước khi thực thi trang JSP cầnđược dịch ra mã class của Java và quá trình dịch có thể sinh lỗi Lỗi ở bước này còngọi là lỗi thời điểm dịch (translation time error) Giai đoạn thứ hai, trang JSP có thể

out.print(“Hello world!”);

application = pageContext.getServletContext();

config = pageContext.getservletconfig():

Trang 20

phát sinh lỗi trong quá trình phản hồi các yêu cầu xử lý Lỗi này được gọi là lỗi thờiđiểm yêu cầu (request time error).

Kiểu lỗi JSP thứ nhất có thể xuất hiện khi trang JSP lần đầu tiên được triệu gọi.Trang JSP sẽ đi qua quá trình biên dịch từ tâïp tin nguồn jsp thành mã Java java sau

đó được biên dịch thành đối tượng servlet ở mã byte-code là tập tin class Lỗi ở giaiđoạn này thường do quá trình biên dịch thất bại hoặc do lỗi cú pháp khi thông dịch từJSP sang mã nguồn Java Lỗi này thường được báo với trạng thái mã lỗi là 500 hoặctrình chủ Web có thể thông báo những mã lỗi biên dịch của riêng Java Lỗi tại thờiđiểm dịch thường được quản lý bởi bộ thông dịch JSP (JSP engine)

Kiểu lỗi thứ hai của trang JSP liên quan đến quá trình xử lý các yêu cầu(request) Những lỗi này còn được xem là lỗi lúc thực thi (runtime error) Chúng có thểxuất hiên bên trong nội dung trang JSP hoặc xuất phát từ lời gọi phương thức nào đócủa một đối tượng Thường đối với kiểu lỗi này ngoại lệ (excepton) sẽ được phát sinh.Các ngoại lệ có thể bị đón bắt và xử lý bởi các đoạn mã JSP thích hợp (thường là trong

khối lệnh try{} catch (Exception){}) Tuy nhiên đối với những ngoại lệ phát sinh

nhưng không được người ta viết trang JSP đón bắt xử lý thích hợp thì ngoại lệ và lỗi sẽđược gởi đến bộ xử lý lỗi của trình biên dịch JSP Bản thân trình biên dịch JSP sẽ sinh

ra trang thông báo mô tả cụ thể lỗi trả về cho trình khách Ta có thể hồn tồn đón bắt vàthay thế những trang thông báo lỗi này sử dụng đối tượng exception

Để tạo ra trang thông báo lỗi ta cần khai báo như sau:

3 Các hành động của JSP:

Hành động trong JSP là quá trình trừu tượng hố việc thực thi hay yêu cầu JSPthực hiện một nhiệm vụ nào đó

a Hành động <jsp:param>:

Hành động <JSP:param> được dùng để cung cấp và tạo các giá trị cho các tham

số theo dạng name/value <JSP:param> thường dùng chung với các hành động <JSP:

include>, <JSP:forward>, <JSP: plugin> Cú pháp của hành động <JSP:param> được

mô tả như sau:

Name: thuộc tính này trình bày tên của thông số tham chiếu

Value: thuộc tính này trình bày giá trị của tên được tham chiếu

b Hành động <jsp:include>:

//Chỉ thị trang JSP hiện hành là trang xử lý lỗi

<%@ page isErrorPage = “true”%>

//hiển thị nội dung thông báo lỗi phát sinh

Error: <%= exception.getMessage() %> has been reported.

<jsp: param name = “paraName” value = “paraValue” />

Trang 21

Hành động <JSP:include> cung cấp cấu trúc cho sự phối hợp tài nguyên tĩnh vàhành động của trang JSP hiện tại Cú pháp của hành động này như sau:

Page: thuộc tính này trình bày quan hệ đường dẫn của tập tin ta muốn include.Flush: thuộc tính này trình bày giá trị Boolean là true hay false

Cú pháp đầu tiên mô tả yêu cầu nhúng (include) tập tin cần đưa vào trang JSP

Cú pháp thứ hai chứa đựng phần tử con param được dùng để làm tham số cho mụcđích include

c Hành động <jsp: forward>:

Hành động <jsp: forward> cho phép trình dịch JSP gởi đi tại thời điểm thực thimột yêu cầu hiện hành đến tài nguyên tĩnh, servlet, hay trang JSP khác Khi hành độngnày thực thi nó sẽ kết thúc trang hiện tại Hành động <jsp:forward> có thể chứa hànhđộng <jsp: param> Những thuộc tính này cung cấp các giá trị cho thông số yêu cầudùng cho việc chuyển hướng

Cú pháp của hành động <jsp: forward> được mô tả như sau:

Trang 22

Hành động <jsp: forward> thường được dùng như một điều kiện trong JSP đểchuyển hướng xử lý

Cú pháp của hành động <jsp:plugin> như sau:

Thuộc tính của hành động <jsp:plugin> cho phép cấu hình dữ liệu để thểhiện phần tử đó

Type: thuộc tính này thể hiện loại plugin cần đưa vào Ta có thể dùng appletlàm một thành phần nhúng

Code: thuộc tính này cho biết tên của lớp (class) sẽ được nhúng

Codebase: thuộc tính này là tham chiếu cơ sở hay đường dẫn liên hệ đến tậptin plugin class

4 JDBC và ODBC (Java Database Connectivity và Open Database Connectivity)

4.1 JDBC.

JDBC (Java Database Connectivity) là giao thức của Java dùng để thực hiệncâu lệnh SQL JDBC cung cấp tập hợp các lớp và giao diện cho phép phát triển cácứng dụng Java và ứng dụng Web liên quan đến truy xuất cơ sở dữ liệu Tương tác cănbản nhất của của JDBC được liệt kê như sau:

Mở một kết nối với cơ sở dữ liệu (Open connection)

Thực thi các câu lệnh SQL (Execute SQL)

Xử lý dữ liệu (Process results)

Đóng kết nối (Close connnection)

<jsp:plugin type = “pluginType” code =

“classFile” codebase = “relativeURLpath” >

<jsp:param>

</jsp:param>

</ jsp:plugin >

Trang 23

Đoạn mã sau đây sẽ diễn giải từng bước cách thực hiện kết nối với cơ sở dữ liệubằng JDBC:

// Bước 1 Khai báo biến

static final String DBDriver ="sun.jdbc.odbc.JdbcOdbcDriver";

static final String strConn ="jdbc:odbc:woodstore";

// Bước 2 Tham chiếu đến đối tượng cơ sở dữ liệu

stat = conn.createStatement();

// Bước 3 Thực hiện câu lệnh SQL

sSQL = "select * from items where " + sWhere;

Open Database Connectivity (ODBC) là một trong những kỹ thuật giao tiếp cơ

sở dữ liệu kiểu cũ được Microsoft cung cấp Nó chính là bậc tiền bối của ADO Mộttrong những lý do chính của Microsoft khi giới thiệu kỹ thuật này là cho phép lập trìnhviên có một phương pháp dễ dàng đễ truy cập nội dung của các cơ sở dữ liệu khôngthuộc về một định dạng quen thuộc đối với lập trình viên Nói cách khác, ta không cầnbiết đến ngôn ngữ lập trình Xbase vẫn có thể truy cập đến một file DBF hay AccessBasic để lấy dữ liệu trong một file MDB Vì SQL là ngôn ngữ không thân thiện lắmđối với người sử dụng nên ta phải sử dụng qua một công cụ trung gian đóng vai tròthiết kế để thể hiện các câu lệnh của SQL cho người sử dụng dễ thao tác hơn, công cụ

đó chính là JRUN, để JRUN có thể truy xuất các tập tin MDF của SQL ta phải sử dụngcầu nối ODBC

Ta có thể thấy rằng ODBC làm việc như phần ruột của WINDOWS, nó sẽ sửdụng các trình điều khiển trong các DLL để thi hành công việc ODBC có hai tập hợp

Trang 24

các trình điều khiển: một tập hợp sử dụng tiếng nói của trình quản lí cơ sở dữ liệu vàtập kia cung cấp phương pháp giao tiếp thông thường cho ngôn ngữ lập trình Sự kếthợp của hai tập thông qua một giao diện chấp nhận được cho phép JRUN truy cập nộidung của cơ sở dữ liệu bằng cách sử dụng một tập hàm chuẩn các hàm gọi 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ẽ chophé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 dungtrong cơ sở dữ liệu mà không có vấn đề gì Mặc dù trong một số trường hợp, nó khôngcung cấp được cách tốt nhất để có thể chuyển đổi dữ liệu giữa trình quản lí cơ sở dữliệu và JRUN, nhưng nói chung là tốt Chỉ có một điều duy nhất cần chú ý là tốc độ thihành của nó rất chậm Nhưng các phiên bản mới của ODBC đã có những cải tiến đáng

kể về tốc độ Do đó ngày nay nó đã được đánh giá khả quan hơn nhiều

Hầu như công việc lập trình ứng dụng mà JSP và servlet thường thực hiện nhất

đó là lưu trữ và truy xuất cơ sở dữ liệu.Việc truy xuất cơ sở dữ liệu trong JSP vàservlet dựa vào trình truy xuất ODBC theo chuẩn java

Trang 25

Chương III ĐẶC TẢ TÍNH NĂNG

PHẦN IICÀI ĐẶT ỨNG DỤNG

Trang 26

Dựa vào yêu cầu của bài tốn, ta nhận thấy hệ thống xây dựng phục vụ chủ yếucho ba vấn đề sau:

và password của họ

Nếu như quá trình đăng nhập thành công thì quản trị hệ thống có những chứcnăng sau:

* Chức năng của quản trị đối với quản trị:

Thay đổi những thông tin của quản trị

Hiển thị các sản phẩm, hay xóa sản phẩm khi hết hạn sử dụng

* Chức năng của quản trị đối với đơn đặt hàng:

Trang 27

Khách hàng có thể thêm bớt những sản phẩm mình muốn hay không muốn muavào trong hay ra khỏi giỏ hàng của mình.

Sau khi tìm được hàng mình cần, họ đặt mua hàng với hệ thống Hệ thống sẽchuyển đơn đặt hàng của họ cho dịch vụ mà họ đặt mua

III DIỄN ĐÀN (FORUM).

Diễn đàn sẽ giúp khách hàng, cũng như những người trong công ty trao đổi, họchỏi những kinh nghiệm lẫn nhau

Chức năng của diễn đàn:

Liệt kê tất cả các topic

Xem nội dung một topic

Trả lời một topic

Xố một topic

Chương IV XÂY DỰNG ỨNG DỤNG WOOD STORE

I HOẠT ĐỘNG VÀ LƯU ĐỒ CỦA ỨNG DỤNG.

1 Hoạt động của ứng dụng.

Một ứng dụng e_commerce đơn giản là web site cung cấp thông tin để kháchhàng có thể liên lạc và biết rõ về sản phẩm và những dịch vụ mà công ty đưa ra Tiếpđến khách hàng có thể đặt mua, thanh tốn và hẹn ngày giao hàng hay nhận sự hổ trợ vềdịch vụ từ nhà cung cấp Tất cả các dịch vụ nêu trên đều diễn ra trên mạng và kiểm sốtbởi ứng dụng web này Hai hình thức cơ bản diễn ra trên mạng và kiểm sốt bởi ứngdụng thương mại điện tử ngày nay là B2B (Business to Business) còn gọi là từ doanh

Trang 28

nghiệp đến doanh nghiệp, và B2C (Business to Customer) còn gọi là từ doanh nghiệpđến người tiêu dùng.

Ứng dụng Wood Store của ta là một Web site hổ trợ việc bán các sản phẩm gỗtrên mạng Từ trang chủ này, người dùng có thể tìm kiếm, xem các sản phẩm trongtuần, duyệt theo các thể loại sản phẩm khác nhau Ngồi ra khách hàng còn có thể đăng

ký thành viên trong web site, tham dự diễn đàn (forum)

Đầu tiên khách hàng có thể tham khảo công ty qua trang giới thiệu Trang này

sẽ gới thiệu cho ta biết về công, và những điều cần biết

Hình3.1: Trang giới thiệu về công ty

Cụ thể, khi người dùng kích chuột vào một sản phẩm, họ có thể biết được tên,giá cả, những chú ý khác về sản phẩm,…

Ngày đăng: 14/11/2012, 10:19

HÌNH ẢNH LIÊN QUAN

Thuộc tính của hành động &lt;jsp:plugin&gt; cho phép cấu hình dữ liệu để thể hiện phần tử đĩ. - 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
hu ộc tính của hành động &lt;jsp:plugin&gt; cho phép cấu hình dữ liệu để thể hiện phần tử đĩ (Trang 22)
Hình3.1: Trang giới thiệu về cơng ty - 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
Hình 3.1 Trang giới thiệu về cơng ty (Trang 28)
Hình3.3: Trang chi tiết sản phẩm - 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
Hình 3.3 Trang chi tiết sản phẩm (Trang 29)
Hình3.2: Trangchủ - 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
Hình 3.2 Trangchủ (Trang 29)
Hình3.4: Trang giỏ hàng - 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
Hình 3.4 Trang giỏ hàng (Trang 30)
Hình 3.7: Trang tìm kiếm(Search) - 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
Hình 3.7 Trang tìm kiếm(Search) (Trang 31)
Hình3.6: Trang creater Order - 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
Hình 3.6 Trang creater Order (Trang 31)
Hình 3.9: Trang đăng ký (Registration) - 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
Hình 3.9 Trang đăng ký (Registration) (Trang 32)
Hình3.8: Trang tìm kiếm yêu cầu cao hơn (AdvancedSearch) - 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
Hình 3.8 Trang tìm kiếm yêu cầu cao hơn (AdvancedSearch) (Trang 32)
Bắt đầu mua hàng Màn hình giao tác Kết thúc - 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
t đầu mua hàng Màn hình giao tác Kết thúc (Trang 34)
• Thay đổi các thơng tin này trên tất cả các bảng cĩ liên quan đến mã sản phẩm cần thay đổ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
hay đổi các thơng tin này trên tất cả các bảng cĩ liên quan đến mã sản phẩm cần thay đổi (Trang 38)
• Lấy mã số sản phẩm (item_id) lớn nhất +1 trong bảng items để tạo khố cho sản phẩm mới sắp tạo. - 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
y mã số sản phẩm (item_id) lớn nhất +1 trong bảng items để tạo khố cho sản phẩm mới sắp tạo (Trang 39)
• Lấy max(member_id)+1 theo member_id trong bảng members để tạo khố cho khách hàng . - 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
y max(member_id)+1 theo member_id trong bảng members để tạo khố cho khách hàng (Trang 42)
Bảng dưới đây sẽ chú thích các khối xử lý - 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
Bảng d ưới đây sẽ chú thích các khối xử lý (Trang 43)
KEY COMLUMN NAME DATATYPE LENGTH - 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
KEY COMLUMN NAME DATATYPE LENGTH (Trang 45)
Hình 2.1: Trangchủ của diễn đàn - 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
Hình 2.1 Trangchủ của diễn đàn (Trang 50)
Hình 2.3: Tạo một chủ đề mớ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
Hình 2.3 Tạo một chủ đề mới (Trang 51)
Hình 2.2: Trang xem nội dung chủ đề - 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
Hình 2.2 Trang xem nội dung chủ đề (Trang 51)
Hình 2.4 là kết quả tìm kiếm về chủ đề - 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
Hình 2.4 là kết quả tìm kiếm về chủ đề (Trang 52)

TRÍCH ĐOẠN

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

TÀI LIỆU LIÊN QUAN

w