Tải bản đầy đủ (.doc) (57 trang)

Xây dựng ứng dụng tra cứu thông tin đào tào cho sinh viên

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.31 MB, 57 trang )

LỜI CẢM ƠN
Sau thời gian tìm hiểu và thực hiện, đề tài :”Xây dựng ứng dụng tra cứu
thông tin đào tào cho sinh viên” đã cơ bản hoàn thành. Để đạt được kết quả
này,em đã nỗ lực hết sức đồng thời cũng nhận được rất nhiều sự quan tâm,
giúp đỡ, ủng hộ của các thầy cô, bạn bè và gia đình.
Trước hết, em xin gởi lời cảm ơn chân thành đến Bộ môn Mạng máy tính
và truyền thông - Đại học công nghệ thông tin và truyền thông và các thầy cô
đặc biệt là Thầy Trần Hồng Anh đã tận tình giúp đỡ, hướng dẫn em hoàn thành
đề tài này.
Đề tài đã hoàn thành với một số kết quả nhất định, tuy nhiên vẫn không
tránh khỏi sai sót. Kính mong sự cảm thông và đóng góp ý kiến từ các thầy cô
và các bạn.
Em xin chân thành cám ơn.
Thái Nguyên ,ngày tháng 6 năm 2012
Sinh viên
Bùi Thị Luyến

LỜI CAM ĐOAN
Để hoàn thành đồ án tốt nghiệp đúng thời gian quy định và đáp ứng được
nhu cầu đề ra, bản thân em đã cố gắng nghiên cứu, học tập và làm việc trong thời
gian dài cùng với sự hướng dẫn nhiệt tình của thầy Trần Hồng Anh và các bạn
sinh viên cùng bộ môn. Em đã tham khảo một số tài liệu nêu trong phần “tài liệu
tham khảo” và không sao chép nội dung từ bất kỳ đồ án nào khác.
Em xin cam đoan những lời nói trên là hoàn toàn đúng sự thật mọi thông
tin sai lệch em xin hoàn toàn chịu trách nhiện trước hội đồng.
Sinh viên

1


Bùi Thị Luyến



MỤC LỤC

LỜI NÓI ĐẦU
Mạng điện thoại di động xuất hiện tại Việt Nam từ đầu những năm 1990
và theo thời gian, số lượng các thuê bao cũng như các nhà cung cấp dịch vụ di
động tại Việt Nam ngày càng tăng. Ngày nay điện thoại di động không chỉ còn
mang chức năng gọi điện hay nhắn tin thông thường mà còn là một thiết bị giải
trí, tra cứu thông tin rất tiện lợi. Do đó, xây dựng các ứng dụng cho điện thoại di
động đang là một yêu cầu tất yếu trong xu thế hiện nay.
J2ME là một ngôn ngữ nhỏ, gọn nhưng rất chặt chẽ và dễ nắm bắt, với
những lập trình viên đã có kinh nghiệm với Java việc lập trình với J2ME trở nên
rất dễ dàng. J2ME còn là một ngôn ngữ được các tổ chức mã nguồn mở ủng hộ
mạnh mẽ và phát triển rất nhanh chóng.
Ứng dụng mà em chọn thực hiện là ứng dụng tra cứu thông tin đào tạo
cho sinh viên qua mạng di động. Đối với sinh viên khoa công nghệ thông tin,
hệ thống tra cứu thông tin SMS qua môi trường web là một ứng dụng rất quen
2


thuộc. Ứng dụng tra cứu thông tin đào tạo cho sinh viên trên điện thoại di động
nhằm hỗ trợ các bạn sinh viên có thể sử dụng các tiện ích của hệ thống mà
không cần phải có máy tính kết nối mạng. Chỉ cần có một điện thoại di động hỗ
trợ GPRS các bạn sinh viên có thể tra cứu thông tin về lịch hoc,điểm thi ..… Vì
một số điều kiện đặc biệt của điện thoại, hiện nay ứng dụng này chỉ chạy
trên chương trình giả lập.
Trên cơ sở đó, nội dung của đồ án gồm 3 chương sau:
Chương 1: Cơ sở lý thuyết.
Chương 2: Phân tích và thiết kế bài toán tra cứu thông tin đào tạo cho
sinh viên.

Chương 3: Xây dựng giao diện và một số chức năng.
Qua đồ án em đã cố gắng nắm bắt và ứng dụng được các kỹ thuật lập trình
trên thiết bị di động bằng ngôn ngữ J2ME. Tuy nhiên chắc chắn không tránh khỏi
những thiếu sót, rất mong được sự đóng góp ý kiến của các thầy cô và các bạn để
đề tài này được hoàn thiện hơn nữa.

3


CÁC CHỮ VIẾT TẮT VÀ CÁC THUẬT NGỮ ĐƯỢC SỬ DỤNG
I
DC
DC
CF
EE
ME
P
K

AP

Application Program Interface

C

Connected Device Configuration

CL

Connected Limited Device Configuration


G

General Connection Framework

IIS

Internet Information Services-Web server chuẩn trên Windows

J2

Java 2 Enterpise Edition, phiên bản Java cho những dự án lớn.

J2

Java 2 Micro Edition, phiên bản Java cho những thiết bị nhỏ.

JC

Tổ chức Java Community Process

JD

Java Development Kits

JS

R
VM
Dlet

DP
A

Java Specification Requests, những yêu cầu cần bổ sung cho
các phiên bản Java.

K

Máy ảo Java cho môi trường CLDC.

MI

Tên gọi chung cho các ứng dụng J2ME.

MI

Mobile Information Device Profile.

PD

Personal Digital Assistant.

Pr

Các tập thư viện cấp cao định nghĩa trên nền Configuration.

ofile
4



DANH MỤC CÁC BẢNG
Bảng 3.1. Danh sách các Use Case
Bảng 3.2. Bảng sinh viên
Bảng.3.3 Bảng môn học
Bảng 3.4. Bảng Lớp học
Bảng 3.5. Bảng Lịch học
Bảng 3.6. Bảng điểm
Bảng 3.7. Bảng thông báo

DANH MỤC CÁC HÌNH
Hình 1.1 Các thiết bị hỗ trợ J2ME
5


Hình 1.2: Các tầng của CLDC J2ME.
Hình 1.3: Bộ khung MIDlet
Hình 1.4. Lớp Display
Hình 1.5. Lớp Displayable
Bảng 1.6. Các Command Type
Hình 1.7. Item và ItemStateListener
Hình 1.8. Chu kì sống của Midlet
Hình 1.9 : Đồ họa mức cao và đồ họa mức cấp
Hình 1.10 : Đồ họa mức cao
Hình 1.11. Bảng TextBox
Hình 1.12. Bảng TextField
Hình 1.13. Phương thức DateField
Hình 1.14 . Phương thức trong Gauge
Hình 1.15. Lớp Ticker
Hình 1.16. Vai trò của Servlet
Hình 1.17. Mô hình hoạt động của Servlet

