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

XÂY DỰNG hệ THỐNG QUẢN lý NHÂN sự tại CÔNG TY DIGITAL79

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.45 MB, 88 trang )

Thực tập tôt nghiệp

Quản lý nhân sự

Bộ giáo dục và đào tạo
Trờng Đại Học Bách Khoa Hà Nội
Khoa Công NGhệ Thông Tiin

Bảo vệ thực tập tốt nghiệp

Xây dựng hệ thống quản lý
nhân sự tại công ty
Digital79

1


Thực tập tôt nghiệp

Quản lý nhân sự

Phần I
Cơ sở lý thuyết
I.Giới thiệu về trang Web
I.1. Tổng quan về World Wide Web :
- Internet là một kho thông tin khổng lồ, hoạt động dựa trên sự liên kết
của hàng chục ngàn máy chủ và hệ thống mạng con trên thế giới.
- Ban đầu, nó chỉ là một hệ thống mạng con của các tổ chức nghiên cứu,
quân sự và trờng đại học sử dụng. Dần dần, hệ thống mạng này ngày càng
phát triển và hình thành nên hệ thống mạng rộng lớn bao trùm khắp toàn
cầu kết nối đến mọi gia đình. Đó chính là Internet.


- Ngày nay Internet còn đợc gọi với một tên khác đúng nghĩa hơn đó là
World Wide Web (viết tắt WWW) hay mạng toàn cầu.
- WWW là một mạng kết nối các máy tính trên toàn cầu, trong đó các
máy tính hoàn toàn có thể giao tiếp đợc với nhau thông qua một chuẩn giao
tiếp, gọi là HTTP.
I.2. Hoạt động của WWW:
- Thông tin trên hệ thống WWW đợc lu trữ trong các trang Web
- Trang Web là các file đợc lu trữ trong một máy trính, gọi là Web
Server.
- Các máy tính đọc trang Web gọi là Web Client.
- Các Web Client đọc các trang Web bằng một chơng trình, đó chính là
trình duyệt Web Web Browser.
- Các loại Web Browser thông dụng : Internet Explorer, Netscape
Navigator. Ngoài ra còn một số trình duyệt Web khác nh : Opera, Mozilla,
Firefox, Lynx,
I.3. Hoạt động của trình duyệt Web - Web Browser:
- Web Browser lấy trang Web về :
+ Trình duyệt gửi yêu cầu tới Web Server
+ Yêu cầu này tuân theo chuẩn HTTP, và có chứa một địa chỉ Web
+ Thí dụ về địa chỉ Web:
- Hiển thị trang Web :
2


Thực tập tôt nghiệp

Quản lý nhân sự

+ Tất cả các trang Web đều chứa các lệnh hiển thị
+ Trình duyệt khi lấy trang Web từ Web Server về, sẽ căn cứ vào những

lệnh này để hiển thị trang Web
+ Phần lớn các lệnh hiển thị đợc gọi là các thẻ HTML (tag)
I.4. File HTML:
- HTML là viết tắt của Hyper Text Markup Language Ngôn ngữ định
dạng siêu văn bản.
- File HTML là một file chứa các thẻ định dạng
- Các thẻ định dạng này sẽ quy định cho trình duyệt Web Browser biết
cách hiển thị các thành phần của một trang Web
- File HTML có đuôi mở rộng là : html, htm
- Một file HTML có thể đợc soạn thảo bằng những trình soạn thảo text
đơn giản.

II.Căn bản về JSP
Java Server Pages (JSP) 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 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 %>.
Kỹ thuật JSP là một thành phần trong đại gia đình Java; nó sử dùng ngôn
ngữ kịch bản dựa vào ngôn ngữ lập trình Java, và các trang JSP đợc biên
dịch thành servlets. Từ đó chúng ta cũng nhận biết đợc, JSP thì không phụ
thuộc bất kỳ nền (platform) nào. Nó đáp ứng đợc khuynh hớng của Sun
MicroSystem là write one, run anywhere.
Các trang JSP có thể gọi các thành phần JavaBeans, Enterprise JavaBeans
(EJB) hoặc custom tags để thực hiện các xử lý trên server. Và nh thế, kỹ
thuật JSP là thành phần chủ chốt trong kiến trúc khả chuyển của Java cho
những ứng dụng dựa vào Web.
Nh đã biết, JSP sẽ biên dịch thành servlets nhng JSP không thể thay thế
servlet vì các lý do sau:


