5. Đánh giá chung: Xuất sắc F, Giỏi F, Khá F, Trung bình F, Yếu F, Điểm /
6.2 Kiến trúc chương trình
Hình 25. Kiến trúc chương trình
Ứng dụng MIDP chạy trên các thiết bị di động. Các MIDlet giao tiếp với các trang JSP thông qua giao thức HTTP với dữ liệu được định dạng XML. JSP sau đó chuyển MIDlet request sang tầng giữa (middleware layer), tầng này quản lý các logic nghiệp vụ và giao tiếp với cơ sở dữ liệu thông qua JDBC. Tầng giữa có thể là một tập các lớp helper trong trình chứa JSP hay là một EJB server tách rời. Bởi vì trong chương trình demo đơn giản
Thiết bị di động Thiết bị di động Thiết bị di động
JavaServer Pages
Trình chứa EJB hoặc
các phương thức JDBC
Cơ sở dữ liệu Cơ sở dữ liệu Cơ sở dữ liệu HTML/XML
Gọi phương thức cục bộ hoặc từ xa
Các giao thức riêng và SQL
Chương 6. Xây dựng chương trình Demo SV: Lê Ngọc Quốc Khánh
này, ta sử dụng truyền thông MIElet-JSP, ta sẽ kết hợp quản lý logic nghiệp vụ và các chức năng truy xuất dữ liệu vào ngay trong các trang JSP.
Hình 26. Kiến trúc Client/Server
MIDlet khách sẽ gởi yêu cầu đến trang JSP trên máy chủ, dữ liệu yêu cầu được định dạng XML. Trang JSP trên máy chủ sẽ truy xuất cơ sở dữ liệu, lấy thông tin theo yêu cầu và trả lời về cho MIDlet khách. Dữ liệu gởi giữa máy chủ và MIDlet khách được định dạng XML, với giao thức trao đổi được quy ước sẵn.
Chương trình xem điểm tuyển sinh được quản lý bởi người quản trị. Người quản trị sẽ truy xuất các trang JSP quản trị thông qua trình duyệt Web thông thường với tên và mật khẩu.
MIDlet khách được đóng gói bằng hai tập tin Enroll.jad và Enroll.jar. Các trang JSP trên máy chủ được đóng gói bằng tập tin enrolljsp.war.
Cơ sở dữ liệu được dùng là Microsoft Access 2000 thông qua JDBC.
HTTP Server Enroll JSP pages Application Protocol request request reply reply Enroll MIDlet Web browser
Chương 6. Xây dựng chương trình Demo SV: Lê Ngọc Quốc Khánh 6.2.1 Giao diện người dùng
Hình 27. Sơ đồ chuyển đổi giữa các màn hình
Hình 28. Màn hình giới thiệu Hình 29. Màn hình nhập liệu
Đây là màn hình chính của MIDlet dùng để nhập dữ liệu yêu cầu. Khi người dùng chọn Menu để yêu cầu tương ứng thì màn hình kết quả sẽ trả về. Màn hình giới thiệu Màn hình nhập liệu Xem điểm chuẩn Xem kết quả Xem chỉ tiêu Xem số lượng dự thi
Chương 6. Xây dựng chương trình Demo SV: Lê Ngọc Quốc Khánh
Hình 30. Màn hình Menu Hình 31. Màn hình kết quả
Chương 6. Xây dựng chương trình Demo SV: Lê Ngọc Quốc Khánh
Hình 33. Trang hiệu chỉnh dữ liệu
Các giao diện khác tương tự như giao diện trên.
6.2.3 Giao thức trao đổi
MIDlet client và trang JSP chủ sẽ giao tiếp với nhau thông qua dữ liệu định dạng XML. Mẫu định dạng gởi từ client đến server được quy ước như sau:
<root>
<request>yeucau</request>
<univ_code>matruong</univ_code> <cand_num>sobaodanh</cand_num> </root>
Với yeucau có giá trị tương ứng như sau:
passmark: Xem điểm chuẩn
mark: Xem kết quả
amount: Xem số lượng dự thi
target: Xem chỉ tiêu
Tương tự như vậy định dạng XML của server trả về Client được quy ước tương ứng như sau:
Chương 6. Xây dựng chương trình Demo SV: Lê Ngọc Quốc Khánh
<response>yeucau</response> <display>ketqua</display> </root>
Client và server sử dụng gói DBXMLParser để xử lý tài liệu XML, DBXMLParser sử dụng bộ phân tích kXML để phân tích tài liệu XML phục vụ cho các chức năng của nó.
6.3 EnrollMIDlet
EnrollMIDlet nằm trong thư mục Application/Enroll.
Thư mục bin chứa tập tin đóng gói Enroll.jar và tập tin mô tả Enroll.jad. Thư mục src chứa mã nguồn của chương trình.
Thư mục classes chứa các tập tin .class đã biên dịch.
Trong tập tin mô tả Enroll.jad có một tham số mô tả tự định nghĩa là server-URL
chứa địa chỉ đến server chạy các trang JSP. MIDlet sẽ truy xuất tham số này để lấy địa chỉ URL đến server.
6.3.1 EnrollMIDlet.java
Đây là lớp MIDlet chính của ứng dụng
Lớp này có nhiệm vụ lấy tham số server-URL từ tập tin Enroll.jad để gán cho địa chỉ đến server.
Hiển thị màn hình giới thiệu.
Sau đó tạo ra hai đối tượng EnrollScreen là màn hình hiển thị chính của ứng dụng,
HttpPoster để gởi request và nhận response trên HTTP.
Các nhiệm vụ về sau do đối tượng EnrollScreen và HttpPoster đảm nhiệm.
6.3.2 EnrollScreen.java
EnrollScreen là lớp hiển thị chính của MIDlet.
Lớp này có nhiệm vụ hiển thị giao diện nhập liệu, cho phép người dùng nhập mã trường và số báo danh của mình, đưa ra menu cho phép người dùng chọn kết quả cần xem. Khi có yêu cầu, EnrollScreen sẽ sử dụng gói DBXMLParser để phát sinh yêu cầu theo định dạng XML, sau đó dùng đối tượng HttpPoster gởi yêu cầu đến Server. Khi gởi yêu cầu EnrollScreen truyền cho HttpPoster tham chiếu đến đối tượng
HttpPosterListener (sẽ đề cập sau).
Sau khi gởi yêu cầu, EnrollScreen hiện thông báo “Xin cho…”, EnrollScreen
chờ nhận hồi đáp trả về. Nếu nhận được hồi đáp sẽ hiển thị trên màn hình, nếu có lỗi thì sẽ hiện thông báo lỗi.
Chương 6. Xây dựng chương trình Demo SV: Lê Ngọc Quốc Khánh 6.3.3 HttpPoster.java
Đối tượng HttpPoster, nhận tham số địa chỉ URL của server trong hàm tạo.
HttpPoster là một tuyến đoạn (thread) luôn chạy, nhận yêu cầu gởi dữ liệu, gởi dữ liệu, và chờ nhận hồi đáp. Khi có hồi đáp, HttpPoster sẽ dùng tham chiếu đến
HttpPosterListener gọi phương thức receiveHttpResponse() để xử lý hồi đáp nhận về.
6.3.4 HttpPosterListener.java
Đây đơn giản chỉ là một interface định nghĩa hai phương thức mà các lớp con phải thực hiện.
6.3.5 Các gói thư viện hỗ trợ
Ứng dụng sử dụng hai gói thư viện hỗ trợ là support.* và org.kxml.*.
Gói support cung cấp lớp DBXMLParser có các phương thức phân tích tài liệu XML, phát sinh tài liệu XML.
Gói org.kxml.* là bộ phân tích kXML dành cho MIDP. Gói này có đầy đủ các phương thức để phân tích tài liệu XML, ở đây ta chỉ sử dụng một số phương thức của nó trong lớp DBXMLParser.
Chương 6. Xây dựng chương trình Demo SV: Lê Ngọc Quốc Khánh
Chương 6. Xây dựng chương trình Demo SV: Lê Ngọc Quốc Khánh
Hình 37. UML của lớp giao diện HttpPosterListener
Hình 38. UML của lớp DBXMLParser
Chương 6. Xây dựng chương trình Demo SV: Lê Ngọc Quốc Khánh 6.4.1 enrolljsp.jsp
Đây là trang JSP gốc, có nhiệm vụ tiếp nhận yêu cầu từ MIDlet client, khi nhận được request, enrolljsp.jsp sẽ dùng gói support.DBXMLParser để phân tích dữ liệu nhận được dưới dạng XML. Sau khi phân tích yêu cầu, trang JSP sẽ kết nối JDBC đến cơ sở dữ liệu để lấy dữ liệu theo yêu cầu. Sau khi lấy được dữ liệu, hoặc không tìm thấy, trang JSP sẽ trả về dữ liệu theo khuôn dạng XML (dữ liệu text không được bọc trong thẻ <%%> của trang JSP sẽ mặc định trả về trong response).
6.4.2 Các trang quản trị
Các trang quản trị nằm trong thư mục /admin. Các trang quản trị sử dụng giao diện trình Web thông thường, yêuâp5. Khi đã đăng nhập, người quản trị có thể quản lý toàn bộ ứng dụng.
Hình 39. Sơ đồ các trang quản trị
Các trang quản trị:
index.jsp: Trang chủ quản trị
login.jsp: Trang đăng nhập
fail.htm: Trang đăng nhập thất bại
logout.jsp: Trang đăng xuất
university.jsp: Trang chủ quản trị trường đại học
univ_search: Trang tìm kiếm trường
univ_insert: Trang thêm trường
univ_edit: Trang hiệu chỉnh dữ liệu trường
candidate.jsp: Trang chủ quản trị thí sinh
Trang đăng nhập Trang quản trị thí sinh Trang quản trị trường ĐH Trang tìm kiếm Trang bổ sung thêm Trang hiệu chỉnh và xóa Trang chủ Trang tìm kiếm Trang bổ sung thêm Trang hiệu chỉnh và xóa Đăng xuất Fail.htm Thành công Thất bại
Chương 6. Xây dựng chương trình Demo SV: Lê Ngọc Quốc Khánh
cand_search: Trang tìm kiếm thí sinh
cand_insert: Trang thêm thí sinh
cand_edit: Trang hiệu chỉnh dữ liệu thí sinh
6.5 Cơ sở dữ liệu
Cơ sở dữ liệu của hệ thống là cơ sở dữ liệu Access dbEnroll.mdb trong thư mục
Application/Database, với các bảng như sau:
Table admin: Chứa username và password của người quản trị
<id>: Autonumber (khóa chính)
<name>: Text (tên của người quản trị)
<pass>: Text (password của người quản trị)
Table University: Chức dữ liệu về các trường đại học
<univ_code>: Text (mã trường đại học – khóa chính)
<univ_name>: Text (tên trường đại học)
<subj1>, <subj2>, <subj3>: Text (tên môn thi 1, 2, 3)
<passmark>: Number (điểm chuẩn)
<amount>: Number (số lượng dự thi)
<target>: Number (chỉ tiêu tuyển sinh)
Table candidate: Chứa dữ liệu về các thí sinh
<cand_num>: Text (số báo danh – khóa chính)
<univ_code>: Text (mã trường dự thi)
<cand_name>: Text (tên thí sinh)
Chương 6. Xây dựng chương trình Demo SV: Lê Ngọc Quốc Khánh
6.6 Chạy ứng dụng với Tomcat và J2ME Wireless Toolkit
6.6.1 Yêu cầu
• Máy tính phải cài đặt j2sdk 1.4 trở lên. Địa chỉ download: http://java.sun.com
• Cài đặt Tomcat để chạy Web Server. Địa chỉ download: http://jakarta.apache.org • Cài đặt J2ME Wireless Toolkit 2.0 để chạy trình mô phỏng. Địa chỉ download:
http://java.sun.com
6.6.2 Tạo ODBC
Trước hết phải tạo kết nối ODBC có tên là “Enroll” đến cơ sở dữ liệu Access
dbEnroll.mdb trong thư mục Application\Database
6.6.3 Chạy Web Server
• Chép gói enrolljsp.war trong thư mục Application\enrolljsp vào thư mục webapps trong thư mục cài đặt Web server Apache Tomcat.
Ví dụ: D:\JBuilder9\thirdparty\jakarta-tomcat-4.0.6-LE- jdk14\webapps.
• Chạy Tomcat bằng tập tin startup.bat trong thư mục bin của Tomcat. Tomcat sẽ tự động chạy các ứng dụng trong thư mục webapps.
Hình 41. Màn hình khi chạy Tomcat
• Chạy thử địa chỉ: http://localhost:8080, nếu chạy được trang chủ của Tomcat là thành công.
• Chạy trang quản trị truyển sinh bằng địa chỉ: http://localhost:8080/enrolljsp/admin.
• Nếu muốn tắt Tomcat, chạy tập tin shutdown.bat trong thư mục bin của Tomcat
Chương 6. Xây dựng chương trình Demo SV: Lê Ngọc Quốc Khánh 6.6.4 Chạy J2ME Wireless Toolkit
• Chép thư mục Application\Enroll vào thư mục apps của thư mục cài đặt J2ME Wireless Toolkit.
Ví dụ: D:\WTK20\apps
• Chạy trình mô phỏng Ktoolbar trong Start\Programs\J2ME Wireless Toolkit 2.0\Ktoolbar
• Nhấn “Open Project…”. Chọn Project “Enroll”, nhấn “Open Project”.
Hình 42. Màn hình KToolbar
• Nhấn “Run” để chạy ứng dụng với trình mô phỏng. Trình mô phỏng sẽ mô phỏng một điện thoại di động chạy ứng dụng xem điểm tuyển sinh.
6.6.5 Chạy ứng dụng với các trình mô phỏng khác
Chương 6. Xây dựng chương trình Demo SV: Lê Ngọc Quốc Khánh
Hình 43. Ứng dụng chạy trên trình mô phỏng Nokia 7210 SDK
Hình 44. Ứng dụng chạy trên trình mô phỏng Siemens MC60
Chương 6. Xây dựng chương trình Demo SV: Lê Ngọc Quốc Khánh
Hình 45. Ứng dụng chạy trên trình mô phỏng Motorola T720i
Chương 7. Tổng kết và nhận xét SV: Lê Ngọc Quốc Khánh
CHƯƠNG 7 TỔNG KẾT VAØ NHẬN XÉT
Đề tài đã đề cập khái quát về thương mại di động và các công nghệ hỗ trợ có liên quan. Đặc biệt tập trung vào công nghệ J2ME. Đề tài cũng đã xây dựng một ứng dụng Demo minh họa các kỹ thuật cơ bản khi phát triển ứng dụng với J2ME.
Thương mại di động là thương mại được xây dựng trên nền tảng mạng vô tuyến với các công nghệ truyền thông hỗ trợ ngày càng tiên tiến. Công nghệ trao đổi thông tin đóng vai trò quan trọng khi phát triển ứng dụng và dịch vụ di động. Java với phiên bản J2ME dùng để phát triển các ứng dụng chuyên biệt cho các thiết bị di động.
Java đã sớm thâm nhập lĩnh vực thiết bị di động và sẽ là công nghệ chủ chốt trong thương mại di động.
Báo cáo thực tập SV: Lê Ngọc Quốc Khánh THUẬT NGỮ VIẾT TẮT 1G 1st (First) Generation 2G 2nd (Second) Generation 3G 3rd (Third) Generation 4G 4th (Fourth) Generation
API Application Program Interface
CDC Connected Device Configuration
CLDC Connected Limited Device Configuration
DTD Document Type Definition
EDGE Enhanced Data GSM Environment
GPRS General Packet Radio Service
GPS Global Positioning System
GSM Global System for Mobile Communications
HDML Handheld Device Markup Language
HDTP Handheld Transport Protocol
HTML HyperText Markup Language
HTTP Hypertext Transfer Protocol
IDE Intergrated Development Environment
IR InfraRed
ISP Internet Service Provider
ITTP Intelligent Terminal Transfer Protocol
J2EE Java 2 platform Enterprise Edition
J2ME Java 2 platform Micro Edition
J2SE Java 2 platform Standard Edition
JAD Java Application Descriptor
JAR Java Archive file
JCP Java Community Process
JNI Java Native Interface
JSP JavaServer Page
JSR Java Specification Request
JVM Java Virtual Machine
Báo cáo thực tập SV: Lê Ngọc Quốc Khánh MIDP Mobile Information Device Profile
OTA Over The Air
PNG Portable Network Graphics
SMP Smart Messaging Protocol
SMS Short Message Service
SSL Secure Sockets Layer
UMTS Universal Mobile Technology System
WAP Wireless Application Protocol
WBXML WAP Binary XML
WML Wireless Markup Language
WTLS Wireless Transport Layer Security
Báo cáo thực tập SV: Lê Ngọc Quốc Khánh TAØI LIỆU THAM KHẢO
[1] Ee-Peng Lim và Keng Siau, “Advances in Mobile Commerce Technologies”, Idea Group Publishing, 2003
[2] “Sony Ericsson Java MIDP Development Online Training Course”, Sony Erricson Developer World, 2002
http://www.sonyericsson.com/spg.jsp?template=frameset_dev_zone
[3] Qusay H.Mahmoud, “WAP for Java developers”, Java World, 2000
http://www.javaworld.com/javaworld/jw-06-2000/jw-0602-wap.html
[4] Tim Fielden và Ana Orubeondo, “J2ME and WAP: Together forever?”, Java World, 2000
http://www.javaworld.com/javaworld/jw-12-2000/jw-1201-iw-j2me.html
[5] Dreamtech Software Team, “Wireless Programming with J2METM: Cracking the CodeTM”, Hungry Minds Inc, 2002
[6] Forum Nokia, “Brief Introduction to Networked MIDlets”, Forum Nokia, 2002
http://www.forum.nokia.com
[7] Michael J. Yuan và Ju Long, “Build database-powerd mobile applications on the Java platform”, Java World, 2002
http://www.javaworld.com/javaworld/jw-01-2002/jw-0118-midp.html
[8] Nguyễn Phương Lan và Hoàng Đức Hải, “Lập trình ứng dụng Web với JSP/Servlet”, Nhà xuất bản Giáo Dục, 2001