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.
50 trang |
Chia sẻ: builinh123 | Lượt xem: 1618 | Lượt tải: 0
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:
- he_thong_trao_doi_thong_tin_8559.pdf