3


Thực tập tôt nghiệp

Quản lý nhân sự

- Một số tác vụ đợc giải quyết rất tốt bằng servlet. Ví dụ, các ứng dụng
xuất ra dữ liệu nhị phân hoặc chỉ xác định nơi gửi trở lại cho ngời dùng
(bằng cách dùng response.sendRedirect) đợc dùng servlet thì tốt nhất.
- Một số tác vụ khác lại đợc giải quyết rất tốt bằng JSP nh các tình
huống mà cấu trúc nền tảng của trang HTML là cố định nhng các giá trị
trong nó lại thay đổi.
- Còn các tác vụ còn lại cần sự kết hợp cả servlet và JSP. Ví dụ, trong
yêu cầu gốc đợc trả lời bằng một servlet mà thực hiện mọi công việc, lu trữ
các kết quả trong các Beans và điều phối yêu cầu này đến một trong những
trang JSP có thể hiển thị nó.
Cả ba định hớng này đều có chổ đứng của nó. Chẳng có định hớng nào
hổ trợ đầy đủ cho mọi ứng dụng .
Trớc khi đi vào chi tiết công nghệ JSP, chúng tôi có một vài so sánh các
công nghệ đợc sử dụng trong ứng dụng với các công nghệ khác.
II.1. So sánh JSP với các công nghệ khác:
II.1.1. 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ữ 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.
II.1.2. JSP với PHP:
Lợi điểm của JSP với PHP cũng nh với 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 cơ sở 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.
II.2. 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).
4


Thực tập tôt nghiệp

Quản lý nhân sự

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 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:
JSP Syntax
<% = Expressions %>
<% Scriptlets %>
<%! Declarations %>

XML Syntax
<jsp:expression>
Java code
</jsp:expression>
<jsp:scriptlet>
Java code
</jsp:scriptlet>
<jsp:declaration>
Java code
</jsp:declaration>

II.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 chín đố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 (đợc 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.
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
5


Thực tập tôt nghiệp

Quản lý nhân sự

số của request nh loại request (GET, POST, & ) và các incoming HTTP
header (cookies).
response
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.
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.
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.
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ể lu 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 lu trữ dữ liệu
config
Biến này có phạm vi trang (page) và có kiểu tơng ứng là
javax.servlet.ServletConfig.
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 để lu trữ dữ liệu dùng chung.
6


Thực tập tôt nghiệp

Quản lý nhân sự

Biến pageContext lu trữ giá trị của javax.servlet.jsp.PageContext cùng với
trang hiện hành.
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).
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).
II.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

7



Thực tập tôt nghiệp

jsp:forward

jsp:param

Quản lý nhân sự

Page

Value

II.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 %>
II.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.
II.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.
II.3.1. Nhúng file vào trang với chỉ thị 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:
<%@include file = filename %>
8


Thực tập tôt nghiệp

Quản lý nhân sự

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 %>
II.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 />

II.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
<%
String param = request.getParameter ( greeting );
out.println ( Goi tham so tu test2.jsp );
out.println (param: + param);
%>
II.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,
9


Thực tập tôt nghiệp

Quản lý nhân sự


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))
{
%>
<jsp:forward page = thongbao.jsp />
<%
} else {
%>

<jsp:include page = login.jsp flush = true >
password />
<jsp:include>
<%}%>
</html>
thongbao.jsp
10


Thực tập tôt nghiệp

Quản lý nhân sự

