Tải bản đầy đủ (.pdf) (98 trang)

Sử dụng công nghệ JSP xây dựng module quản lý chấm công nhân viên cho công ty phần mềm 2NF – software hà nội

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.42 MB, 98 trang )

LỜI CẢM ƠN
Sau hơn hai tháng tìm hiểu và thực hiện đề tài " Sử dụng công nghệ JSP xây
dựng module quản lý chấm công nhân viên cho công ty phần mềm 2NF – SoftWare
Hà Nội " em 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 nhận được rất nhiều sự giúp đỡ, quan tâm đóng góp ý kiến và chỉ bảo
nhiệt tình của thầy cô, bạn bè và gia đình.
Em xin gửi lời cảm ơn chân thành đến cô Trần Thị Ngân, Phó trưởng bộ
môn Khoa học máy tính, Khoa Công nghệ thông tin, Trường Đại học Công nghệ
thông tin và Truyền Thông, Đại học Thái Nguyên, cùng các anh bên công ty phần
mềm 2NF – SoftWare Hà Nội đã tận tình hướng dẫn, chỉ bảo em trong suốt quá
trình làm đồ án.
Em cũng xin chân thành cảm ơn các thầy cô giáo Trường Đại Học Công
nghệ thông tin và Truyền Thông - Thái Nguyên đã tận tình giảng dạy, trang bị cho
em những kiến thức quý báu trong những năm học vừa qua.
Cuối cùng, em xin chân thành cảm ơn tới bạn bè, gia đình, đã luôn tạo điều
kiện, quan tâm, giúp đỡ em trong suốt quá trình học tập và làm đồ án.
Đề 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 thiếu sót. Em rất mong nhận được sự thông cảm và đóng góp ý kiến của
các thầy cô và các bạn.
Thái Nguyên, tháng 06 năm 2016
Sinh viên thực hiện
Đoàn Văn Hiển

1


LỜI CAM ĐOAN
Em xin cam đoan rằng số liệu và kết quả nghiên cứu trong đồ án này là
trung thực và không trùng lặp với các đề tài khác. Em cũng xin cam đoan rằng mọi
sự giúp đỡ cho việc thực hiện đồ án này đã được cảm ơn và các thông tin trích dẫn
trong đồ án đã được chỉ rõ nguồn gốc.


Sinh viên
Đoàn Văn Hiển

2


MỤC LỤC
LỜI CẢM ƠN ........................................................................................................ 1
LỜI CAM ĐOAN .................................................................................................. 2
MỤC LỤC.............................................................................................................. 3
DANH MỤC HÌNH ẢNH ..................................................................................... 6
LỜI MỞ ĐẦU ........................................................................................................ 7
CHƯƠNG I: TỔNG QUAN VỀ CÔNG NGHỆ JSP............................................. 8
1.1 So sánh JSP với các công nghệ khác ............................................................ 8
1.1.1 JSP với ASP ........................................................................................... 8
1.1.2 JSP với PHP ........................................................................................... 9
1.2 Các thành phần script của JSP ...................................................................... 9
1.2.1 Các biến được định nghĩa sẵn trong JSP .............................................. 10
1.2.2 Biểu thức trong JSP.............................................................................. 12
1.2.3 JSP scriptlets......................................................................................... 13
1.2.4 Khai báo trong JSP ............................................................................... 13
1.3 Xử lý nhúng và chuyển hướng giữa các trang ............................................ 13
1.3.1 Nhúng file vào trang với chỉ thi include............................................... 13
1.3.2 Sử dụng thẻ <jsp:include>.................................................................... 14
1.3.3 Chuyển tham số bằng thẻ <jsp:param> ................................................ 14
1.3.4 Chuyển tiếp đến trang khác với thẻ <jsp:include>............................... 15
1.3.5 Thẻ jsp:plugin....................................................................................... 16
1.3.6 Thẻ jsp:fallback .................................................................................... 17
1.3.7 Chuyển trang ........................................................................................ 18
1.3.8 Chuyển hướng sang trang mới với sendRedirect()............................... 20

1.4 SERVLET................................................................................................... 20
1.4.1 Khái niệm ............................................................................................. 20
1.4.2 Các phương thức xử lý cơ bản của Servlet........................................... 21
3


