Tiểu luận Hệ thống trao đổi thông tin

1.Hạn chế Quá trình thiết kế hệ thống đã thành công tuy nhiên chưa hoàn thiện được tất cả các chức năng cần thiết cho mô hình. Như vậy hệ thống còn có các hạn chế như sau: • Việc quản lý người sử dụng chưa được chặt chẽ. • Phần thể hiện giao diện chưa hoàn chỉnh và phù hợp. • Hệ thống giúp đỡ sử dụng chưa được xây dựng. • Quá trình kiểm tra và thử nghiệm chưa được chú ý nhiều. 2.Hướng phát triển Nhìn chung các phần chính của hệ thống đã được xây dựng, hệ thống có thể áp dụng vào thực tế. Tuy nhiên hệ thống có một số hướng phát triển sau: • Có thể tích hợp với các hệ thống hỗ trợ học tập khác để tạo thành một hệ thống hỗ trợ học tập hoàn chỉnh. • Hệ thống dữ liệu có thể chuyển sang quản lý dưới dạng file. • Việc phân cấp của quản trị có thể cho phép một quản trị quản lý nhiều mức độ khác nhau. • Đối với người sử dụng, việc vào ra hệ thống cũng cần có sự kiểm tra chặt chẽ hơn để người quản trị dễ quản lý hệ thống.