<html>
Ban dang nhap voi usernam:
<
%=request.getParameter(username )%>
Password: <%=request.getParameter (password)%>
</html>
II.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>
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 (nhng 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, nhng 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.
II.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
11


Thực tập tôt nghiệp

Quản lý nhân sự

WIDTH=457 HEIGHT=350>
<B> Error: this example requires Java. </B>
</APPLET>

với
code= MyApplet.class
width=457 height=350 >
<jsp:fallback>
<b> Error: this example requires Java. </b>
</jsp:fallback>
</jsp:plugin>
II.3.7. Chuyển trang:
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.* %>
page directive đị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.
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 %>
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.
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 , .
session
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
12


Thực tập tôt nghiệp

Quản lý nhân sự

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 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.
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.
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.
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.
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 %>
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 nhng 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.
isErrorPage
Xác định trang JSP hiện thời có thể hoạt động nh một trang lỗi cho một
trang JSP khác. Giá trị false là mật định cho thuộc tính này.
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:
13


Thực tập tôt nghiệp

Quản lý nhân sự

<%@ 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.
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à ISO8859-1
II.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);
%>

III. Giới thiệu JDBC
III.1. JDBC và trình điều khiển truy xuất cơ sở dữ liệu:
Công việc lập trình ứng dụng mà JSP và servlet thờng thực hiện nhất đó
là lu trữ và truy xuất cơ sở dữ liệu (database), cung cấp thông tin cho trình
khách. Việc truy xuất cơ sở dữ liệu trong JSP và servlet dựa vào trình truy
xuất JDBC theo chuẩn Java. JDBC là các trình đạo diễn cho phép bạn truy
cập vào cơ sở dữ liệu của các hệ nh Access, MS SQL Server, Oracle bằng
ngôn ngữ truy vấn SQL.
Theo đặc tả của Sun có 4 kiểu JDBC sau:

14


Thực tập tôt nghiệp

Quản lý nhân sự

Java

Java Application,
Application,
Applet,
Applet, Servlet
Servlet
Mã Java
JDBC
JDBC Driver
Driver

ODBC
ODBC
Mã đặc
thù

Database
Database driver
driver

Cơ sở dữ liệu (Access,
SQL Server, Oracle)
Truy xuất cơ sở dữ liệu JDBC-ODBC

Kiểu 1: JDBC sử dụng cầu nối ODBC. Nếu bạn đã từng làm việc với
các hệ cơ sở dữ liệu trên Windows, bạn sẽ biết đến cách kết nối ODBC
(Open Database Connectivity). ODBC là cách kết nối tổng quát nhất đến
mội hệ cơ sở dữ liệu thông qua trình quản lý ODBC của Windows. Mỗi hệ
cơ sở dữ liệu sẽ cung cấp một trình điều khiển (driver) có khả năng đọc
hiểu đợc cơ sở dữ liệu của chúng. Trình điều khiển này sẽ đợc đăng ký với
bộ quản lý ODBC. Tất cả các lệnh truy xuất cơ sở dữ liệu sau đó đợc thực

thi bằng lệnh SQL. Java cung cấp cho chúng ta khả năng sử dụng JDBC để
gọi ODBC và bằng cách này chúng ta có thể kiểm soát rất nhiều hệ quản trị
cơ sở dữ liệu khác nhau. Quan hệ cầu nối JDBC-ODBC đợc thể hiện trong
hình sau. Sun cung cấp sẵn th viện kết nối JDBC-ODBC kèm theo bộ JDK.
Kiểu 2: JDBC kết nối trực tiếp với các trình điều khiển cơ sở dữ liệu.
Khi Java phát triển, các nhà cung cấp hỗ trợ các trình điều khiển JDBC kết
nối trực tiếp với trình điều khiển đặc thù của mỗi hệ cơ sở dữ liệu (native
15


Thực tập tôt nghiệp

Quản lý nhân sự

database driver), mà không cần phải qua trung gian ODBC của Windows
nữa. Các kết nối này nhanh và hiệu quả hơn kiểu JDBC-ODBC.

Java
Java Application,
Application,
Applet,
Applet, Servlet
Servlet
Mã Java
JDBC
JDBC Driver
Driver

Mã đặc
thù


Database
Database driver
driver

Cơ sở dữ liệu (Access,
SQL Server, Oracle)

JDBC truy xuất cơ sở dữ liệu kiểu 2