1.4.3 Chu trình sống của Servlet và JSP........................................................ 24
1.4.4 Ưu và khuyết điểm của JSP so với Servlet........................................... 26
1.5 Tag Libraries............................................................................................... 28
1.5.1 Khái niệm ............................................................................................. 28
1.5.2 Cách dùng các tags trong JSP............................................................... 29
1.5.3 Định nghĩa các tag................................................................................ 32
CHƯƠNG II: KHẢO SÁT, PHÂN TÍCH THIẾT KẾ HỆ THỐNG ................... 40
2.1 Giới thiệu chung ......................................................................................... 40
2.2 Khảo sát hiện trạng quản lý chấm công...................................................... 41
2.2.1 Các chức năng chính cần quản lý......................................................... 41
2.2.2 Quy trình quản lý của hệ thống hiện tại ............................................... 41
2.2.3. Quy trình tổng hợp báo cáo ................................................................. 44
2.2.4 Đánh giá hệ thống hiện tại.................................................................... 45
2.2.5. Yêu cầu đặt ra cho hệ thống mới......................................................... 46
2.3. Phân tích thiết kế hệ thống......................................................................... 46
2.3.1 Xác định tác nhân ................................................................................. 46
2.3.2 Biểu đồ UseCase .................................................................................. 48
2.3.3 Biểu đồ tuần tự ..................................................................................... 50
2.3.4 Biểu đồ hoạt động................................................................................ 55
2.3.5 Biểu đồ lớp ........................................................................................... 57
2.4 Thiết kế cơ sở dữ liệu hệ thống .................................................................. 58
2.4.1 Mô tả dữ liệu ........................................................................................ 58
2.4.2 Mô tả chi tiết các bảng dữ liệu ............................................................. 58
2.4.3 Sơ đồ quan hệ ....................................................................................... 59

CHƯƠNG III: XÂY DỰNG CHƯƠNG TRÌNH ................................................ 60
3.1 Các phần mềm cần thiết.............................................................................. 60
3.2 Các chức năng chính................................................................................... 60
3.3 Giao diện chương trình ............................................................................... 61
4


3.3.1 Giao diện trang chủ .............................................................................. 61
3.3.2 Giao diện đăng nhập............................................................................. 61
3.3.3 Giao diện trang quản lý hồ sơ nhân viên.............................................. 62
3.3.4 Giao diện trang quản lý chấm công...................................................... 63
3.3.5 Giao diện trang tổng kết hàng tháng .................................................... 64
3.3.6 Giao diện trang tổng kết cuối năm ....................................................... 65
KẾT LUẬN.......................................................................................................... 66
TÀI LIỆU THAM KHẢO.................................................................................... 67

5


DANH MỤC HÌNH ẢNH
Hình 2.1 Sơ đồ hệ thống công ty.......................................................................... 40
Hình 2.2 Biểu đồ UseCase tổng quát ................................................................... 48
Hình 2.3 Biểu đồ UseCase quản trị hệ thống (Administrator)............................. 48
Hình 2.4 Biểu đồ UseCase quản lý hồ sơ nhân viên ............................................ 49
Hình 2.5 Biểu đồ UseCase quản lý chấm công.................................................... 49
Hình 2.6 Biểu đồ UseCase quản lý người dùng................................................... 50
Hình 2.7 Biểu đồ tuần tự chức năng Đăng nhập .................................................. 50
Hình 2.8 Biểu đồ tuần tự chức năng đăng ký người dùng ................................... 51
Hình 2.9 Biểu đồ tuần tự chức năng quản lý hồ sơ nhân viên ............................. 52
Hinh 2.10 Biểu đồ tuần tự chức năng quản lý chấm công ................................... 52