Hình 1.18. Kiến trúc của Servlet
Hình 1.19. Chu trình sống của Servlet
Hình 1.20. Vai trò của Servlet trong CSDL
Hình 2.1. Mẫu phiếu thời khóa biểu
Hình 2.2. Mẫu phiếu điểm
Hình 2.3: Mô hình ngữ cảnh của hệ thống.
Hình 2.4. : Mô hình người dùng.
Hình 2.5. Lược đồ use case
Hình 2.6. Biểu đồ trình tự cho ca đăng nhập
Hình 2.7. Biểu đồ trình tự cho Xem kết quả học tập.
Hình 2.8. Biểu đồ trình tự cho xem thời khoá biểu.
Hình 2.9. Biểu đồ trình tự cho chức năng xem thông báo
Hình 2.10. Xem thông tin về sinh viên
Hình 2.11. Cập nhật thông tin về sinh viên.
Hình 2.12. Cập nhật thông tin điểm
Hình 2.13. Cập nhật thông tin lịch học
Hình 2.14. Cập nhật thông báo
Hình 2.15. Cộng tác đăng nhập
Hình 2.16. Cộng tác xem điểm
Hình 2.17. Biều đồ cộng tác TKB
Hình 2.18. Biểu đồ cộng tác xem thông báo
Hình 2. 19. Biểu đồ cộng tác xem thông tin sinh viên
Hình 2.20. Biểu đồ cộng tác cập nhật sinh viên
Hình 2.21. Biểu đồ cộng tác điểm
Hình 2.22. Biểu đồ cộng tác cập nhật lịch học
Hình 2.23. Biểu đồ cộng tác cập nhật thông báo
Hình 2.24.Mô hình bảng CSDl
6



Hình 3.1. Giao diện quản trị cho sinh viên
Hình 3.2. Giao diện quản lý môn học
Hình 3.3. Giao diện quản lý lịch học
Hình 3.4. Giao diện quản lý điểm
Hình 3.5. Giao diện đăng nhập
Hình 3.6. Giao diện chức năng
Hình 3.7. Giao diện xem điểm
Hình 3.8. Giao diện xem lịch học
Hình 3.3. Giao diện quản lý lịch học
Hình 3.4. Giao diện quản lý điểm

CHƯƠNG 1: CƠ SỞ LÝ THUYẾT
1.1. Tổng quan về đề tài
1.1.1. Lí do chọn đề tài

Ngày nay điện thoại di động không chỉ là thiết bị đàm thoại thông thường
mà đang dần trở thành thiết bị thông minh để đáp ứng nhu cầu ngày càng cao của
con người. Các bước tiến vượt bậc về công nghệ giúp bộ nhớ của điện thoại di
động ngày càng lớn, tốc độ xử lý nhanh hơn và nhờ đó chúng ta có thể tích hợp
nhiều chức năng khác nhau như chụp ảnh, quay video, nghe radio, xem
tivi...Trong tương lai, điện thoại di động thông minh (smartphone) có chức năng
như một máy tính sẽ tích hợp tất cả chức năng để đáp ứng các nhu cầu cần thiết
của con người. Mặt khác, cùng với sự phát triển của công nghệ, giá cả điện thoại
cũng càng ngày càng rẻ hơn và các đối tượng là học sinh, sinh viên có thể sử
dụng điện thoại di động để hỗ trợ cho việc học tập ngày càng phổ biến hơn.
Một trong những ứng dụng cần thiết đối với người dùng nhất là sinh viên,
học sinh và phù hợp với điện thoại di động là tra cứu thông tin đào tạo cho sinh
viên. Ứng dụng này cần thiết cho nhu cầu học tập, tích lũy kiến thức,các bạn sinh
viên có thể tra cứu điểm thi,lịch học,.. Để giải quyết vấn đề trên em xin chọn và
thực hiện để tài: Xây dựng ứng dụng tra cứu thông tin đào tạo cho sinh viên.

1.1.2. Mục tiêu đề tài

Điện thoại di động là thiết bị nhỏ gọn, được thiết kế phục vụ chủ yếu
cho nhu cầu liên lạc và giải trí của người dùng khi di chuyển. Bộ xử lý cũng
như khả năng lưu trữ của điện thoại di động kém xa so với máy tính để bàn.
Ngoài ra việc lập trình ứng dụng trên điện thoại cũng có những khác biệt và
khó khăn so với lập trình trên máy tính.
Như vậy, đề tài cần giải quyết các công việc chính như sau:
 Tìm hiểu về ngôn ngữ J2ME: các thành phần trong kiến trúc của J2ME, các kỹ
thuật xử lý.
 Tìm hiểu về Servlet
 Xây dựng hoàn chỉnh ứng dụng tra cứu thông tin đào tạo trên điện thoại di động
7


1.2. Tổng quan về J2ME
1.2.1. Giới thiệu về J2ME
J2ME là một nhánh của ngôn ngữ lập trình JAVA được phát triển nhằm
hướng tới việc lập trình cho các thiết bị “nhỏ” (micro) có bộ nhớ, khả năng hiển
thị và xử lý hạn chế.
Ban đầu Java được xây dựng chỉ gồm một phiên bản duy nhất, ngày nay
được biết đến với tên J2SE (Java 2 Standard Edition), với phương châm là “viết
một lần, chạy trên mọi môi trường” (“Write once, run anywhere”). Java được
hình thành trên ý tưởng xây dựng một ngôn ngữ mà lập trình viên chỉ cần viết
một lần duy nhất nhưng ứng dụng có thể chạy trên bất cứ môi trường nào có hỗ
trợ máy ảo Java (Java Virtual Machine). Để làm được việc này, Java sử dụng
một phương thức biên dịch mã nguồn tương đối khác so với các ngôn ngữ lập
trình truyền thống. Bộ biên dịch Java không biên dịch mã nguồn trực tiếp sang
mã máy mà biên dịch sang một dạng mã trung gian mà máy ảo Java hiểu được
(mã bytecode).


Hình 1.1 Các thiết bị hỗ trợ J2ME
Được giới thiệu lần đầu vào năm 1995, ngày nay mục tiêu Java nhắm
đến cũng đã thay đổi khá nhiều. Java hiện nay không chỉ nhắm đến họ máy tính
để bàn đơn thuần; hai năm sau ngày đầu được ra mắt, một phiên bản Java mới
là J2EE (Java 2 Enterprise Edition) đã được giới thiệu nhắm tới việc phát triển
các ứng dụng có qui mô lớn hơn.
1.2.2. Các lớp trong J2ME