Kiểu 3: JDBC kết nối thông qua các ứng dụng mạng trung gian. Ngày
nay, các ứng dụng đều gắn liền với Internet. Theo mô hình lập trình phân
tán, ứng dụng trung gian (middle-ware) trên một máy chủ sẽ chịu trách
nhiệm kết nối với cơ sở dữ liệu. Nhiệm vụ của trình khách là sử dụng những
trình điều khiển JDBC gọn nhẹ, có khả năng giao tiếp với ứng dụng trung
gian qua Internet để truy vấn dữ liệu.
Kiểu 4: JDBC kết nối thông qua các trình điều khiển đặc thù ở xa. Mô
hình kết nối theo kiểu 3 do phải qua ứng dụng trung gian (middle-ware) nên
có thể ảnh hởng đến tốc độ truy xuất cơ sở dữ liệu phía máy khách. Java đa
ra kết nối JDBC kiểu 4 cho phép trình khách sử dụng các trình điều khiển
gọn nhẹ kết nối trực tiếp vào trình điều khiển cơ sở dữ liệu đặc thù (thuần
Java) trên máy chủ ở xa thông qua mạng Internet.

16


Thực tập tôt nghiệp

Quản lý nhân sự


Java
Java Application,
Application,
Applet,
Applet, Servlet
Servlet
Mã Java
JDBC
JDBC Driver
Driver
Internet
Mã Java

JavaNative
JavaNative Driver
Driver

Cơ sở dữ liệu (Access,
SQL Server, Oracle)

Truy xuất cơ sở dữ liệu bằng JDBC kiểu 4

III.2.Truy xuất cơ sở dữ liệu thông qua JDBC-ODBC
Hiện nay, hệ điều hành Windows cũng nh các cơ sở dữ liệu chạy trên
nên Windows nh MS Access, MS SQLServer, .. rất phổ biến nên theo xu hớng chung đó chúng ta sử dụng các truy xuất dữ liệu bằng trình điều khiển
JDBC-ODBC (kiểu 1) đây là kiểu thông dụng và dễ dùng nhất.
Kết nối với cơ sở dữ liệu
Kết nối với cơ sở dữ liệu, JDBC đòi hỏi hai yếu tố là trình điều khiển (tơng ứng với các kiểu kết nối) và thông tin để kết nối (nh địa chỉ máy chủ,
tên tài khoản đang đăng nhập và mật khẩu & ). Đối với cơ chế truy xuất
thông qua ODBC của Windows, chúng ta sử dụng trình điều khiển

JdbcOdbcDriver do Sun cung cấp. Khai báo tên lớp này nh sau:
String drivername = sun.jdbc.odbc.JdbcOdbcDriver;
Sau đó gọi phơng thức tĩnh forName của lớp Class để nạp và khởi tạo
trình điều khiển:
Class.forName(drivername).newInstance();
Tiếp đó cung cấp cho trình điều khiển các thông tin cụ thể nh: tên cơ sở
dữ liệu, tên ngời dùng, mật khẩu nh sau:
String connectionURL = jdbc:odbc:QLNV;
17


Thực tập tôt nghiệp

Quản lý nhân sự

String username = sa; //Tên mặc định đặng nhập vào cơ sở dữ liệu MS
SQLServer
String password = ; // Mật khẩu mặc định
Cuối cùng đối tợng Connection sẽ thể hiện kết nối đến cơ sở dữ liệu, gọi
phơng thức getConnection của lớp DriverManager để yêu cầu trình điều
khiển nạp bởi Class.forName () trớc đây tiếp nhận thông tin và thực hiện
kết nối.
// Đối tợng kết nối JDBC
Connection con = null;
// Tạo kết nối
con = DriverManager.getConnection (connectionURL, username,
password);
III.3. Truy vấn dữ liệu
Bớc quan trọng là trích dữ liệu của các bảng trong cơ sở dữ liệu, định nghĩa
câu truy vấn SQL nh sau:

SELECT <select list> FROM <table name> [WHERE list>] [GROUP BY <column name> [, <column name>]]
<select list>: danh sách các trờng cần trích ra từ [danh sách] name>, *: liệt kê hết các trờng trong bảng.
<table name>: tên 1 hoặc nhiều bảng trong CSDL
[WHERE <search condition list>]: điều kiện cho phép lọc các record với
một hoặc nhiều thuộc tính thỏa điều kiện tìm kiếm
Ví dụ: String sqlQuery = SELECT * FROM NHANVIEN WHERE MaNV
= 0001;
String sqlQuery = SELECT MANV, HoNV, MACV FROM NHANVIEN;
JDBC dựa vào đối tợng Statement để yêu cầu truy vấn dữ liệu. Đối tợng này
dùng để thực thi mọi câu lệnh SQL. Riêng đối với lệnh SQL SELECT nếu
truy vấn thành công, Statement sẽ trả về kết quả là tập dữ liệu truy vấn đợc
có kiểu ResultSet.
Statement stmt = null;
ResultSet rs = null;
stmt = con.createStatement ();
rs = stmt.executeQuery (sqlQuery);
III.4. Trích xuất dữ liệu
Lệnh SELECT sau khi nhận đợc kết quả trả về là tập ResultSet, chúng ta gọi
phơng thức next () để đi đến từng mẫu tin và in ra kết quả của các cột. Phơng
thức next () sẽ trả về false nếu đã đến cuối tập dữ liệu.
While (rs.next ())
{
18


Thực tập tôt nghiệp

}


Quản lý nhân sự

//In dữ liệu cột thứ nhất trong mẫu tin
out.println (rs.getString (1));
//In dữ liệu của cột thứ 2 trong mẫu tin
out.println (rs.getString (2));


III.5. Xử lý các lệnh SQL INSERT / UPDATE / DELETE
Ngoài lệnh SQL SELECT thờng sử dụng ra, các lệnh thay đổi dữ liệu nh
INSERT (tạo một mẫu tin), UPDATE (cập nhật mẫu tin) và DELETE (xóa
bỏ mẫu tin) cũng sẽ đợc sử dụng rất thờng xuyên trong chơng trình.
INSERT:
Cú pháp: INSERT INTO <table name> [<column name> [, <column name>]
] VALUES (<expression> [, <expression>] )
<table name>: tên bảng cần thêm mẫu tin
<column name>: tên cột cần thêm dữ liệu, nếu không nêu tên cột nó sẽ tự
động thêm dữ liệu vào các cột tơng ứng trong bảng của theo mệnh đề
VALUES.
Ví dụ: INSERT INTO PHONGBAN (MaPB, TenPB) VALUES (KD, Data
Entry A)
String sSQL = INSERT INTO PHONGBAN(MaPB, TenPB)
VALUES (KD , Data Entry A);
stat.executeQuery (sSQL);
UPDATE:
Cú pháp:
UPDATE table_name SET column_name1 = expression1, column_name2 =
expression 2, [WHERE <search_condition>]
table_name: tên bảng cần thay đổi dữ liệu

column_name1, column_name2: tên cột cần thay đổi dữ liệu
search_condition: điều kiện tìm kiếm cập nhật.
Ví dụ:
UPDATE PHONGBAN SET MaPB = BH , TenPB = Data Entry B
String sSQL = update PHONGBAN set MaPB = BH , TenPB = Data
Entry B;
stat.executeQuery (sSQL);
DELETE
Cú pháp:
DELETE table_name [WHERE <search_condition>]
19


Thực tập tôt nghiệp

Quản lý nhân sự

table_name: tên bảng cần xóa dữ liệu
search_condition: điều kiện tìm để xóa dữ liệu
Ví dụ:
DELETE PHONGBAN WHERE MaPB = BH
String sSQL = delete PHONGBAN where MaPB = OF;
Stat.executeQuery (sSQL);

IV. Hệ quản trị cơ sở dữ liệu Microsoft
Access

IV.1. Giới thiệu chung về Access:
Cho đến nay Microsoft Access đã trở thành phần mềm CSDL liên tục
phát triển, thể hiện bớc ngoặt quan trọng về sự dễ dàng trong việc sử dụng,

