TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
VIỆN CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG
──────── * ────────
Web thế hệ mới
Đề tài : Hệ thống tuyển sinh đại học online
Giảng viên: TS. Phạm Huy Hoàng
Sinh viên thực hiện:
Hà Nội, 5 - 2016
Page | 1
Lời nói đầu
Trong kỳ thi THPT và xét tuyển ĐH - CĐ 2015 vừa qua, vấn đề nộp hồ sơ đăng ký
xét tuyển hay rút hồ sơ đã gây khó khăn cho các thí sinh và đặc biệt là các thí sinh
ở các tỉnh khác, do chỉ có thể nộp hồ sơ qua bưu điện hoặc trực tiếp tại trường nên
đã dẫn đến việc nhiều thí sinh phải bỏ nhiều thời gian và chi phí cho việc ăn ở để
có thể nộp hoặc rút hồ sơ. Vấn đề này gây khó khăn cho gia đình và các thí sinh
nhất là các thí sinh có hoàn cảnh khó khăn - làm hạn chế tiêu chí khi tổ chức thi
năm nay là tổ chức sao cho hạn chế chi phí và hỗ trợ tốt cho các thí sinh.
Nhóm em có ý tưởng xây dựng một hệ thống hỗ trợ việc đăng ký nộp hồ sơ
xét tuyển hoặc rút hồ sơ, đồng thời hỗ trợ các trường có thể tổng hợp và phân loại
để đưa ra danh sách sinh viên đủ điều kiện trúng tuyển.
Page | 2
Mục lục
Page | 3
Page | 4
CHƯƠNG 1. Xác định yêu cầu bài toán
1.
Giới thiệu đề tài
Trong kỳ thi THPT và xét tuyển ĐH - CĐ 2015 vừa qua, vấn đề nộp
hồ sơ đăng ký xét tuyển hay rút hồ sơ đã gây khó khăn cho các thí sinh và
đặc biệt là các thí sinh ở các tỉnh khác, do chỉ có thể nộp hồ sơ qua bưu điện
hoặc trực tiếp tại trường nên đã dẫn đến việc nhiều thí sinh phải bỏ nhiều
thời gian và chi phí cho việc ăn ở để có thể nộp hoặc rút hồ sơ. Vấn đề này
gây khó khăn cho gia đình và các thí sinh nhất là các thí sinh có hoàn cảnh
khó khăn - làm hạn chế tiêu chí khi tổ chức thi năm nay là tổ chức sao cho
hạn chế chi phí và hỗ trợ tốt cho các thí sinh.
Nhóm em có ý tưởng xây dựng một hệ thống hỗ trợ việc đăng ký nộp
hồ sơ xét tuyển hoặc rút hồ sơ, đồng thời hỗ trợ các trường có thể tổng hợp
và phân loại để đưa ra danh sách sinh viên đủ điều kiện trúng tuyển.
2.
Mục đích
•
•
•
•
•
3.
Phân loại nhóm người dùng
•
•
•
4.
Tạo và xác thực tài khoản của sinh viên.
Quản lý được điểm thi, số nguyện vọng đã đăng ký của sinh viên
Hỗ trợ các trường trong việc tổng hợp và phân loại học sinh.
Tổng hợp các thông tin , kết quả tuyển sinh
Sinh viên có thể đăng ký nộp hồ sơ online.
Admin (Bộ giáo dục)
Sinh viên
Trường đại học
Yêu cầu về chức năng cho từng người dùng
•
Admin:
o Tạo tài khoản cho các trường, tài khoản cho sinh viên.
Page | 5
o Quản lý điểm và học bạ của sinh viên
o Quản lý việc đăng ký tiêu chí xét tuyển của từng trường.
Sinh viên:
o Nộp hoặc rút hồ sơ online
o Xem thông tin tổng hợp kết quả xét tuyển từng ngày
o Tìm kiếm các nguyện vọng phù hợp
• Trường đại học:
o Đăng ký tiêu chí đánh giá xét tuyển.
o Quản lý và thay đổi các tiêu chí trong thời gian cho phép.
o Kiểm tra và lấy danh sách sinh viên đăng ký hay danh sách trúng
•
tuyển.
o Hỗ trợ việc nhận hồ sơ trực tiếp tại các trường.
5.
Yêu cầu phi chức năng
•
•
Đảm bảo tính chính xác trong việc phân tích và xử lý kết quả
Nhanh chóng xử lý các thông tin.
•
Các thông tin về kết quả thi và kết quả xét tuyển không bị thay đổi bới
các cá nhân không có nhiệm vụ.
Page | 6
CHƯƠNG 2. Phân tích thiết kế hệ thống
1.
Thiết kế lớp chi tiết
Model là package chứa các lớp Entity để chứa dữ liệu trong hệ thống
DAO là package chứa các lớp nhằm nhiệm vụ kết nối với CSDL
Page | 7
2.
Thiết kế CSDL
a. Admin
Bảng “Admin” lưu trữ thông tin về các tài khoản admin quản lý hệ thống, ở
đây bao gồm các các tài khoản quản lý phia các trường đại học
ST
T
1
Tên trường
Kiểu
IdAdmin
Char
Độ
rộng
10
2
Password
Char
20
3
Name
4
IdUniversity
nVarCha 50
r
Char
10
5
6
7
DateOfBirth
Date
IdentifiedNumber Char
Email
VarChar
8
Address
Text
9
10
PhoneNumber
Type
Char
smallint
12
50
12
Chú thích
Mã số của các admin đồng
thời là tên tài khoản truy
cập vào hệ thống
Mật khẩu của các tài khoản
admin
Tên của admin
Tương ứng với các admin
quản lý của các trường đại
học, đối với các admin
quản lý hệ thống thì trường
này để NULL
Ngày sinh của admin
Số CMND của admin
Địa chỉ email của admin để
liên lạc
Địa chỉ nhà hoặc nơi ở của
admin
Số điện thoại của admin
Phân cấp của admin
b. Student
Bảng “Student” lưu thông tin về các thí sinh đã tham gia kỳ thi tốt nghiệp
THPT
Page | 8
ST
T
1
Tên trường
Kiểu
IdStudent
Char
Độ
rộng
10
2
Password
Char
20
3
StudentName
4
5
6
nVarCha 50
r
DateOfBirth
Date
IdentifiedNumber Char
12
Email
VarChar 50
7
Address
Text
8
9
10
PhoneNumber
Pluspoint
Section
Char
Float
Smallint
12
Chú thích
Mã số thi của các thí sinh
đồng thời là tên tài khoản
truy cập vào hệ thống
Mật khẩu của các tài khoản
Student
Tên của student
Ngày sinh của student
Số CMND của student
Địa chỉ email của student
để liên lạc
Địa chỉ nhà hoặc nơi ở của
student
Số điện thoại của student
Điểm cộng của thí sinh
Vùng của thí sinh
c. Subject
Bảng “Subject” lưu thông tin về các môn có trong kỳ thi tốt nghiệp THPT
ST
T
1
2
Tên trường
IdSubject
SubjectName
Kiểu
Độ
rộng
Char
10
nVarCha 100
r
Chú thích
Mã số môn thi
Tên môn thi
d. Result
Bảng “Result” lưu thông tin về kết quả thi của mỗi thí sinh ứng với từng
môn
ST
T
1
2
3
Tên trường
Kiểu
IdStudent
IdSubject
Result
Char
Char
Float
Độ
rộng
10
10
Chú thích
Mã số của mỗi thí sinh
Mã môn thi
Điểm thi của thí sinh với
môn thi
Page | 9
e. University
Bảng “University” lưu trữ thông tin về trường đại học
ST
T
1
2
Tên trường
IdUniversity
UniversityName
Kiểu
Độ
rộng
Char
6
nVarCha 100
r
Chú thích
Mã số của trường đại học
Tên trường đại học
f. NguyenVong
Bảng “Aspiration” lưu trữ thông tin vể các nguyện vọng của trường đại học
ST
T
1
2
3
Tên trường
4
Number
Độ
rộng
Char
10
Char
6
nVarCha 100
r
Smallint
5
Description
nText
6
Enable
Int
IdAspiration
IdUniversity
Name
Kiểu
Chú thích
Mã số của nguyện vọng
Mã số trường đại học
Tên của nguyện vọng
Số lượng sinh viên mà
trường xét tuyển cho
nguyện vọng này
Miêu tả thông tin về
nguyên vọng
Trạng thái của nguyện
vọng. Có 3 giá trị chính là:
Chấp nhận, đợi, từ chối.
Các giá trị này sẽ chỉ có
Admin cao nhất mới thay
đổi được
g. TieuChi
Bảng “Criterion” lưu trữ thông tin về các tiêu chí. Mỗi nguyện vọng có các
tiêu chí xét tuyển.
ST
T
1
Tên trường
Kiểu
IdCriterion
Char
Độ
rộng
10
Chú thích
Mã số của nguyện vọng
Page | 10
2
3
4
5
6
IdSubject
IdAspiration
MinPoint
Scale
Grade
Char
Char
Float
Float
Int
7
Type
Int
10
10
Mã môn thi
Mã số của nguyện vọng
Điểm sàn với môn này
Trọng số điểm
Lớp học, sử dụng cho tiêu
chí là xét học bạ
Là xét học bạ hay là xét điểm
thi
h. Học bạ
Bảng “SchoolReport” lưu trữ thông tin về học bạ của học sinh. Mỗi học bạ
lại bao gồm các chi tiết học bạ
ST
T
1
2
Tên trường
Kiểu
IdSchoolReport
School
3
4
Grade
Idstudent
Char
Nvarcha
r
Int
Char
Độ
rộng
10
100
12
Chú thích
Mã số của học bạ
Tên trường học
Lớp học
Mã số sinh viên của học bạ
i. Học bạ chi tiết
Bảng “SchoolReportDetail” lưu trữ thông tin về chi tiết học bạ của học sinh.
ST
T
1
2
3
Tên trường
Kiểu
IdSchoolReport
IdSubject
Point
Char
Char
Float
Độ
rộng
10
3
Chú thích
Mã số của học bạ
Mã môn học
Điểm tổng kết
j. Đăng ký
Bảng “Register” lưu trữ thông tin đăng ký tuyển sinh của các thí sinh
ST
T
1
2
3
Tên trường
Kiểu
IdSudent
IdAspiration
Point
Char
Char
Float
Độ
rộng
12
12
Chú thích
Mã sinh viên
Mã nguyện vọng
Điểm tổng kết
Page | 11
3. Mối liên hệ giữa các bảng
Page | 12
Page | 13
CHƯƠNG 3. Công nghệ sử dụng
1.
Bootstrap
Bootstrap là Front-end framework, là một bộ sưu tập miễn phí các công cụ để tạo
ra các trang web và các ứng dụng web. Nó chứa HTML và CSS dựa trên các mẫu
thiết kế cho kiểu chữ, hình thức, các nút, chuyển hướng và các thành phần giao
diện khác, cũng như mở rộng JavaScript tùy chọn.
Bootstrap được phát triển bởi Mark Otto và Jacob Thornton tại Twitter như một
framework, một công cụ để phục vụ công việc nội bộ của Twitter. Trước khi phát
triển Bootstrap, có nhiều thư viện khác nhau đã được sử dụng để phát triển giao
diện, dẫn đến mâu thuẫn, xung đột. Bootstrap ra đời để khắc phục những yếu tố
này, cũng như giúp các nhà phát triển, lập trình tại Twitter có thể triển khai công
việc nhanh hơn, tiện lợi và đồng bộ hơn.
Bootstrap tương thích với các phiên bản mới nhất của tất cả các trình duyệt
nổi tiếng trên thế giới như Chrome, Firefox, IE, Opera....
Kể từ phiên bản 2.0 trở lên nó cũng hỗ trợ Responsive Web Design. Thiết kế và bố
trí của các trang web tự động điều chỉnh, tự động tương thích các thiết bị được sử
dụng (máy tính để bàn, máy tính bảng, điện thoại di động).
2.
JSF Primefaces
JavaServer Faces là gì?
Công nghệ Java Server Faces là một UI framework cho việc xây dựng các ứng
dụng web chạy trên Java server và thay thế UI phía sau cho client. Các thành phần
chính của công nghệ JSF bao gồm:
Page | 14
•
Một API và các bổ sung tham khảo cho: thay thế các thành phần UI và quản
lý trạng thái của chúng; xử lý các sự kiện, kiểm tra phía server và chuyển đổi
dữ liệu; định nghĩa navigation của trang; hỗ trợ quốc tế hóa và accessibility;
và cung cấp khả năng mở rộng cho tất các đặc điểm này.
•
Một thư viện thẻ tùy biến JavaServer Pages (JSP) cho việc định nghĩa các
thành phần UI trong một trang JSP
Mô hình lập trình được định nghĩa tốt này và thư viện thẻ thành phần UI tạo kỹ
thuật dễ dàng tải việc xây dựng và sửa chữa các ứng dụng web với các UI ở phía
server. Với sự tổ chức nhỏ đó, bạn có thể:
•
Điều khiển việc tạo ra các sự kiện phía client từ việc viế mã ứng dụng phía
server
•
Ánh xạ các thành phần UI tren một trang cho dữ liệu phía server
•
Khởi dựng một UI với các thành phần có thể tái sử dụng và có khả năng mở
rộng
•
Lưu trữ và phục hồi trạng thái UI ngay sau các request
Phần mềm yêu cầu
Để xây dựng, deploy và chạy các ứng dụng JSF bạn cần một môi trường deploy
chẳng hạn Java Web Software Development Pack và Java 2 Platform, Standard
Edition (J2SE) SDK 1.3 trở lên. Đồng thời download bổ sung công nghệ Java
Server Faces. Có thể download các phần mềm cần thiết tại các link dưới đây
•
/>
Page | 15
•
/>
•
/>
Đặc điểm của JSF
Một trong những lợi điểm lớn nhất của công nghệ JSF là nó cho phép một sự phân
chia rạch ròi giữa behavior (cách xử lý) và presentation (cách trình bày). Xây dựng
ứng dụng web với công nghệ JSP lưu trữ từng phần của việc phân chia này. Tuy
nhiên, một ứng dụng JSP không thể ánh xạ những request HTTP thành những xử
lý sự kiện các thành phần cụ hể hoặc quản lý các thành phần UI như những đối
tượng có trạng thái trên server. Công nghệ JSF cho phép bạn xây dựng các ứng
dụng Web nhằm bổ sung việc phân chia rõ ràng hơn behavior và presentation được
cho phép bởi kiến trúc UI.
Việc phân chia luận lý từ presentation cũng cho phép mỗi thành viên của một
nhóm phát triển ứng dụng Web tập trung vào những phần trong tiến trình phát triển
của họ, và cung cấp một mô hình lập trình đơn giản để liên kết những phần đó với
nhau. Một mục tiêu quan trọng khác của công nghệ JSF là cung cấp các mức độ
thân thuộc các thành phần UI và các khái niệm tầng Web mà không giới hạn bạn
trong một công nghệ scripting cụ thể hoặc một ngôn ngữ đánh dấu. Trong khi công
nghệ JSF bao gồm một thư viện thẻ tùy biến JSP dùng thay thế các thành phần trên
trang JSP, API của công nghệ JSP được phân lớp trực tiếp trên đỉnh của
JavaServlet API. Điều này cho phép bạn làm được vài điều: sử dụng công nghệ
trình bày khác bên cạnh JSP, tạo ra những thành phần tùy biến của bản thân bản
trực tiếp từ những lớp thành phần, và tạo ra luồng xuất cho những thiết bị client
khác
nhau.
Quan trọng hơn hết, công nghệ JSF cung cấp một kiến trúc dành cho việc quản lý
Page | 16
trạng thái các thành phần, xử lý dữ liệu thành phần, kiểm tra nhập liệu của người
dùng và xử lý các sự kiện. Trong hầu hết những phần đó, các ứng dụng JSF cũng
tương tự như bất kỳ các ứng dụng Java Web khác, Chúng chạy trên một Java
Servlet container, và thông thường chứa:
•
Các thành phầns JavaBean (được gọi là những mô hình đối tượng trong công
nghệ JSF)
•
Các event listener
•
Các trang, chẳng hạn như JSP
•
Các lớp helper phía server, chẳng hạn như các bean truy cập dữ liệu
Thêm vào những thành phần ở trên, một ứng dụng JSF cũng có:
•
Một thư viện thẻ tùy biến thực thi các thành phần UI trên một trang
•
Một thư viện thẻ tùy biến thay thế các xử lý sự kiện, kiểm tra và những hành
động khác
•
Những thành phần UI thay thế trạng thái các đối tượng trên server
•
Các kiểm tra, xử lý sự kiện, và xử lý navigation
Mỗi ứng dụng JSF phải bao gồm một thư viên thẻ tùy biến nhằm định nghĩa các
thẻ thay thế các thành phần UI và một thư viện thẻ tùy biến nhằm thay thế các hành
động cốt lõi khác, chẳng hạn như các kiểm tra và các xử lý sự kiện. Cả hai loại thư
viện thẻ này được cung cấp bởi việc bổ sung JSF.
Page | 17
Thư viện thẻ tùy biến xóa bỏ những gì cần thiết cho các thành phần UI trong
HTML hoặc ngôn ngữ đánh dấu khác, kết quả là những thành phần tái sử dụng
hoàn toàn. Và thư viện core tạo nên sự dễ dàng để đăng ký các sự kiện, kiểm tra và
những hành động khác. Thư viện thẻ tùy biến có thể là thư viện thẻ HTML cơ bản
chứa cùng với công nghệ JSF tham khảo bổ sung, hoặc bạn có thể định nghĩa thư
viện thẻ của riêng mình nhằm tạo ra các thành phần tùy biến hoặc xuất ra kiểu khác
HTML.
Cuối cùng, công nghệ JSF cho phép bạn chuyển đổi và kiểm tra dữ liệu trên những
thành phần riêng biệt và thông báo bất kỳ lỗi gì trước khi dữ liệu phía server được
cập nhật.
Vai trò của Framework
Bởi vì việc phân chia công việc được cho phép bởi thiết kế công nghệ JSF, việc
phát triển và sửa chữa các ứng dụng JSF có thể xử lý dễ dàng và nhanh chóng. Các
thành viên củamột nhóm phát triển thông thường bao gồm một danh sách dưới đây.
Trong nhiều nhóm, các nhà phát triển riêng biệt đóng nhiều hơn một trong những
vai trò dưới đây
•
PageAuthors: người sử dụng ngôn ngữ đánh dấu, giống như HTML, để tạo
ra các trang cho ứng dụng Web. Khi sử dụng framework công nghệ JSF,
page authors sẽ hầu hết sử dụng thư viện thẻ
Page | 18
•
Application Developers: người lập trình mô hình các thành phần, các xử lý
sự kiện, các kiểm tra, và navigation của trang. Application developer có thể
cung cấp các lớp helper mở rộng
•
Component Writers: người có kinh nghiệm lập trình UI và đề nghị tạo ra các
thành phần tùy biến sự dụng ngôn ngữ lập trình.
•
Những người này có thể tạo ra các thành phần của riêng họ trực tiếp từ các
lớp thành phần, hoặc họ có thể kế thừa các thành phần chuẩn cung cấp bởi
công nghệ JSF
•
Tool Verdors: người cung cấp các công cụ nhằm tạo ra công nghệ JSF xây
dựng UI phía server dễ dàng hơn. Những thành viên chính của công nghệ
JSF sẽ là page authors và application developers.
Các thành phần chính
Như hầu hết các công nghệ, Faces có những quy định của nó nhằm đưa ra các khái
niệm cơ bản cho những đặc điểm mà nó cung cấp. Chúng tôi đang nói vế những
elements như các component UI, validator và rederer. Bạn có thể có một ý kiến tốt
về chúng là cái gì, nhưng qui định viết các ứng dụng Faces, bạn phải hiểu được
chúng là gì trong thế giới JSF. Phần này, chúng tôi trình bày về những khái niệm
cốt lõi và giải thích mối quan hệ của chúng với những phần khác. Có tám khái
niệm khi bạn phát triển các ứng dụng JSF
•
UI Component (còn gọi là một control hay đơn giản là component) : một đối
tượng có trạng thái, được chứa trên server, cung cấp các chức năng cụ thể để
tương tác với một người dùng cuối. UI component là những JavaBean với
các thuộc tính, phương thức, sự kiện. Chúng được tổ chức thành một cây các
component thường hiển thị như một trang
Page | 19
•
Rederer: Trả lời cho việc hiển thị một UI component và trao đổi một dữ liệu
nhập của user vao giá trị của component. Renderer có thể được thiết kế để
làm việc với một hoặc nhiều UI component, và một UI component có thể tập
hợp với nhiều renderer khác nhau.
•
Validator: Trả lời cho việc chắc chắn rằng giá trị nhập vào bởi user được
chấp nhận. Một hoặc nhiều validator có thể được tập hợp với một UI
component
•
Backing beans: Các Java Bean xác định tập hợp các giá trị từ các UI
component và bổ sung các phương thức listener cho event. Chúng cũng có
thể nắm giữ các tham chiếu đến các UI component
•
Converter: Chuyển đổi một giá trị của component thành và từ một chuỗi để
hiển thị. Một UI component có thể được tập hợp với một converter duy nhất.
•
Event/listener: JSF sử dụng mô hình event/listener JavaBeans (cũng được sử
dụng cho Swing). UI component (và những đối tượng khác) tạo ra các event,
và các listener có thể đăng ký để xử lý các sự kiện
•
Messages: Thông tin hiển thị cho user. Chỉ bất kỳ phần ứng dụng nào
(backing beans, validators, converter …) có thể tạo ra thông tin hoặc thông
điệp lỗi nhằm hiển thị cho user
•
Navigation: Khả năng di chuyển từ một trang đến trang khác. JSF có một hệ
thống navigation mạnh mẽ tích hợp với những event listeners.
Vòng đời của việc xử lý request
Chúng ta nói về lập trình Web đơn giản thế nào với các components, events,
listeners, và chín mươi khác niệm khác nhau. Vì thế tại sao phần này nói về xử lý
Page | 20
request. Trong khi bạn tìm hiểu frameword bên dưới xử lý request của Servlet API,
sẽ phân tích Faces xử lý request như thế nào. Điều này cho phép bạn xây dựng các
ứng dụng tốt hơn bởi vì bạn sẽ biết chính xác cái gì được đặt ở đâu và khi nào.
•
Bước 1 - Restore View: Hiển thị thay thế tất cả các component tạo nên một
trang cụ thể. Nó có thể lưu trữ trên client (thông thường trong một field ẩn
trên trình duyệt) hoặc trên server (thông thường trong session)
•
Bước 2 - Apply Request Values: Mỗi UI component chấp nhận dữ liệu nhập
có một giá trị được submit thay thế giá trị dữ liệu gốc từ user. Trong suốt
bước này, framework ấn định giá trị được submit dựa trên tham số gởi đi
trong request. Quá trình này gọi là decoding.
•
Bước 3 - Process Validation: trong bước này, JSF đặt cây component và hỏi
mỗi component có chắc chắn rằng giá trị submit là có thể chấp nhận không.
Bởi vì giá trị được submit của mỗi component nhập vào được cập nhật bởi
bước 2, component bây giờ có hầu hết dữ liệu hiện thời của user. Trước khi
validation xảy ra, giá trị được submit được chuyển đổi, bằng mỗi converter
đã đăng ký cho component hoặc converter mặc định. Validation là sau khi
xử lý trực tiếp bằng component hoặc công bố cho một hoặc nhiều validator.
•
Bước 4 - Update Model Values: Bây giờ chúng ta đã chắc chắn về giá trị cục
bộ của các component đã được cập nhật và chính xác và đúng kiểu, có thể
chuyển đi với bất kỳ bean nào được tập hợp hoặc mô hình các đối tượng.
Bởi vì các đối tượng được tập hơp với các component thông qua các phát
biểu JSF EL, đây là nơi các phát biểu này được kiểm tra và các thuộc tính
được cập nhật dựa trên giá trị cụ bộ của component.
Page | 21
•
Bước 5 - Invoke Application: Bây giờ các bean cần thiết và mô hình các đối
tượng được cập nhật, chúng ta có thể đi xuống việc công bố thông tin. Trong
bước này, JSF quảng bá các sự kiện cho bước này đối với bất kỳ listener nào
đã được đăng ký.
•
Bước 6 - Render Response: Tại thời điểm này, tất cả xử lý bới framework và
ứng dụng đã trải qua. Tất cả chờ được gởi đi trả lời cho user, và đây là mục
tiêu chính của bước này. Mục tiêu thứ hai là lưu lại trạng thái hiển thị để nó
có thể được phục hồi trong bước Restore View nếu user yêu cầu lại. Trạng
thái hiển thị lưu lại trong bước này bởi vì thường thì hiển thị được lưu trên
client, vì thế nó là một phần của response nhằm gởi trả cho user. Trong
trường hợp này, JSF đang lưu trạng thái trên server, vì thế hiển thị hầu hết
được lưu trữ trong session của user.
•
Ưu-Nhược Điểm Của JSF Ưu điểm dùng Dạng Chuẩn Centralized filebased configuration Thay vì code cứng các thông tin dữ liệu vào chương
trình Java thì nhiều giá trị JSF được thể hiện dưới dạng XML hoặc các tập
tin đặc tả. Do đó các thay đổi chỉ cần chỉnh sửa trên 1 tập tin duy nhất mà
không cần chỉnh sửa code hay recompiling code Consistent Approach.
Khuyến khích cách làm đồng bộ, thống nhất của MVC trong xuyên suốt ứng
dụng.
•
Ưu-Nhược Điểm Của JSF Khuyến điểm dùng RequestDispatcher Bigger
learning curve Worse documentation.
•
Ưu-Nhược Điểm Của JSF Khuyến điểm dùng Dạng Chuẩn Less Transparent
Với các ứng dụng JSF, có rất nhiều việc thực thi ngoài lề so với các ứng
dụng Web viết bằng Java bình thường. Vì vậy nên: Khó hiểu Khó đánh giá
Page | 22
Undeveloped tool support Có nhiều IDEs hỗ trợ mạnh cho standard servlet
và JSP, hỗ trợ cho JSF chỉ mới bắt đầu xuất hiện.
•
Ưu-Nhược Điểm Của JSF Ưu điểm So Với Struts Custom components JSF
kết hợp các GUIs phức tạp vào trong một component đơn có thể quản lý một
các dễ dàng và có tính liên kết. Struts thì không Support for other display
technologies JSF không giới hạn đối với HTML và HTTP; Struts thì có.
Access to beans by name JSF cho phép bạn đặt tên cho beans, sau đó gọi tên
các beans trong forms. Struts có quá trình phức tạp với nhiều bước trung
gian mà bạn phải nhớ form nào là đầu vào của hành động nào.
•
Ưu-Nhược Điểm Của JSF Ưu điểm So Với Struts JSF expression language
(ngôn ngữ mở rộng của JSF dùng để binding giữa các thành phần của
component với các thành phần của backing bean đó) ngắn gọn và mạnh hơn
Struts bean: viết tag Simpler controller and bean definitions JSF không đòi
hỏi các lớp bean và controller của bạn phải kế thừa tứ bất kỳ lớp cha(vd:
Action) hay phương thức(vd: execute) nào. Struts thì bắt buộc. Simpler
config file and overall structure Tập tin faces-config.xml dễ dùng hơn tập tin
struts-config.xml file.
•
Ưu-Nhược Điểm Của JSF Khuyết điểm So Với Struts Confusion vs. file
names Trang thực sự dùng trong JSF có đuôi .jsp . Nhưng trong URLs hiển
thị đuôi .faces hoặc .jsf. Nên khi gọi trực tiếp sẽ bị exception Khó truy cập
đến trang non-faces trong tập tin faces-config.xml Self-submit approach
Trong Struts, form (vd: blah .jsp ) và handler (blah .do ) có URLs khác nhau;
trong JSF thì giống nhau.
Page | 23
•
Ưu-Nhược Điểm Của JSF Khuyết điểm So Với Struts Less current tool
support Struts được hỗ trợ bởi nhiều IDEs; JSF thì chưa Much weaker
automatic validation Struts kiểm tra tính hợp lệ của địa chỉ email, mã thẻ tín
dụng, regular expressions,và nhiều thứ nữa. JSF chỉ kiểm tra giá trị rỗng,
chiều dài và giới hạn các số POST only JSF không hỗ trợ phương thức GET
nên không thể bookmark các trang kết quả.
Mục đích ra đời của JSF
8 mục tiêu thiết kế sau là lí do cho sự ra đời của JSF:
1. Tạo ra một bộ khung gồm các thành phần giao diện người dùng chuẩn
(standard GUI component framework) nhằm giúp cho các công cụ phát
triển dễ dàng hơn cho người dùng trong việc tạo GUI chất lượng cao đồng
thời quản lí các kết quả của GUI với xử lí thực thi của chương trình.
2. Định ra một tập các lớp cơ sở của Java (lightweight Java base classes) biểu
diễn cho các thành phần UI, trạng thái mỗi thành phần, và các sự kiện đầu
vào. Những lớp này sẽ xử lí những vấn đề liên quan đến chu kì sống của
GUI, đặc biệt là quản lí trạng thái trong suốt chu trình sống của một trang
của thành phần GUI đó.
3. Cung cấp một tập các thành phần GUI chung, bao gồm các thành
phần HTML form input. Những thành phần này sẽ được dẫn xuất từ tập đơn
giản các lớp cơ sở (đề cập ở #1) đề từ đó có thể định ra các thành phần mới.
Page | 24
4. Cung cấp một mô hình JavaBeans để có thể truyền đi (dispatch) các sự kiện
từ các GUI controls phía máy khách đến các xử lí hiện thực cụ thể từ phía
ứng dụng máy chủ.
5. Định ra các hàm APIs để kiểm chứng dữ liệu nhập, bao gồm hỗ trợ kiểm
chứng từ phía máy chủ.
6. Chỉ định một mô hình để có thể đa ngôn ngữ hóa hay địa phương hóa các
GUI.
7. Khởi tạo tự động dữ liệu ra phù hợp cho máy khách đích, dựa vào mọi dữ
liệu cấu hình ở máy khách đó, bao gồm cả dựa vào phiên bản trình duyệt, ví
dụ.
8. Việc khởi tạo tự động dữ liệu ra còn kèm theo các đòi hỏi về hỗ trợ người
dùng (accessibility), được qui định bởi WAI.
Các phiên bản của JSF
JSF 1.0 - bản miêu tả kĩ thuật của JSF chính thức đầu tiên
JSF 1.1 - bản sửa lỗi chính thức. Không có thay đổi về kĩ thuật hay HTML
renderkit.
JSF 1.2 - bản chính thức chuẩn bị ra mắt và được miêu tả bởi JSR 252.
những cải tiến để cung cấp những giải pháp tạm thời cho vấn đề trộn
lẫn nội dung (content-interweaving problem) được nói đến
tại />
Page | 25