1. Trang chủ
  2. » Luận Văn - Báo Cáo

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

98 469 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 98
Dung lượng 1,42 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

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

Trang 1

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

Trang 2

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

Trang 3

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

Trang 4

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

Trang 5

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

Trang 6

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

Trang 8

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

Trang 9

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à http://www.jsp.com/thank.jsp?title=jsp

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ữ

Trang 10

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

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

Trang 11

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:

Trang 12

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.

Trang 13

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

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

Trang 14

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

Trang 15

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à:

jsp:setProperty name và value

Trang 16

jsp:forward Page

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:

Trang 17

<%@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”/>

Trang 19

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

<form method = post action = “security.jsp”>

Username: <input type = text name = “username”>

Password: <input type = password name = “password”>

<input type = submit value = Login>

Trang 20

<jsp:include page = “login.jsp” flush = “true”>

<jsp:param name = “sError” value = “Ban nhap lai username & password”/>

<APPLET CODE=“MyApplet.class”

WIDTH=457 HEIGHT=350>

</APPLET>

Trang 21

sử dụng jsp:plugin action như sau:

<jsp:plugin type=“applet”

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.

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

Trang 22

<b> Error: this example requires Java </b>

</jsp:fallback>

</jsp:plugin>

Trang 23

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

Trang 24

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.

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.

<%@ 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

Trang 25

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:

Trang 26

Ví dụ sau là một Servlet cơ bản

1.4.2 Các phương thức xử lý cơ bản của Servlet

Lớp GenericServlet là phần cài đặt tổng quát cho đặc tả giao tiếp (interface) mang tên Servlet Theo đặc tả của giao tiếp Servlet do Sun đưa ra một servlet cơ bản cần có những phương thức phục vụ cho các nhu cầu khởi tạo (init), hoạt động

và phục vụ (service), hủy (destroy), trả về thông tin cấu hình (getServletConfig), trả về thông tin tư thân của servlet (getServletInfo) Cụ thể lớp giao tiếp Servlet được mô tả như sau:

interface Servlet

{

void destroy ()

ServletConfig getServletConfig ();

Trang 27

String getServletInfo ();

void init (ServletConfig config);

void service (ServletRequest req, ServletResponse res);}

Trang 28

a Phương thức khởi tạo init ()

public void init ()

Phương thức khởi tạo này được gọi khi lần đầu tiên trình chủ Web server nạp mã thực thi của servlet từ tập tin class vào bộ nhớ và bắt đầu cho phép servlet hoạt động Chúng ta có thể dựa vào phương thức này để khởi tạo các biến môi trường và giá trị ban đầu cần thiết cho quá trình thực thi servlet sẽ diễn ra tiếp theo Thường trong phương thức init () ta khởi tạo giá trị mảng, tạo sẵn kết nối với

cơ sở dữ liệu, nạp các lớp thư viện cần thiết… Ví dụ chúng ta có thể nạp trình điều khiển JDBC truy xuất cơ sở dữ liệu, tạo sẵn kết nối đến nguồn dữ liệu cho servlet trong phương thức init () như sau:

public class staffView extends GenericServlet