nhiều ngời đã bị cuốn hút vào việc tạo các CSDL hữu ích của riêng mình và
các ứng dụng CSDL hoàn chỉnh.
Hiện nay, Microsoft Access đã trở thành một sản phẩm phần mềm mạnh,
dễ dàng, đơn giản khi làm việc. Chúng ta hãy xem xét lợi ích của việc sử
dụng phần mềm phát triển ứng dụng CSDL nh Microsoft Access.
Hệ CSDL: Theo định nghĩa đơn giản nhất, một CSDL là một tập hợp các
bản ghi và tệp đợc tổ chức cho một mục đích cụ thể.
Hầu hết các hệ quản trị CSDL hiện nay đều lu giữ và xử lý thông tin
bằng mô hình quản trị CSDL quan hệ. Từ quan hệ bắt nguồn từ thực tế là
mỗi bản ghi trong CSDL chứa các thông tin liên quan đến một chủ thể duy
nhất. Ngoài ra, các dữ liệu của hai nhóm thông tin có thể ghép lại thành
một chủ thể duy nhất dựa trên các giá trị dữ liệu quan hệ. Trong một hệ
quản trị CSDL quan hệ, tất cả các dữ liệu ấy đợc quản lý theo các bảng,
bảng lu giữ thông tin về một chủ thể. Thậm chí khi sử dụng một trong
những phơng tiện của một hệ CSDL để rút ra thông tin từ một bảng hay
nhiều bảng khác ( thờng đợc gọi là truy vấn - Query ) thì kết quả cũng
giống nh một bảng. Thực tế còn có thể hiện 1 truy vấn dựa trên kết quả của
một truy vấn khác.
Các khả năng của một hệ CSDL là cho chúng ta quyền kiểm soát hoàn
toàn bằng cách định nghĩa dữ liệu, làm việc với dữ liệu và chia sẻ dữ liệu
20


Thực tập tôt nghiệp

Quản lý nhân sự

với ngời khác. Một hệ CSDL có 3 khả năng chính : Định nghĩa dữ liệu, xử
lý dữ liệu và kiểm soát dữ liệu.
Toàn bộ chức năng trên nằm trong các tính năng mạnh mẽ của

Microsoft Access.
IV.1.1. Định nghĩa dữ liệu:
Xác định CSDL nào sẽ đợc lu giữ trong một CSDL, loại của dữ liệu và
mối quan hệ giữa các dữ liệu.
IV.1.2. Xử lý dữ liệu:
Có nhiều cách xử lý dữ liệu là các bảng, các truy vấn, các mẫu biểu,
các báo cáo, các macro và module trong Microsoft Access.
IV.2. Bảng (Table):
Bảng là đối tợng đợc định nghĩa và đợc dùng để lu dữ liệu. Mỗi bảng
chứa các thông tin về một chủ thể xác định. Mỗi bảng gồm các trờng (field
) hay còn gọi là các cột ( Column ) lu giữ các loại dữ liệu khác nhau và các
bản ghi ( Record ) hay còn gọi là các hàng (Row) lu giữ tất cả các thông tin
về một cá thể xác định của chủ thể đó. Có thể nói một khoá cơ bản
(Primary) (gồm một hoặc nhiều trờng) và một hoặc nhiều chỉ mục (Index)
cho mỗi bảng để giúp tăng tốc độ truy nhập dữ liệu.
IV.2.1. Đặt khoá chính (Primary key):
Mỗi bảng trong một CSDL quan hệ đều phải có một khoá cơ bản và
xác định khoá cơ bản trong Microsoft Access tuỳ theo từng tính chất quan
trọng của bảng hay từng CSDL mà ta chọn khoá chính cho phù hợp : Mở
bảng ở chế độ Design, chọn một hoặc nhiều trờng muốn định nghĩa là khoá.
Dùng chuột bấm vào nút Primary Key trên thanh công cụ.
IV.2.2. Định nghĩa khoá quan hệ:
Sau khi định nghĩa xong hai hay nhiều bảng có quan hệ thì nên báo cho
Acces biết cách thức quan hệ giữa các bảng. Nếu làm nh vậy, Access sẽ
biết liên kết tất cả các bảng mỗi khi sử dụng chúng sau này trong các truy
vấn, biểu mẫu hay báo cáo.
Các tính năng tiên tiến của bảng trong Access:
+ Phơng tiện Table Wizard giúp định nghĩa các bảng.
+ Phép định nghĩa đồ hoạ các mối quan hệ.
+ Các mặt nạ nhập liệu cho trờng để tự đọng thêm các ký hiệu định

