Để chạy được JSP chúng ta cần một trong các Web Server sau. Hãy xem các
hướng dẫn cài đặt, nơi đặt các JSP files, để thực thi được trong Web Servers
đều có đầy đủ trong từng Web Server khi chúng ta download về.
145 trang |
Chia sẻ: lylyngoc | Lượt xem: 3760 | Lượt tải: 2
Bạn đang xem trước 20 trang tài liệu Đồ án Lập trình JSP TECHNOLOGY, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
h 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.
1. 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:
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.
Đồ án tốt nghiệp Gvhd: Ts. Nguyễn Thúc Hải
Svth: Đinh Lê Giang Trang 35
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.
2. 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:
body
Một tag mà khơng cĩ nội dung được biểu diễn như sau:
a) 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.”.
b) 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
Đồ án tốt nghiệp Gvhd: Ts. Nguyễn Thúc Hải
Svth: Đinh Lê Giang Trang 36
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 đượ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).
c) Các tag cĩ nội dung.
Đồ án tốt nghiệp Gvhd: Ts. Nguyễn Thúc Hải
Svth: Đinh Lê Giang Trang 37
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 cung cấp trong thân tag thay vì trong thuộc tính của nĩ.
DHBK Ha Noi
d) Các tag định nghĩa các biến kịch bản.
Một tag cĩ thể định nghĩa ra một biến mà biến này được dùng trong cùng
một trang. Ví dụ sau đây minh hoạ cách thức định nghĩa và sử dụng một biến
chứa một đối tượng được trả về.
e) Kết hợp các tag.
Các tag kết hợp với nhau bằng các phương pháp của các đối tượng dùng
chung. Trong ví dụ sau, tag1 tạo một đối tượng cĩ tên là obj1, sau đĩ được sử
dụng lại bởi tag2. Qui tắc này được khuyến khích bởi bảng đặt tả JSP, một tag tạo
ra một tên với thuộc tính id và tag thứ hai cĩ thuộc tính name để dùng lại tên này.
Trong ví dụ kết tiếp, dùng các tag lồng nhau tương tự như trong XML và
HTML.
Đồ án tốt nghiệp Gvhd: Ts. Nguyễn Thúc Hải
Svth: Đinh Lê Giang Trang 38
III. Định nghĩa các tag.
Để sử dụng các custom tag trong trang JSP, chúng ta cần phải định nghĩa ba
thành phần riêng biệt:
- Phát triển tag handler và các lớp trợ giúp cho tag.
- Khai báo tag trong bộ mơ tả thư viện tag (tag library descriptor)
dưới dạng tập tin XML.
- Tạo tập tin JSP cĩ sử dụng custom tag.
Phần này mơ tả các thuộc tính của tag handler và các bộ mơ tả thư viện tag,
cũng trình bày cách phát triển tag handler và các element của bộ mơ tả thư viện
đối với mỗi loại tag được giới thiệu trong phần trước.
1. Tag handler.
Tag handler là một đối tượng được gọi lên bởi JSP container để định trị
cho custom tag trong xuốt quá trình thực thi của trang JSP cĩ tham chiếu tới một
tag nào đĩ. Các phương thức của tag handler được gọi bởi lớp cài đặt trang JSP
vào các thời điểm khác nhau trong xuốt quá trình định trị cho tag.
Khi gặp start tag của custom tag thì lớp cài đặt trang JSP gọi các phương
thức để khởi tạo các giá trị thích hợp và sau đĩ triệu gọi phương thức doStartTag.
Khi gặp end tag của custom tag thì phương thức doEndtag được gọi.
Tuỳ theo mục đích của từng custom tag mà chúng ta xử lý các phương
thức thích hợp trong từng giao tiếp cài đặt. Bảng sau mơ tả các loại tag cĩ các
phương thức tương ứng để xử lý.
Đồ án tốt nghiệp Gvhd: Ts. Nguyễn Thúc Hải
Svth: Đinh Lê Giang Trang 39
Loại tag handler Các phương thức cần xử lý
Simple doStartTag, doEndTag, release
Attributes doStartTag, doEndTag, set/getAttribute1...N
Body, No
Interaction
doStartTag, doEndTag, release
Body, Interaction
doStartTag, doEndTag, release, doInitBody,
doAfterBody
Tag handler cĩ sự truy cập vào API mà cho phép nĩ truyền thơng với
trang JSP. Con đường vào API này là đối tượng pageContext, qua đĩ tag handler
cĩ thể truy cập vào mọi đối tượng ngầm định khác như request, session,
application từ trang JSP. Các đối tượng ngầm định cĩ thể cĩ các thuộc tính kết
hợp với chúng. Các thuộc tính như thế được truy cập qua các phương thức
[get/set]Attribute thích hợp.
Nếu tag được lồng nhau thì tag handler cũng cĩ thể truy cập handler này
(được gọi là parent) cùng với tồn bộ tag.
Các tag handler phải được cài đặt hai giao tiếp hoặc Tag hoặc BodyTag.
Các giao tiếp cĩ thể được dùng để lấy đối tượng Java đã tồn tại và tạo ra một tag
handler. Để định nghĩa các tag handler mới chúng ta cĩ thể dùng các lớp
TagSupport và BodyTagSupport như là các lớp cơ sở (xem III. 4. Tag handler
được triệu gọi như thế nào?).
Đồ án tốt nghiệp Gvhd: Ts. Nguyễn Thúc Hải
Svth: Đinh Lê Giang Trang 40
2. Tag library descriptor.
Tag library descriptor (TLD) là một tài liệu XML dùng để mơ tả thư viện
tag. Một TLD chứa tồn bộ thơng tin về thư viện và mỗi tag chứa trong thư viện.
JSP container và các cơng cụ phát triển JSP sử dụng TLD để xác định các tag.
Các element của TLD sau dùng để định nghĩa thư viện tag:
Code 21: HelloWorldTag.java
<!DOCTYPE taglib
PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag
Library1.1//EN"
"">
<!--Tên mặt định đơn giản cĩ thể dùng bởi cơng cụ tạo trang
JSP để tạo tên với giá trị gợi nhớ; chẳng hạn shortname cĩ thể
Đồ án tốt nghiệp Gvhd: Ts. Nguyễn Thúc Hải
Svth: Đinh Lê Giang Trang 41
được dùng như giá trị tiếp đầu ngữ thích hợp trong taglib
directive và/hoặc tạo ra các tiếp đầu ngữ cho các id -->
... ...
Tag element yêu cầu đối với mọi tag để xác định một lớp cĩ trong thư
viện tag.
classname
...
3. Các ví dụ.
Để tạo các custom tag chúng ta cần hai import gĩi cơ bản:
import javax.servlet.jsp.*;
import javax.servlet.jsp.tagext.*; // tag extension
a) Các tag đơn giản.
- Tag handler
Đối với các tag đơn giản chỉ cần cài đặt hai phương thức của giao
tiếp Tag là doStartTag và doEndTag. doStartTag được triệu gọi khi
Đồ án tốt nghiệp Gvhd: Ts. Nguyễn Thúc Hải
Svth: Đinh Lê Giang Trang 42
JSP container gặp start tag, nĩ trả về SKIP_BODY vì thân tag
chẳng cĩ nội dung nào cả. Ngược lại khi gặp end tag thì JSP
container gọi doEndTag, trả về EVAL_PAGE nếu phần cịn lại của
trang cần phải định trị, nếu khơng trả về SKIP_PAGE.
Lớp tag handler sẽ được cài đặt như sau:
Code 22: HelloWorldTag.java
public HelloWorldTag extends TagSupport {
public int doStartTag() throws JspException {
try { pageContext.getOut().print("Hello World.");
} catch (Exception ex) {
throw new JspTagException("HelloWorldTag: " +
e.getMessage());
}
return SKIP_BODY;
}
public int doEndTag() {
return EVAL_PAGE;
}
Đồ án tốt nghiệp Gvhd: Ts. Nguyễn Thúc Hải
Svth: Đinh Lê Giang Trang 43
}
- TLD element
Các tag mà khơng cĩ thân phải khai báo nội dung của thân là
rỗng.
Code 23: helloworld.tld
<!DOCTYPE taglib
PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library
1.1//EN"
"">
<!--Nếu cĩ JSP v1.2 thì đổi lại
""-->
1.0
1.1
legiang
Đồ án tốt nghiệp Gvhd: Ts. Nguyễn Thúc Hải
Svth: Đinh Lê Giang Trang 44
A tag library from authors at
helloWorld
com.legiang.HelloWorldTag
Ví dụ với tag đơn giản nhất
EMPTY
- JSP page
Code 24: hello.jsp
<!DOCTYPE html
Đồ án tốt nghiệp Gvhd: Ts. Nguyễn Thúc Hải
Svth: Đinh Lê Giang Trang 45
PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"DTD/xhtml1-strict.dtd">
Code 24: hello.jsp (tiếp theo)
<link rel = "stylesheet" href ="JSP-Styles.css" type =
"text/css"/>
Đồ án tốt nghiệp Gvhd: Ts. Nguyễn Thúc Hải
Svth: Đinh Lê Giang Trang 46
b) Các tag cĩ thuộc tính.
- Định nghĩa các thuộc tính trong tag handler.
Đối với mỗi thuộc tínch của tag, chúng ta phải định nghĩa theo
phong cách của JavaBean, tức là phải cĩ phương thức get/set[Attribute] trong tag
handler.
Hãy nhớ rằng, nếu thuộc tính được đặt tên là id và tag handler kết
thừa từ lớp TagSupport thì chúng ta khơng cần định nghĩa các phương thức
get/set[Attribute] bởi vì những thứ này đã được TagSupport làm sẵn.
Lớp tag handler sẽ được cài đặt như sau:
Code 25: HelloWorldTag.java (sữa lại trong Code 22 )
public HelloWorldTag extends TagSupport {
private String name = “World.”;
public void setName(String name) {
this.name = name;
}
public int doStartTag() throws JspException {
try {
pageContext.getOut().print("Hello " + name);
Đồ án tốt nghiệp Gvhd: Ts. Nguyễn Thúc Hải
Svth: Đinh Lê Giang Trang 47
} catch (Exception ex) {
throw new JspTagException("HelloWorldTag: " +
e.getMessage());
Code 25: HelloWorldTag.java (sữa lại trong Code 22)
(tiếp theo)
}
return SKIP_BODY;
}
public int doEndTag() {
return EVAL_PAGE;
}
}
- TLD element
Đối với mỗi thuộc tính chúng ta phải xác định thuộc tính nào
được yêu cầu (bắt buộc) và giá trị nào cĩ thể được xác định bởi biểu thức. Nếu
thuộc tính của tag khơng bắt buộc thì tag handler nên cung ấp giá trị mật định.
TLD cho tag handler ở trên như sau:
Đồ án tốt nghiệp Gvhd: Ts. Nguyễn Thúc Hải
Svth: Đinh Lê Giang Trang 48
Code 26: TLD file (overwrite helloworld.tld)
...
helloWorld
com.legiang.HelloWorldTag
Ví dụ với tag đơn giản nhất
name
false
false
EMPTY
- JSP page
Đồ án tốt nghiệp Gvhd: Ts. Nguyễn Thúc Hải
Svth: Đinh Lê Giang Trang 49
Code 27: paramtag.jsp
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"DTD/xhtml1-strict.dtd">
Code 27: paramtag.jsp (tiếp theo)
<%@ taglib uri = "helloworld.tld" prefix = "legiang"
%>
Tag With Attributes
<link rel = "stylesheet" href ="JSP-Styles.css" type =
"text/css"/>
<legiang:helloWorld name = "BKHN
University" />
Đồ án tốt nghiệp Gvhd: Ts. Nguyễn Thúc Hải
Svth: Đinh Lê Giang Trang 50
c) Các tag cĩ nội dung.
- Tag handler
Tag handler cho loại này được cài đặt khác nhau phụ thuộc vào tag
handler cĩ tương tác với thân hay khơng. Tương tác cĩ nghĩa là tag handler đọc
hoặc sữa đổi nội dung của thân hoặc tạo ra giá trị lặp lại cho thân tag.
Các tag cĩ tương tác với phần thân: nếu tag handler khơng cần
tương tác với phần thần thì tag handler này nên cài đặt giao tiếp Tag hoặc dẫn
xuất từ lớp TagSupport. Nếu thân của tag cần định trị thì doStartTag cần phải trả
về EVAL_BODY_INCLUDE, ngược lại trả về SKIP_BODY.
Các tag cĩ tương tác với phần thân: tag handler phải cài đặt giao
tiếp BodyTag hoặc BodyTagSupport, thường cài đặt phương thức doInitBody và
doAfterBody. Hai phương thức này tương tác với nội dung của thân được chuyển
vào tag handler bởi lớp cài đặt trang JSP. Đối tượng BodyContent cung cấp vài
phương thức để đọc và ghi nội dung của nĩ. Tag handler sử dụng các phương
thức getString, getReader của BodyContent để trích thơng tin từ phần thân và
phương thức writeOut(out) để ghi các nội dung của thân vào luồng xuất. Phương
thức getPreviousOut thường được sử dụng để bảo đảm rằng kết quả trả về của tag
handler thì cĩ sẳn đối với tồn bộ tag handler. Các phương thức chính được
dùng trong loại tag này:
doInitBody: được gọi sau khi nội dung của thân được gán nhưng
trước khi được định giá trị, thường được dùng để thực hiện khởi
tạo giá trị mà tuỳ thuộc vào nội dung của thân.
Đồ án tốt nghiệp Gvhd: Ts. Nguyễn Thúc Hải
Svth: Đinh Lê Giang Trang 51
doAfterBody: được gọi sau khi nội dung của thân được định trị.
Nếu thân được trị nhiều lần lặp đi lặp lại nên trả về
EVAL_BODY_TAG, ngược lại trả về SKIP_BODY.
release: tag handler nên xác lập lại trạng thái của nĩ và giải phĩng
các tài nguyên dành riêng bằng phương thức release.
Ví dụ sau đọc nội dung của thân, chuyển nội dung đĩ, và sau đĩ
ghi lại những thay đổi vào luồng xuất.
Code 28: TransformTag.java
public class TransformTag extends BodyTagSupport {
public int doAfterBody() throws JspTagException {
BodyContent bc = getBodyContent();
String body = bc.getString();
bc.clearBody();
try {
getPreviousOut().print(body.transform());
} catch (IOException e) {
throw new JspTagException("TransformTag: " +
e.getMessage());
Đồ án tốt nghiệp Gvhd: Ts. Nguyễn Thúc Hải
Svth: Đinh Lê Giang Trang 52
}
return SKIP_BODY;
}
}
- TLD element
TLD ở đây chỉ sữa đổi lại các ví dụ trên trong bodycontent tag và
đặt tên file là transform.tld
...
JSP
Với các tag cĩ phần thân thì bodycontent tag cĩ hai giá trị. Một là
JSP, phần thân bao gồm custom tag, scripting element và văn bản HTML. Tất cả
các thứ cịn lại cĩ giá trị là tagdependent. Chú ý rằng giá trị của element này
khơng ảnh hưởng tới tiến trình thơng dịch của thân.
- JSP page
Code 29: transformtag.jsp
Đồ án tốt nghiệp Gvhd: Ts. Nguyễn Thúc Hải
Svth: Đinh Lê Giang Trang 53
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"DTD/xhtml1-strict.dtd">
Tag With Body
<link rel = "stylesheet" href ="JSP-Styles.css" type =
"text/css"/>
Tag With Body
Hi! BKHN University
d) Các tag định nghĩa các biến kịch bản.
Đồ án tốt nghiệp Gvhd: Ts. Nguyễn Thúc Hải
Svth: Đinh Lê Giang Trang 54
- Tag handler
Tag handler đảm nhận việc tạo và gán đối tượng được tham chiếu
bởi biến kịch bản vào ngữ cảnh cĩ thể truy cập từ một trang. Để Làm được điều
này bằng cách dùng hoặc phương thức pageContext.setAttribute(name, value,
scope) hoặc pageContext.setAttribute(name, value). Thơng thường một thuộc tính
chuyển vào custom tag phải xác định “tên” của biến đối tượng; Tên này cĩ thể
truy xuất bằng cách gọi phương thức get[Attribute] của thuộc tính (xem 2) Các
tag cĩ thuộc tính).
Nếu giá trị của biến kịch bản phụ thuộc vào đối tượng hiện tại trong
tag handler thì nĩ cĩ thể truy xuất đối tượng này bằng cách dùng
pageContext.setAttribute(name, scope). Các giá trị của tham số scope được tĩm
tắc trong bảng sau:
Phạm vi Cĩ thể truy cập từ Thời gian sống
page Trang hiện hành
Cho tới khi lời đáp gởi
trở lại user hoặc yêu cầu
được chuyển tới trang
mới
request
Trang hiện hành và bất
kỳ trang được include
hay forward nào
Cho tới khi lời đáp gởi
trở lại user
Đồ án tốt nghiệp Gvhd: Ts. Nguyễn Thúc Hải
Svth: Đinh Lê Giang Trang 55
session
Yêu cầu hiện hành và
bất kỳ yêu cầu tiếp theo
trong cùng browser
Đời sống của một phiên
làm việc (session)
application
Bất kỳ yêu cầu hiện tại
và tương lai nào từ cùng
một ứng dụng
Đời sống của một ứng
dụng
Ngồi việc cài đặt giá trị của biến trong tag handler, chúng ta cịn
phải định nghĩa một lớp dẫn xuất từ lớp TagExtrInfo. Lớp này cung cấp thơng tin
cho JSP container về đặt tính của của biến kịch bản, phải cài đặt phương thức
getVariableInfo để trả về một mảng các đối tượng VariableInfo chứa các thơng
tin sau: tên biến, lớp của biến, liệu biến này cĩ tham khảo tới một giá trị đối
tượng mới hay đã cĩ, tính sẳn dùng của biến này.
Bảng sau mơ tả tính sẳn dùng của biến kịch bản và các phương thức
để xác lập và xác lập lại giá trị của biến.
Value Availability Methods
NESTED
Giữa start tag và
end tag.
Trong doInitBody và
doAfterBody đối với tag
handler cài đặt BodyTag;
ngược lại trong doStartTag.
Đồ án tốt nghiệp Gvhd: Ts. Nguyễn Thúc Hải
Svth: Đinh Lê Giang Trang 56
AT_BEGIN
Từ start tag cho
đến cuối trang.
Trong doInitBody,
doAfterBody, và doEndTag đối
với tag handler cài đặt
BodyTag; ngược lại trong
doStartTag và doEndTag.
AT_END
Sau end tag cho
tới cuối trang.
Trong doEndTag.
Lớp tag handler sau lấy dữ liệu từ JNDI lookup được lưu trữ như là
thuộc tính của đối tượng pageContext cùng với tên của biến kịch bản.
Code 30: LookupTag.java
public LookupTag extends TagSupport {
private String type;
private String name;
public void setName(String name) {
this.name = name;
}
public void setType(String type) {
Đồ án tốt nghiệp Gvhd: Ts. Nguyễn Thúc Hải
Svth: Đinh Lê Giang Trang 57
this. type = type;
}
public int doStartTag() {
return SKIP_BODY;
}
public int doEndTag() throws JspException {
try {
InitialContext context = new InitialContext();
Object obj = (Object)context.lookup(name);
pageContext.setAttribute(getId(), obj);
Code 30: LookupTag.java (tiếp theo)
} catch(javax.naming.NamingException e) {
throw new JspException("Unable to look up " + name
+ " due to " + e.getMessage());
}
return EVAL_PAGE;
}
Đồ án tốt nghiệp Gvhd: Ts. Nguyễn Thúc Hải
Svth: Đinh Lê Giang Trang 58
}
Biến kịch bản sẽ được định nghĩa trong lớp dẫn xuất từ lớp
TagExtraInfo. Do biến được truyền vào như các thuộc tính của tag nên sẽ được
truy xuất bởi phương thức getAttributeString của lớp TagData và dùng để lấp đầy
hàm tạo của VariableInfo. Để cho phép biến kịch bản được dùng trong phần cịn
lại của trang thì phạm vi của biến nên gán bằng AT_END.
Code 31: LookupTagTei.java
public class LookupTagTEI extends TagExtraInfo {
public VariableInfo[] getVariableInfo(TagData data) {
VariableInfo info1
= new VariableInfo(
data.getAttributeString("id"),
data.getAttributeString("type"),
true,
VariableInfo.AT_END);
VariableInfo[] info = { info1 } ;
return info;
}
Đồ án tốt nghiệp Gvhd: Ts. Nguyễn Thúc Hải
Svth: Đinh Lê Giang Trang 59
}
- TLD element
Chúng ta cần phải báo cho JSP container biết nĩ nên dùng lớp
TagExtraInfo để tạo ra biến kịch bản với phạm vi thích hợp. Đoạn TLD cĩ tên
lookup.tld như sau:
Code 32: TLD file
...
com.legiang.LookupTag
com.legiang.LookupTagTEI
name
true
false
Đồ án tốt nghiệp Gvhd: Ts. Nguyễn Thúc Hải
Svth: Đinh Lê Giang Trang 60
type
true
false
...
- JSP page
Code 33: JSP file
...
<legiang:lookup id = "sv" type = "UserTransaction"
name = "java:comp/ UserTransaction ">
<!-- Giả sử trong lớp UserTransaction cĩ phương thức begin
-->
Đồ án tốt nghiệp Gvhd: Ts. Nguyễn Thúc Hải
Svth: Đinh Lê Giang Trang 61
4. Tag handler được triệu gọi như thế nào?
Giao tiếp Tag định nghĩa một qui ước truyền thơng cơ bản giữa tag
handler và lớp cài đặt trang JSP. Giao tiếp này định nghĩa chu kỳ sống và các
phương thức được triệu gọi khi gặp phải start tag và end tag của một action.
Lớp cài đặt trang JSP triệu gọi các phương thức setPageContext,
setParent, và các phương thức cài đặt thuộc tính trước khi gọi phương thức
doStartTag. Lớp này cũng bảo đảm rằng phương thức release sẽ được gọi trong
tag handler trước khi kết thúc trang. Ví dụ sau thực hiện từng bước cách gọi tag
handler.
Code 34: Cách thực hiện tag handler khơng cĩ BodyContent
ATag t = new ATag();
t.setPageContext(...);
t.setParent(...);
t.setAttribute1(value1);
t.setAttribute2(value2);
t.doStartTag();
t.doEndTag();
t.release();
Đồ án tốt nghiệp Gvhd: Ts. Nguyễn Thúc Hải
Svth: Đinh Lê Giang Trang 62
Giao tiếp BodyTag mở rộng từ giao tiếp Tag bằng cách định nghĩa thêm
các phương thức cho phép tag handler truy cập vào thân của nĩ. Giao tiếp này
cung cấp ba phương thức mới:
setBodyContent: tạo nội dung của thân tag và thêm vào tag
handler.
doInitBody: được gọi trước khi định trị thân của tag.
DoAfterBody: được gọi trước khi định trị thân của tag.
Ví dụ:
Code 35: Cách thực hiện tag handler cĩ BodyContent
t.doStartTag();
out = pageContext.pushBody();
t.setBodyContent(out);
/* thực hiện các khởi tạo cần thiết sau khi nội dung của thân
được gán */
t.doInitBody();
t.doAfterBody(); /**/
/* Khi doAfterBody trả về EVAL_BODY_TAG chúng ta lặp lại
phần định trị cho thân tag */
Đồ án tốt nghiệp Gvhd: Ts. Nguyễn Thúc Hải
Svth: Đinh Lê Giang Trang 63
...
t.doAfterBody(); /**/
t.doEndTag();
t.pageContext.popBody();
t.release();
Đồ án tốt nghiệp Gvhd: Ts. Nguyễn Thúc Hải
Svth: Đinh Lê Giang Trang 64
Phần II: Phân Tích – Thiết Kế – Cài Đặt
Chương IV: PHÂN TÍCH – THIẾT KẾ
I. Phân Tích.
1. Đặt vấn đề.
Xuất phát từ nhu cầu thực tế trong quản lý cơng việc ở cac cơng ty hiện
nay cịn nhiều nhược điểm, việc người quản lý ở cấp càng cao càng khơng nắm
bắt thơng tin, khơng trực tiếp quản lý được tốc độ làm việc của nhân viên mình là
khá phổ biến. Hơn nữa trong thời buổi kinh tế thị trường thời buổi của cơng nghệ
thơng tin mỗi con người cĩ quá nhiều cơng việc phải làm, họ khơng cĩ thời gian
rảnh rỗi để ngồi làm báo cáo rồi cuối tuần đem nộp cho quản lý, họ muốn được ở
nhà nhưng vẫn biết cơng việc của mình phải làm trong ngày là gì?, họ muốn cĩ
một khoảng thời gian dù ít ỏi để tranh thủ nghỉ ngơi.
Để một phần nào tháo gỡ các khĩ khăn, nhược điểm và xuất phát từ các yêu
cầu thực tế của một số cơng ty chương trình QUẢN LÝ CƠNG VIỆC TRÊN
WEB đã được ra đời. Trong khuơn khổ của một đồ tốt nghiệp đại học do thời
gian, các kiến thức nhất là về chuyên mơn nghiệp vụ cịn hạn chế chắc chắn
khơng tránh khỏi những sai sĩt. Song với sự nổ lực hết sức nhằm hồn thành tốt
cơng việc nhưng do thời gian nghiên cứu thực hiện khơng nhiều, lượng cơng việc
tương đối lớn, trang thiết bị, tài liệu chưa đầy đủ và trình độ hạn chế cho nên chắc
chắn đề tài này sẽ cĩ ít nhiều khiếm khuyết từ thực tế đến ý tưởng lập trình, mong
được sự lượng thứ và chỉ bảo thêm của các Thầy, Cơ.
Rất mong nhận được sự đĩng gĩp ý kiến chân thành từ thầy cơ và các bạn
để chương trình hồn thiện hơn sớm được đưa vào sử dụng thực tế.
2. Định nghĩa các yêu cầu.
Quản Lý
Đồ án tốt nghiệp Gvhd: Ts. Nguyễn Thúc Hải
Svth: Đinh Lê Giang Trang 65
- Phân cơng cơng việc cho từng nhân viên.
- Kiểm tra tiến độ thực hiện.
- Đánh giá cơng việc.
- Thống kê.
- Giải đáp thắc mắc.
- Lập bảng đánh giá nhân viên bằng biểu đồ.
- Tổng hợp báo cáo.
- Thiết lập chế độ làm việc trực tiếp giữa hai nhân viên.
Nhân Viên
- Xem các cơng việc được giao.
- Báo cáo tiến độ thực hiện theo ngày.
- Đề xuất cách giải quyết cơng việc theo ngày.
- Đĩng gĩp ý kiến xây dựng cơng ty.
- Báo cáo cơng việc thực hiện xong.
- Xem các đánh giá của bên quản lý.
Quản Trị Hệ Thống (Admin)
- Tạo/Xố/Sữa user.
- Thêm/Xố/Sữa các quyền.
Đồ án tốt nghiệp Gvhd: Ts. Nguyễn Thúc Hải
Svth: Đinh Lê Giang Trang 66
- Gán quyền cho user.
- Refresh database.
- Restore database.
- Cập nhật database.
3. Phạm vi đề tài.
Về Dữ Liệu
Cho phép lưu trữ trong một năm phát sinh dữ liệu
Dữ liệu cập nhật trực tuyến
Về Giao Diện
Hệ thống hoạt động trên mơi trường Web
Về Mạng
Hoạt động trong mơi trường mạng Intranet
Về xử lý
Thống kê
Thiết lập chế độ làm việc giữa hai nhân viên
Lập báo cáo
Làm tươi/ Phục hồi CSDL
Đồ án tốt nghiệp Gvhd: Ts. Nguyễn Thúc Hải
Svth: Đinh Lê Giang Trang 67
4. Mơ hình xử lý quan niệm.
a) Sơ đồ ngữ cảnh.
Đồ án tốt nghiệp Gvhd: Ts. Nguyễn Thúc Hải
Svth: Đinh Lê Giang Trang 68
b) Sơ đồ phân rã chức năng.
Đồ án tốt nghiệp Gvhd: Ts. Nguyễn Thúc Hải
Svth: Đinh Lê Giang Trang 69
c) Sơ đồ hệ thống.
- Mức 1:
Đồ án tốt nghiệp Gvhd: Ts. Nguyễn Thúc Hải
Svth: Đinh Lê Giang Trang 70
- Mức 2:
Đồ án tốt nghiệp Gvhd: Ts. Nguyễn Thúc Hải
Svth: Đinh Lê Giang Trang 71
Phân rã từ xử lý 4_Phan Cong.
Phân rã từ xử lý 5_Cap Nhat CV.
Đồ án tốt nghiệp Gvhd: Ts. Nguyễn Thúc Hải
Svth: Đinh Lê Giang Trang 72
Phân rã từ xử lý 6_Thong Ke.
Phân rã từ xử lý 9_Tong Hop Bao Cao.
Đồ án tốt nghiệp Gvhd: Ts. Nguyễn Thúc Hải
Svth: Đinh Lê Giang Trang 73
Phân rã từ xử lý 13_Bao Cao Tien Do CV.
Phân rã từ xử lý 16_ Cap Nhat Permission.
Đồ án tốt nghiệp Gvhd: Ts. Nguyễn Thúc Hải
Svth: Đinh Lê Giang Trang 74
Phân rã từ xử lý 19_ Cap Nhat User.
Phân rã từ xử lý 20_Gan Quyen.
Đồ án tốt nghiệp Gvhd: Ts. Nguyễn Thúc Hải
Svth: Đinh Lê Giang Trang 75
5. Mơ hình dữ liệu quan niệm.
Sơ đồ thực thể kết hợp (ERD):
Đồ án tốt nghiệp Gvhd: Ts. Nguyễn Thúc Hải
Svth: Đinh Lê Giang Trang 76
II. Thiết Kế.
1. Thiết kế xử lý.
a) Sơ đồ hệ thống mức vật lý.
b) Các đơn vị thiết kế.
Cập nhật cơng việc.
Thêm cơng việc:
Nhập: TenCV & NoiDung & MaDA.
Xuất: Thơng báo đã thêm / thơng báo lỗi.
Sữa cơng việc:
Nhập: TenCV | NoiDung | MaDA | DaXong.
Xuất: Thơng báo đã sữa / thơng báo lỗi.
Xố cơng việc:
Đồ án tốt nghiệp Gvhd: Ts. Nguyễn Thúc Hải
Svth: Đinh Lê Giang Trang 77
Nhập: MaCV.
Xuất: Thơng báo đã xố / thơng báo lỗi.
Phân cơng cơng việc.
Nhập: MaNV & một hoặc nhiều MaCV & NgayBD, NgayKT.
Xuất: Thơng báo đã phân cơng / thơng báo lỗi.
Đánh giá cơng việc.
Nhập: MaDG vào bảng Works.
Xuất: Thơng báo đã đánh giá / thơng báo lỗi.
Kiểm tra tiến độ cơng việc.
Chỉ hiện thị các báo cáo tiến độ của nhân viên.
Thiết lập chế độ làm việc.
Nhập: MaNV & MaCV & ThietLap vào bảng PhanCong.
Xuất: Thơng báo đã chuyển giao cơng việc / thơng báo lỗi.
Báo cáo tiến độ cơng việc.
Nhập: MaCV & TienDo & Ngay | GhiChu | Kèm tập tin.
Xuất: Thơng báo báo cáo đã chuyển đi / thơng báo lỗi.
Thay đổi mật khẩu.
Nhập: Usename & Password củ | Password & Confirm
Password mới.
Đồ án tốt nghiệp Gvhd: Ts. Nguyễn Thúc Hải
Svth: Đinh Lê Giang Trang 78
Xuất: Thơng báo đã đổi mật khẩu / thơng báo lỗi.
Thống kê cơng việc.
Thống kê cơng việc theo ba tiêu chuẩn:
+ Từ ngày đến ngày.
+ Theo đánh giá (xếp loại).
+ theo đề án.
Làm tươi cơ sở dữ liệu.
Nhập: Tên CSDL mới cần phục hồi khi bị hỏng & làm tươi từ
ngày nào đến ngày nào | từ tháng nào đến tháng nào | năm nào.
Xuất: Thơng báo đã làm tươi CSDL / thơng báo lỗi.
Phục hồi cơ sở dữ liệu.
Nhập: Tên CSDL cần phục hồi (đã cĩ từ làm tươi CSDL).
Xuất: Thơng báo đã phục hồi hồn tồn / thơng báo lỗi.
Đồ án tốt nghiệp Gvhd: Ts. Nguyễn Thúc Hải
Svth: Đinh Lê Giang Trang 79
c) Một số giải thuật được thể hiện bàng lưu đồ.
Thêm cơng việc.
Thông báo
công việc đã
thêm
Công việc tồn tại ?
Khởi đầu
Nhập tất cả dữ liệu về
công việc
Thông báo
công việc đã
tồn tại
- Tăng mã số công việc
- Ghi vào CSDL các dữ liệu đã nhập
Tiếp tục ?
Chấm dứt
Thêm Công Việc
không
có
có
không
Mở bảng công việc
Đồ án tốt nghiệp Gvhd: Ts. Nguyễn Thúc Hải
Svth: Đinh Lê Giang Trang 80
Phân cơng cơng việc.
Thông báo
công việc đã
phân công
NV này đã dược
phân công các
công việc ?
Khởi đầu
- Chọn nhân viên
- Chọn một hoặc nhiều
công việc
- Ngày bắt đầu, kết
thúc
Thông báo lỗi
Ghi các thông tin đã nhập vào CSDL
Tiếp tục ?
Chấm dứt
Phân Công Công Việc
không
có
có
không
Mở bảng phân công
Đồ án tốt nghiệp Gvhd: Ts. Nguyễn Thúc Hải
Svth: Đinh Lê Giang Trang 81
Thống kê cơng việc.
Hiển thị bảng
thống kê
Các chuẩn đã chọn?
Khởi đầu
Chọn một trong ba
tiêu chuẩn đã cho
Thông báo
không cóTruy vấn theo các chuẩn
Tiếp tục ?
Chấm dứt
Thống Kê Công Việc
có
không
có
không
Đồ án tốt nghiệp Gvhd: Ts. Nguyễn Thúc Hải
Svth: Đinh Lê Giang Trang 82
Làm tươi cơ sở dữ liệu.
Thông báo đã
làm tươi CSDL
CSDL mới tồn tại ?
Khởi đầu
- Nhập tên csdl mới
- Nhập ngày tháng
năm
Thông báo
CSDL đã có
- Tạo CSDL mới (Backup)
- Xoá các mẩu tin trong các bảng
phát sinh
Tiếp tục ?
Chấm dứt
Làm Tươi CSDL
có
không
có
không
Đồ án tốt nghiệp Gvhd: Ts. Nguyễn Thúc Hải
Svth: Đinh Lê Giang Trang 83
2. Thiết kế cơ sở dữ liệu
a) Mơ hình dữ liệu vật lý.
Sơ đồ thực thể kết hợp (ERD):
b) Bảng mơ tả chi tiết.
Đồ án tốt nghiệp Gvhd: Ts. Nguyễn Thúc Hải
Svth: Đinh Lê Giang Trang 84
Table Vùng Diễn
Giải
Kiểu Kích
Thướ
c
Giới
hạn
Giá
Trị
Giá
Trị
Ngầm
định
Ràng
buộc
GOPY MAGY Mã Gĩp
Ý
Text 10 Khố
Chính
(PK)
MANV Mã
Nhân
Viên
Text 9 Khố
Ngoại
(FK)
NOI
DUNG
Nội
Dung
Text 50
NGAY Ngày Date
time
>=
ngày
hiện tại
ngày
hiện
tại
FILES MAFILE Mã File Int >=1 Khố
Chính
(PK)
Đồ án tốt nghiệp Gvhd: Ts. Nguyễn Thúc Hải
Svth: Đinh Lê Giang Trang 85
MABC Mã Báo
Cáo
Text 10 Khố
Ngoại
(FK)
TENFILE Tên File Text 30
FILESIZE Kích
thước
File
Long
CONTEN
TTYPE
Loại
Nội
Dung
File
Được
Tải Lên
Server
Text 30
BAO
CAO
TONG
HOP
MABCTH Mã Báo
Cáo
Tổng
Hợp
Text 10 Khố
Chính
(PK)
MACV Mã
Cơng
Việc
Int >=1 Khố
Ngoại
(FK)
Đồ án tốt nghiệp Gvhd: Ts. Nguyễn Thúc Hải
Svth: Đinh Lê Giang Trang 86
TON
DONG
Số
Lượng
CV Cịn
Tồn
Đọng
Int >=1
NGAY Ngày Date
time
>=
ngày
hiện tại
ngày
hiện
tại
CV
TUONG
LAI
Cơng
Việc Sẽ
Làm
Trong
Tuần
Tới
DEXUAT Đề Xuất Text 80
DANH
GIA
MADG Mã
Đánh
Giá
Int >=1 Khố
Chính
(PK)
PHAN
HOI
Phản
Hồi
Text 50
Đồ án tốt nghiệp Gvhd: Ts. Nguyễn Thúc Hải
Svth: Đinh Lê Giang Trang 87
MAXL Mã Xếp
Loại
Text 80 Khố
Ngoại
(FK)
NHAN
VIEN
MANV Mã
Nhân
Viên
Int >=1 Khố
Chính
(PK)
MA
GROUP
Mã
Nhĩm
Int >=1 Khố
Ngoại
(FK)
TENNV Tên
Nhân
Viên
Text 25
NGAY
SINH
Ngày
Sinh
Date
time
< ngày
hiện tại
DIACHI Địa chỉ Text 50
PHAI Phái Bit Là số
nguyên
0 hoặc
1
Đồ án tốt nghiệp Gvhd: Ts. Nguyễn Thúc Hải
Svth: Đinh Lê Giang Trang 88
PHONE Điện
Thoại
Text 9
USER
NAME
Tên
Người
Sử
Dụng
Text 16
PASS
WORD
Mật
Khẩu
Text 16
BAO
CAO
NGAY
MABCN Mã Báo
Cáo
Ngày
Text 10 Khố
Chính
(PK)
MACV Mã
Cơng
Việc
int >=1 Khố
Ngoại
(FK)
TIENDO Tiến Độ Float 4
NGAY Ngày Date
time
>=
ngày
hiện tại
ngày
hiện
tại
Đồ án tốt nghiệp Gvhd: Ts. Nguyễn Thúc Hải
Svth: Đinh Lê Giang Trang 89
GHICHU Ghi Chú Text 80
DEXUAT Đề Xuất
Ý Kiến
Text 50
WORKS MACV Mã
Cơng
Việc
Int >=1 Khố
Chính
(PK)
MADA Mã Đề
An
Int >=1 Khố
Ngoại
(FK)
MADG Mã
Đánh
Giá
Int >=1 Khố
Ngoại
(FK)
TENCV Tên
Cơng
Việc
Text 20
NOI
DUNG
Nội
Dung
Text 100
DAXONG Đã
Xong
Bit 0 hoặc
1
Đồ án tốt nghiệp Gvhd: Ts. Nguyễn Thúc Hải
Svth: Đinh Lê Giang Trang 90
DEAN MADA Mã Đề
An
Int >=1 Khố
Chính
(PK)
TENDA Tên đề
An
Text 30
DIA
DIEM
Địa
Điểm
Text 40
XEP
LOAI
MAXL Mã Xếp
Loại
Int >=1 Khố
Chính
(PK)
XEPLOAI Xếp
Loại
Text 30
GHICHU Ghi Chú Text 80
PHAN
CONG
MANV Mã
Nhân
Viên
Text 9 Khố
Ngoại
(FK)
MACV Mã
Cơng
Việc
Int >=1 Khố
Ngoại
(FK)
Đồ án tốt nghiệp Gvhd: Ts. Nguyễn Thúc Hải
Svth: Đinh Lê Giang Trang 91
NGAYBD Ngày
Bắt Đầu
Date
time
Ngay
BD >
Ngay
KT
Ngày
hiện tại
THIET
LAP
Thiết
lập
Bit 1 0
NGAYKT Ngày
Kết
Thúc
Date
time
Ngay
KT >
Ngay
BD
> Ngày
hiện tại
GROUPS MA
GROUP
Mã
Nhĩm
Int >=1
TEN
GROUP
Tên
Nhĩm
Text 30 Khố
Chính
(PK)
TRG
GROUP
Trưởng
Nhĩm
Text 9
Đồ án tốt nghiệp Gvhd: Ts. Nguyễn Thúc Hải
Svth: Đinh Lê Giang Trang 92
NGAYNC Ngày
Nhận
Chức
Date
time
GROUPS
_PER
MAPER Mã
Quyền
Int >=1 Khố
Chính
(PK)
MA
GROUP
Mã
Nhĩm
Int >=1 Khố
Chính
(PK)
PERMI
SIONS
MAPER Mã
Quyền
Int >=1 Khố
Chính
(PK)
TENPER Tên
Quyền
Text 20
GHICHU Ghi Chú Text 80
c) Các ràng buộc tồn vẹn .
(RB1) MAGY là khố chính của GOPY.
(RB2) MAFILE là khố chính của FILES.
(RB3) MABCTH là khố chính của BAOCAOTONGHOP.
Đồ án tốt nghiệp Gvhd: Ts. Nguyễn Thúc Hải
Svth: Đinh Lê Giang Trang 93
(RB4) MADG là khố chính của DANHGIA.
(RB5) MANV là khố chính của NHANVIEN.
(RB6) MABCN là khố chính của BAOCAONGAY.
(RB7) MACV là khố chính của WORKS.
(RB8) MADA là khố chính của DEAN.
(RB9) MAXL là khố chính của XEPLOAI.
(RB10) MANV&MACV là khố chính của PHANCONG.
(RB11) MAPER là khố chính của PERMISSION.
(RB12) MAGROUP là khố chính của GROUPS.
(RB13) MAPER & MAGROUP là khố chính của
GROUP_PER.
(RB14) MANV là khố ngoại của GOPY tham chiếu từ
NHANVIEN.
(RB15) MABC là khố ngoại của FILES tham chiếu từ
BAOCAONGAY.
(RB16) MACV là khĩa ngoại của BAOCAOTONGHOP tham
chiếu từ WORKS
(RB17) MAXL là khố ngoại của DANHGIA tham chiếu từ
XEPLOAI.
(RB18) MAGROUP là khố ngoại của NHANVIEN tham
chiếu từ GROUPS.
Đồ án tốt nghiệp Gvhd: Ts. Nguyễn Thúc Hải
Svth: Đinh Lê Giang Trang 94
(RB19) MACV là khố ngoại của BAOCAONGAY tham chiếu
từ WORKS.
(RB20) MADG là khố ngoại của WORKS tham chiếu từ
DANHGIA.
(RB21) MADA là khố ngoại của WORKS tham chiếu từ
DEAN.
(RB22) MANV là khố ngoại của PHANCONG tham chiếu từ
NHANVIEN.
(RB23) MACV là khố ngoại của PHANCONG tham chiếu từ
WORKS.
(RB24) MAPER & MAGROUP là khố ngoại của
GROUP_PER tham chiếu từ GROUPS & PERMISSION.
(RB25) Ngày nhận chức > Ngày sinh + 24.
(RB26) Ngày kết thúc >= Ngày bắt đầu.
(RB27) Một cơng việc cĩ thể cĩ nhiều nhân viên nhưng tại một
thời điểm chỉ cĩ một nhân viên thực hiện một cơng việc.
Đồ án tốt nghiệp Gvhd: Ts. Nguyễn Thúc Hải
Svth: Đinh Lê Giang Trang 95
d) Bảng tầm ảnh hưởng.
Work
s
Nha
n
Vie
n
Pha
n
Con
g
Gop
Y
Files Bao
Cao
Nga
y
Bao
Cao
Ton
g
Hop
Danh
Gia
Xep
Loai
Group
s
Group
s
_Per
Permis
sions
DeA
n
T S X T S X T S X T S X T S X T S X T S X T S X T S X T S X T S X T S X T S X
R
B1
X
R
B2
X
R X
Đồ án tốt nghiệp Gvhd: Ts. Nguyễn Thúc Hải
Svth: Đinh Lê Giang Trang 96
B3
R
B4
X
R
B5
X
R
B6
X
R
B7
X
R
B8
X
R
B9
X
R
B1
0
X
R
B1
1
X
Đồ án tốt nghiệp Gvhd: Ts. Nguyễn Thúc Hải
Svth: Đinh Lê Giang Trang 97
R
B1
2
X
R
B1
3
X
R
B1
4
X X
R
B1
5
X X
R
B1
6
X X
R
B1
7
X X
R
B1
X X
Đồ án tốt nghiệp Gvhd: Ts. Nguyễn Thúc Hải
Svth: Đinh Lê Giang Trang 98
8
R
B1
9
X X
R
B2
0
X X
R
B2
1
X X
R
B2
2
X
R
B2
3
X
R
B2
4
R X X
Đồ án tốt nghiệp Gvhd: Ts. Nguyễn Thúc Hải
Svth: Đinh Lê Giang Trang 99
B2
5
R
B2
6
X X
R
B2
7
Đồ án tốt nghiệp Gvhd: Ts. Nguyễn Thúc Hải
Svth: Đinh Lê Giang Trang
100
3. Thiết kế chương trình.
Sơ đồ cấu trúc chương trình.
Quản Lý Công Việc
Hệ Thống Quản Lý Nhân Viên Trợ Giúp
CN nhóm
CN nhân viên
Làm tươi CSDL
Phục hồi CSDL
Đánh giá CV
Thống kê CV
CN công việc
Kiểm tra tiến độ
Xem thông tin NV
Thiết lập chế độ làm việc
Xem báo cáo
Đề xuấy ý kiến
Báo cáo tiến độ
Xem đánh giá của quản lý
Sơ Đồ Cấu Trúc Chương Trình
Đồ án tốt nghiệp Gvhd: Ts. Nguyễn Thúc Hải
Svth: Đinh Lê Giang Trang
101
4. Thiết kế giao diện.
Các Site map (thay thế cho sơ đồ dịch chuyển trạng thái).
Login.htm
Đang nhập hệ
thống
Error
MainPage.htm
Trang chủ About.htm
Trang giới thiệu
WEBSITE Quản Lý Công Việc
Login
Member
Components
Nội dung các trang
thành phần
Kiem Tra
Username &
PassWord . jsp
Website QLCV
Đồ án tốt nghiệp Gvhd: Ts. Nguyễn Thúc Hải
Svth: Đinh Lê Giang Trang
102
Yeu cau kiem
tra thong tin
lien quan khi
sua.
- Quyen han o
Group cu .
- User dang
thuoc Group
nao, .. . .
Component của Admin(Quản Trị Hệ Thống)
Lam tuoi CSDL va
Sao luu CSDL
OK
Thêm
OK
Kiem tra User
da co ?
OK
Thêm
Them permision
. jsp
OK
Xoa
Xoa permision. jsp
OK
Sua
Sua permision. jsp
Co
Them User . jsp
K
Xoa
OK
Xoa User . jsp
Sua
OK
Yeu cau
chon
User
can suaSua User . jsp
Thêm
OK
Kiem tra User
thuoc Group
nao chua ?
Co
Them User vao
Group . jsp
K
Xoa
OK
Xoa User khoi
Group . jsp
Sua
OK
Sua User trong
Group . jsp
Thêm
OK
Kiem tra Group
da co chua ?
Co
Them Group .
jsp
K
Xoa
OK
Xoa group . jsp
Sua
OK
Sua Group . jsp
Chon Group
de sua.
Yeu cau kiem
tra User trong
Group da xoa
het chua.
* Bat buoc
phai xoa tat
ca User moi
xoa duoc
Group.
Member
components
Admin
component
Trang Thong
tin
ve Permission
Trang thong tin
ve User
Trang thong tin
ve Quyen Han
cua User
Trang thong tin
ve Group
Lam Tuoi CSDL &
Sao Luu CSDL
Đồ án tốt nghiệp Gvhd: Ts. Nguyễn Thúc Hải
Svth: Đinh Lê Giang Trang
103
OK
Thêm
Xoá
Sửa
Components của Manager (Quản Lý)
Attach file Attach file
Thiet lap
che do
lam viec
tu de
xuat cua
nhan
vien
Thong Ke CV.jsp
Cong Viec
Nhan vien
Thong Ke NV.jsp
Phan Cong
truc tiep tu
cac File bao
cao cua
nhan vien
khac.
Member
Components
Manager
component
Trang Thong
Ke . html
Trang TONG HOP
User & Cac Bao Cao
. html
Trang Danh Sach
Cac Thac Mac
. html
Trang Thong Tin
Ve Cac Cong Viec
.jsp
Danh gia CV.jsp
Phan Cong CV
. jsp
Tong Hop Bao
Cao.Jsp
Kiem Tra Tien
Do.jsp
Xem Bao Cao . jsp
Cong Viec . jsp
Bang Thong
Ke Cac CV
Nhan Vien .jsp
Bang Thong Ke
Cac Nhan Vien
Giai Dap Thac
Mac . jsp
Thiet Lap Che
Do LV
. jsp
Them cong viec
.jsp
Xoa cong viec
.jsp
Sua cong viec
.jsp
Doi
Password
. jsp
Đồ án tốt nghiệp Gvhd: Ts. Nguyễn Thúc Hải
Svth: Đinh Lê Giang Trang
104
Component của Employee(Nhân Viên)
Submit
Goi
thong
tin tren
cho
Quan
ly
Submit
Goi
thong tin
tren cho
Quan ly
De xuat
cach giai
quyet bang
van ban
OK Error
Add them
file cong
viec da
lam.
(trong
chuyen
nghanh
tin hoc)
Thac mac &
gop y
De xuat cach
giai quyet
Add file
OK Error
Member
component
Employee
component
Trang Gop y & Thac Mac
html
De xuat cach
giai quyet . html
Bao da
goi
thanh
cong
Bao
goi
khong
thanh
cong
Xem giap dap cua
quan ly
jsp
Xem cac Danh
Gia CV
. jsp
Bao Cao Tien Do
& Dinh kem File
. html
Ten file & noi
dung bao cao
Xem CV duoc giao
Tim CV
.jsp
Danh sach cac
CV duoc giao
Thong bao loi
khong thay.
Doi Password
.jsp
Đồ án tốt nghiệp Gvhd: Ts. Nguyễn Thúc
Hải
Chương V : TRIỂN KHAI ỨNG DỤNG
I. Các phần mềm cần thiết.
Đây là ứng dụng độc lập nền nên nĩ cĩ thể chạy trên các hệ điều hành
khác nhau như các hệ thống Windows, Unix, …. Do đĩ chúng ta cĩ thể cài đặt hệ
điều hành thuộc một trong các hệ thống trên và các phần mềm sau:
- Jakarta-Tomcat là một Servlet/JSP container. Thật ra theo lý
thuyết, ứng dụng này cĩ thể chạy trên bất kỳ container hay web
server nào cĩ hổ trợ Servlet/JSP nhưng chúng tơi chưa thử
nghiệm trên container khác Jakarta-Tomcat 3.1.
- JDK 1.2 trở lên.
- MySQL Server 3.23.27 bản beta. Hiện nay đã ra bản 4.0.
- JDBC Driver loại bốn hổ trợ cho MySQL Server: mm.msql-
2.0.4.
- Xalan và Xerces để chuyển XML thành HTML bằng cách sử
dụng XSLT.
- Một trong các web browser sau: Netscape, Inernet Explorer,
Opera tất cả từ 4.0 trở lên. Ứng dụng này đã thử nghiệm trên các
web browser này.
- VietKey hoặc bất kỳ bộ gõ tiếng việt nào khác.
II. Triển khai ứng dụng web.
Ứng dụng web (ứng dụng server-side java) là một tập các trang JSPs,
Servlets, HTML và các tài nguyên khác được gĩi gọn trong một gĩi duy nhất và
Đồ án tốt nghiệp Gvhd: Ts. Nguyễn Thúc
Hải
chạy trên nhiều platform từ nhiều nhà sản xuất khác nhau. Ứng dụng Web được
xác định trong một đường dẫn đặt biệt ở web server
Một ứng dụng web cĩ thể gồm các thành phần sau:
- JavaServer Pages
- Servlets
- Các lớp tiện ích
- Các tài như xml, html, …
- Enterprise JavaBean (EJB) đối với các ứng dụng xử lý phân tán.
- Các media như images, sounds, …
- Các đối tượng client như javabeans, applets, các lớp, …
Mơ hình hoạt động của The Web Work. The Web Work hoạt động dựa
trên mơ hình ba lớp (3 layer). Sau đây là mơ hình ba lớp tổng quát của ứng dụng
Web.
Đồ án tốt nghiệp Gvhd: Ts. Nguyễn Thúc
Hải
Web ServerWeb Client
Data
Internet/Intranet
Database Server
Mô Hình Ứng Dụng Web 3 Lớp Tổng Quát
User Service
Interface
(Web Page)
Business Service Data Service
Trên nền Java hổ trợ cả hai kỷ thuật xử lý Web động là Servlet và JSP.
Do đĩ với từng kỷ thuật tơi cĩ chi tiết hai mơ hình (cĩ thể nhiều hơn) dựa trên mơ
hình ba lớp tổng quát này và gọi là Kiến Trúc Mơ Hình Một và Mơ Hình Hai.
Ứng dụng sử dụng cả hai mơ hình web trên nền Java là Kiến Trúc Mơ
Hình Một và Mơ Hình Hai mà đã và đang cịn tranh luận trên các sites nỗi tiếng
như javaworld.com, developer.com, weblogic.com.
Trong mơ hình một, một trang JSP đảm nhận cả việc xử lý yêu cầu và
trả về các kết quả cho client. Ở đây vẫn cĩ sự tách biệt giữa xử lý và hiện thị bởi
vì tất cả sự truy cập dữ liệu đều được Beans thực hiện. Mơ hình này thích hợp cho
các ứng dụng đơn gian, thích hợp với các trang JSP cĩ nhiều mã HTML. Xem
hình vẽ sau:
Đồ án tốt nghiệp Gvhd: Ts. Nguyễn Thúc
Hải
JSP Model 1 Architecture
Kie án tru ùc mo â hình một
Data
Source
W
eb C
lient
W
eb S
erver
1
Request
4
Response
2
3
Beans
Custom
Tag
JSP
Trong mơ hình kiến trúc hai, đĩ là sự kết hợp cả hai kỷ thuật xử lý web
động là Servlet và JSP. Mơ hình này rất thích với với các ứng dụng cĩ xử lý phức
tạp. Ở đây, Servlets hoạt động như một trạm điều khiển (controller) chịu trách
nhiệm xử lý các yêu cầu và khởi tạo các components (Beans, Custom Tag) cho
JSP sử dụng. Mơ hình này tách phần xử lý và trình bày rỏ ràng nhất.
JSP Model 2 Architecture
Kiến trúc mô hình hai
Data
Source
Web Server
1
Request
5
Response
3
W
eb C
lient
2
Khởi tạo
4
(Model)
JSP
(View)
Beans
Custom Tag
Servlet
(Controller)
Đồ án tốt nghiệp Gvhd: Ts. Nguyễn Thúc
Hải
III. Hướng dẫn sử dụng.
Sau khi đã cài đặt ứng dụng, bạn mở browser, trong address bar gõ địa chỉ:
htttp://servername:port/work/html/showLogin.html .
- servername: tên server của bạn, trên máy cục bộ thường là
localhost.
- port: số cổng mà web server đang mở. Nếu số port là 80 thì thơng
số port khơng cần nhập.
Nếu bạn sử dụng thường xuyên ứng dụng, bạn nên gán giá trị mật định cho
browser với địa chỉ trên. Khi bạn mở browser, ứng dụng tự động được gọi mà
bạn khơng cần phải gõ địa chỉ trên address bar. Thực hiện cơng việc này trong
ba web browser: Internet Explorer, Netscape, Opera như sau:
- Internet Explorer:
Vào Tools menu, chọn Internet Options. Trong hộp thoại Internet
Options, chọn General tab, trong khung Home page cĩ Address
textbox cho phép bạn gõ địa chỉ trên.
- Netscape:
Vào Edit menu, chọn Preferences…. Trong hộp thoại
Preferences, chọn navigator trong hộp thoại category, hiện ra một
trang Navigator, chọn Home page button, trong khung Home Page
cĩ Location textbox nhập vào địa chỉ trên.
- Opera:
Đồ án tốt nghiệp Gvhd: Ts. Nguyễn Thúc
Hải
Vào Navigation menu, chọn Set home page…, hiện ra một input
box cho chép bạn nhập địa chỉ mới vào.
KẾT LUẬN
Ứng dụng đã đáp ứng được yêu cầu đề ra trong giai đoạn phân tích thiết kế hệ
thống.
Ứng dụng kết hợp được các cơng nghệ độc lập nền JSP, XML, XSLT,
MySQL Server do đĩ cĩ thể chạy trên nhiều nền, nhiều Web Server và nhiều
Web Broswer khác nhau.
Về cơ sở dữ liệu, sơ đồ thực thể kết hợp đạt dạng chuẩn ba.
Ứng dụng sử dụng cả hai mơ hình web là “Kiến Trúc Mơ Hình Một và Hai” –
“JSP Model 1 and 2 Architecture”
HƯỚNG PHÁT TRIỂN
Các hướng phát triển sau sẽ làm cho ứng dụng hồn thiện hơn.
- Mở rộng ứng dụng với quy mơ lớn hơn, cĩ khả năng trao đổi dữ liệu và xử
lý với ứng dụng khác.
Đồ án tốt nghiệp Gvhd: Ts. Nguyễn Thúc
Hải
- Phát triển ứng dụng để download các files báo cáo về client.
- Quản lý các hình ảnh liên quan về cơng việc cho ứng dụng sinh động hơn.
- Dùng DOM xử lý XML ngay tại client.
- Cài đặt các ràng buột tồn vẹn trên database server trong phiên bản mới
của hệ quản trị cơ sở dữ liệu MySQL (phiên bản 4.0). Do phiên bản hiện
tại (đang sử dụng MySQL 3.23.27) khơng hổ trợ khố ngoại, check, rule
và trigger.
Đồ án tốt nghiệp Gvhd: Ts. Nguyễn Thúc Hải
DANH SÁCH WEB SERVERS HỔ TRỢ JSP
Để chạy được JSP chúng ta cần một trong các Web Server sau. Hãy xem các
hướng dẫn cài đặt, nơi đặt các JSP files, … để thực thi được trong Web Servers
đều cĩ đầy đủ trong từng Web Server khi chúng ta download về.
Tên Web
Servers
Thuộc Tổ
Chức /
Cơng Ty
Trang Web
Jakarta
Tomcat
Apache
Org.
JavaServer
Web
Developmet
Kit (JSWDK)
Sun
Micro
system
JRun Allaire
Inc.
ServletExec New
Atlanta
Đồ án tốt nghiệp Gvhd: Ts. Nguyễn Thúc Hải
Lite
WebServer
Gefion
Software
Java Web
Server
Sun
Micro
system
WebSphere IBM
Corp.
Resin Caucho
Technolog
y
Đồ án tốt nghiệp Gvhd: Ts.Nguyễn Thúc Hải
BẢNG THUẬT NGỮ
action
Một element trong trang JSP cĩ thể tác động lên những đối tượng ngầm
định và đối tượng server-side khác hoặc cĩ thể định nghĩa biến kịch bản
mới (xem element).
custom action
Một action được định nghĩa linh hoạt bởi bộ mơ tả thư viện tag và tập các
lớp java và được đưa vào trang JSP bằng taglib directive.
declaration
Một scripting element mà khai báo các method, biến, hoặc cả hai trong
trang JSP. Cĩ cú pháp (xem scripting element).
directive
Một element trong trang JSP cĩ nhiệm vụ hướng dẫn JSP container và
được thơng dịch vào thời gian runtime. Cĩ cú pháp (xem JSP
container và scripting element).
element
Trình thơng dịch JSP cơng nhận element như là một thành phần trong
trang JSP. Một element cĩ thể là directive, action, scripting element.
Element bắt đầu với start tag, nội dung và end tag, nếu khơng cĩ nội dung
thì nĩ dùng cú pháp empty tag.
expression
Đồ án tốt nghiệp Gvhd: Ts.Nguyễn Thúc Hải
Một scripting element chứa biểu thức của ngơn ngữ java và được đặt vào
đối tượng ngầm định out. Cĩ cú pháp
implicit object
Một đối tượng server-side được định nghĩa bởi JSP container và luơn cĩ
sẳn trong trang JSP mà khơng cần khai báo. Cĩ các đối tượng như request,
response, pageContext, session, application, out, config, page, exception.
JSP container
Một thực thể ở cấp hệ thống cung cấp sự hoạt động, quản lý chu trình sống
cho các thành phần (conponent) JSP và Servlet.
JSP page implementation class
Một lớp của ngơn ngữ lập trình java, cụ thể là một Servlet, được trình bày
vào thời gian runtime của một trang và nhận đối tượng request rồi trả về
một đối tượng response. Lớp cài đặt trang cĩ thể dùng các dịch vụ của JSP
container, gồm cả Servlet API và JSP API.
persistent
Một đối tượng được serialization vào đĩa và các thiết bị lưu trữ khác.
Persistent cĩ các dạng như files, RDBMS (Relational database
management systems), ODBMS (Object database management systems).
reflection
Là cơ chế cho phép mã Java tìm ra các thơng tin về các trường, phương
thức và hàm tạo của các lớp được tải.
scripting element
Đồ án tốt nghiệp Gvhd: Ts.Nguyễn Thúc Hải
Là declaration, scriptlet hay expression, đặt tả JSP định nghĩa các thứ này
theo cú pháp tag. Tồn bộ nội dung ngữ cảnh được viết theo ngơn ngữ
java.
scriptlet
Một scripting element chứa bất kỳ đoạn mã của ngơn ngữ kịch bản nào
trong trang JSP. JSP v1.2 là phiên bản mới nhất chỉ hổ trợ ngơn ngữ java
trong các trang JSP. Cĩ cú pháp . Tuy nhiên cĩ một số
JSP container hổ trợ ngơn ngữ javascript như RESIN.
serialization
Là một tiến trình lưu trữ tồn bộ một đối tượng vào đĩa hoặc các thiết bị
lưu trữ khác. Ngược lại, một tiến trình phục hồi đối tượng thì gọi là
deserialization.
servlet
Một kỹ thuật server-side được viết bằng Java, JSP phát triển dựa trên nền
tảng của servlet.
tag
Gồm đoạn văn bản nằm giữa cặp dấu , cĩ tên, thuộc tính. Cĩ ba loại tag:
start tag, end tag, và empty tag.
Ví dụ:
content
Đồ án tốt nghiệp Gvhd: Ts.Nguyễn Thúc Hải
tag handler
Một lớp java được cài đặt các giao tiếp Tag hoặc TagBody mà được trình
bày vào lúc thời gian runtime đối với một custom action.
tag library
Một tập các custom action được mơ tả trong bộ mơ tả thư viện tag (tag
library descriptor) và các lớp java.
tag library descriptor
Một tài liệu XML mơ tả thư viện tag.
transient
Ngược lại với persistent, hầu hết các đối tượng trong bộ nhớ được gọi là
transient, cĩ nghĩa là chúng sẽ chết đi khi các tham chiếu của chúng ra
khỏi phạm vi hoặc tắc nguồn điện.
Đồ án tốt nghiệp Gvhd: Ts.Nguyễn Thúc Hải
TÀI LIỆU THAM KHẢO
Tên Tài Liệu Tác Giả
Năm Loại Tài
Liệu
Ach1 Servlets and JSP Marty Hall 2000 Sách
JSP JavaBeans Framework By IBM 2000 Web site
Tag Libraries Tutorial (v 1.0) Sun Microsystem 2000 Web site
Xalan 2.0 & Xerces 1.3 (API) By apache.org 2001 Web site
XML and Java Hiroshi Maruyama 1999 Sách
XML Professional Didier Martin 2000 Sách
Luận văn tốt nghiệp Các khĩa trước
Web Books CD Rom
Giáo trình lý thuyết và bài tập Java Nguyễn Tiến Dũng 1999 Sách
Đồ án tốt nghiệp Gvhd: Ts.Nguyễn Thúc Hải
(Chủ Biên)
Lập trình ứng dụng Web với JSP/
Servlet
Nguyễn Phương
Lan – Hồng Đức
Hồng
2001 Sách
Java Lập Trình Cơ Sở Dữ Liệu Nguyễn Tiến
Nguyễn Văn Tâm
Nguyễn Văn Hồi
2001 Sách
Các file đính kèm theo tài liệu này:
- Đồ án tốt nghiệp - Phân tích thiết kế hệ thống - LẬP TRÌNH JSP TECHNOLOGY.pdf