{String DBDriver = “sun.jdbc.odbc.JdbcOdbcDriver”;

String strConn = “jdbc:odbc:quanliNV”;

Connection con;

public init ()

{

Class.forName (DBDriver) newInstance ();

Conn = DriverManager.getConnection (strConn);

Trang 29

thể được triệu gọi nhiều lần ứng với mỗi yêu cầu servlet phát sinh từ trình duyệt phía máy khách Bên trong phương thức service () chúng ta có thể sử dụng đối tượng tham số ServletRequest và ServletResponse để tiếp nhận dữ liệu từ trình khách chuyển lên và kết xuất kết quả phản hồi trở lại trình khách.

c Phương thức hủy destroy ()

Khi servlet không còn dùng nữa hoặc hết thời gian qui định lưu giữ trong

bô nhớ của trình chủ Web server, nó sẽ bị trình chủ giải phóng Trước khi servlet

bị hủy phươg thức destroy () sẽ được gọi Nếu như chúng ta dùng phương thức init () để thực hiện khởi tạo biến cho servlet thì phương thức destroy () ngược lại có thể dùng để dọn dẹp tài nguyên mà các biến chiếm giữ, đóng các kết nối mà phương thức init () đã mở…

Ví dụ: public destroy ()

{

conn.close ();

}

d Phương thức getServletConfig () và getServletInfo ()

Hai phương thức này nhằm mục đích cung cấp thông tin Phương thức getServletConfig () giúp người sử dụng servlet có được đối tượng ServletConfig

Trang 30

chưa các thông tin khởi tạo từ môi trường ngoài đưa vào servlet, getServletInfo () trả về một chuỗi thông tin mô tả ý nghĩa và mục đích của servlet.

public String getServletInfo ();

public ServletConfig getServletConfig ();

1.4.3 Chu trình sống của Servlet và JSP

a Chu trình sống của servlet

Chu trình sống tính từ khi servlet bắt đầu được hệ thống gọi nạp vào bộ nhớ cho đến khi nó bị loại khỏi trình chủ Web server vì không còn cần đến nữa Quá trình sống của servlet trải qua các giai đoạn sau:

 Khởi tạo servlet

Trình chủ Web server khởi tạo servlet bằng cách gọi đến phương thức init ()

mà servlet cài đặt Phương thức này chỉ gọi một lần duy nhất Chúng ta có thể lợi dụng cơ hội này để khởi tạo các biến toàn cục mà servlet sẽ sử dụng sau này

 Thực thi servlet

Khi trình duyệt hoặc các trang JSP triệu gọi servlet thông qua địa chỉ URL, trình chủ Web server sẽ chính thức gọi servlet thực thi thông qua các phương thức

Trang 31

như doGet (), doPost () hoặc service () Ví dụ khi chúng ta gọi trực tiếp servlet từ địa chỉ URL, phương thức doGet () của servlet sẽ được gọi Nếu chúng ta gọi servlet thông qua thao tác post cua thẻ <form> thì phương thức doPost () sẽ được gọi Sau khi các phương thức này được gọi thực thi xong, servlet vẫn giữ lại trong

bộ nhớ để phục vụ cho các lần triệu gọi tiếp theo Đây cũng chính là ưu điểm làm cho servlet thực thi nhanh các ứng dụng CGI

Trang 32

 Dọn dẹp servlet

Servlet không giữ lại trong bộ nhớ vĩnh viễn, sẽ đến lúc cần loại servlet khỏi bộ nhớ Ví dụ như khi nhà quản trị muốn dừng hệ thống, muốn Webserver khởi động lại để giải phóng rác trong bộ nhớ tăng hiệu suất thực hiện… Trước khi chấm dứt, Web server sẽ gọi đến phương thức hủy destroy () của servlet Đây là cơ hội để servlet thực hiện một số thao tác dọn dẹp cần thiết như lưu dữ liệu xuống đĩa, ghi nhớ trạng thái của servlet để phục vụ cho lần khởi động sau, đóng kết nối với cơ sở dữ liệu… Và mặc dù Java có thể tự động thu gom rác trong bộ nhớ nhưng nếu chúng ta đã cấp phát một khối lượng bộ nhớ lớn cho servlet trong quá trình làm việc, chúng ta nên thực hiện giải phóng chúng trong phương thức destroy ()

b Chu trình sống của JSP

Tương tự như chu trình sống của servlet, trang JSP cũng có cbhu trình sống xác định tính từ khi hệ thống đọc biên dịch trang JSP, gọi thực thi và loại trang khỏi bộ nhớ Chu trình sống của JSP trải qua các giai đoạn sau:

Trang 33

trang sẽ được đặt trong thư mục đệm Như chúng ta thấy, quá trình biên dịch trang chỉ diễn ra một lần Nếu trang đã biên dịch và sau đó chúng ta không có thay đổi gì trong trang nguồn thì quá trình biên dịch sẽ không xảy ra, do đó tốc độ thực thi trang sẽ nhanh hơn Sau khi trang đã được biên dịch, mã trang sẽ được nạp vào bộ nhớ để thực thi.

 Nạp trang

Kể từ giai đoạn này, quá trình nạp trang tương tư như servlet Chỉ có một khác biệt đó là servlet chỉ được nạp một lần trong khi mã trang JSP mặc dù đã biên dịch nhưng phải nạp lại nhiều lần mỗi khi Web server nhận được yêu cầu trang từ trình duyệt

 Khởi tạo

Khi nạp mã trang thành công, Web server sẽ gọi đến phương thức khởi tạo trang Và mặc dù, JSP được biên dịch ra servlet như phương thức khởi tạo cho trang JSP lại mang tên jspInit () chứ không phải là init () như servlet

 Thực thi

Sau quá trình khởi tạo, Web server sẽ gọi đến phương thức _jspService () Phương thức _jspService sẽ chuyển cho chúng ta hai lớp đối tượng HttpServletRequest và HttpServletResponse để đọc và ghi kết xuất trả về trình khách

 Dọn dẹp

Khi trang JSP đã thực thi xong, trình chủ Web server sẽ gọi phương thức jspDestroy () để giải phóng mã trang khỏi bộ nhớ Tương tự như trong servlet, chúng ta có thể cài đặt phương thức jspDestroy () thực hiện chức năng giảp phóng vùng nhớ hoặc đóng kết nối trả tài nguyên về cho hệ thống

1.4.4 Ưu và khuyết điểm của JSP so với Servlet

Do mã trang JSP khi thực thi đều được biên dịch ra servlet cho nên tất cả những gì servlet làm được cũng đồng nghĩa với trang JSP làm được Viết trang JSP đôi lúc đơn giản hơn viết servlet vì không cần phải qua bước đăng ký và biên dịch

Trang 34

thủ công Tuy nhiên chúng ta cũng nên biết một số trường hợp phân biệt giữa JSP

và servlet và cách sử dụng chúng

JSP có thể trộn lẫn mã Java với các thẻ HTML cho nên thiết kế trang JSP thường đơn giản và dễ bổ sung hơn so với servlet Tuy nhiên đây cũng là yếu tố không nên lạm dụng đối với JSP Nếu chúng ta tập trung tất cả mã Java vào cũng với mã HTML, một khi dự án mỡ rộng và trở nên phức tạp, việc bảo trì và nâng cấp ứng dụng Web với hàng trăm trang JSP sẽ rất khó khăn Trong quá trình phát triển ứng dụng Web theo nhóm, việc trộn lẫn mã JSp sẽ rất khó khăn Trong qua trình phát triển ứng dụng Web theo nhóm, việc trộn lẫn mã Java và HTML trong trang JSP cho thấy không hiệu quả Khó có thể tách rời giữa công việc viết mã cho ứng dụng và nhóm xây dựng giao diện Mã trang JSP ở dạng thuần văn bản nên thường không che được mã nguồn của logic chương trình

Với servlet, tuy phải biên dịch và đăng ký thủ công với trình chủ nhưng bù lại tính bảo mật cao hơn Chúng ta chủ cần cung cấp cho trình chủ Web server bản servlet nhị phân (file class) đã qua bước biên dịch mã không cần đến mã nguồn của servlet ban đầu Mặc khác, các servlet có thể tương tác liên hoàn, với nhau để tạo nên những kết xuất tùy biến và đa dạng trước khi trả kết quả về cho trình khách Servlet có thể phân rã các đơn thể của dự án và phát triển độc lập nhau như các thành phần riêng biệt để ráp lại trong một tổng thể chung Tuy nhiên, việc kết xuất trong servlet thường dựa vào phương thức print () hoặc println () Công việc quyết định giao diện cho kết xuất hoàn toàn phụ thuộc vào lập trình viên với hàng loạt các lệnh print () hay println () rất khó quản lý

Quyết định sử dụng JSP, Servlet hay kết hợp cả hai là tuỳ vào từng dự án và mục đích của chương trình mà chúng ta muốn phát triển Thông thường đối với những dự án nhỏ, yêu cầu thời gian nhanh, JSP là lưa chọn thích hợp nhất Trường hợp với dự án cần sự độc lập và chỉ thiên về xử lý ta nên sử dụng servlet Trường hợp với dự án lớn chúng ta nên kết hợp cả servlet và JSP Mô hình kết hợp tốt nhất giữa servlet và JSP thường được gọi là MCV (Model – View – Controler) trong đó

Trang 35

servlet đóng vai trò trung tâm điều khiển (controler) đưa ra các quyết định xử lý JSP đóng vai trò thể hiện giao diện hay hiển thị dữ liệu đã xử lý Quy trình tính toán logic của ứng dụng được giao lại cho các thành phần JavaBean hay EJB.

Trang 36

1.5 Tag Libraries

1.5.1 Khái niệm

Trong kỹ thuật JavaServer Pages, các action là các element có thể tạo ra và

truy cập vào các đối tượng của ngôn ngữ lập trình và xuất vào những luồng xuất

chuẩn như màn hình, máy in,… JSP định nghĩa ra chín action chuẩn mà phải được cung cấp bởi bất kỳ engine nào.

Ngoài các action chuẩn này, từ JSP v1.1 trở lên cho phép xây dựng và phát triển các module có thể dùng lại được gọi là custom action Trong trang JSP, một custom action được triệu gọi bằng cách dùng custom tag Một tag library là một tập các custom tag.

Các ứng dụng có thể được thực hiện bằng custom action bao gồm xử lý

form, truy cập cơ sở dữ liệu và các dịch vụ ở mức xí nghiệp khác như email, quản

lý thư mục và điều khiển luồng Trước khi custom action xuất hiện thì JSP có một

cơ chế dùng lại mã là các thành phần JavaBean kết hợp với scriplet Tuy nhiên với

JavaBean có một bất lợi là xây dựng phức tạp và khó quản lý

Các custom action làm dịu được vấn đề này bằng cách mang lại các lợi ích

dưới góc độ khác của việc module hoá tính sử dụng lại cho các trang JSP Các

custom action gói gọn lại các tác vụ để chúng có thể được dùng lại trong hơn một

ứng dụng và tăng hiệu xuất bằng cách khuyến khích phân chia công việc giữa các

nhà phát triển thư viện và người sử dụng thư viện Các tag library của JSP được

tạo bởi các nhà phát triển, là người thành thạo ngôn ngữ lập trình Java và là

chuyên gia trong giao tiếp với cơ sở dữ liệu và các dịch vụ khác Các tag library

được dùng bởi các nhà thiết kế ứng dụng web, là người có thể chỉ tập trung vào cách thức hiển thị hơn là quan tâm đến cách truy cập cơ sở dữ liệu và các dịch vụ khác

Một số đặt tính của các custom tag là:

 Chúng có thể được tuỳ biến thông qua các thuộc tính từ một trang đang gọi

Trang 37

 Chúng được phép truy cập vào tất cả đối tượng có sẵn trong trang JSP.

 Chúng có thể thay đổi lời đáp mà được phát sinh bởi một trang đang gọi

 Chúng có thể được lồng với nhau và cho phép các tương tác phức tạp trong một trang

 Chúng có thể truyền thông với nhau Chúng ta có thể tạo và khởi tạo

một thành phần JavaBean, tạo một biến tham chiếu đến Bean đó trong một tag và sau đó sử dụng Bean này trong tag khác.

1.5.2 Cách dùng các tags trong JSP

Phần này trình bày cách thức mà tác giả của trang web sử dụng tag library trong JSP và giới thiệu các loại tag khác nhau Các ví dụ trong phần này sẽ được

định nghĩa trong phần III

a) Khai báo các tag library

Trang JSP sẽ sử dụng các tag được định nghĩa trong một tag library bằng cách đưa vào taglib directive trong trang trước bất kỳ custom tag được sử dụng:

<%@ taglib uri = ‘/tlt’ prefix = ‘tlt’ %>

Thuộc tính uri tham chiếu tới URI đó là định danh duy nhất cho tag library.

URI có thể là URI tương đối hay tuyệt đối Nếu URI tương đối thì nó phải được

ánh xạ đến một URI tuyệt đối trong taglib element của bộ mô tả triển khai ứng

dụng Web, tập tin cấu hình này cùng với ứng dụng Web được phát triển theo bản đặt tả Java Servlet và JavaServer Pages

Thuộc tính prefix định nghĩa một tiếp đầu ngữ để phân biệt với các tag library khác, do đó thuộc tính này giải quyết được vấn đề xung đột về các tên tag.

b) Các loại tag