Hình 2.11 Biểu đồ tuần tự chức năng quản lý người dùng .................................. 53
Hình 2.12 Biểu đồ tuần tự chức năng tìm kiếm nhân viên................................... 53
Hình 2.13 Biểu đồ tuần tự chức năng tổng kết chi tiết công hàng tháng ............. 54
Hình 2.14 Biểu đồ tuần tự chức năng tổng kết chi tiết công cuối năm................ 54
Hình 2.15 Biểu đồ hoạt động chức năng Đăng nhập ........................................... 55
Hình 2.16 Biểu đồ hoạt động chức năng quản lý hồ sơ nhân viên....................... 55
Hình 2.17 Biểu đồ hoạt động chức năng quản lý chấm công .............................. 56
Hình 2.18 Biểu đồ hoạt động chức năng quản lý người dùng ............................. 56
Hình 2.19 Sơ đồ lớp ............................................................................................. 57
Hình 2.20 Sơ đồ quan hệ quản lý chấm công....................................................... 59
Hình 3.1 Giao diện trang chủ ............................................................................... 61
Hình 3.2 Giao diện trang đăng nhập .................................................................... 62
Hình 3.3 Trang quản lý hồ sơ nhân viên .............................................................. 62
Hình 3.4 Giao diện trang chấm công ................................................................... 63
Hình 3.5 Giao diện trang tổng kết hàng tháng ..................................................... 64
Hình 3.6 Giao diện trang tổng kết cuối năm ........................................................ 65
6


7


LỜI MỞ ĐẦU
Xã hội ngày càng phát triển, công nghệ thông tin trở thành người bạn đồng
hành không thể thiếu tạo nên sự phát triển đó. Nó đã giúp cho chúng ta giải quyết
rất nhiều vấn đề một cách nhanh chóng mà tưởng chừng như ta không thể nào làm
được.
Thực tế cho thấy, ngày càng có nhiều công ty, doanh nghiệp mọc lên. Mỗi
công ty, doanh nghiệp đều muốn tạo cho mình một cách thức tổ chức, quản lý khoa
học và hiệu quả. Một trong những công việc được quan tâm đó là công tác quản lý

chấm công. Quản lý chấm công là một tác vụ thật sự cần thiết và diễn ra hàng
ngày trong các doanh nghiệp, nó quyết định không nhỏ đến sự thành công của mỗi
công ty, doanh nghiệp.
Nhằm mục đính giúp cho công ty, doanh nghiệp kiểm soát được hoạt động,
lịch làm việc, giờ làm việc, công tác của các nhân viên, giảm được sự quản lý khó
khăn, phức tạp trên giấy tờ trong công tác quản lý, đảm bảo tính chính xác, khách
quan.
Vì vậy, em đã quyết định chọn đề tài : “Sử dụng công nghệ JSP xây dựng
module quản lý chấm công nhân viên cho công ty phần mềm 2NF – SoftWare Hà
Nội” làm đồ án tốt nghiệp.
Nội dung đồ án được chia làm 3 chương:
Chương 1: Tổng quan về công nghệ JSP
Chương 2: Khảo sát, phân tích thiết kế hệ thống
Chương 3: Xây dựng chương trình

8


CHƯƠNG I:
TỔNG QUAN VỀ CÔNG NGHỆ JSP

JSP (Java server pages) là một kỹ thuật server- side do đó chúng ta không
thể thực hiện bất kỳ hành động nào ở client. JSP cho phép chúng ta tách thành
phần động của trang ra khỏi thành phần tĩnh HTML. Rất đơn giản, chúng ta chỉ
cần viết một tài liệu HTML bình thường rồi sau đó bao quanh mã của các thành
phần động trong các tag đặc biệt, hầu hết các tag bắt đầu với <% và kết thúc với
%>. Ví dụ, đây là một phần của trang JSP, có kết quả trả về là : “Tổng quan về
công nghệ jsp ”. với URL là />Tổng quan về công nghệ <%=request.getParameter(“title”)%> .
JSP là một cách đơn giản hóa hơn cho Servlet, là bước chuyển tiếp tiếp theo
của Servlet trong ứng dụng Java. Nếu như đối với Servlet ta phải viết mã Java và