Mục tiêu của J2ME là cho phép người lập trình viết các ứng dụng độc lập
với thiết bị di động, không cần quan tâm đến phần cứng thật sự. Để đạt được mục
tiêu này, J2ME được xây dựng bằng các tầng(layer ) khác nhau để giấu đi việc
thực hiện phần cứng khỏi nhà phát triển. Sau đây là các tầng của J2ME được xây
dựng trên CLDC:
8


Hình 1.2: Các tầng của CLDC J2ME.
Mỗi tầng ở trên tầng hardware là tầng trừu tượng hơn cung cấp cho lập
trình viên nhiểu giao diện lập trình ứng dụng (API-Application Program
Interface) thân thiện hơn.
a, Tầng thiết bị phần cứng (Device hardware layer)
Đây chính là thiết bị di động thật sự với cấu hình phần cứng của nó về bộ
nhớ và tốc độ xử lí. Dĩ nhiên thật ra nó không phải là một phần của J2ME nhưng
nó là nơi xuất phát. Các thiết bị di động khác nhau có thể có các ộ xử lí khác nhau
với các tập mã lệnh khác nhau. Mục tiêu của J2ME là cung cấp một chuẩn cho tất
cả các loại thiết bị di động khác nhau.
b, Tầng máy ảo Java (Java Virtual Machine Layer)
Khi mã nguồn Java được biên dịch, nó được chuyển đổi thành mã
bytecode. Mã bytecode này sau đó được chuyển thành mã ngôn ngữ máy của thiết

bị di động. Tầng máy ảo Java bao gồm KVM (K Virtual Machine) là bộ biên dịch
mã bytecode có nhiệm vụ chuyển mã bytecode của chương trình Java thành ngôn
ngư máy để chạy trên thiết bị di động. Tầng này cung cấp một sự chuẩn hóa cho
các thiết bị di động để ứng dụng J2ME sau khi đã biên dịch có thể hoạt động trên
bất kì thiết bị di động nào có J2ME KVM.
c, Tầng cấu hình (Configuaration Layer)
Tầng cấu hình của CLDC định nghĩa giao diện ngôn ngữ Java (Java
Lauguage interface) cơ bản để cho phép chương trình Java chạy trên thiết bị di
động. Đây là một tập các API định nghiac lõi của ngôn ngữ J2ME. Lập trình viên
có thể sử dụng các lớp và phương thức của các API này tuy nhiên các API hữu
dụng hơn được chứa trong tầng hiện trạng (profile layer).
d, Tầng hiện trạng (Profile Layer)
Tầng hiện trạng hay MIDP cung cấp tập các API hữu dụng hơn cho lập
trình viên. Mục đích của hiện trạng là xây dựng trên lớp cấu hình và cung cấp
nhiều thư viện ứng dụng hơn.MIDP định nghĩa các API riêng biệt cho thiết bị di
động. Cũng có thể có các hiện trạng và các API khác ngoài MIDP được dùng cho
ứng dụng. Ví dụ có thể có hiện trạng PDA định nghĩa các lớp và phương thức hữu
9


dụng cho việc tạo các ứng dụng PDA (lịch, sổ hẹn, sổ địa chỉ...). Cũng có thể có
một hiện trạng định nghĩa các API cho việc tạo các ứng dụng Bluetooth. Thực tế,
các hiện trạng kể trên và tập các API đang được xây dựng. Chuẩn hiện trạng
PDA là đặc tả JSR-75 và chuẩn bluetooth API là đặc tả JSR-82 với JSR là viết tắt
của Java Specification Request.
1.2.3. Sơ lược về MIDLET

a, Các thành phần của Midlet
Các ứng dụng J2ME được gọi là các MIDlet (Mobile Imformation Device
applet).Một MIDLET là một lớp Java mở rộng của lớp trừu tượng và thực thi các

phương thức startApp() , pauseApp() và destroyApp().
Hình sau thể hiện bộ khung yêu cầu tối thiểu cho một ứng dụng MIDlet.

Hình 1.3: Bộ khung MIDlet

• Phát biểu import
Các phát biểu import được dùng để include các lớp cần thiết từ các thư
viện CLDC và MIDP.
• Phần chính của MIDlet
MIDlet được định nghĩa như một lớp mở rộng MIDlet. Trong ví dụ này
MIDletExample là bắt đầu của ứng dụng.
• Hàm tạo (Contructor)
Hàm tạo chỉ được thực thi một lần khi MIDlet được khởi tạo lần đầu tiên.
Hàm tạo sẽ không được gọi lại trừ khi MIDlet thoát ra và sau đó khởi động lại.
• StartApp()
Phương thức startApp() được gọi bởi bộ quản lí ứng dụng khi MIDlet
được khởi tạo, và mỗi khi MIDlet trở về từ trạng thái tạm dừng. Nói chung, các
biến toàn cục sẽ được khởi tạo lại trừ hàm tạo bởi vì các biến đã được giải phóng
trong hàm pauseApp(). Nếu không thì chúng sẽ không được khởi tạo lại bởi ứng
dụng.
• PauseApp()
Phương thức pauseApp() được gọi bởi bộ quản lí ứng dụng mỗi khi ứng
dụng cần được tạm dừng (ví dụ trong trường hợp tin nhắn đến hoặc có cuộc gọi ).
Cách thích hợp để sử dụng pauseApp() là giải phóng tài nguyên và các biến để
dành cho các chức năng khác trong điện thoại trong khi MIDlet được tạm dừng.
Cần lưu ý rằng khi nhận cuộc gọi đến hệ điều hành trên điện thoại di động có thể
10


dừng KVM thay vì dừng MIDlet. Việc này không được đề cập trong MIDP mà đó

là do nhà sản xuất quyết định sẽ chọn cách nào.
• destroyApp()
Phương thức destroyApp() được gọi khi thoát MIDlet. (ví dụ khi nhấn nút
exit trong ứng dụng). Nó chỉ đơn thuần là thoát MIDlet. Nó không thật sự xóa
ứng dụng khỏi điện thoại di động. Phương thức destroyApp() chỉ nhận một tham
số Boolean. Nếu tham số này là true, MIDlet được tắt vô điều kiện. Nếu tham số
là false, MIDlet có thêm tùy chọn từ chối thoát bằng cách ném ra một ngoại lệ
MIDletStateChangeException.
b, Các lớp trong Midlet
• Lớp Display
Ứng dụng của chúng ta chắc chắn có nhu cầu xuất dữ liệu ra màn hình.
Việc này trong một ứng dụng MIDlet do một đối tượng thuộc lớp display đảm
nhiệm. Lớp này nằm trong package javax.microedition.lcdui, package này chứa
hầu như tất cả các lớp phục vụ cho việc phát triển giao diện của ứng dụng.
Chúng ta sẽ xem xét một số hàm quan trọng nhất của lớp Display