Những custom action được diễn đạt bằng cú pháp XML Chúng có start tag,

nội dung và end tag:

<tlt:tag>

body

</tlt:tag>

Trang 38

Một tag mà không có nội dung được biểu diễn như sau:

<tlt:tag />

Trang 39

c) Các tag đơn giản

Một tag đơn giản sau triệu gọi một action và xuất ra lời chào “Hello

World.”

<tlt:helloWorld />

d) Các tag có thuộc tính

Một start tag của custom action có thể chứa các thuộc tính dưới dạng attr =

‘value’ Các thuộc tính này tuỳ biến các tham số dùng trong các phương thức của một lớp java

Các thuộc tính có thể được gán một hay nhiều tham số trong một đối tượng request hoặc từ một hằng chuổi Chỉ có các kiểu thuộc tính trong bảng sau mới có thể được gán từ các giá trị tham số của request và của các hằng chuổi

Kiểu thuộc tính Phương thức valueOf chuyển chuổi

boolean or Boolean java.lang.Boolean.valueOf(String)

byte or Byte java.lang.Byte.valueOf(String)

char or Character java.lang.Character.valueOf(String)

double or Double java.lang.Double.valueOf(String)

int or Integer java.lang.Integer.valueOf(String)

float or Float java.lang.Float.valueOf(String)