biên dịch thủ công trước khi đưa vào sử dụng với trình chủ Web server thì JSP
không cần điều này. JSP viết mã Java tương tự Servlet nhưng cho phép trộn lẫn
Java với các thẻ định dạng HTML. Trình diễn dịch JSP sẽ chịu trách nhiệm kết
hợp mã Java và thẻ HTML để tạo ra Servlet xử lý các yêu cầu mà trình khác gửi
đến.
Đối với trang JSP ta chỉ cần biên dịch một lần duy nhất sau đó giữ nguyên
mã byte-code ở các lần thực thi kế tiếp. Chính vì lí do này trang JSP được xem là
có tốc độ thực thi tương đương với Servlet và ưu điểm hơn hẳn các công nghệ xử
lý trang động hiện hành như CGI(Common Gateway Interface) hay ASP(Active
Server Pages).
 So sánh JSP với các công nghệ khác

 JSP với ASP
ASP là công nghệ tương đương từ Microsoft, JSP có ba lợi thế so với ASP:
 Phần động được viết bằng Java, chứ không phải bằng các ngôn ngữ
9


script như VBScript, JavaScript. Vì thế nó mạnh mẽ hơn, tốt hơn đối với các ứng
dụng phức tạp cần các thành phần sử dụng lại.
 JSP chạy được trên nhiều hệ điều hành và web servers khác nhau ngay
cả với IIS của Microsoft (cần có plugins từ Webphere, JRun…)
 Hỗ trợ sự mở rộng tag với custom tag.

 JSP với PHP
Lợi thế của JSP với PHP cũng như ASP. JSP được viết bằng Java mà chúng
ta đã biết với các API mở rộng cho mạng, truy cập dữ liệu, các đối tượng phân tán,
trong khi với PHP đòi hỏi chúng ta phải học cả một ngôn ngữ mới.
 Các thành phần script của JSP
 Các thẻ bọc mã

Trong JSP cho phép chúng ta chèn mã vào servlet mã sẽ được phát sinh từ
trang JSP. Có ba dạng sau:
 Biểu thức có dạng <% =expressions %>, được định giá trị và chèn vào
luồng xuất của servlet.
 Scriptlet có dạng <% code %>, được chèn vào phương thức _jspService
của Servlet( được gọi là service).
 Khai báo có dạng <%! code %>, được chèn vào thân của lớp servlet,
như là các field của lớp thông thường.
 Template text
Trong nhiều trường hợp, phần lớn các trang JSP chỉ bao gồm HTML tĩnh,
được biết như là template text. Có hai ngoại lệ phụ cho quy tắc “template text được
chuyển thẳng sang HTML tĩnh”. Đầu tiên, nếu chúng ta muốn có <% trong luồng
xuất thì chúng ta cần phải đặt <\% trong template text. Thứ hai, nếu chúng ta muốn
có chú thích trong JSP mà không có trong tài liệu kết quả, dùng:
<%-- JSP comments --%>
Chú thích HTML có dạng: <!-- HTML comments --> thì được chuyển qua
10


tài liệu HTML thông thường.
 Cú pháp XML
Trong JSP có rất nhiều element có cú pháp XML như jsp:useBean,
jsp:include, jsp:setProperty, ... Tuy nhiên scripting elements lại có hai dạng cú
pháp sau:

11


JSP Syntax


XML Syntax

<% = Expressions %> <jsp:expression>
Java code
</jsp:expression>
<% Scriptlets %>

<jsp:scriptlet>
Java code
</jsp:scriptlet>

<%! Declarations %> <jsp:declaration>
Java code
</jsp:declaration>

1.2.1 Các biến được định nghĩa sẵn trong JSP
Để đơn giản hoá mã trong các biểu thức hay scriptlets trong JSP, người ta
cung cấp cho chúng ta 9 đối tượng đã được định nghĩa trước, có người còn gọi là
các đối tượng ngầm định. Do các khai báo trong JSP nằm ngoài phương thức
_jspService (gọi bởi service) nên các đối tượng này không cho phép các khai báo
truy cập vào.
a) Request
Biến này có kiểu là javax.servlet.http.HttpServletRequest, có phạm vi trong
một yêu cầu (request). Nó cho phép chúng ta truy cập vào các tham số của request
như loại request (GET, POST, …) và các incoming HTTP header (cookies).
b) Esponse
Có kiểu là javax.servlet.http.HttpServletResponse, có phạm vi toàn trang
(page). Chú ý rằng vì luồng xuất thì thường làm vật đệm cho nên việc gán mã tình
trạng của HTTP và response header thì hợp lý trong JSP, mặc dù điều này thì
không được phép trong servlet một khi đã có luồng xuất nào được gởi đến client.