Hình 1.4. Lớp Display
Một MIDlet sẽ có một và chỉ một đối tượng Display để điều khiển việc
thể hiện dữ liệu. Đối tượng Display không có phương thức khởi tạo mà được
khởi tạo trực tiếp từ phương thức static của lớp.
Ví dụ:
Display display=Display.getDisplay(this);
Tham số đầu vào là một MIDlet, ở đây chúng ta gọi hàm từ lớp kế
thừa từ MIDlet nên có thể truyền vào con trỏ this. Thực ra công dụng chính của
Display là cho phép hiển thị đối tượng nào lên màn hình hiện thời. Các đối
tượng có thể hiển thị lên màn hình là các đối tượng thuộc lớp Displayable (sẽ
được giới thiệu sau), ví dụ như form, TextBox, Canvas,Screen…

Lớp Displayable
Như đã đề cập, một ứng dụng MIDlet chỉ có một đối tượng Display duy

nhất và đối tượng Display này dùng để thể hiện các đối tượng Displayable lên
màn hình. Như tên của lớp Displayable cho chúng ta thấy, đây là các đối tượng
có khả năng hiển thị thông tin lên màn hình thiết bị. Lớp Displayable bao gồm
2 lớp con là lớp Screen và lớp Canvas.
11


Các hàm chính của lớp Displayable:



Hình 1.5. Lớp Displayable
Quản lý các sự kiện (event)
+ Command & CommandListener
Ta định nghĩa Command là một đối tượng giữ thông tin về một sự kiện
(Event). Nói một cách đơn giản nhất thì command như một nút ấn (button) trên
ứng dụng di động, khi ta chọn nút này thì sẽ phát sinh một sự kiện tương ứng.
Khi
chúng ta tạo một Command có ba thông số cần cung cấp
Label: Đoạn văn bản được xem như nhãn của command
Type: Thật thuận tiện nếu ta có thể ánh xạ một command với một nút
trên thiết bị (ta gọi là “soft-button”). Giả sử ta có một command tên help và
ánh xạ được với HELP Button trên thiết bị thì thật trực quan và dễ dàng cho
người dùng.
Priority: Độ ưu tiên, dùng để sắp xếp các command từ trên xuống dưới hay
trái sang phải khi được thể hiện chung dạng menu. Hình 3.2 thể hiện command
Upload có độ ưu tiên cao hơn command Download. Giá trị này càng cao thì độ ưu
tiên càng thấp. Sau đây là các hàm chính của lớp Command và CommandListener
(hai lớp này nằm
Các type được hỗ trợ:


12




Bảng 1.6. Các Command Type
Item và ItemStateListener
Một item là một bộ phận có thể gắn kèm lên trên các form.
ChoiceGroup, DateField, Gauge và TextField là các dạng khác nhau của Item
và mỗi dạng đều có thể phát sinh các sự kiện (chúng ta sẽ tìm hiểu về các items
này trong phần Đồ Họa Cấp Cao). Items chỉ có thể được sử dụng như một thành
phần của form, khác với Commands có thể được sử dụng trong Form,
TextBox, List và Canvas.
Hiện tại MIDP hỗ trợ các loại Items sau: ChoiceGroup, DateField,
Gauge, ImageItem, StringItem và TextField. Ở đây có một ngoại lệ là hai loại
StringItem và ImageItem không hỗ trợ phát sinh sự kiện mặc dù chúng là lớp
con của lớp Item. Chúng ta cài đặt một listener trong lớp Form, khi một Item
phát sinh sẽ kích hoạt hàm itemStateChanged(), tuy nhiên không phải khi
chúng ta thay đổi giá trị nhiều items cùng lúc thì itemStateChanged() sẽ được
gọi đủ bấy nhiêu lần. Ở đây có một luật được đề ra.Sau đây là các hàm quan
trọng khi sử dụng Item:

Hình 1.7. Item và ItemStateListener
c, Vòng đời của Midlet
Khi người dùng yêu cầu khởi động ứng dụng MIDlet, bộ quản lí ứng dụng
sẽ thực thi MIDlet (thông qua lớp MIDlet). Khi ứng dụng thưc thi, nó sẽ được
xem là đang ở trạng thái tạm dừng. Bộ quản kí ứng dụng gọi hàm tạo và hàm

13



startApp(). Hàm startApp() có thể được gọi nhiều lần trong suốt chu kì sống của
ứng dụng. Hàm destroyApp() chỉ có thể gọi từ trạng thái hoạt động hay tạm dừng.
• resumerRequest(): Yêu cầu vào chế độ hoạt động. Ví dụ khi MIDlet tạm dừng, và
một sự kiện timer xuất hiện.
• notifyPaused() : cho biết MIDlet tự nguyện chuyển sang trạng thái tạm dừng. Ví
dụ khi đợi một sự kiện timer.
• notifyDestroyed(): sẵn sàng để hủy. Ví dụ nhấn nút Exit.

Hình 1.8. Chu kì sống của Midlet
1.2.4. Giao diện đồ họa trong J2ME
Các lớp MIDlet cung cấp 2 mức đồ họa : đồ họa mức thấp và đò họa mức
cao. Đồ họa mức cao dùng cho văn bản hay form. Đồ họa mức thấp dùng cho các
ứng dụng trò chơi yêu cầu phải vẽ lên màn hình.

Hình 1.9 : Đồ họa mức cao và đồ họa mức cấp
Cả hai lớp đồ họa mức thấp và mức cao đều là lớp con của lớp
Displayable. Trong MIDP, chỉ có thể có một lớp displayable trên màn hình tại
một thời điểm. Có thể định nghĩa nhiều màn hình nhưng một lần chỉ một màn
hình được hiển thị.

14


• Đồ họa mức cao (Hight Level Graphics): là lớp con của lớp Screen. Nó cung cấp
các thành phần như text box, form, list, và alert. Ta ít điều khiển sắp xếp các
thành phần trên màn hình. Việc sắp xếp thật sự phụ thuộc vào nhà sản xuất.
• Đồ họa mức thấp là lớp con của lớp Canvas. Lớp này cung cấp các phương thức
đồ họa cho phép vẽ len màn hình hay vào một bộ đệm hình cùng với các phương

thức xử lí sự kiện bàn phím. Lớp này dùng cho các ứng dụng trò chơi cần điều
khiển về màn hình.
a, Đồ họa mức cao

Hình 1.10 : Đồ họa mức cao
Là các đối tượng của lớp Screen :
• TextBox
Lớp TextBox cho phép người dùng nhập và soạn thảo văn bản. Lập trình
viên có thể định nghĩa số kí tự tối đa, giới hạn loại dữ liệu nhập và hiệu chỉnh nội
dung của textbox. Kích thước thật sự của textbox có thể nhỏ hơn yêu cầu khi thực
hiện thực tế. Kích thước thật sự của textbox có thể lấy bằng phương thức
getMaxSize().

15


• List

Hình 1.11. Bảng TextBox

List dùng để hiển thị các danh sách các khả năng cho người dùng lựa
chọn. List gồm 3 dạng:
+ Multiple: cho phép người dùng lựa chọn nhiều khả năng, tương tự
Multiple ChoiceGroup.
+ Exclusive: cho phép người dùng lựa chọn duy nhất một khả năng,
tương tự Exclusive ChoiceGroup.
+ Implicit: chỉ hiển thị danh sách các khả năng lựa chọn dạng menu.
Bắt sự kiện cho các đối tượng List:Để bắt sự kiện cho đối tượngList,
phải gán đối tượng ở trạng thái lắng nghe, nghĩa là sử dụng phương thức
setCommandListener() cho đối tượng List này. Sau đó bắt sự kiện và xử lý sự

kiện trong phương thức commandAction().Exclusive và multiple List không tự
động gửi sự kiện. Implicit List gửi sự kiện mỗi khi người dùng lựa chọn một
phần tử trong List.
• Alert
AlertType là lớp định nghĩa sẵn các loại Alert cho thiết bị, hỗ trợ âm
thanh tương ứng khi Alert hiển thị. Gồm năm loại:Báo giờ (alarm),Nhắc lại
(confirmation),Báo lỗi (error),Thông báo (info),Cảnh báo (warning)
Âm thanh của Alert có thể được chơi bằng một trong hai cách:
+ Nếu đối tượng Alert được gán loại Alert trước thì âm thanh tương
ứng của loại Alert này sẽ được phát khi đối tượng hiển thị lên màn hình.
+ Phát âm thanh Alert trực tiếp mà không cần tạo một đối tượng
Alert nghĩa là chỉ phát âm thanh thông báo mà không hiển thị lên màn hình,
bằng cách dùng phương thức: AlertType.<Type>.playSound (Display); cách
16









này có thể dùng khi chỉ cần báo cho ngưòi dùng biết về sự kiện mà không cần
hiển thị thông tin trực tiếp lên màn hình.
Form và các Form Item
Form là lớp trừu tượng hữu dụng nhất của lớp Screen bởi vì nó cho phép
chứa nhiều item trên cùng 1 màn hình. Các Item này có thể là DateField,
TextField,...Mỗi item là 1 lớp con của lớp Item.
StringItem: là một chuỗi hiển thị mà người dung không thể hiệu chỉnh, tuy nhiên

cả nhãn và nội dung của item này có thể điều chỉnh bởi ứng dụng.
ImageItem: item này chứa tham chiếu đến một đối tươngj Image phải được tạo
trước đó.
Chứa dữ liệu ảnh đồ hoạ, gồm hai dạng :
+ Cố định (Immutable): thường đựơc nạp từ resource của ứng dụng, từ
file hay chuyển từ dạng Image có thể thay đổi (Mutable) sang. Dạng hình ảnh
này chủ yếu được dùng làm biểu tượng cho các thành phần đồ hoạ khác như
ChoiceGroup, Form, List, Alert....Một khi đã tạo đối tượng kiểu Immutable
Image thì không thể thay đổi hình ảnh đựơc nữa.
+ Có thể thay đổi (Mutable): có thể thay đổi một cách dẽ dàng. Khi tạo
đối tượng kiểu Mutable Image, một vùng nhớ trống sẽ được cấp phát dựa trên
kích thước khi khai báo. Khi muốn hiển thị Image dạng này lên màn hình phải gọi
phương thức paint() của lớp Canvas sẽ được đề cập trong phần đồ hoạ cấp thấp.
TextField: item này cho phép người dùng nhập vào văn bản. Nó có thể có giá trị
khởi tạo, kích thước tối đa và ràng buộc kiểu nhập liệu. Kích thước thật sự có thể
nhỏ hơn yêu cầu do giới hạn của thiết bị di động.
Lớp TextField được sử dụng khi ứng dụng cần người dùng nhập liệu.
Không chỉ nhập dữ liệu text mà còn có thể nhập số, password, địa chỉ... Để hỗ trợ
cho người lập trình, MIDP đã định nghĩa sẵn một số các ràng buộc (constraints)
để đối tượng tự động kiểm tra tính hợp lệ của dữ liệu nhập vào. Các ràng buộc
này là các hằng lớp của lớp TextField gồm:
+ EMAILADDR: người dùng chỉ được phép nhập dữ liệu đúng chuẩn của
một địa chỉ email.
+ NUMERIC: chỉ được phép nhập số (có thể là âm hay dương), nếu muốn
giới hạn các giá trị được phép nhập thì ứng dụng phải tự xử lý.
+ PASSWORD: dữ liệu nhập vào sẽ đựơc hiển thị lên màn hình với dạng
các dấu *.
+ PHONENUMBER: dữ liệu nhập phải đúng chuẩn của số điện thoại.

17



Hình 1.12. Bảng TextField
• DateField: item này cho phép người dùng nhập thông tin ngày tháng và thời gian.
Có thể xác định giá trị khởi tạo và chế độ nhập ngày tháng (DATE), thời gian
(TIME), hoặc cả hai.

Hình 1.13. Phương thức DateField
• ChoiceGroup: cung cấp 1 nhóm các Radio button hay checkbox cho phép lựa
chọn đơn hay lựa chọn nhiều.
Lớp ChoiceGroup được sử dụng để biểu diễn một danh sách các khả
năng cho người dùng lựa chọn. ChoiceGroup kế thừa từ interface Choice, gồm
hai dạng:
+ Cho phép chọn nhiều khả năng (Multiple ): Thể hiện danh sách
các khả năng lên màn hình dạng checkbox và cho phép người đánh dấu check lên
các lựa chọn.
+ Chỉ được phép chọn một khả năng (Exclusive ): Thể hiện danh
sách các khả năng lên màn hình cùng các radio button và chỉ cho phép người
18


dùng chọn duy nhất một khả năng.Bắt sự kiện cho đối tượng ChoiceGroup
• Gauge: cung cấp một hiển thị âm thanh của một giá trị số học. Gauge có thể có
tính tương tác hoăc không. Nếu một gauge là tương tác thì người dùng có thể thay
đổi giá trị của tham số gauge và ngược lại.
Gauge dùng để biểu diễn tiến độ hoàn thành một việc nào đó (download,
upload...) hoặc cấp độ từ thấp đến cao (của âm lượng, độ khó...). Gauge đặc
trưng bởi hai giá trị: giá trị hiện hành và giá trị cực đại cho phép. Giá trị hiện
hành này luôn được duy trì giữa 0 và giá trị cực đại. Gauge gồm hai dạng:
+ Chế độ tương tác (Interactive mode): Trong chế độ này, đối tượng

Gauge sẽ được vẽ dạng các thanh song song có chiều cao tăng dần biểu thị các
cấp độ từ thấp đến cao. Người sử dụng có thể điều chỉnh giá trị hiện thời của
Gauge bằng các phím bấm
+ Chế độ không tương tác (Non-interactive mode): Đối tượng được
biểu diễn dạng các thanh song song có chiều cao bằng nhau, người dùng
không được phép thay đổi giá trị của nó. Người lập trình sẽ lập trình cho đối
tượng này tự động cập nhật giá trị theo thời gian. Các phương thức và chức năng
tương ứng của lớp Gauge:

Hình 1.14 . Phương thức trong Gauge
• Ticker: một màn hình có thể có một Ticker là một chuỗi văn bản chạy liên tục
trên màn hình. Hướng và gốc tọa độ là do thực tế quy định. Nhiều màn hình có
thể chia sẻ cùng 1 ticker.
Ticker là lớp hỗ trợ hiển thị chuỗi ký tự cuộn liên tục trên màn hình.
Đối tượng Ticker có thể được gắn vào bất kỳ đối tượng Screen nào, kể cả Alert.
Vị trí chuỗi ký tự ở trên hay dưới màn hình, cũng như tốc độ cuộn phụ thuộc vào
đặc tả MIDP. Các phương thức và chức năng tương ứng của lớp Ticker:

Hình 1.15. Lớp Ticker
19


1.3. Giới thiệu về UML
Giới thiệu về ngôn ngữ UMLNgôn ngữ UML bao gồm một loạt các phần tử
đồ họa (graphic element) có thể được kết hợp với nhau để tạo ra các biểu đồ. Bởi
đây là một ngôn ngữ, nên UML cũng có các nguyên tắc để kết hợp với các phần
tử đó.
Một trong những thành phần chủ yếu của ngôn ngữ UML là hướng nhìn chỉ ra
những khía cạnh khác nhau của hệ thống cần phải được mô hình hóa. Một hướng
nhìn không phải là một bản vẽ, mà là một sự trừu tượng hóa bao gồm một loạt

các biểu đồ khác nhau. Chỉ qua việc định nghĩa của một loạt các hướng nhìn khác
nhau, mỗi hướng nhìn chỉ ra một khía cạnh riêng biệt của hệ thống, người ta mới
có thể tạo dựng nên một bức tranh hoàn thiện về hệ thống. Biểu đồ diagram là
biểu đồ thể hiện các hình vẽ miêu tả nội dung trong một hướng nhìn. UML có tất
cả 9 loại biểu đồ khác nhau được sử dụng trong những sự kết nối kết hợp khác
nhau để cung cấp tất cả các hướng nhìn của một hệ thống.
1.3.1. Thành phần trong UML
a) Lớp và các đối tương trong UML
UML thể hiện lớp bằng hình chữ nhật có 3 phần. Phần thứ nhất chứa tên
lớp. Trong phần thứ hai là thuộc tính và các dữ liệu thành phần của lớp và trong
phần thứ ba là các phương thức hay hàm thành phần của lớp.
b) Tên lớp ( lass name)
Tên lớp được in đậm và căn giữa. Tên lớp phải được dẫn xuất từ phạm vi
vấn đề và rõ ràng như có thể. Nó là danh từ.
c) Thuộc tính (attribute)
Lớp có thuộc tính miêu tả những đặc điểm của đối tượng. Giá trị của thuộc
tính thường là những dạng dữ liệu đơn giản được đa phần các ngôn ngữ lập trình
hỗ trợ như Interger, Boolean, Floats, Char,… Thuộc tính có thể có nhiều mức độ
khác nhau, miêu tả thuộc tính đó có thể được truy xuất từ các lớp khác, khác với
lớp định nghĩa ra nó.
d) Phương thức (Methods)
Phương thức định nghĩa các hoạt động mà lớp có thể thực hiện. Tất cả các
đối tượng được tạo từ một lớp sẽ có chung thuộc tính và phương thức. Phương
thức được xử lý thay đổi các thuộc tính cũng như thực hiện các công việc khác.
Phương thức thường được gọi là các hàm (function), nhưng chúng nằm trong một
lớp và chỉ có thể được áp dụng cho các đối tượng của lớp này. Một phương thức
được mô tả qua tên, giá trị trả về và danh sách của 0 cho tới khi nhiều tham số.
Lúc thi hành phương thức được gọi kèm theo đối tượng của lớp.
e) Kí hiệu đối tượng
Đối tượng là thực thể của các lớp nên kí hiệu dùng cho đối tượng cũng là ký