long or Long java.lang.Long.valueOf(String)

Giá trị thuộc tính có dạng <%= expression %> được tính vào thời gian yêu cầu Giá trị của biểu thức tuỳ thuộc vào kiểu thuộc tính được xác định trong đối tượng cài

đặt tag còn gọi là tag handler (tag handler trong phần định nghĩa các tag).

<tlt:helloWorld name=’Doan Van Hien />

e) Các tag có nội dung

Tag có thể bao hàm các custom tag, scripting element, HTML, và nội dung

nằm giữa start tag và end tag Trong ví dụ sau sẽ đưa ra thông tin “lời chào” được

Trang 40

cung cấp trong thân tag thay vì trong thuộc tính của nó.

<tlt:helloWorld>

Doan Van Hien

</tlt:helloWorld>

Ngày đăng: 09/12/2016, 01:35

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[1] Ach1 Servlet and JSP – Marty Hall - 2000 Sách, tạp chí
Tiêu đề: Ach1 Servlet and JSP
Tác giả: Marty Hall
Năm: 2000
[2] Nguyễn Văn Ba – Phân tích thiết kế hệ thống thông tin – Các phương pháp hương cấu trúc – Nhà xuất bản Đại học Quốc gia Hà nội – 2003 Sách, tạp chí
Tiêu đề: Phân tích thiết kế hệ thống thông tin – Các phương pháp hương cấu trúc
Tác giả: Nguyễn Văn Ba
Nhà XB: Nhà xuất bản Đại học Quốc gia Hà nội
Năm: 2003
[8] XML Professional – Didier Martin – 2000 Sách, tạp chí
Tiêu đề: XML Professional
Tác giả: Didier Martin
Năm: 2000
[10] Lập trình ứng dụng web với JSP/ Servlet – Nguyễn Phương Lan – Hoàng Đức Hải – 2001 Sách, tạp chí
Tiêu đề: Lập trình ứng dụng web với JSP/ Servlet
Tác giả: Nguyễn Phương Lan, Hoàng Đức Hải
Năm: 2001
[3] JSP JavaBeans Framework – By IBM – 2000(Web site) Khác
[9] Phân tích và thiết kế hệ thống thông tin – Viện kinh tế TP. Hồ Chí Minh Khác
[11] JSP Lập trình cơ sở dữ liệu – Nguyễn Tiến, Nguyễn Văn Tâm, Nguyễn Văn Hoài – 2001 Khác