12


c) Out
Có kiểu javax.servlet.jsp.JspWriter và phạm vi trong một trang (page).
Dùng để gởi các thông xuất đến client. Đối tượng out được dùng thường xuyên
trong scriptlets, các biểu thức tự động được đưa vào luồng xuất nên hiếm khi cần
tham chiếu đến đối tượng này.
d) Session
Có phạm vi trong một phiên truyền (session) và kiểu tương ứng là
javax.servlet.http.HttpSession. Gọi về các phiên truyền được tạo tự động vì thế
biến này vẫn còn kết nối ngay cả chẳng có một tham chiếu incoming session nào.
Một ngoại lệ là nếu chúng ta sử dụng thuộc tính session của page directive để tắc
các phiên truyền, mà lại cố tham chiếu đến biến session thì sẽ gây ra các lỗi vào
lúc trang JSP được dịch thành servlet.
e) Application
Biến này có kiểu là javax.servlet.ServletContext, có phạm vi trong toàn ứng
dụng (application). ServletContext lấy từ một đối tượng cấu hình servlet là
getServletConfig().getContext(). Các trang JSP có thể lưu trữ dữ liệu persistent
trong đối tượng ServletContext tốt hơn là trong các biến thể hiện. ServletContext
có các phương thức setAttribute và setAttribute mà cho phép chúng ta lưu trữ dữ
liệu.
f) Config
Biến này có phạm vi trang (page) và

có kiểu tương ứng là

javax.servlet.ServletConfig.
h) PageContext
Biến này có kiểu là javax.servlet.jsp.PageContext và có phạm vi là trang

(page). pageContext cho phép một điểm truy cập duy nhất tới nhiều thuộc tính của
trang và cung cấp một nơi thuận tiện để lưu trữ dữ liệu dùng chung. Biến
pageContext lưu trữ giá trị của javax.servlet.jsp.PageContext cùng với trang hiện
13


hành. Có thể xem chi tiết trong chương II về JavaBeans.

14


i).Page
Biến này đồng nghĩa với this và điều này thì không hữu ích trong ngôn ngữ
lập trình Java, có kiểu là java.lang.Object và có phạm vi trang (page).
k) Exception
Trong một trang lỗi, chúng ta có thể truy cập vào đối tượng exception. Biến
này có kiểu là java.lang.Throwable và phạm vị là trang (page).
1.2.2 Biểu thức trong JSP
Biểu thức trong JSP được dùng để chèn các giá trị trực tiếp vào luồng xuất.
Nó có dạng sau:
<%= Java expressions %>
Biểu thức này được định trị, được chuyển thành chuỗi, và được chèn vào
trong trang. Sự định trị diễn ra ở thời gian runtime (khi trang được yêu cầu) và do
đó có đầy đủ quyền truy cập các thông tin của yêu cầu này. Ví dụ sau đây mô tả
ngày/giờ mà trang được yêu cầu:
Current time: <%= new java.util.Date() %>
Trong Java mỗi câu lệnh đều có dấu ‘;’ kết thúc dòng. Tại sao biểu thức
trong JSP lại không có dấu ‘;’? Vì biểu thức này được đưa vào luồng xuất chẳng
hạn như PrintWriter. Với ví dụ trên có thể chuyển vào servlet như sau:
PrintWriter out = response.getWriter();

out.println(“Current time:” + new java.util.Date());
Biểu thức như là giá trị trong elements khác.
Biểu thức có thể được sử dụng trong các thuộc tính của các elements khác.
Giá trị từ các biểu thức này sẽ được tính vào thời gian yêu cầu (request time). Các
elements cho phép sử dụng biểu thức trong các thuộc tính của chúng là:
Tên Element

Tên thuộc tính

jsp:setProperty

name và value

jsp:include

Page
15


jsp:forward

Page

jsp:param

Value