hiệu dùng cho lớp. Các thuộc tính được gán giá trị, đây là các giá trị khi lớp được
thực thể hóa.
f) Quan hệ giữa các lớp
20








g)

a)

b)

Biểu đồ thể hiện các lớp và các mối quan hệ giữa chúng. Quan hệ giữa các
lớp gồm có 4 loại:
Liên hệ (Association): Là một sự nối kết giữa các lớp, cũng có nghĩa là sự nối kết
giữa các đối tượng của lớp này. Trong UML, một liên hệ được định nghĩa là một
mối quan hệ miêu tả một tập hợp các kết nối (links), trong khi nối kết được định
nghĩa là một sự liên quan về ngữ nghĩa giữa một nhóm các đối tượng.
Khái quát hóa (Generalization): Là mối quan hệ giữa một yếu tố mang tính khái
quát hóa cao hơn và một yếu tố mang tính chuyên biệt hơn có thể được sử dụng.
Yếu tố mang tính riêng biệt hơn có thể chỉ các chứa thông tin bổ sung. Một thực
thể ( một đối tượng là một thực thể của một lớp) của yếu tố mang tính chuyên biệt
hơn có thể được sử dụng ở bất kỳ nơi nào mà đối tượng mang tính khái quát hơn
được phép.

Phụ thuộc ( Dependency): Là mối quan hệ giữa các yếu tố, gồm một yếu tố mang
tính chuyên biệt hơn có thể sử dụng ở bất cứ nơi nào mà đối tượng mang tính
khái quát hóa hơn.
Nâng cấp ( Refinement): Là mối quan hệ giữa hai lời miêu tả của cùng một sự
vật, nhưng ở những mức độ trừu tượng hóa khác nhau.
Phần tử mô hình
Các khái niệm được sử dụng trong các biểu đồ được gọi là các phần tử mô
hình. Một phần tử mô hình được định nghĩa với ngữ nghĩa, đó là một định nghĩa
về bản chất phần tử hay là một xác định ý nghĩa chính xác xem nó sẽ thể hiện
điều gì trong những lời khẳng định rõ ràng. Mỗi phần tử mô hình còn có một sự
miêu tả trực quan, một phần tử có thể tồn tại trong nhiều dạng biểu đồ khác nhau,
nhưng cũng có những nguyên tắc xác định loại phần tử nào có thể được chỉ ra
trong loại biểu đồ nào. Ví dụ như: Lớp, đối tượng, trạng thái, gói, thành phần…
1.3.2. Biểu đồ ( Diagram)
Biểu đồ là các hình vẽ bao gồm các ký hiệu phần tử mô hình hóa được sắp
xếp để minh họa một thành phần cụ thể hay một khía cạnh cụ thể của hệ thống.
Một mô hình hệ thống thường có nhiều loại biểu đồ, mỗi loại có nhiều biểu đồ
khác nhau. Một biểu đồ là một thành phần của một hướng nhìn cụ thể và khi được
vẽ ra, nó thường được sắp xếp vào một hướng nhìn. Mặt khác một số loại biểu đồ
có thể là thành phần của nhiều hướng nhìn khác nhau, tùy thuộc vào nội dung của
biểu đồ.
Biểu đồ Use case ( Use case Diagram)
Biểu đồ này chỉ ra tương tác giữa các UC và tác nhân. UC biểu diễn các
chức năng hệ thống. Tác nhân là con người hay hệ thống khác cung cấp hay thu
nhận thông tin từ hệ thống đang được xây dựng. Biểu đồ UC tập trung vào quan
sát trạng thái tĩnh của các UC trong hệ thống. Vì UC biểu diễn yêu cầu hệ thống
từ góc độ người dùng, cho nên UC là chức năng mà hệ thống phải có. Biểu đồ
loại này chỉ ra tác nhân nào khởi động UC và khi nào tác nhân nhạn thông tin từ
hệ thống.
Biểu đồ trình tự ( sequence diagram )