dạng vào các dữ liệu.
+ Có khả năng lu giữ các trờng Null cũng nh các trờng trống trong
CSDL.
21


Thực tập tôt nghiệp

Quản lý nhân sự

+ Các quy tắc hợp lệ của bảng có khả năng kiểm tra tính hợp lệ của một
trờng dựa trên các trờng khác.
+ Công cụ riêng để tạo các chỉ mục.
Các tính năng tiên tiến của truy vấn trong Access:
+ Phơng thức tối u truy vấn Rushmore (từ Foxpro).
+ Phơng tiện Query Wizard giúp thiết kế các truy vấn.
+ Truy xuất các thuộc tính cột (Quy cách định dạng, các vị trí thập phân
(mặt nạ nhập)..).
+ Có khả năng lu trữ kiểu trình bày bảng dữ liệu hoặc truy vấn.
+ Các công cụ tạo truy vấn (Query builder) khả dụng trên nhiều vùng.
+ Khả năng định nghĩa các kết nối tự động đợc cải thiện.
+ Hỗ trợ các truy vấn Union và các truy vấn thứ cấp (trong SQL).
+ Cửa sổ soạn thảo SQL đợc cải tiến.
+ Tăng số trờng có thể cập nhật đợc trong một truy vấn kết nối.

V.Cài đặt Web Server hiểu Java
- Để chạy đợc các file *.jsp chúng ta cần đến một trình chủ Web Server
hiểu và diễn dịch đợc JSP. Hiện có rất nhiều trình chủ có khả năng này nh :
TomCat, Java Web Server, Jrun, WebLogicTuy nhiên ở đây ta chỉ giới
thiệu về trình chủ TomCat vì đây là trình chủ Web Server hỗ trọ Java, có

cấu hình đơn giản, chạy đợc trên hầu hết các hệ điều hành Unix, Linux,
Windows. Tốc độ thông dịch trang JSP của trình chủ TomCat khá nhanh và
hiệu quả. Một thế mạnh nữa là TomCat có mã nguồn mở, bạn hoàn toàn có
thể nghiên cứu cách viết một trình chủ Ưeb Server bàng Java.
- Cách cài đặt :
+ Với TomCat, gọi th mục cài đặt trình chủ là $CATALINA_HOME (thờng là th mục C:\Jakarta-tomcat-4.1.27. CATALINA là tên gọi của mã
TomCat). Bạn chép file *.jsp cần xem vào th mục
$CATALINA_HOME\webapps\ROOT. Bạn chuyển vào th mục c:\
$CATALINA_HOME\bin từ cửa sổ dòng lệnh (cmd) gõ lệnh sau :
c:\jakarta-tomcat-4.1.27\bin>startup
+ Sau lệnh trên, trình chủ Web Server khởi động và phục vụ trên cổng
8080. Để kiểm tra TomCat hoạt động cha, bạn mở trình duyệt Browser và
gõ vào URL sau: http://localhost:8080/
Cổng Web mặc định là cổng 80, khi gõ một địa chỉ URL nếu bạn
không chỉ định tờng minh số hiệu cổng thì browser mặc định sử dụng cổng
22


Thực tập tôt nghiệp

Quản lý nhân sự

80. Để buộc TomCat khởi động trên cổng 80 thay cho 8080 còn\ chứa file
cấu hình server.xml sửa dòng :
className = org.apache.tomcat4.CoyoteConnector
port=8080 minProcessors=5 maxProcessors=75
enableLookups=true redirectPort=8443
acceptCount=100 debug=0 connectionTimeout=20000
useURIValidationHack=false disableUploadTimeout=true/>

Thay port=8080 bằng port=80 sau đó khởi động lại trình chủ
Tomcat.

Phần II
Phân tích thiết kế
I.Phân tích :
I.1.Giới thiệu :
Trong những năm gần đây ngành CNTT đang trở thành một trong những
ngành trọng điểm của toàn thế giới. Nó đợc áp dụng trong hầu hết các lĩnh
vực của đời sống chúng ta và dờng nh công việc sẽ thuận tiện, hiệu quả hơn
rất nhiều nếu đợc áp dụng CNTT. Tại Việt Nam, mặc dù ngành này còn khá
non trẻ nhng chúng ta đã và đang có những bớc phát triển nhanh chóng để
có thể đẩy mạnh nền kinh tế của đất nớc, thúc đẩy sự phát triển của toàn xã
hội và có thể hội nhập với nền văn minh toàn cầu.
23