1.2.3 JSP scriptlets
Scriptlets là những đoạn mã có chứa bất kỳ mã Java nào nằm giữa “<%” và
“%>”. Nếu chúng ta muốn thực hiện thứ gì đó phức tạp hơn là chỉ chèn vào một

biểu thức đơn giản thì JSP scriptlets cho phép chúng ta thêm bất kỳ đoạn mã Java
nào vào trang JSP. Các scriptlets này được đưa vào phương thức _jspService (mà
được gọi bởi service) của servlet. Có cú pháp:
<% Java Code %>
1.2.4 Khai báo trong JSP
Một khai báo trong JSP cho phép chúng ta định nghĩa các phương thức
hoặc các trường (biến) có phạm vi toàn trang. Khai báo sẽ được chèn vào trong lớp
của servlet (bên ngoài phương thức _jspService được gọi bởi service để xử lý một
yêu cầu). Một khai báo có dạng sau:
<%! Java Code %>
Các khai báo trong JSP thì không phát sinh ra bất kỳ thông xuất nào, chúng
thường được dùng để liên kết với các biểu thức hoặc scriptlets. Chẳng hạn, đây là
một trang JSP mà in ra số lần truy cập vào trang.
1.3 Xử lý nhúng và chuyển hướng giữa các trang
Trong quá trình xử lý và chuyển dữ liệu cho form chúng ta có thể nhúng và
triệu gọi những trang JSP khác với trang hiện hành.Ví dụ chúng ta có thể đưa một
trang HTML hoặc JSP vào trong trang JSP hiện tại để hổ trợ thêm thư viện hay
tính năng bổ sung nào đó. Hay khi nhận được dữ liệu submit từ trình khách, trang
JSP nhận được dữ liệu có thể chuyển hướng hoặc triệu gọi đến trang JSP khác.
1.3.1 Nhúng file vào trang với chỉ thi include
Chỉ thị <%include %> thường dùng để dem một nội dung file .html hay jsp
bên ngoài vào trang hiện hành. Cú pháp sử dụng như sau:
16


<%@include file = “filename”%>
Ví dụ: Trong chương trình chúng ta có sử dụng các hàm thư viện chứa
trong file Common.jsp. Thư viện này được đưa vào trang JSP hiện hành như sau:
<%@include file = “Common.jsp”%>
1.3.2 Sử dụng thẻ <jsp:include>

Chỉ thị %@include % chỉ dùng để nhúng các mã nguồn tĩnh. Nếu muốn
nhúng kết quả kết xuất từ các trang jsp, servlet hay html khác vào trang hiện hành
chúng ta sử dụng thẻ: <jsp:include> .
Với cú pháp như sau:
<jsp:page include page = “filename” flush = “true”/>
Ví dụ: trong chương trình sử dụng thẻ <jsp:include> để nhúng kết quả của
trang Header.jsp, Footer.jsp vào các trang JSP như sau:
<jsp:include page = “Header.jsp” flush = “true”/>

<jsp:include page = “Footer.jsp” flush = “true”/>
1.3.3 Chuyển tham số bằng thẻ <jsp:param>
Khi nhúng trang bằng thẻ <jsp:include> bạn có thể chuyển tham số cho
trang được nhúng để nhận được kết xuất linh động hơn bằng cách sử dụng thẻ con
<jsp:param>.
Ví dụ:
testParam.jsp
<jsp: include page = “testParam2.jsp” flush = “true”>
<jsp:param name = “greeting” value = “Welcome”/>
<jsp:include>
<%
out.println (“Goi tham so từ test1.jsp”);
%>
testParam2.jsp
17


<%
String param = request.getParameter (“greeting”);
out.println (“Goi tham so tu test2.jsp”);
out.println (“param: “ + param);

%>

18


1.3.4 Chuyển tiếp đến trang khác với thẻ <jsp:include>
Chúng ta sử dụng thẻ <jsp:forward> để triệu gọi và chuyển dữ liệu cho
trang jsp khác xử lý. Trong ví dụ sau chúng ta có 3 trang JSP. Trang thứ nhất hiển
thị form đăng nhập yêu cầu nhập vào tên username và password. Trang thứ hai
kiểm tra: nếu username, password trùng với username, password cho trước thì
thông báo đăng nhập thành công, còn nếu không đúng hoặc rỗng sẽ chuyển đến
trang thứ 3 thông báo yêu cầu đăng nhập những trường còn thiếu.
Ví dụ:
Login.jsp
<html>
<%
String param = request.getParameter (“sError”);
if (param.length() !=0){
out.println (“<b>”+ param + “</b>”);
}
%>
<form method = post action = “security.jsp”>
Username: <input type = text name = “username”>
Password: <input type = password name = “password”>
<input type = submit value = Login>
</form>
</html>
security.jsp
<html>
<%