HÌNH ẢNH LIÊN QUAN

Hình 2.1 Sơ đồ hệ thống công ty - 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
Hình 2.1 Sơ đồ hệ thống công ty (Trang 52)
Hình 2.2 Biểu đồ UseCase tổng quát b) Biểu đồ use case tổng quát của hệ quản trị (admin) - 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
Hình 2.2 Biểu đồ UseCase tổng quát b) Biểu đồ use case tổng quát của hệ quản trị (admin) (Trang 62)
Hình 2.5 Biểu đồ UseCase quản lý chấm công - 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
Hình 2.5 Biểu đồ UseCase quản lý chấm công (Trang 65)
Hình 2.6 Biểu đồ UseCase quản lý người dùng - 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
Hình 2.6 Biểu đồ UseCase quản lý người dùng (Trang 66)
Hình 2.7 Biểu đồ tuần tự chức năng Đăng nhập - 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
Hình 2.7 Biểu đồ tuần tự chức năng Đăng nhập (Trang 67)
Hình 2.8 Biểu đồ tuần tự chức năng đăng ký người dùng - 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
Hình 2.8 Biểu đồ tuần tự chức năng đăng ký người dùng (Trang 68)
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 - 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
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 (Trang 73)
Hình 2.18 Biểu đồ hoạt động chức năng quản lý người dùng - 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
Hình 2.18 Biểu đồ hoạt động chức năng quản lý người dùng (Trang 78)
Hình 2.19 Sơ đồ lớp - 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
Hình 2.19 Sơ đồ lớp (Trang 79)
Hình 2.20 Sơ đồ quan hệ quản lý chấm công - 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
Hình 2.20 Sơ đồ quan hệ quản lý chấm công (Trang 83)
Hình 3.1 Giao diện trang chủ 3.3.2 Giao diện đăng nhập - 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
Hình 3.1 Giao diện trang chủ 3.3.2 Giao diện đăng nhập (Trang 85)
Hình 3.3 Trang quản lý hồ sơ nhân viên - 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
Hình 3.3 Trang quản lý hồ sơ nhân viên (Trang 88)
Hình 3.4 Giao diện trang chấm công - 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
Hình 3.4 Giao diện trang chấm công (Trang 89)
Hình 3.6 Giao diện trang tổng kết cuối năm - 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
Hình 3.6 Giao diện trang tổng kết cuối năm (Trang 94)

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w