21


c)

d)
e)

f)

g)

Biểu đồ trình tự chỉ ra luồng chức năng xuyên qua các UC, nó là biểu đồ
mô tả tương tác giữa các đối tượng và tập trung vào mô tả trật tự các thông
điệp theo thời gian.
Biểu đồ cộng tác ( collaboration diagram)
Biểu đồ cộng tác chỉ ra các thông tin như biểu đồ trình tự nhưng theo cách
khác, nó tập trung vào tổ chức cấu trúc của các đối tượng gửi và nhận thông
điệp. Biểu đồ cộng tác và biểu đồ trình tự thuộc loại biểu đồ tương tác và chúng
có thể biến đổi qua lại. Trong biểu đồ cộng tác, đối tượng đặt trong hình chữ
nhật, tác nhân là người hình cây. Trong khi biểu đồ trình tự biểu diễn tương tác
đối tượng và tác nhân theo thời gian thì biểu đồ cộng tác lại không quan tâm đến
thời gian. Các đối tượng giao tiếp trực tiếp với nhau thể hiện bằng đường nối.
Biểu đồ lớp ( class diagram)
Biểu đồ lớp chỉ ra tương tác giữa các lớp trong hệ thống. Các lớp được xem
như kế hoạch chi tiết của các đối tượng.
Biểu đồ trạng thái ( state diagram)
Biểu đồ trạng thái mô tả vòng đời của đối tượng từ khi nó được sinh ra cho
tới khi nó được phá hủy. Biểu đồ trạng thái cung cấp cách thức mô hình hóa các
trạng thái khác nhau của đối tượng. Trong khi biểu đồ lớp cung cấp bức tranh tĩnh

về các lớp và quan hệ của chúng thì biểu đồ chuyển trạng thái được sử dụng để
mô hình hóa các hành vi động của hệ thống. Biểu đồ chuyển trạng thái chỉ ra
hành vi của đối tượng.
Biểu đồ thành phần (component diagram)
Biểu đồ thành phần đưa ra cái nhìn vật lý của mô hình. Biểu đồ thành phần
cho thấy các thành phần phần mềm trong hệ thống và quan trọng hệ giữa chúng.
Bất kì ai có trách nhiệm dịch chương trình đều quan tâm đến loại biểu đồ này, nó
cho thấy trình tự các modul trong hệ thống. Đồng thời nó cũng cho biết rõ thành
phần nào được ánh xạ của lớp vào các thành phần cài đặt.
Biểu đồ triển khai ( deployment diagram)
Biểu đồ triển khai chỉ ra sự bố trí vật lý của mạng và các thành phần hệ
thống sẽ đặt ở đâu, thông qua đó người quản lý dự án, người sử dụng, kiến trúc
sư và đội ngũ triển khai kiểu phân bổ vật lý của hệ thống và các hệ thống con sẽ
được đặt ở đâu.
1.4. Giới thiệu về Servlet
1.4.1 Sơ lược về Servlet
Servlet là thành phần chính được sử dụng để phát triển các chương trình
dịch vụ Java ở phía máy chủ. Các Servlet là các chương trình Java thực hiện ở các
ứng dụng Server (tên gọi “Servlet” cũng gần giống như “Applet” ở phía máy
Client) để trả lời cho các yêu cầu của Client. Các Servlet không bị ràng buộc chặt
với một giao thức Client-Server cụ thể nào cả, nhưng giao thức thường được sử
dụng là HTTP, do vậy, khi nói tới Servlet nghĩa là nói tới HTTP Servlet. Servlet là
sự phát triển mở rộng của CGI để đảm bảo Server thực hiện được các chức năng
của mình.Sử dụng Servlet của Java để tuỳ chỉnh lại một dịch vụ bất kỳ, như Web
Server, Mail Server..
22


Web Server hiển thị các tư liệu được viết trong HTML và hồi đáp cho yêu
cầu của người sử dụng qua HTTP. Các tư liệu HTML chứa các văn bản được

đánh dấu (định dạng) để các trình duyệt như IE, Netscape đọc được. Một trình
duyệt chấp nhận đầu vào ở dạng HTML, khi người sử dụng nhấn một nút để yêu
cầu một số thông tin nào đó, một Servlet đơn giản được gọi để xử lý các yêu cầu
đó. Các công việc chính của Servlet được mô tả khái quát trong hình 1, bao gồm:
+ Đọc các dữ liệu tường minh được Client gửi đến từ các yêu cầu (dữ liệu
theo các khuôn dạng – form data).
+ Đọc các dữ liệu không tường minh được Client gửi đến từ các yêu cầu
(dữ liệu trong phần đầu của yêu cầu – request headers).Xử lý và lưu trữ các dữ
liệu được cung cấp dưới dạng HTML.
+ Gửi trả lời dữ liệu tường minh cho Client (dạng HTML), cung cấp các
nội dung động, ví dụ trả lời yêu cầu Client về các câu truy vấn vào các CSDL.
Quản lý các thông tin trạng thái và trả lời dữ liệu không tường minh cho Client
(các mã trạng thái và các phần đầu của trả lời).