pdf50 trang | Chia sẻ: builinh123 | Lượt xem: 1618 | Lượt tải: 0download
Bạn đang xem trước 20 trang tài liệu Tiểu luận Hệ thống trao đổi thông tin, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
i định gần giống như thẻ của ngôn ngữ HTML. Một trang JSP sẽ được bộ diễn dịch JSP (JSP Compiler) sẽ ánh xạ trực tiếp mã JSP thành servlet. Sau đó trình chủ Web Server sẽ triệu gọi servlet trả về kết xuất thuần HTML về trình khách. JSP cung cấp các thẻ lệnh giúp tạo trang Web. Tương tự như thẻ HTML, thẻ lệnh của JSP cũng bao gồm các thẻ mở và thẻ đóng. Thực sự các thẻ JSP xây dựng theo đặc tả và chuẩn XML (Extension Markup Language) nên các thẻ của JSP có phân biệt chữ thường và chữ hoa. Mỗi thẻ có các thuộc tính quy định cách dùng thẻ. 2.1.Thẻ chỉ dẫn (directives): 2.1.1.: Thẻ này cung cấp thông tin toàn cục để dịch trang JSP. attr :là thuộc tính. value: là giá trị ứng với thuộc tính đó, được đặt trong dấu “ ”. 2.1.2.: thẻ này định nghĩa những thông tin có giá trị toàn cục trong trang JSP. Thẻ được sử dụng trong hầu hết các trang JSP được viết. Thẻ chứa các thuộc tính chỉ ra thông tin chú thích về một trang, có thể chỉ ra ngôn ngữ kịch bản đang sử dụng trong trang, những gói của Java cần import vào để sử dụng hay triệu gọi một trang lỗi khi có lỗi hay một sự ngoại lệ xuất hiện. Thẻ thường được đặt trước thẻ mở . 2.1.3.: Cú pháp: Thẻ này dùng để nhúng một trang html hay một tài nguyên tĩnh vào trang JSP hiện hành. Thuộc tính file cho biết địa chỉ URL hay đường dẫn đến tập tin cần nhúng vào. 2.1.4.: là thẻ dùng để tuyên bố rằng trang jsp sử dụng một thẻ thư viện. Cú pháp: Thuộc tính: • uri: tham chiếu đến một địa chỉ URI chứa các thẻ truyền thống. • prefix: dùng để phân biệt các hành động. Hệ thống trao đổi thông tin Trang 10 2.2.Thẻ kịch bản (scripting): 2.2.1.: sử dụng để khai báo biến và các phương thức trong ngôn ngữ kịch bản sử dụng trong trang jsp. 2.2.2.: dùng để hiển thị một biểu thức. Biểu thức sẽ được kết xuất ra bởi đối tượng JspWriter dưới dạng đối tượng String. Biểu thức trong jsp được gán giá trị khi trang jsp thực thi. Chuỗi kết quả của biểu thức sẽ được chèn vào vị trí tham chiếu của biểu thức trong tập tin jsp. 2.2.3.: thẻ này cho phép chứa bất kì phát biểu hợp lệ nào của ngôn ngữ được tham chiếu trong dẫn hướng của ngôn ngữ diễn dịch. Đề tài này là đặt các mã lệnh Java ở giữa cặp thẻ tương tự như một chương trình java thông thường. Sciptlet thực thi tại thời điểm gọi. 2.3.Thành phần chú thích: Trong trang jsp thì lời chú thích được đặt giữa cặp thẻ:. Trong scripting thì lời chú thích được giữa /* comment */. 2.4.Các hành động chuẩn: 2.4.1.: dùng tạo hay định vị một Bean. Hành động này liên kết đến các đối tượng của Java được định nghĩa trong một phạm vi với một định danh được định nghĩa trong trang jsp. Cú pháp: typeSpec::= class =”className” | class =”className” type =”typeName”| type =”typeName” class =”className”| beanName =”beanName” type =”typeName”| type =”typeName” beanName =”beanName”| type =”typeName”. Các thuộc tính: + id: tên dùng để xác định đối tượng và cũng là tên biến được khai báo và khởi tạo với các đối tượng tham chiếu trong scripting. + scope: là phạm vi cho biết môi trường sống của đối tượng. Giá trị mặc định là “page”. + class: tên đầy đủ của lớp đã được định nghĩa trong Bean (lớp định nghĩa việc thực thi của đối tượng). + beanName: tên của Bean, như là phương thức instantiate() của lớp java.beans.Beans. + type: định nghĩa kiểu của việc định nghĩa biến scripting trong trường hợp đặc biệt. Nếu không, giá trị giống như giá trị của thuộc tính class. 2.4.2.: là hành động dùng để đặt vào giá trị của thuộc tính trong Bean từ một HTML form. Hệ thống trao đổi thông tin Trang 11 Tên của thuộc tính phải được định nghĩa trước trong Bean và liên kết với tên của thành phần form. Để sử dụng được hành động này thì phải có phương thức set tương ứng trong Bean cho mỗi thuộc tính. Chú ý là hành động này chỉ đặt được một giá trị vào một thuộc tính tại một thời điểm. Cú pháp: prop_expr::= property =”*”| property =”propertyName”| property =”propertyName” param =”paramName”| property =”propertyName” value =”propertyValue”. propertyValue =String hay là một expr_scriptlet. Thuộc tính: + name: là tên của thành phần Bean phải giống với tên đã được định nghĩa trước bởi thành phần . + property: tên của thuộc tính trong Bean cần đặt giá trị. + param: tên của tham số yêu cầu, là giá trị mà bạn muốn đặt vào thuộc tính trong Bean. Tên của tham số yêu cầu thường là tên của HTML form. + value: là giá trị để gán cho thuộc tính. Một hành động không thể có đồng thời param và value. 2.4.3.: là hành động dùng để lấy giá trị của thuộc tính trong Bean. Tương ứng với hành động này là phương thức get trong Bean. Giá trị lấy ra được chuyển thành String và có thể thể hiện giá trị như là một output. Cú pháp: Thuộc tính: + name: tên của Bean được định nghĩa trước bởi . + property: tên của thuộc tính cần lấy giá trị. 2.4.4.: là hành động dùng để nhúng một tài nguyên tĩnh hay động vào trang jsp hiện hành. có thể có thành phần con để cung cấp giá trị cho các tham số cho mục đích nhúng. Cú pháp: hay {} Thuộc tính: + page: là đường dẫn URL đến một trang cần nhúng. Hệ thống trao đổi thông tin Trang 12 + flush: có giá trị là Boolean. Nếu giá trị là true thì vùng đệm bị đẩy ra. Giá trị mặc định là false. 2.4.5.: hành động này cho phép trình dịch gởi đi một yêu cầu tại thời điểm thực thi đến tài nguyên tĩnh, JavaServlet hay đến trang jsp khác. Hành động này làm chấm dứt việc thực thi của trang hiện hành. Thường dùng như một điều kiện trong jsp để chuyển hướng xử lý. Cú pháp: hay {} Thuộc tính: page: xác định quan hệ URL của đích mà hành động jsp:forward chuyển đến. 2.4.6.: là hành động dùng để cung cấp và tạo giá trị cho tham số. Thường dùng trong các hành động jsp:include, jsp:forward, jsp:plugin. Khi làm việc với hành động jsp:include, jsp:forward thì trang được nhúng hay trang chuyển tới sẽ nhận được các tham số mới với các giá trị mới. Cú pháp: Thuộc tính: + name:tên của tham số tham chiếu. + value: giá trị của tham số được tham chiếu. 2.4.7.: hành động này cho phép tạo ra trang HTML chứa đựng tính hợp lệ của trình duyệt khách. Hành động tạo ra thẻ hay để đưa ra dòng xuất của đối tượng response. Thuộc tính của jsp:plugin cung cấp cấu hình dữ liệu để thể hiện phần tử đó. Cú pháp: <jsp:plugin type =“bean | applet” code =“classfile” codebase =“relativeURLpath”> { {} } Thuộc tính: + type: xác định loại cần đưa vào là Bean hay Applet. + code: tên của class được nhúng. + codebase: tham chiếu cơ sở hay đường dẫn liên hệ đến tập tin plugin.class. 2.5.Các đối tượng ẩn:(implicit object) Hệ thống trao đổi thông tin Trang 13 Các đối tượng ẩn luôn luôn có giá trị cho việc sử dụng trong scriptlet và biểu thức mà không cần phải khai báo trước. Hầu hết các ngôn ngữ kịch bản đòi hỏi được cung cấp việc truy cập đến đối tượng này. Mỗi đối tượng ẩn đều có một lớp hay giao diện được định nghĩa trong nhân java hay gói JavaServletAPI. 2.5.1.Đối tượng Request: Đối tượng này đại diện cho đối tượng javax.servlet.htttp. HttpServletRequest. Đối tượng request nắm giữ các tham số hay dữ liệu do trình khách gửi lên. Phương thức getParameter() nhận tên tham số và trả về giá trị chuỗi tương ứng với tên tham số đó. 2.5.2.Đối tượng Response: Là đối tượng phản hồi thông tin xử lý từ trình chủ trở về trình duyệt. Đối tượng này dùng để xuất ra trình duyệt khách dữ liệu dưới dạng HTML. Các phương thức thường dùng: • getWriter(): dùng thực hiện kết xuất. • sendRedirect(“ .jsp”): dùng liên kết trực tiếp đến một trang jsp. • setContentType(“text/html”): định dạng xuất ra dạng văn bản hay dạng HTML. • getOutputStream(): lấy dữ liệu trong vùng đệm nhờ OutputStream. 2.5.3.Đối tượng session: Là đối tượng tham chiếu đến đối tượng javax.servlet.http.HttpSession. Đối tượng này được khởi tạo bằng phương thức pageContext.getSession() để tạo trang servlet. Khi cần một biến nào đó có giá trị toàn cục từ khi bạn mở cho đến khi kết thúc trình duyệt đó thì đối tượng session được tạo ra. Đối tượng session tạo ra biến cục bộ cho phép lưu một giá trị nào đó từ trang jsp này sang trang jsp khác. 2.5.4.Đối tượng Application: Đối tượng này tham chiếu đến đối tượng javax.servlet.ServletContext lưu giữ cấu hình toàn cục của Servlet và JSP. Đố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 đến khi trình dịch JSP engine bị đóng lại. 2.5.5.Đối tượng Out: Đối tượng xuất phát từ lớp java.io.Writer. Đối tượng này dùng ghi kết xuất gửi về trình duyệt máy khách. 2.5.6.Đối tượng Config: Tượng trưng cho đối tượng ServletConfig. Được định nghĩa là đối tượng tạo bởi Servlet chứa các thông tin cấu hình của Servlet. 2.5.7.Đối tượng Exception: Đối tượng này chỉ tồn tại trong trang xử lý lỗi. Dùng tham chiếu đến nguyên nhân gây ra lỗi mà trang error có liên quan. 2.6.Quá trình thực thi của trang JSP: Quá trình thực thi của trang JSP được thể hiện thông qua sơ đồ sau: Hệ thống trao đổi thông tin Trang 14 HTTP or orther protocol Client Server Data Store Trước tiên một ứng dụng JSP là một tập hợp của các file JSP, HTML, đồ hoạ và các tài nguyên khác. Khi người dùng tải trang lần đầu tiên, các file sẽ chuyển đổi với nhau mà không có dữ liệu động nào trong file nguồn java (file chứa các thành phần bean) với tên đã được định nghĩa trong file jsp thực thi. Sau đó file .java sẽ được biên dịch thành file .class. Trong quá trình thực thi, file .java là một JavaServlet được biên dịch với JavaServletAPI. Khi người dùng nhập dữ liệu từ form và nhấn Submit thì các thành phần ứng dụng nắm giữ dữ liệu hay truy cập dữ liệu động từ nơi lưu trữ và trả về dữ liệu cho file .java nơi mà nó được biên dịch thành file .class. Tập tin .class là một Java Servlet, trả lại dữ liệu đến trình duyệt của client bởi phương thức service() của nó. Ở đây người dùng sẽ thấy được kết quả dưới dạng HTML. 3.Java Servlet Servlet thực sự là một mẫu chương trình viết bằng ngôn ngữ Java, được trình chủ Web triệu gọi, sản sinh ra kết xuất phù hợp trả về cho client. Servlet chạy trên máy ảo Java, xử lý và sinh mã HTML trả về trình khách. Servlet chỉ nạp một lần bởi Web Server và có thể duy trì các hành động giữa các yêu cầu. 3.1.Các phương thức xử lý cơ bản: Thật sự lớp GenericServlet là phần cài đặt tổng quát cho đặc tả giao tiếp (interface) mang tên Servlet. Một servlet cơ bản cần có những phương thức phục vụ cho các nhu cầu: khởi tạo (init), hoạt động và phục vụ (service), hủy (destroy), trả về thông tin cấu hình (getServletInfo). Khi tạo ra servlet mới, đơn giản chỉ nên kế thừa lại GenericServlet và xây dựng chồng (overide) các phương thức mà bạn muốn sử dụng. 3.1.1.Phương thức khởi tạo init(): Phương thức này được gọi khi lần đầu tiên trình chủ Web Server nạp mã thực thi của servlet từ tập tin .class vào bộ nhớ và bắt đầu cho phép servlet hoạt động. Có thể dựa JSP file JSP file Graphics .class file .java file Component Data store Web Browser Hệ thống trao đổi thông tin Trang 15 vào phương thức này để khởi tạo các biến môi trường và giá trị ban đầu cần thiết cho quá trình thực thi servlet sẽ diễn ra tiếp theo. 3.1.2.Phương thức phục vụ service(): Sau khi phương thức init() đã hoàn tất, trình chủ Web Server sẽ triệu gọi đến phương thức service(). Phương thức này được xem là trung tâm xử lý của servlet mà bạn cần cài đặt. Khi trình chủ nạp servlet vào bộ nhớ, phương thức init() chỉ có thể được gọi duy nhất một lần, trong khi phương thức service() có thể được triệu gọi nhiều lần ứng với mỗi yêu cầu servlet phát sinh từ client. Trong phương thức service() bạn có thể sử dụng đối tượng tham số ServletRequest, ServletResponse để tiếp nhận dữ liệu từ trình khách chuyển lên và xuất kết quả trả lại trình khách. 3.1.3.Phương thức hủy destroy(): Khi servlet không còn dùng đến nữa hay hết thời gian quy định lưu trữ trong bộ nhớ của Web Server, nó sẽ bị trình chủ giải phóng. Trước khi servlet bị huỷ phương thức destroy() sẽ được gọi. Phương thức này có thể dùng để dọn dẹp tài nguyên mà các biến chiếm giữ, đóng các kết nối mà phương thức init() đã mở. 3.1.4.Phương thức getServletConfig() và getServletInfo(): Hai phương thức này nhằm mục đích cung cấp thông tin. Phương thức getServletConfig() giúp người sử dụng servlet có được đối tượng servletConfig chứa các thông tin khởi tạo từ môi trường ngoài đưa vào servlet. Phương thức getServletInfo() trả về một chuỗi thông tin mô tả ý nghĩa và mục đích của servlet. 3.2.Cơ chế hoạt đông: Để cho JSP, Servlet hoạt động phải cài đặt một môi trường tức là một trình chủ Web Server “hiểu Java”, nghĩa là trình chủ phải có khả năng thông dịch và thực thi được các đơn thể Java theo đặc tả của Sun. Cụ thể trong đề tài này là JRun. Cơ chế hoạt động: Trình khách gởi lệnh HTTP get hay post lên máy chủ yêu cầu dịch vụ Web (HTTP Web Server) cung cấp tài nguyên. Tài nguyên mà trình khách yêu cầu có thể là một tập tin. Tài nguyên cũng có thể là dạng thông tin động do Servlet sinh ra. Nếu bạn yêu cầu tài nguyên là tập tin thì trình chủ sẽ dùng một chương trình servlet nhỏ gọi là File Servlet đọc nội dung tập tin sau đó trả về trình khách. Nếu bạn yêu cầu một trình servlet khác (user servlet) thực thi để sinh ra thông tin động thì JRun sẽ sử dụng Invoker Servlet triệu gọi servlet mà bạn mong muốn. Kết quả sinh ra sau đó cũng sẽ được gởi về trình khách tương tự như cơ chế đọc tài nguyên trên đĩa cứng mà file Servlet thực hiện. Hệ thống trao đổi thông tin Trang 16 Hình vẽ minh họa cơ chế hoạt động của Servlet trên máy chủ: GET POST HTML JRUN 3.3.So sánh giữa JSP và Servlet: Đặc tả JSP cung cấp rất nhiều thẻ cho phép người dùng tùy biến khi nhúng lệnh Java trong JSP ở trình khách. Các thẻ này kết hợp cho các lệnh hay thẻ HTML để tạo ra kết xuất cuối cùng trả về trình khách. Mặc khác bạn không cần phải biên dịch trang JSP bằng tay vì trình chủ Web Server sẽ thực hiện công việc này hộ bạn. Như vậy viết trang jsp đơn giản hơn viết servlet và có thể tận dụng mọi khả năng của servlet bên trong trang jsp. Tuy nhiên, Servlet thường được xem như là những đối tượng thành phần (component) nhúng vào trình chủ. Chính vì vậy servlet thường được dùng cho các chức năng xử lý phức tạp như: giao tiếp với Applet về phía trình khách, thực hiện bảo vệ tài nguyên, chứng thực mật khẩu... Trong khi đó trang JSP được dùng cho các thao tác truy xuất hay xử lý đơn giản như trình bày giao diện, định dạng trang HTML, triệu gọi các thành phần JavaBean hay Servlet khác. Tóm lại, kết hợp cả JSP và Servlet là cách tốt nhất khi bạn chọn phát triển ứng dụng Web bằng Java về phía máy chủ. 4.JavaBean 4.1.Giới thiệu: JavaBean là thành phần đối tượng xây dựng từ ngôn ngữ Java, có thể làm việc và chạy trên mọi máy ảo Java. Thành phần JavaBean là một loại lớp Java đặc biệt. JavaBean cho phép thao tác các đối tượng đã được tạo hoàn chỉnh một cách trực quan nhờ công cụ thiết kế nào đó. 4.2.Mô hình thành phần JavaBean: Các lớp định nghĩa bean được tham chiếu với tên là JavaBean Component hay bean component hay chỉ là component. Các lớp này phải tuân theo yêu cầu của mô hình thành phần JavaBean: • Thành phần bean phải là lớp public. Web Browser HTTP Web Service File Invoker User Hệ thống trao đổi thông tin Trang 17 • Thành phần bean phải có phương thức thiết lập mặc định (phương thức khởi tạo không có đối số) mặc dù có thể có phương thức thiết lập khác nếu cần. • Thành phần bean bắt buộc phải ứng dụng giao diện java.io.Serializable hay java.io.Externalizable để duy trì trạng thái tồn tại thường trực. Có thể dùng JavaBean trong nhiều công cụ khác như MSVisual Basic, MSWord,... Nếu sử dụng JavaBean trong các công cụ khác thì đòi hỏi thành phần bean phải tồn tại lâu dài nhằm đảm bảo công cụ có thể tái lập các thuộc tính và hành vi nhất quán đối với trạng thái công cụ trước khi chúng được lưu. • Thành phần bean thường có những thuộc tính kèm theo các phương thức truy cập có cấu trúc thích hợp cho phép công cụ thiết kế xem và cập nhật những thuộc tính một cách trực quan. • Thành phần bean có thể có các biến cố kèm theo những phương thức đăng kí công cộng có cấu trúc thích hợp, cho phép thành phần bean bổ sung và loại bỏ đối tượng lắng nghe. Nếu thành phần bean đóng vai trò nguồn biến cố, nó phải cung cấp phương thức để đăng kí đối tượng lắng nghe. Ba yêu cầu đầu tiên là yêu cầu tối thiểu của thành phần Bean, buộc phải tuân theo. Hai yêu cầu sau còn phụ thuộc vào cách thức thực thi. Có thể viết thành phần Bean mà không dùng phương thức đăng kí biến cố. 4.3.Truy xuất đối tượng: Khi nhúng JavaBean vào trong JSP có ba thẻ chuẩn được định nghĩa trong JSP để kết hợp JavaBean: • : dùng định nghĩa Bean, khai báo phạm vi và định danh (id) nhận dạng Bean. • : dùng để đặt giá trị vào thuộc tính Bean. • : dùng để lấy về các giá trị của thuộc tính trong Bean. 5.JDBC (Java Database Connectivity) 5.1.Giới thiệ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 (database), cung cấp thông tin cho trình khách. Việc truy xuất cơ sở dữ liệu trong JSP và Servlet dựa vào trình truy xuất JDBC theo chuẩn Java. JDBC cung cấp tập hợp các lớp và và giao diện dùng để phát triển ứng dụng Java và ứng dụng Web liên quan đến cơ sở dữ liệu. JDBC giúp cho Java tiếp cận với các hệ quản trị cơ sở dữ liệu một cách dễ dàng thông qua ngôn ngữ SQL. 5.2.Các kiểu JDBC: Có 4 kiểu JDBC sau: 5.2.1.Kiểu 1: JDBC sử dụng cầu nối ODBC (JDBC-ODBC Bridge) ODBC (Open Database Connectivity) là cách kết nối tổng quát nhất đến mọi hệ cơ sở dữ liệu thông qua trình quản lý ODBC của Windows. Mỗi hệ cơ sở dữ liệu sẽ cung cấp một trình điều khiển (driver) có khả năng đọc hiểu được cơ sở dữ liệu của chúng. Trình Hệ thống trao đổi thông tin Trang 18 điều khiển này sẽ được đăng kí với bộ quản lý ODBC. Tất cả các lệnh truy xuất cơ sở dữ liệu đều được thực thi bằng lệnh SQL. Java cung cấp cho bạn khả năng sử dụng JDBC để gọi ODBC. Bằng cách này bạn có thể kiểm soát được nhiều hệ quản trị CSDL khác nhau. 5.2.2.Kiểu 2:JDBC kết nối trực tiếp với các trình điều khiển cơ sở dữ liệu: JDBC kết nối trực tiếp với trình điều khiển đặc thù của mỗi hệ cơ sở dữ liệu (native database driver) mà không cần phải qua trung gian ODBC của Windows. Do đó kiểu kết nối này sẽ nhanh và hiệu quả hơn kiểu 1. Tuy nhiên phải có các trình điều khiển cơ sở dữ liệu đặc thù do những nhà phát triển cơ sở dữ liệu hay bên thứ 3 (third_party) cung cấp. Mã Java Mã đặc thù Java Application, Applet, Servlet JDBC Driver ODBC Database Driver CSDL Java Application, Applet, Servlet JDBC Driver Database Driver CSDL Mã Java Mã đặc thù Hệ thống trao đổi thông tin Trang 19 5.2.3.Kiểu 3: JDBC kết nối thông qua các ứng dụng mạng trung gian: Theo mô hình lập trình phân tán, ứng dụng trung gian (middle_ware) trên máy chủ sẽ chịu trách nhiệm kết nối với cơ sở dữ liệu. Nhiệm vụ của trình khách là sử dụng những trình điều khiển JDBC gọn nhẹ, có khả năng giao tiếp với ứng dụng trung gian qua Internet để truy vấn dữ liệu. Mã Java internet Mã Java 5.2.4.Kiểu 4:JDBC kết nối thông qua các trình điều khiển đặc thù ở xa: Kiểu này cho phép máy khách sử dụng các trình điều khiển gọn nhẹ kết nối vào trình điều khiển cơ sở dữ liệu đặc thù (thuần Java) trên máy chủ từ xa thông qua mạng Internet. Mã Java internet Mã Java Java Application, Applet, Servlet JDBC Driver Java Middle_Ware Java Native Driver CSDL Java Application, Applet, Servlet JDBC Driver Java Native Driver CSDL Hệ thống trao đổi thông tin Trang 20 5.3.Truy xuất cơ sở dữ liệu: Hầu hết các ứng dụng JDBC đều theo cùng các bước cơ bản sau: 5.3.1.Kết nối với cơ sở dữ liệu: Để thiết lập kết nối, JDBC đòi hỏi 2 yếu tố là trình điều khiển (tương ứng với các kiểu kết nối) và thông tin để kết nối (địa chỉ máy chủ, tên tài khoản đăng nhập, mật khẩu...). Đối với cơ chế truy xuất thông qua ODBC, sử dụng trình điều khiển do Sun cung cấp mang tên JdbcOdbcDriver. String drivername = “sun.jdbc.odbc.JdbcOdbcDriver”; Nạp và khởi tạo trình điều khiển: Class.forName(drivername).new Instance(); Đối với trình điều khiển JDBC-ODBC thì chuỗi kết nối:jdbc:odbc String connectionURL = “jdbc:odbc:MyData”; Gọi đối tượng Connection để thực hiện kết nối đến cơ sở dữ liệu Connection con = DriverManager.getConnection(connectionURL); 5.3.2.Truy vấn dữ liệu: Dùng các câu lệnh truy vấn SQL (sqlQuery). JDBC truy vấn dữ liệu dựa vào đối tượng Statement (dùng thực thi câu lệnh SQL). Truy vấn thành công thì Statement sẽ trả về kết quả là tập dữ liệu truy vấn có kiểu ResultSet. Statement stmt = null; ResultSet rs = null; stmt = con.createStatement(); rs = stmt.excuteQuery(sqlQuery); 5.3.3.Trích xuất dữ liệu: Sau khi nhận được kết quả trả về là tập ResultSet, gọi phương thức next() để đi đến từng mẩu tin và in ra kết quả của các cột. Dùng phương thức getString(column) để lấy dữ liệu của các cột (các cột được đánh số thứ tự từ 1). 5.3.4.Đóng kết nối: Một khi bạn làm việc với các đối tượng ResultSet, Connection, Statement thì dùng phương thức close() để giải phóng tất cả các liên kết đến các nguồn. Hệ thống trao đổi thông tin Trang 21 CHƯƠNG III: KIẾN TRÚC HOẠT ĐỘNG VÀ THIẾT KẾ HỆ THỐNG I.KIẾN TRÚC HỆ THỐNG Hệ thống hoạt động trong mô hình 3 tầng và công nghệ triển khai ứng dụng là công nghệ Java. Do vậy mô hình kiến trúc hệ thống được thể hiện như sau: Client Tier Middle Tier Data tier Kiến trúc hoạt động này có tính linh động cao nên khi cần thay đổi hay nâng cấp có thể thực hiện dễ dàng. Tính linh động thể hiện ở chỗ : các thành phần Bean có thể thêm hay thay đổi khi cần mà không ảnh hưởng đến các thành phần khác. II.THIẾT KẾ TỔNG QUÁT Dựa vào yêu cầu của bài toán, ta nhận thấy hệ thống xây dựng nhằm phục vụ cho 2 nhóm người sau: • Người quản trị hệ thống (các giảng viên). • Người sử dụng (các sinh viên). 1.Quản trị hệ thống Quản trị hệ thống là người làm chủ ứng dụng, họ có quyền kiểm soát mọi hoạt động của hệ thống. Mỗi quản trị hệ thống sẽ được cấp một username và password để thực hiện những chức năng cần thiết của mình. Tuy nhiên trong ứng dụng này quản trị có thứ bậc, cụ thể chia làm 3 nhóm: người quản trị cao nhất có quyền kiểm soát toàn bộ hệ thống, nhóm thứ 2 là người quản trị (giảng viên) chỉ được quyền kiểm soát hoạt động của ứng dụng trong phạm vi (môn học) mà mình trực tiếp giảng dạy, nhóm 3 là các trợ giảng . Nếu quá trình đăng nhập thành công thì quản trị hệ thống có những chức nă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ị. Browser Web Server Netscape IE Java JSP HTML JavaBean Java Object Java Object Java Object Data Store Hệ thống trao đổi thông tin Trang 22 + Thêm quản trị. + Xoá bỏ quản trị. • Chức năng của quản trị đối với môn học: + Thêm vào môn học mới. + Xoá môn học. • Chức năng của quản trị đối với các chủ đề: + Thêm vào các chủ đề mới. + Xóa các chủ đề. + Cập nhật lại chủ đề. • Chức năng của quản trị đối với các câu hỏi và trả lời: + Thêm vào câu trả lời. + Xoá các câu hỏi và trả lời. + Di chuyển các câu hỏi và trả lời vào các chủ đề thích hợp. 2.Người sử dụng Người sử dụng là những người vào hệ thống để trao đổi kiến thức. Họ có thể có các hành động sau: • Tìm kiếm các chủ đề mà mình cần để tham khảo. • Đưa ra những câu hỏi mà mình chưa giải đáp được hay các đoạn chương trình mà mình chưa hiểu bằng cách gửi kèm theo câu hỏi. • Trả lời các câu hỏi mà mình biết (có thể kèm theo nhiều nhất là 3 file). • Ngoài ra các câu hỏi hay trả lời của người sử dụng có thể được gởi trực tiếp đến một địa chỉ email của giảng viên. III.CƠ CHẾ HOẠT ĐỘNG Hệ thống có các cơ chế hoạt động như sau: • Đầu tiên bạn gõ địa chỉ URL để đến trang chủ của hệ thống (trang Mainpage.jsp). Nơi đây bạn có thể chọn một trong các hướng để vào tham khảo các chủ đề. Đối với người quản trị họ sẽ nhấp vào liên kết Admin để thực hiện các công việc cần thiết sau khi đã được chấp nhận với username và password gõ vào ở trang Login. • Sau khi lựa chọn được hướng cần vào bạn sẽ vào trang Topic.jsp. Ở đây bạn sẽ thấy các môn học (subject) chính của hướng. Và ở trang này bạn click chuột vào tên của từng môn học để có thể tham khảo các chủ đề hiện có trong các môn học hoặc thêm vào các đề tài thảo luận mới ứng với các chủ đề (topic) của từng môn học. Các đề tài bạn thêm vào được gọi là các question. Để xem được các câu hỏi của các chủ đề bạn chỉ việc nhấn vào tên của chủ đề và sẽ hiện ra danh sách các câu hỏi thảo luận. • Nếu muốn xem nội dung của một câu hỏi đã được mọi người thảo luận trước đó như thế nào, bạn có thể click chuột vào tên của câu hỏi. Nội dung của câu hỏi sẽ được hiển thị ở trang Question.jsp cùng với các câu trả lời (reply) ứng các câu hỏi đó. Ở trang này bạn có thể thêm vào câu trả lời nếu bạn có giải đáp khác. Hệ thống trao đổi thông tin Trang 23 • Để xem nội dung của câu trả lời bạn nhấp chuột vào tên của nó và sẽ được trang Viewreply.jsp hiển thị. Đối với những file kèm theo (nếu có) bạn có thể xem bằng cách nhấn trực tiếp vào tên của file. • Từ trang Topic.jsp và trang Question.jsp bạn có thể chọn nút “Câu hỏi mới” hay “SV trả lời” để tạo ra câu hỏi mới hay trả lời tới trang QuesOrReply.jsp. Trang này sẽ cho phép bạn nhập vào thông tin về bạn và nội dung của đề tài mà bạn muốn thêm vào. • Để tìm kiếm một đề tài xem đã có ai thảo luận chưa, bạn nhập vào một chuỗi thông tin và nhấn nút “Tìm kiếm” ở trang Topic. Kết quả của việc tìm kiếm sẽ được hiển thị ở trang Search.jsp. Khi một danh sách đề mục khá dài, để hiển thị sử dụng kĩ thuật phân trang (paging) chỉ cho phép hiển thị 5 đề mục trên một trang. Ngoài ra sẽ hiển thị số trang là 3 trên màn hình, nếu còn dài hơn sẽ có nút nhấn tiếp theo hiển thị 3 trang tiếp theo. Sau khi đã tham khảo qua cách hoạt động của hệ thống thì việc tiếp theo là xây dựng ứng dụng.Và bắt đầu với việc thiết kế bảng cơ sở dữ liệu để lưu thông tin về các đề tài thảo luận trong trang Web. IV.THIẾT KẾ DỮ LIỆU Quá trình thiết kế dữ liệu là quá trình phân tích các yêu cầu của người sử dụng để xây dựng cơ sở dữ liệu cho hệ thống. Kết quả của quá trình này là mô hình cơ sở dữ liệu hoàn chỉnh được dùng cho hệ thống. Hệ thống được thiết kế để phục vụ cho các đối tượng sau đây: • Người sử dụng: là những người có nhu cầu trao đổi và tìm kiếm kiến thức thông qua hệ thống. • Nhà quản trị: là những người sẽ quản lý hệ thống và sẽ cung cấp các kiến thức cần thiết tổng quát đối với các câu hỏi mà sinh viên đặt ra. Dữ liệu được lưu dưới dạng phân cấp: • Đối với các chủ đề: - Các chuyên ngành trong khoa. - Các môn học trong từng ngành. - Các phần chính trong môn học. - Các chủ đề. - Các câu hỏi trong chủ đề. - Các câu trả lời ứng với từng câu hỏi. • Đối với quản trị: - Root: quản trị cấp cao nhất có quyền kiểm soát toàn hệ thống. - Quản trị của từng chuyên ngành. - Quản trị của từng bộ môn (giáo viên). - Quản trị của một chủ đề nào đó(trợ giảng). Ứng với hai đối tượng trên, dữ liệu sẽ được thiết kế thành 2 bảng dữ liệu mang tên CSDL và ADMIN như sau: Hệ thống trao đổi thông tin Trang 24 Bảng dữ liệu CSDL: STT THUỘC TÍNH KIỂU GHI CHÚ MÔ TẢ 1 Id Number Khoá chính Khoá duy nhất cho mỗi đề mục 2 Ten Text Khác rỗng Tiêu đề cần thảo luận của đề mục 3 ParentId Number Khác rỗng Khóa của đề mục cha (0 nếu là đề mục gốc) 4 Nguoigoi Text Khác rỗng Tên của người tạo ra đề mục 5 Ngaygoi Date Khác rỗng Ngày gởi bài (ngày tạo đối với chủ đề) 6 Noidung Text Khác rỗng Nội dung thảo luận 7 Socauhoi Number Khác rỗng Lớn hơn hay bằng 0 nếu là chủ đề và cũng chính là câu hỏi của chủ đề. Bằng -1 nếu là câu hỏi. Bằng -2 nếu là câu trả lời của sinh viên. Bằng -3 nếu là câu trả lời của giảng viên. 8 File Text Có thể rỗng Các file kèm theo câu hỏi hay câu trả lời 9 MSSV Text Có thể rỗng Mã số sinh viên của người gởi 10 Email Text Có thể rỗng Địa chỉ mail của người gởi Bảng dữ liệu ADMIN: STT THUỘC TÍNH KIỂU GHI CHÚ MÔ TẢ 1 Username Text Khoá chính Username của người quản trị 2 Password Text Khác rỗng Password của người quản trị 3 Phamvi Number Khác rỗng Phạm vi quản lý của người quản trị Hệ thống trao đổi thông tin Trang 25 Ví dụ về dữ liệu được lưu trữ: Bảng CSDL: Bảng ADMIN: Được thể hiện theo sơ đồ cây sau: Id Ten ParentId ... 1 Toán tin ứng dụng 0 ... 2 Đại số 0 3 Đồ hoạ 1 4 Java 1 5 Đường thẳng 3 Username Password Phamvi AAA Aaa 0 BBB Bbb 1 CCC Ccc 2 DDD Ddd 3 Root 0 Toán tin ứng dụng 1 Đại số 2 Đồ họa 3 Java 4 Đường thẳng 5 BBB CCC DDD AAA Hệ thống trao đổi thông tin Trang 26 Trong sơ đồ Toán tin ứng dụng và Đại số (các hướng) có ParentId là 0 nên nằmdưới nút gốc (có id là 0). Còn Java và Đồ hoạ ( các môn học) có ParentId là 1 nên nằm dưới Toán tin ứng dụng. Tương tự cho Đường thẳng (chủ đề) nằm dưới Đồ họa. Đối với quản trị AAA có Phamvi là 0 sẽ là người quản trị cao nhất có thể quản lý toàn bộ hệ thống. BBB (trưởng khoa) có Phamvi là 1 ứng với Id của Toán tin ứng dụng nên có quyền quản lý chủ đề và các quản trị khác từ nút 1 trở xuống. Tương tự cho CCC (giáo viên bộ môn) có quyền quản lý từ nút 2 trở xuống. Còn đối với DDD (trợ giảng) chỉ có quyền quản lý chủ đề Đường thẳng. V.THIẾT KẾ XỬ LÝ Phần thiết kế xử lý này sẽ phân tích các hoạt động mà các đối tượng dùng để tương tác lên hệ thống. Được chia làm hai phần chính: 1. Đối với người sử dụng Tương tác của người dùng lên hệ thống ứng với các xử lý sau: 1.1.Xử lý:hiển thị danh sách các môn học trong từng ngành: Xử lý này được mô tả như sau: • Tiếp nhận yêu cầu hiển thị danh sách các môn học của từng ngành. • Lấy id của các ngành từ yêu cầu hiển thị. • Xuất ra danh sách các môn học của ngành đã chọn. 1.2.Xử lý:hiển thị các chủ đề và câu hỏi của các môn học: Xử lý này được mô tả như sau: • Tiếp nhận yêu cầu hiển thị các chủ đề và câu hỏi của từng môn học. • Lấy id của môn học từ yêu cầu hiển thị. • Xuất ra danh sách các chủ đề và câu hỏi của môn học đã chọn. 1.3.Xử lý:hiển thị nội dung của câu hỏi và tên của các câu trả lời của nó: Xử lý này được mô tả như sau: • Tiếp nhận yêu cầu hiển thị nội dung của câu hỏi. • Lấy id của câu hỏi từ yêu cầu hiển thị. • Xuất ra nội dung của câu hỏi, tên của các file kèm theo nếu có và tên của các câu trả lời ứng với câu hỏi đó. 1.4.Xử lý:hiển thị nội dung của câu trả lời: Xử lý này được mô tả như sau: • Tiếp nhận yêu cầu hiển thị nội dung của câu trả lời. • Lấy id của câu trả lời từ yêu cầu hiển thị. • Xuất ra nội dung của câu trả lời, tên của các file kèm theo nếu có. 1.5.Xử lý:hiển thị nội dung của file kèm theo: Hệ thống trao đổi thông tin Trang 27 Xử lý này được mô tả như sau: • Tiếp nhận yêu cầu hiển thị nội dung của file kèm theo. • Xuất ra nội dung của file kèm theo. 1.6.Xử lý:hiển thị các chủ đề và câu hỏi trong các trang khác: Xử lý này được mô tả như sau: • Tiếp nhận yêu cầu hiển thị các chủ đề và câu hỏi trong các trang khác. • Lấy chỉ số trang cần hiển thị. • Xuất ra danh sách của các chủ đề và câu hỏi trong đó 1.7.Xử lý:hiển thị những môn học của những ngành khác: Xử lý này được mô tả như sau: • Tiếp nhận yêu cầu hiển thị các môn học của những ngành khác. • Lấy id của ngành cần chuyển đến. • Xuất ra danh sách của các môn học trong ngành đã chọn. 1.8.Xử lý:tìm kiếm các chủ đề và câu hỏi: Xử lý này được mô tả như sau: • Tiếp nhận yêu cầu tìm kiếm các chủ đề và câu hỏi. • Lấy chuỗi nhập vào để tìm kiếm trong cơ sở dữ liệu. • Xuất ra danh sách của các chủ đề và câu hỏi tìm được. 1.9.Xử lý:hiển thị câu hỏi từ một số ngày trước: Xử lý này được mô tả như sau: • Tiếp nhận yêu cầu hiển thị câu hỏi từ một số ngày trước. • Lấy số ngày trước để hiển thị. • Xuất ra danh sách của các câu hỏi. 1.10.Xử lý:tạo câu hỏi mới: Xử lý này được mô tả như sau: • Tiếp nhận yêu cầu tạo câu hỏi. • Lấy id của chủ đề chứa câu hỏi . • Cho phép nhập vào nội dung của câu hỏi mới. • Lấy các nội dung nhập vào đưa vào cơ sở dữ liệu. 1.11.Xử lý:gởi mail: Xử lý này được mô tả như sau: • Cho phép người dùng gởi mail. 1.12.Xử lý:hiển thị nội dung các chủ đề đã xem trước đó: Xử lý này được mô tả như sau: • Tiếp nhận yêu cầu hiển thị các chủ đề đã xem. • Lấy id của chủ đề cần xem. • Xuất ra danh sách các chủ đề con và câu hỏi của nó. Hệ thống trao đổi thông tin Trang 28 1.13.Xử lý:tạo câu trả lời của sinh viên: Xử lý này được mô tả như sau: • Tiếp nhận yêu cầu tạo câu trả lời. • Lấy id của câu hỏi cần trả lời. • Cho phép nhập vào nội dung câu trả lời. • Đưa nội dung đã nhập vào cơ sở dữ liệu. 1.14.Xử lý:tạo câu trả lời của giảng viên: Xử lý này được mô tả như sau: • Tiếp nhận yêu cầu tạo câu trả lời. • Lấy id của câu hỏi cần trả lời. • Kiểm tra sự đăng nhập của giảng viên. • Cho phép nhập vào nội dung câu trả lời. • Đưa nội dung đã nhập vào cơ sở dữ liệu. Người sử dụng thực hiện các chức năng thông qua các trang sau: • Mainpage: trang chủ. • Topic: hiển thị danh sách các môn học, chủ đề hay các câu hỏi. • Question: hiển thị nội dung câu hỏi và danh sách các câu trả lời. • Viewreply: hiển thị nội dung câu trả lời và danh sách các file kèm theo (nếu có). • QuesOrReply: dùng để tạo câu hỏi và câu trả lời • Search: hiển thị danh sách tìm kiếm. Hệ thống trao đổi thông tin Trang 29 Sơ đ ồ xử lý : C hủ đ ề Si nh v iê n tr ả lờ i G iả ng v iê n tr ả lờ i C âu h ỏi C âu h ỏi X em T rả lờ i H ỏi Tì m k iế m M ai np ag e To pi c Q ue st io n V ie w R ep ly Tậ p tin kè m th eo Se ar ch Q ue sO rR ep ly Hệ thống trao đổi thông tin Trang 30 2. Đối với quản trị Tương tác của quản trị lên hệ thống ứng với các xử lý sau: 2.1.Xử lý:đăng nhập vào quản trị: Xử lý này được mô tả như sau: • Tiếp nhận yêu cầu đăng nhập vào quản trị.. • Lấy username và password của người nhập. • Kiểm tra và so sánh với username, password đã có trong cơ sở dữ liệu. • Định phạm vi hoạt động của người quản trị. • Hiển thị các chủ đề và câu hỏi theo dạng cây và các chức năng quản trị ứng với phạm vi cho phép. 2.2.Xử lý:thay đổi mật khẩu của quản trị: Xử lý này được mô tả như sau: • Tiếp nhận yêu cầu thay đổi mật khẩu. • Lấy các thông tin cần thay đổi. • Cập nhật thông tin vừa thay đổi vào cơ sở dữ liệu. 2.3.Xử lý:thêm quản trị: Xử lý này được mô tả như sau: • Tiếp nhận yêu cầu thêm quản trị.. • Yêu cầu các thông tin cần thêm vào. • Đưa thông tin vừa nhập vào cơ sở dữ liệu. 2.4.Xử lý:xoá quản trị: Xử lý này được mô tả như sau: • Tiếp nhận yêu cầu xóa quản trị.. • Lấy danh sách các quản trị cần xóa. • Xoá các quản trị. 2.5.Xử lý:xóa các chủ đề: Xử lý này được mô tả như sau: • Tiếp nhận yêu cầu xóa các chủ đề. • Lấy danh sách các chủ đề cần xóa. • Xoá các chủ đề. 2.6.Xử lý:chuyển các chủ đề: Xử lý này được mô tả như sau: • Tiếp nhận yêu cầu chuyển các chủ đề. • Lấy id của chủ đề cần chuyển và chủ đề cần chuyển tới. • Cập nhật lại hai chủ đề trên. 2.7.Xử lý:thay đổi thông tin của chủ đề: Hệ thống trao đổi thông tin Trang 31 Xử lý này được mô tả như sau: • Tiếp nhận yêu cầu thay đổi các chủ đề. • Lấy id, tên mới của chủ đề cần thay đổi. • Cập nhật lại chủ đề trên. 2.8.Xử lý: kết thúc việc đăng nhập của quản trị: Xử lý này được mô tả như sau • Tiếp nhận yêu cầu kết thúc việc đăng nhập của quản trị. • Xoá các thông tin đăng nhập của quản trị. Người quản trị thực hiện các chức năng thông qua các trang sau: • Edit: hiển thị cây thư mục của hệ thống. • EditTopic: cho phép thêm, xóa, sửa, chuyển chủ đề. • EditAdmin: cho phép thêm, xóa, đổi mật khẩu của người quản trị. Sơ đồ xử lý: Phần quản trị Phần chủ đề Thoát Đăng nhập Mainpage Edit EditAdmin EditTopic Thoát Hệ thống trao đổi thông tin Trang 32 CHƯƠNG IV: TRIỂN KHAI CÀI ĐẶT I.CÁC THÀNH PHẦN JAVABEAN Tầng middle trong mô hình có nhiệm vụ là cầu nối dữ liệu giữa tầng client và tầng data. Nó giao tiếp với tầng data để truy xuất cơ sở dữ liệu cho tầng client. Công nghệ JavaBean sẽ được sử dụng để cài đặt cho tầng này. Mỗi đơn vị dữ liệu sẽ được ánh xạ thành một đối tượng Bean. Như vậy ta sẽ xây dựng được ba lớp trong đó hai lớp đầu tiên ứng với hai bảng dữ liệu, còn lớp còn lại giữ vai trò chính chứa các phương thức cần thiết để truy xuất dữ liệu. Ba lớp được xây dựng : 1.Lớp Topic Lưu các thông tin về một môn học, chủ đề, câu hỏi và câu trả lời. Gồm các thành phần sau: Kiểu dữ liệu Tên dữ liệu Mô tả String id Xác định id của mỗi môn học, chủ đề, câu hỏi, trả lời. String name Xác định tên của mỗi chủ đề. String parentId Xác định id của chủ đề cha. String sender Xác định tên người gởi câu hỏi hay câu trả lời. String date Xác định ngày tháng gởi bài hay ngày tạo chủ đề. String content Xác định nội dung của câu hỏi hay câu trả lời. String numQuestion Xác định loại: chủ đề nếu >= 0 và là số câu hỏi của chủ đề, -1 là câu hỏi, -2 là câu trả lời của sinh viên, -3 là câu trả lời của giáo viên. boolean key Xác định việc xuất hiện (=true) hay không xuất hiện (=false) trên cây chủ đề. boolean flagNode Xác định việc mở (true) hay đóng (false) của chủ đề để xuất hay không xuất các chủ đề con. 2.Lớp Admin Lưu thông tin về người quản trị và phạm vi quản lý của quản trị. Bao gồm các thành phần sau: Hệ thống trao đổi thông tin Trang 33 Kiểu dữ liệu Tên dữ liệu Mô tả String username Xác định tên đăng nhập của quản trị. String password Xác định mật khẩu của quản trị. String scope Xác định phạm vi quản lý của quản trị. 3.Lớp HelpDesk Là lớp chính chứa các thành phần và chứa các phương thức cần thiết trong việc truy xuất cơ sở dữ liệu. Các thành phần chính: Kiểu dữ liệu Tên dữ liệu Mô tả String action Xác định các hành động trong thao tác xử lý. String title[] Mảng chứa các tiêu đề dẫn đến chủ đề hiện hành. int countTitle Biến đếm số chủ đề trên tiêu đề. int count Biến đếm các chủ đề con của chủ đề hiện hành. Topic topic[] Mảng chứa các chủ đề con, câu hỏi, trả lời của mục hiện hành. Topic current[] Đối tượng hiện hành là môn học , chủ đề, câu hỏi hay câu trả lời. String filename[] Mảng chứa tên của các file kèm theo. int countFile Biến đếm số file kèm theo, nhiều nhất là = 3. int numberPage Biến đếm số trang hiện có trong mục hiện hành int page Xác định trang hiện hành. int flag Xác định tình trạng của mục hiện hành. Bằng 0 nếu là môn học, 1 nếu là chủ đề, 2 nếu là câu hỏi của các ngày trước đó đến nay. boolean login Thông báo cho biết việc đăng nhập vào quản trị (true) hay thoát khỏi quản trị (false). int signAdmin Dấu hiệu báo cho biết việc chưa thực hiện chức năng quản trị (-1), thực hiện thành công (1) hay thực hiện thất bại (0). String nameNode[] Mảng chứa tên của các nút trên cây chủ đề. String idNode[] Mảng chứa id của các nút trên cây. String flagNode[] int countNode Biến đếm số nút trên cây. int countAdmin Biến đếm số người quản trị thuộc quyền quản lý của người quản trị hiện hành. Admin admin[] Mảng chứa các thông tin về các quản trị thuộc quyền quản lý của quản trị hiện hành. Hệ thống trao đổi thông tin Trang 34 Các phương thức trong lớp: • connected(): xác định xem đã thực hiện kết nối với dữ liệu hay chưa. • makeConnect(): thực hiện việc kết nối với cơ sở dữ liệu. • getResultSet(String query): trả về kết quả của lệnh truy vấn dữ liệu. • findCurrent(String idTemp): tìm mục ứng với id truyền vào. • findTopic(String idTemp): tìm các mục con ứng với id truyền vào và thực hiện việc phân trang đối với dữ liệu truy vấn được. • appendQuesOrReply(String numQuestionTemp): thêm vào câu hỏi hay câu trả lời dựa vào dấu hiệu nhận biết numQuestionTemp. • updateNumQuestion(int num): cập nhật lại số câu hỏi của các chủ đề cha khi thêm vào câu hỏi mới. • search(String namesearch, String option): tìm kiếm danh sách chuỗi namesearch trong cơ sở dữ liệu theo option là And hay Or với danh sách tìm được là các chủ đề cao nhất. • fatherSearch(String fatherId): hàm đệ quy nhằm tìm ra chủ đề cao nhất chứa chủ đề có parentId là fatherId. • lastDay(): tìm các câu hỏi bắt đầu từ ngày trước (biến last) đến ngày hiện hành và thực hiện việc phân trang đối với dữ liệu tìm được. • upload(String idTemp): trích xuất các thuộc tính để thêm vào dữ liệu và nội dung của file kèm theo (nhiều nhất là 3 file) để tạo file tải lên trình chủ ứng với mục có id là idTemp. • compareLogin(String usernameTemp, String passwordTemp): kiểm tra việc đăng nhập của quản trị với username và password truyền vào. • requestData(): truy xuất tất cả dữ liệu trong bảng CSDL. • openNode(String idTemp): mở chủ đề ứng với idTemp để xuất ra các mục con. • closeNode(String idTemp): đóng chủ đề ứng với idTemp để các mục con của nó không xuất hiện trên cây. • displayTree(String idTemp, String layerTemp): hiển thị cây chủ đề với nút gốc có id là idTemp và hiển thị các nút con của nó khi các nút con có trường key bằng true. • deleteNode(String idx[]): xoá tất cả các mục ứng với danh sách được chọn để xóa idx, cập nhật lại số câu hỏi của các chủ đề cha của các mục cần xóa. • create(String newName, String fatherId): tạo ra chủ đề mới có tên newName trong chủ đề có id là fatherId. • change(String itemId, String destinateId): chuyển mục có id là itemId sang chủ đề có id là destinateId. Trong đó chủ đề nhận chủ đề,câu hỏi còn câu hỏi thì nhận câu trả lời. • newName(String idTemp, String nameTemp): đổi tên chủ đề có id là idTemp thành tên mới là newName. • findListAdmin(): tìm danh sách các quản trị dưới quyền quản lý của quản trị hiện hành (đang đăng nhập vào hệ thống). • addAdmin(String nameTemp, String passwdTemp, String sopeTemp): thêm vào một quản trị mới có username là nameTemp, password là passwdTemp và phạm vi quản lý là scopeTemp. Hệ thống trao đổi thông tin Trang 35 • delAdmin(String idx[]): xóa các quản trị theo danh sách idx đã chọn trong phạm vi quản lý của mình. • changePassword(String userTemp, String newPwd): đổi password của quản trị có username là userTemp thành newPwd. II.TRIỂN KHAI CÁC TRANG JSP Tầng client được triển khai bằng tập hợp các trang jsp. Các trang này sẽ thể hiện thao tác xử lý. Nó là trung gian cho giao tiếp giữa người sử dụng và hệ thống. Ở tầng này, mỗi trang jsp sẽ được thể hiện bằng một màn hình ở Web Browser. Chúng lấy thông tin từ người dùng, trao đổi với lớp đệm để thực hiện những chức năng cần thiết. Triển khai trang Mainpage.jsp: Trang Mainpage.jsp thực hiện một các chức năng chính: • Cho phép quản trị đăng nhập vào hệ thống để thực hiện chức năng quản trị. • Cho phép xem các môn học trong các hướng chính của Khoa. Trang Maipage được hiển thị ở Browser như sau: Triển khai trang Topic.jsp: Khi lần đầu tiên vào, trang Topic.jsp sẽ hiển thị danh sách các môn học ứng với từng hướng, số câu hỏi trong môn học và ngày tạo nên nó. Được thể hiện như sau: Hệ thống trao đổi thông tin Trang 36 Sau khi nhấp vào liên kết của môn học sẽ hiển thị các chủ đề hay câu hỏi có trong môn học. Được thể hiện như sau: Hệ thống trao đổi thông tin Trang 37 Ở trang này khi người dùng nhấp vào liên kết ở phần câu hỏi thì sẽ chuyển điều khiển đến trang Question.jsp. Còn khi nhấn vào nút “Câu hỏi mới” sẽ chuyển hướng đến trang QuesOrReply.jsp để thêm vào câu hỏi mới trong chủ đề hiện hành. Ngoài ra hệ thống cũng dùng chức năng của OutLook để tiến hành việc gởi mail. Ngoài ra trang này cũng cung cấp chức năng để tìm kiếm các chủ đề cần thiết và chuyển hướng điều khiển đến trang Search.jsp. Triển khai trang Question.jsp: Trang Question sẽ hiển thị nội dung của câu hỏi và danh sách các câu trả lời của câu hỏi nếu có. Được thể hiện như sau: Trang Question có các chức năng sau: • Khi nhấn nút “SV trả lời” sẽ cho phép sinh viên trả lời câu hỏi và chuyển đến trang QuesOrReply.jsp. • Khi nhấn nút “GV trả lời” sẽ vào trang Login.jsp để kiểm tra người sử dụng có phải là giáo viên hay không. • Sử dụng OutLook của Microsoft để tiến hành việc gởi mail. • Khi nhấp vào danh sách câu trả lời sẽ chuyển đến trang ViewReply.jsp. Triển khai trang ViewReply.jsp: Trang này sẽ hiển thị nội dung của câu trả lời và danh sách các tập tin kèm theo nếu có. Khi nhấn nút xem sẽ hiển thị nội dung của tập tin kèm theo. Còn khi nhấn nút Thoát sẽ quay trở lại trang Question. Trang này được thể hiện trên Browser như sau: Hệ thống trao đổi thông tin Trang 38 Triển khai trang QuesOrReply.jsp: Trang này cung cấp chức năng thêm vào câu hỏi mới cho chủ đề hiện hành. Khi người dùng nhấn nút “Đồng ý” sẽ nhận thông tin do người dùng nhập vào và hiển thị lại trang Topic.jsp. Được thể hiện như sau: Hệ thống trao đổi thông tin Trang 39 Trang QuesOrReply.jsp còn có chức năng hiển thị lại nội dung câu hỏi và tạo ra câu trả lời cho câu hỏi đó của sinh viên và giáo viên. Khi nhấn nút “Đồng ý” sẽ mang dữ liệu do người dùng nhập vào cơ sở dữ liệu và hiển thị ở trang Question.jsp. Được thể hiện trên Browser như sau: Triển khai trang Search.jsp: Trang Searh có chức năng hiển thị kết quả của việc tìm kiếm. Khi nhấn nút “Thoát” sẽ quay lại trang Topic.jsp. Còn khi người dùng nhấp vào liên kết của chủ đề sẽ hiển thị ở trang Topic tương ứng với chủ đề đó. Hoặc người dùng nhấp vào liên kết ở phần câu hỏi sẽ chuyển sang trang Question.jsp. Trang này được thể hiện trên Browser như sau: Hệ thống trao đổi thông tin Trang 40 Triển khai trang Login.jsp: Trang Login.jsp cho phép quản trị đăng nhập và hệ thống, ghi nhận các thông tin đăng nhập và kiểm tra việc đăng nhập. Sau khi hoàn tất công việc, trang này sẽ chuyển đến trang Admin.jsp. Triển khai trang Admin.jsp: Trang này gồm hai phần chính là phần thể hiện cây chủ đề ứng với trang Tree.jsp và phần thực hiện các chức năng của quản trị ứng với trang Edit.jsp. Trang Tree.jsp có chức năng xóa các nút trên cây và hiển thị lại cây. Trang Edit.jsp có các nút “Quản trị” để chuyển hướng sang trang EditAdmin.jsp và “Chủ đề” chuyển sang trang EditTopic.jsp. Khi nhấn nút “Thoát” để kết thúc việc đăng nhập của quản trị và quay trở lại trang Mainpage.jsp. Được thể hiện trên Browser như sau: Hệ thống trao đổi thông tin Trang 41 Triển khai trang EditTopic.jsp Trang EditTopic.jsp có các chức năng thêm, chuyển, và đổi tên của chủ đề trên cây. Khi nhấn Submit thì các dữ liệu quản trị nhập vào sẽ được cập nhật vào cơ sở dữ liệu và sẽ thông báo quá trình thực hiện thành công hay thất bại. Nhấn liên kết “Xem cây” để xem kết quả vừa làm được trên cây. Ngoài ra có thể chuyển sang thực hiện chức năng đối với quản trị khi nhấn nút “Quản trị” hoặc kết thúc việc đăng nhập của quản trị khi nhấn “Thoát” để trở về trang Mainpage. Được thể hiện trên browser ở phía phải của trang Admin.jsp: Hệ thống trao đổi thông tin Trang 42 Triển khai trang EditAdmin.jsp: Trang EditAdmin.jsp có các chức năng thêm, xóa, đổi mật khẩu của chính quản trị đó hay của các quản trị thuộc quyền quản lý của quản trị đang đăng nhập. Khi nhấn Submit thì dữ liệu nhập vào của quản trị sẽ được cập nhật vào cơ sở dữ liệu và sẽ được thông báo thành công hay thất bại. Ngoài ra có thể chuyển sang thực hiện chức năng đối với các chủ đề khi nhấn nút ”Chủ đề” hay kết thúc việc đăng nhập của quản trị khi nhấn “Thoát” trở lại trang Mainpage.jsp. Được thể hiện ở bên phải của trang Admin.jsp như sau: Hệ thống trao đổi thông tin Trang 43 III.HẠN CHẾ VÀ HƯỚNG PHÁT TRIỂN 1.Hạn chế Quá trình thiết kế hệ thống đã thành công tuy nhiên chưa hoàn thiện được tất cả các chức năng cần thiết cho mô hình. Như vậy hệ thống còn có các hạn chế như sau: • Việc quản lý người sử dụng chưa được chặt chẽ. • Phần thể hiện giao diện chưa hoàn chỉnh và phù hợp. • Hệ thống giúp đỡ sử dụng chưa được xây dựng. • Quá trình kiểm tra và thử nghiệm chưa được chú ý nhiều. 2.Hướng phát triển Nhìn chung các phần chính của hệ thống đã được xây dựng, hệ thống có thể áp dụng vào thực tế. Tuy nhiên hệ thống có một số hướng phát triển sau: • Có thể tích hợp với các hệ thống hỗ trợ học tập khác để tạo thành một hệ thống hỗ trợ học tập hoàn chỉnh. • Hệ thống dữ liệu có thể chuyển sang quản lý dưới dạng file. • Việc phân cấp của quản trị có thể cho phép một quản trị quản lý nhiều mức độ khác nhau. • Đối với người sử dụng, việc vào ra hệ thống cũng cần có sự kiểm tra chặt chẽ hơn để người quản trị dễ quản lý hệ thống. Hệ thống trao đổi thông tin Trang 44 TÀI LIỆU THAM KHẢO Trong quá trình xây dựng hệ thống, các tài liệu được tham khảo gồm có: [1] Joe Barta. Professional Web Design [2] Eduardo Pelegri-Llopart. JavaServer Pages(TM) Specification. Sun Microsoft, Inc, 2000. [3] Karl Moss. Java Servlets. The McGraw-Hill Companies, Inc, 1999. [4] JavaServer Pages(TM) Tutorial. [5] Nguyễn Phương Lan, Hoàng Đức Hải. Lập trình ứng dụng Web với JSP/Servlet. NXB Giáo Dục, 2001. [6] Hoàng Ngọc Giao. Lập trình Java thế nào?. NXB Thống kê-Hà Nội, 1998. [7] Văn Thị Minh Thuận-Nguyễn Thị Thanh Trang. Luận văn tốt nghiệp Virtual Shopping Center (VSC). Niên khóa 1997-2001.

Các file đính kèm theo tài liệu này:

  • pdfhe_thong_trao_doi_thong_tin_8559.pdf