Thực tập tôt nghiệp

Quản lý nhân sự

Tin học hoá trong công tác quản lý nhằm giảm bớt sức lao động của con
ngời, tiết kiệm đợc thời gian, độ chính xác cao, gọn nhẹ và tiện lợi hơn rất
nhiều so với việc làm thủ công quản lý trên giấy tờ. Tin học hoá giúp thu
hẹp không gian lu trữ, tránh đợc thất lạc dữ liệu, tự động hệ thống hoá và cụ
thể hoá các thông tin theo nhu cầu của con ngời.
Hiện nay, tin học hoá trong quản lý đã và đang đợc xây dựng tại nhiều
doanh nghiệp của nớc ta. Digital79 là một công ty nh vậy. Công ty TNHH
này chuyên nhập khẩu, bán buôn và bán lẻ các mặt hàng: máy nghe nhạc
MP3, MP4; Máy ảnh, máy quay phim và máy ghi âm kỹ thuật số. Công ty

đợc thành lập từ ngày 13/6/2005 theo giấy phép số 2079/TC UBND HBT
ngày 30/5/2005. Giám đốc của công ty trách nhiệm hữu hạn là Thạc sỹ
quản trị kinh doanh Nguyễn Cảnh Tùng.
Hiện nay công ty là nhà phân phối độc quyền về sản phẩm máy nghe
nhạc MP3, MP4 thơng hiệu Sorell của Hàn Quốc và nhập các mặt hàng
máy ảnh, máy quay phim, máy ghi âm kỹ thuật số từ một số nớc nh: Hàn
Quốc, Nhật Bản... và bán buôn cho các cửa hàng bán lẻ thuộc khu vực Hà
Nội và TP HCM, đồng thời công ty cũng mở cửa hàng bán lẻ tại trụ sở
chính của công ty tại địa chỉ Số 5 Lê Đại Hành, Hai Bà Trng, Hà Nội với
mục đích giao dịch, giới thiệu sản phẩm và bán hàng.
Hiện tại mọi công việc quản lý nhân sự do ban lãnh đạo công ty đảm
trách đều đợc làm hết sức thủ công và gặp rất nhiều khó khăn về lu trữ, tìm
kiếm, cập nhật hồ sơ của nhân viên trong công ty. Việc những ngời lãnh
đạo công ty muốn xem xét thông tin về một số nhân viên trong công ty khi
không có mặt tại đó là hết sức khó khăn.
Chính vì vậy công ty muốn đa tin học hoá vào công tác quản lý của
mình. Công ty muốn xây dựng một trang web để giúp những ngời quản lý
công ty và các nhân viên có thể theo dõi và biết đợc thông tin về nhân sự ở
bất cứ ở đâu dù phải đi công tác xa.
Xuất phát từ nhu cầu quản lý nhân sự trên trang Web của công ty, em xin
xây dựng một web site áp dụng công nghệ JSP và dùng hệ quản trị CSDL
Microsoft Access nhằm đáp ứng nhu cầu trên. Trong quá trình làm với vốn
kiến thức còn có hạn trong bớc đầu tiếp xúc với công nghệ, ngôn ngữ, mô
hình quản lý CSDL mới chắc không tránh khỏi nhiều sai sót, em mong luôn
nhận đợc những đóng góp ý kiến quí báu của thầy cô và bạn bè.

24


Thực tập tôt nghiệp


Quản lý nhân sự

I.2.Phát biểu bài toán:
Công tác quản lý nhân sự công ty TNHH Kỹ Thuật Số 79 do phó giám
đốc phụ trách nhân sự đảm nhiệm, qua khảo sát hiện trạng, nhu cầu quản lý
nhân sự của công ty nh sau:
I.2.1.Thông tin cần quản lý:

Sơ đồ tổ chức nhân sự tại công ty

25