Hình 1.16. Vai trò của Servlet
Servlet được sử dụng để thay thế cho những công nghệ Web động. Việc sử
dụng Servlet mang lại những lợi thế:
+ Dễ di chuyển : Servlet được viết bằng Java nên có tính di động cao, thực
hiện được trên nhiều hệ điều hành, trên các Web Server khác nhau. Khái niệm
“Viết một lần, chạy ở mọi nơi” cũng rất đúng với Servlet.
+ Mạnh mẽ: Servlet hỗ trợ rất hiệu quả cho việc sử dụng các giao diện lõi
API như lập trình mạng, xử lý đa luồng, xử lý ảnh, nén dữ liệu, kết nối các
CSDL, bảo mật, xử lý phân tán và triệu gọi từ xa RMI, CORBA, ... Và thích hợp
để trao đổi tin, truyền thông giữa Client và Server một cách bình thường.
+ Hiệu quả: Servlet có tính hiệu quả cao. Một khi được tải về sẽ được lưu
lại trong bộ nhớ của máy chủ. Servlet duy trì các trạng thái do vậy những tài
nguyên ngoại như việc kết nối với CSDL cũng sẽ được lưu giữ lại.
+ An toàn: Bởi vì Servlet được viết bằng Java nên kế thừa được tính an
toàn của Java. Cơ chế tự động dọn rác và việc không sử dụng con trỏ của Java
giúp cho Servlet thoát khỏi nhiều công việc quản lý bộ nhớ. Đồng thời xử lý các

lỗi rất an toàn theo cơ chế xử lý ngoại lệ của Java.
+ Tính tích hợp: Các Servlet được tích hợp với các Server và cộng tác với
các Server tốt hơn các chương trình CGI.
23


+ Tính linh hoạt : Các Servlet hoàn toàn mềm dẻo. Một HTTP Servlet
được sử dụng để tạo ra một trang Web, sau đó có thể sử dụng thẻ <Servlet> để
đưa vào trang Web tĩnh, hoặc sử dụng với các Servlet khác để lọc ra các nội dung
cần thiết.
1.4.2. Cơ chế hoạt động của Servlet
a, Môi trường thực thi Servlet
Các Servlet thường là sự mở rộng (kế thừa) các lớp chuẩn Java trong gói
javax.servlet (chứa các khuôn mẫu cơ bản của Servlet) và javax.servlet.http (mở
rộng các khuôn mẫu cơ bản của Servlet và các yêu cầu theo HTTP).
Servlet là một lớp Java và vì thế cần được thực thi trên một máy ảo Java
(JVM) và bằng một dịch vụ được gọi là mô tơ Servlet (Servlet Engine). Servlet
Engine tải lớp Servlet lần đầu tiên nó được yêu cầu, hoặc ngay khi Servlet Engine
được bắt đầu. Servlet ngừng tải để xử lý nhiều yêu cầu khi Servlet Engine bị tắt
hoặc nó bị dừng lại.
Như vậy, để dịch và thực hiện các Servlet, việc có các Servlet là chưa đủ,
mà cần phải có một mô tơ Servlet để kiểm tra và triển khai chúng. Hiện nay một
số mô tơ tương thích với nhiều loại Web Server khác nhau, nhưng nguyên lý hành
động tương đối giống nhau. Người ta chia chúng thành ba loại.
b, Cơ chế hoạt động của Servlet
Servlet là đoạn chương trình java thực thi trên Web Server hỗ trợ người lập
trình Java xây dựng trang web động . Servlets nhận request – yêu cầu từ client,
sao đó thực hiện các yêu cầu xử lý để gửi response – phản hồi đến người dùng sử
dụng HTTP
Servlet được load sẵn ở Web Server duy nhất lần đầu tiên khi ứng dụng được

deploy và đáp ứng tức thời yêu cầu của người dùng thông qua Web Container.
Servlet được server hỗ trợ cơ chế multithread giúp giảm tài nguyên và quá tải
trong việc xử lý của server hay container

24


Hình 1.17. Mô hình hoạt động của Servlet
Bước 1: Khi có request từ client gửi đến Server hay Web Container
Bước 2 : Container sẽ lựa chọn một instance Servlet tương ứng để đáp ứng
request đó (người dùng sẽ không bao giờ biết instance nào được lựa chọn, nó lựa
chọn khi nào, servlet xử lý khi nào)
Bước 3: Servlet lựa chọn sẽ thực hiện xử lý và kết nối DB nếu cần
Bước 4 : Servlet sẽ truy xuất trong CSDL để tìm kiếm thông tin
Bước 5 : Sau khi servlet thực hiện xong, sẽ gửi kết quả ra container để gửi
response về cho người dùng
Bước 6 : Browser đón nhận kết quả và trình bày ra màn hình dữ liệu.
1.4.3. Kiến trúc của Servlet
Gói javax.servlet cung cấp các giao diện và các lớp để xây dựng các
Servlet. Kiến trúc của Servlet được mô tả như sau.

Hình 1.18. Kiến trúc của Servlet
a, Giao diện Servlet
Giao diện Servlet là một khái niệm trừu tượng trung tâm trong Servlet API.
Tất cả các Servlet đều cài đặt trực tiếp hoặc gián tiếp giao diện này hoặc mở rộng
(kế thừa) những lớp đã cài đặt. Giao diện được khai báo qua phương thức định
nghĩa vòng đời của Servlet: Public void init (ServletConfig config) throws
ServletException.
Phương thức này được gọi một lần khi Servlet được tải vào trong Servlet
Engine, trước khi Servlet được yêu cầu để xử lý một yêu cầu nào đó. Phương

thức init() có một thuộc tính là đối tượng của ServletConfig, và Servlet có thể đọc
các đối số khởi tạo thông qua đối tượng ServletConfig. Và thường được định
nghĩa trong một tệp cấu hình. Một ví dụ thông thường của một đối số khởi tạo là
định danh database cho một CSDL.
Phương thức này được gọi để xử lý các yêu cầu.có thể không được gọi, gọi
một lần hay nhiều lần cho đến khi Servlet được ngưng tải. Nhiều Thread (mỗi
Thread cho một yêu cầu) có thể thực thi phương thức này song song, vì thế mà
trở nên an toàn và hiệu quả hơn.
+ public void destroy(): Phương thức này chỉ được gọi một lần trước khi
Servlet được ngưng tải và sau khi đã kết thúc các dịch vụ.
b, Lớp cơ cở HttpServlet
Giao thức HTTP, dữ liệu được trao đổi giữa máy chủ Server và các máy
Client theo một trong hai phương thức GET hay POST. Java định nghĩa một lớp
25


×