Đồ án Lập trình JSP TECHNOLOGY

Để 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ề.

pdf145 trang | Chia sẻ: lylyngoc | Lượt xem: 3748 | Lượt tải: 2download
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:

  • pdfĐồ án tốt nghiệp - Phân tích thiết kế hệ thống - LẬP TRÌNH JSP TECHNOLOGY.pdf