String user = (String) request.getParametrer(“username”);
if (user.equals (“admin”))
19


{
%>
<jsp:forward page = “thongbao.jsp”/>
<%
} else {
%>
<jsp:include page = “login.jsp” flush = “true”>
password”/>
<jsp:include>
<%
}
%>
</html>
thongbao.jsp
<html>
Ban dang nhap voi usernam: <%=request.getParameter (“username”)%>
Password: <%=request.getParameter (“password”)%>
</html>
1.3.5 Thẻ jsp:plugin
Phương cách đơn giản nhất để sử dụng jsp:plugin là cung cấp cho nó bốn
thuộc tính: type, code, width, height. Chúng ta định giá trị “applet” cho thuộc tính
type và ba thuộc tính còn lại sử dụng giống như APPLET tag bình thường. Với
ngoại lệ là các action thì có cú pháp XML nên các thuộc tính trong nó cũng phải
theo qui ước XML. Ví dụ với APPLET tag trong HTML:

WIDTH=457 HEIGHT=350>
</APPLET>
20


sử dụng jsp:plugin action như sau:
code=“MyApplet.class”
width=“457” height=“350” />
Ngoài bốn thuộc tính này jsp:plugin còn có các thuộc tính sau và hầu hết
giống (nhưng không phải là tất cả) như các thuộc tính của APPLET tag.
codebase, align, archive, hspace, name, vspace, title
Giống như APPLET tag.
jreversion
Xác định số phiên bản của Java Runtime Environment, các giá trị có thể
nhận là “1.1”, “1.2”.
nspluginurl
URL cho Netscape mà có thể download Plug-In. Giá trị mật định sẽ hướng
người dùng đến web site của Sun, nhưng với intranet chúng ta có thể muốn chỉ dẫn
người dùng đến một bản sao cục bộ.
iepluginurl
URL cho Internet Explorer mà có thể download Plug-In.
1.3.6 Thẻ jsp:fallback
jsp:fallback cung cấp văn bản thay thế đối với các trình duyệt không hổ trợ
OBJECT hay EMDEB. Chúng ta sử dụng action này giống như là dùng văn bản
thay thế được đặt trong APPLET tag
WIDTH=457 HEIGHT=350>
<B> Error: this example requires Java. </B>

</APPLET>
code=“MyApplet.class”
width=“457” height=“350” >
21


<jsp:fallback>
<b> Error: this example requires Java. </b>
</jsp:fallback>
</jsp:plugin>

22


1.3.7 Chuyển trang
a) Page directive
 cho phép chúng ta điều khiển cấu trúc của servlet bằng cách đưa vào các
lớp, đặt MIME type, …. Một page directive có thể được đặt bất cứ nơi nào trong
trang JSP. <%@ page import=“java.util.*, com.vandau.*” %>
 định nghĩa một số thuộc tính phụ thuộc vào trang và giao tiếp giữa các
thuộc tính này với JSP container.
b) Language
Định nghĩa ngôn ngữ kịch bản được sử dụng trong scriptlets, biểu thức và
khai báo. Trong JSP 1.2 là phiên bản mới nhất chỉ có hổ trợ “java” cho thuộc tính
này do đó “java” này cũng là giá trị mật định.
<%@ page language=“java” %>
c) Extends
Thuộc tính này chỉ định lớp cha (superclass) của servlet sẽ được phát sinh
cho trang JSP, có dạng sau:

<%@ page extends=“package.class” %>
Chú ý rằng khi sử dụng thuộc tính này phải hết sức cẩn thận vì tại server có
thể đã dùng lớp cha mật định.
d) Import
Thuộc tính này mô tả các kiểu sẵn dùng trong môi trường kịch bản (theo
java). Chúng ta có thể import vào từng lớp hoặc cả một gói (package).
<%@ page import=“package.class | package.*” %>
Nếu import vào nhiều lớp hay packages thì cách nhau dấu “,”.
e) Ession
Thuộc tính session kiểm soát liệu có hay không một trang tham gia vào
HTTP session. Có hai giá trị “true” và “false”. Mật định là “true”, chỉ ra rằng biến
ngầm định session nên được nối kết với session hiện hành. Giá trị “false” có nghĩa
23


rằng chẳng có session nào được sử dụng tự động và nếu cố truy cập vào biến
session sẽ trả lỗi vào lúc trang được dịch thành servlet.
f) Buffer
Thuộc tính này xác định kích thước của vùng đệm được sử dụng bởi biến
out. Có dạng sau:
<%@ page buffer=“none | sizekb” %>
Thuộc tính này có giá trị mật định là “8kb”, giá trị “none” chẳng có vùng
đệm nào được cấp và tất cả dữ liệu xuất sẽ được ghi trực tiếp qua ServletResponse,
PrintWriter.
g) AutoFlush
Xác định liệu luồng xuất có vùng đệm được tự động flush (giá trị “true” mật
định) khi vùng đệm đầy hay sẽ tung ra một ngoại lệ khi vùng đệm tràn (“false”).
Chú ý rằng sẽ không hợp lý nếu đặt autoFlush=“false” khi buffer=“none”.
h) IsThreadSafe
Xác định mức độ an toàn của tiểu trình (thread) được cài đặt trong trang

(với giao tiếp SingleThreadModel), “true” là giá trị mật định.
i) Info
Định nghĩa một chuỗi có thể truy xuất từ servlet bằng phương thức
getServletInfo().
<%@ page info=“Some Message” %>
k) ErrorPage
Thuộc tính này xác định một trang JSP nên bất kỳ các ngoại lệ nào được
tung ra nhưng không bắt ngoại lệ này trong trang hiện hành.
<%@ page errorPage=“Ralative URL” %>
Ngoại lệ tung ra sẽ có sẵn trong biến ngầm định exception.
l) IsErrorPage
Xác định trang JSP hiện thời có thể hoạt động như một trang lỗi cho một
24


trang JSP khác. Giá trị “false” là mật định cho thuộc tính này.
m) ContentType
Thuộc tính này gán Content-Type cho response header, mô tả kiểu MIME của
tài liệu được gởi đến client. Thuộc tính contentType có một trong hai dạng sau:
<%@ page contentType=“MIME-Type” %>
<%@ page contentType=“MIME-Type; charset=Character-Set” %>
Một số

kiểu MIME-Type thường dùng: “text/html”, “text/xml”,

“text/plain”, “image/gif”, “image/jpeg”.
n) PageEncoding
Định nghĩa bộ mã hóa ký tự cho trang JSP (character encoding), thuộc tính này
hổ trợ cho bộ mã Unicode và Latin-1, có giá trị mật định là “ISO-8859-1”
1.3.8 Chuyển hướng sang trang mới với sendRedirect()

Ngoài việc chuyển tiếp chúng ta có thể sử dụng phương thức sendRedirect()
để chuyển hướng và triệu gọi trang JSP khác xử lý. Sự khác nhau giữa chuyển tiếp
(forward) và chuyển hướng (redirect) đó là lệnh sendRedirect () chỉ thực hiện triệu
gọi trang mà không chuyển tham số của trang hiện hành cho trang chuyển hướng.
Ví dụ: từ trang security.jsp ta có thể chuyển hướng đến trang thongbao.jsp
bằng lệnh như sau:
<%

response.sendRedirect (“thongbao.jsp”);
%>
1.4 SERVLET
1.4.1 Khái niệm
Servlet là các thành phần đối tượng nhúng trên trình chủ Web server thực
hiện xử lý yêu cầu và sinh ra các trang Web động trả về máy khách. Để sử dụng
được Servlet chúng ta cần có các trình chủ hiểu Java và hỗ trở triệu gọi Servlet
như Apache, Jrun, Web Logic ….
25