Академический Документы
Профессиональный Документы
Культура Документы
Phn I:
Chng I:
JSP TECHNOLOGY
CN BN V JSP
JavaServer Pages (JSP) l mt k thut server-side do chng ta khng th thc hin bt k hnh ng no client. JSP cho php chng ta tch thnh phn ng ca trang ra khi thnh phn tnh HTML. Rt n gin, chng ta ch cn vit mt ti liu HTML bnh thng ri sau bao quanh m ca thnh phn ng trong cc tag c bit, hu ht cc tag bt u vi <% v kt thc vi %>. V d, y l mt phn ca trang JSP, c kt qu tr v l Thanks for reading jsp book. vi URL l http://www.jsp.com/thank.jsp?title=jsp Thanks for reading <i><%=request.getParameter(title)%><i>book. K thut JSP l mt thnh phn trong i gia nh Java; n s dng ngn ng kch bn da vo ngn ng lp trnh Java, v cc trang JSP c bin dch thnh servlets. T chng ta cng nhn bit c, JSP th khng ph thuc bt k nn (platform) no. N p ng c khuynh hng ca Sun MicroSystem l write one, run anywhere. Cc trang JSP c th gi cc thnh phn JavaBeans, Enterprise JavaBeans (EJB) hoc custom tags thc hin cc x l trn server. V nh th, k thut JSP l thnh phn ch cht trong kin trc kh chuyn ca Java cho nhng ng dng da vo Web. Nh bit, JSPs s bin dch thnh servlets nhng JSP khng th thay th servlet v cc l do sau: - Mt s tc v c gii quyt rt tt bng servlet. V d, cc ng dng xut ra d liu nh phn hoc ch xc nh ni gi tr li cho ngi dng (bng cch dng response.sendRedirect) c dng servlet th tt nht. - Mt s tc v khc li c gii quyt rt tt bng JSP nh cc tnh hung m cu trc nn tng ca trang HTML l c nh nhng cc gi tr trong n li thay i. - Cn cc tc v cn li cn s kt hp c servlet v JSP. V d, trong yu cu gc c tr li bng mt servlet m thc hin mi cng vic, lu tr cc kt qu trong cc Beans v iu phi yu cu ny n mt trong nhng trang JSP c th hin th n. C ba nh hng ny u c ch ng ca n. Chng c nh hng no h tr y cho mi ng dng . Trc khi i vo chi tit cng ngh JSP, chng ti c mt vi so snh cc cng ngh c s dng trong ng dng vi cc cng ngh khc.
Trang 1
n tt nghip
b)
2. So snh JSP vi cc cng ngh khc. ASP l cng ngh tng ng t Microsoft. JSP c ba li th so vi Phn ng c vit bng Java, ch khng phi bng cc ngn ng script nh VBScript, JavaScript. V th n mnh m hn tt hn i vi cc ng dng phc tp cn cc thnh phn s dng li. JSP chy c trn nhiu h iu hnh v web servers khc nhau ngay c vi IIS ca Microsoft (cn c plugins t Webphere, JRun, ...) b) JSP vi PHP. H tr s m rng tag vi custom tag.
Li im ca JSP vi PHP cng nh vi ASP. JSP c vit bng Java m chng ta bit vi cc API m rng cho mng, truy cp c s d liu, cc i tng phn tn, trong khi vi PHP i hi chng ta phi hc c mt ngn ng mi.
Svth: inh L Giang Trang 2
n tt nghip
3. Tm quan trng ca XML cng vi XSLT. a) XML. XML l tp con ca SGML, n kt hp tnh linh ng v sc mnh ca SGML cng vi mt s tnh nng hu ch ca HTML. V XML l tp con ca SGML nn n cng tng thch vi cc h thng da vo SGML c. XML l lc y cho cc nghi thc trn internet v cc phn mm d dng x l v truyn d liu. trn ni XML l tp con ca SGML v HTML l mt s ci t ca SGML, m hnh sau y din t mi quan h gia cc ngn ng v cc siu ngn ng:
Metalanguages
SGML subset Implementation
Languages
HTML CDF SMIL
Implementation XML
CML MML
Tnh t m t d liu ca XML<name> : cc tags m t cc vn , cc i <tr> tng gn gi vi th gii thc. Chng ta s thy r hn vi hai v d sau, y l <first>Giang</first> <td>Giang</td> v d minh ha nn n cn thiu nhiu thuc tnh trong th gii thc : <middle>Le</middle> <td>Le</td> <last>Dinh</last> <td>Dinh</td> </name> </tr> <numberid>0750</numberid> <tr> <age>22</age> <td>Number id : </td> </student> <td>0750</td> </tr> <tr> <td>Age :</td> <td>22</td> Svth: inh L Giang Trang 3 </tr> </table>
CDF : Channel Difinition Format cho php cc tc gi ca cc Web sites cho php cc ngi ng k bit khi no Web site ny thay i, CDF c gii thiu trong IE4 v vy n ch lm vic vi IE ca Microsoft. SMIL : Synchronized Multimedia Integration Language c s dng ng b ha cc dng d liu a truyn thng c truyn qua internet. CML : Chemical Markup Language m t cc cng thc ha hc. MML: Mathematical Markup language- m t cc phng trnh, biu thc V d vi HTML tags V d vi XML tags ton hc. <student> <table>
n tt nghip
- XML c mi quan h cht ch vi JSP, t t JSP h tr c php XML, chng ta c th trn ln m chng vi nhau d dng nh JSP vi HTML nh th chng ta c th dng JSP t ng pht sinh trang XML. - Hin nay c rt nhiu sn phm qun tr c s d liu m mi sn phm u c cc c tnh ring n, do khi cc c s d liu khc nhau cn chuyn i d liu vi nhau li khng tng thch. V vy ngi lm cng vic ny cn phi bit nhiu sn phm qun tr c s d liu khc nhau. Do XML l mt nh dng chun m cc h qun tr cn h tr. Hin nay c nhiu h qun tr ln h tr XML nh MS SQL Server, Oracle, b) XSLT. Extensible Stylesheet Language Transformation (XSLT) l mt ngn ng c tch ra t ngn ng XSL, XSLT l mt ngn ng dng chuyn i cc XML document thnh cc XML document khc. N c vit bng XML, iu ny c ngha rng s chuyn i trong XSLT c trnh by nh mt wellformed XML document. XSLT ng vai tr quan trng trong hng pht trin pht sinh ngn ng markup hng ngi dng.
n tt nghip
lung xut th chng ta cn phi t <\% trong template text. Th hai, nu chng ta mun c ch thch trong JSP m khng c trong ti liu kt qu, dng: <%-- JSP comments --%> Ch thch HTML c dng: <!-- HTML comments --> th c chuyn qua ti liu HTML thng thng. C php XML Trong JSP c rt nhiu element c c php XML nh jsp:useBean, jsp:include, jsp:setProperty, ... Tuy nhin scripting elements li c hai dng c php sau: JSP Syntax <% = Expressions %> <jsp:expression> Java code </jsp:expression> <jsp:scriptlet> Java code </jsp:scriptlet> XML Syntax
1.
<jsp:declaration> Java code </jsp:declaration> Cc bin c nh ngha sn trong JSP n gin ho m trong cc biu thc hay scriptlets trong JSP, ngi ta cung cp cho chng ta chn i tng c nh ngha trc, c ngi cn gi l cc i tng ngm nh. Do cc khai bo trong JSP nm ngoi phng thc _jspService (c gi bi service) nn cc i tng ny khng cho php cc khai bo truy cp vo. request Bin ny c kiu l javax.servlet.http.HttpServletRequest, c phm vi trong mt yu cu (request). N cho php chng ta truy cp vo cc tham s ca request nh loi request (GET, POST, ) v cc incoming HTTP header (cookies). response C kiu l javax.servlet.http.HttpServletResponse, c phm vi ton trang (page). Ch rng v lung xut th thng lm vt m cho nn vic gn m tnh trng ca HTTP v response header th hp l trong JSP, mc d iu ny th khng c php trong servlet mt khi c lung xut no c gi n client. out
Svth: inh L Giang Trang 5
n tt nghip
C kiu javax.servlet.jsp.JspWriter v phm vi trong mt trang (page). Dng gi cc thng xut n client. i tng out c dng thng xuyn trong scriptlets, cc biu thc t ng c a vo lung xut nn him khi cn tham chiu n i tng ny. session C phm vi trong mt phin truyn (session) v kiu tng ng l javax.servlet.http.HttpSession. Gi v cc phin truyn c to t ng v th bin ny vn cn kt ni ngay c chng c mt tham chiu incoming session no. Mt ngoi l l nu chng ta s dng thuc tnh session ca page directive tc cc phin truyn, m li c tham chiu n bin session th s gy ra cc li vo lc trang JSP c dch thnh servlet. application Bin ny c kiu l javax.servlet.ServletContext, c phm vi trong ton ng dng (application). ServletContext ly t mt i tng cu hnh servlet l getServletConfig().getContext(). Cc trang JSP c th lu tr d liu persistent trong i tng ServletContext tt hn l trong cc bin th hin. ServletContext c cc phng thc setAttribute v setAttribute m cho php chng ta lu tr d liu config Bin ny c phm vi trang (page) v javax.servlet.ServletConfig. pageContext Bin ny c kiu l javax.servlet.jsp.PageContext v c phm vi l trang (page). pageContext cho php mt im truy cp duy nht ti nhiu thuc tnh ca trang v cung cp mt ni thun tin lu tr d liu dng chung. Bin pageContext lu tr gi tr ca javax.servlet.jsp.PageContext cng vi trang hin hnh. C th xem chi tit trong chng II v JavaBeans. page Bin ny ng ngha vi this v iu ny th khng hu ch trong ngn ng lp trnh Java, c kiu l java.lang.Object v c phm vi trang (page). exception Trong mt trang li, chng ta c th truy cp vo i tng exception. Bin ny c kiu l java.lang.Throwable v phm v l trang (page). c kiu tng ng l
Trang 6
n tt nghip
2.
Biu thc trong JSP Biu thc trong JSP c dng chn cc gi tr trc tip vo lung xut. N c dng sau: <%= Java expressions %> Biu thc ny c nh tr, c chuyn thnh chui, v c chn vo trong trang. S nh tr din ra thi gian runtime (khi trang c yu cu) v do c y quyn truy cp cc thng tin ca yu cu ny. V d sau y m t ngy/gi m trang c yu cu: Current time: <%= new java.util.Date() %> Trong Java mi cu lnh u c du ; kt thc dng. Ti sao biu thc trong JSP li khng c du ;? V biu thc ny c a vo lung xut chng hn nh PrintWriter. Vi v d trn c th chuyn vo servlet nh sau: PrintWriter out = response.getWriter(); out.println(Current time: + new java.util.Date()); a) Biu thc nh l gi tr trong elements khc. Biu thc c th c s dng trong cc thuc tnh ca cc elements khc. Gi tr t cc biu thc ny s c tnh vo thi gian yu cu (request time). Cc elements cho php s dng biu thc trong cc thuc tnh ca chng l: Tn Element jsp:setProperty jsp:include jsp:forward jsp:param name v value page page value Tn thuc tnh
b) V d expression.jsp. y l mt v d hon chnh u tin ca JSP. N ch hin th thi gian hin thi, tn my,.. khi file ny c truy cp.
Code 1: expression.jsp
<?xml version="1.0" encoding="ISO-8859-1" ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "DTD/xhtml1-strict.dtd"> <!-- Example of JSP Expressions. --> <html> <head> <title>JSP Expressions</title> <meta name="author" content="Giang" /> <meta name="keywords" content= "JSP,expressions,JavaServer,Pages,servlets" /> Svth: inh L Giang
Trang 7
"A quick example of JSP expressions." /> <link rel="stylesheet" href="JSP-Styles.css" type="text/css" /> </head> <body> <h2>JSP Expressions</h2> <ul> <li> Current time: <%= new java.util.Date() %> </li> <li> Your hostname:<%=request.getRemoteHost()%> </li> <li>Your session ID: <%= session.getId() %></li> <li>The <code>testParam</code> form parameter: <%= request.getParameter("testParam") %> </li> </ul> </body> </html>
3.
JSP scriptlets Scriptlets l nhng on m c cha bt k m Java no nm gia <% v %>. Nu chng ta mun thc hin th g phc tp hn l ch chn vo mt biu thc n gin th JSP scriptlets cho php chng ta thm bt k on m Java no vo trang JSP. Cc scriptlets ny c a vo phng thc _jspService (m c gi bi service) ca servlet. C c php: <% Java Code %>
Code 2: scriptlet.jsp
<?xml version="1.0" encoding="ISO-8859-1" ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "DTD/xhtml1-strict.dtd"> <!-- Example of JSP Scriptlets. --> <html>
Code 2: scriptlet.jsp (tip theo)
<head> <title>JSP Scriptlets</title> </head> <% String bgColor = request.getParameter("bgColor"); boolean hasExplicitColor; if (bgColor != null) { Svth: inh L Giang Trang 8
n tt nghip hasExplicitColor = true; } else { hasExplicitColor = false; bgColor = "WHITE"; } %> <body bgcolor="<%= bgColor %>"> <h2 align="center">Color Testing</h2> <% if (hasExplicitColor) { out.println("You supplied an explicit background color of " + bgColor + "."); } else { out.println("Using default background color of WHITE. " + "Supply the bgColor request attribute to try " + "a standard color, an RRGGBB value, or to see " + "if your browser supports X11 color names."); } %> </body> </html>
4. Khai bo trong JSP Mt khai bo trong JSP cho php chng ta nh ngha cc phng thc hoc cc trng (bin) c phm vi ton trang. Khai bo s c chn vo trong lp ca servlet (bn ngoi phng thc _jspService c gi bi service x l mt yu cu). Mt khai bo c dng sau: <%! Java Code %> Cc khai bo trong JSP th khng pht sinh ra bt k thng xut no, chng thng c dng lin kt vi cc biu thc hoc scriptlets. Chng hn, y l mt trang JSP m in ra s ln truy cp vo trang.
Code 3: declaration.jsp
<?xml version="1.0" encoding="ISO-8859-1" ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "DTD/xhtml1-strict.dtd"> <!-- Example of JSP Declarations. --> <html> <head> <title>JSP Declarations </title> <link rel="styleshhet" href="JSP-Styles.css" type="text/css" /> </head> <body> <h1>JSP Declarations</h1> <%! private int accessCount = 0; %> <h2>Accesses to page since server reboot: <%= ++accessCount %></h2> Svth: inh L Giang Trang 9
<%@ page attr_list %> : attr_list s <jsp:directive.page attr_list /> c m t phn sau trong chng ny. <%@ include file=URL %> <jsp:directive.include file=URL /> <%@ taglib attr_list %> : directive <jsp:root attr_list> ny c trnh by trong chng III <!-- other elements--> Tag Libraries. </jsp:root>
1.
The page directive page directive cho php chng ta iu khin cu trc ca servlet bng cch a vo cc lp, t MIME type, . Mt page directive c th c t bt c ni no trong trang JSP. <%@ page import=java.util.*, com.legiang.* %> page directive nh ngha mt s thuc tnh ph thuc vo trang v giao tip gia cc thuc tnh ny vi JSP container. language nh ngha ngn ng kch bn c s dng trong scriptlets, biu thc v khai bo. Trong JSP 1.2 l phin bn mi nht ch c h tr java cho thuc tnh ny do java ny cng l gi tr mt nh. <%@ page language=java %> extends Thuc tnh ny ch nh lp cha (superclass) ca servlet s c pht sinh cho trang JSP, c dng sau:
Svth: inh L Giang 10 Trang
n tt nghip
<%@ page extends=package.class %> Ch rng khi s dng thuc tnh ny phi ht sc cn thn v ti server c th dng lp cha mt nh. import Thuc tnh ny m t cc kiu sn dng trong mi trng kch bn (theo java). Chng ta c th import vo tng lp hoc c mt gi (package). <%@ page import=package.class | package.* %> Nu import vo nhiu lp hay packages th cch nhau du ,. session Thuc tnh session kim sot liu c hay khng mt trang tham gia vo HTTP session. C hai gi tr true v false. Mt nh l true, ch ra rng bin ngm nh session nn c ni kt vi session hin hnh. Gi tr false c ngha rng chng c session no c s dng t ng v nu c truy cp vo bin session s tr li vo lc trang c dch thnh servlet. buffer Thc tnh ny xc nh kch thc ca vng m c s dng bi bin out. C dng sau: <%@ page buffer=none | sizekb %> Thuc tnh ny c gi tr mt nh l 8kb, gi tr none chng c vng m no c cp v tt c d liu xut s c ghi trc tip qua ServletResponse, PrintWriter. autoFlush Xc nh liu lung xut c vng m c t ng flush (gi tr true mt nh) khi vng m y hay s tung ra mt ngoi l khi vng m trn (false). Ch rng s khng hp l nu t autoFlush=false khi buffer=none. isThreadSafe Xc nh mc an ton ca tiu trnh (thread) c ci t trong trang (vi giao tip SingleThreadModel), true l gi tr mt nh. info nh ngha mt chui c th truy xut t servlet bng phng thc getServletInfo(). <%@ page info=Some Message %>
Svth: inh L Giang 11 Trang
n tt nghip
errorPage Thuc tnh ny xc nh mt trang JSP nn bt k cc ngoi l no c tung ra nhng khng bt ngoi l ny trong trang hin hnh. <%@ page errorPage=Ralative URL %> Ngoi l tung ra s c sn trong bin ngm nh exception. isErrorPage Xc nh trang JSP hin thi c th hot ng nh mt trang li cho mt trang JSP khc. Gi tr false l mt nh cho thuc tnh ny. contentType Thuc tnh ny gn Content-Type cho response header, m t kiu MIME ca ti liu c gi n client. Thuc tnh contentType c mt trong hai dng sau: <%@ page contentType=MIME-Type %> <%@ page contentType=MIME-Type; charset=Character-Set %> Mt s kiu MIME-Type thng dng: text/html, text/xml, text/plain, image/gif, image/jpeg. pageEncoding nh ngha b m ho k t cho trang JSP (character encoding), thuc tnh ny h tr cho b m Unicode v Latin-1, c gi tr mt nh l ISO-8859-1
Code 4: pagedirective.jsp
<?xml version="1.0" encoding="ISO-8859-1" ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "DTD/xhtml1-strict.dtd"> <html> <head> <title>The page Directive</titlle> <link rel="styleshhet" href="JSP-Styles.css" type="text/css" /> </head> <body> <h2>The page Directive</h2>
V d 4: pagedirective.jsp (tip theo)
<%-- JSP page directive --%> <%@ page import="java.util.*, com.legiang.*" contenType="text/html" %> <%-- JSP Declaration (xem phn I.II.4) --%> Svth: inh L Giang 12 Trang
n tt nghip <%! private String randomID() { int num = (int)(Math.random()*10000000.0); return("id" + num); } private final String NO_VALUE = "<i>No Value</i>"; %> <%-- JSP Scriptlet (xem phn I.3) --%> <% Cookie[] cookies = request.getCookies(); String oldID = ServletUtilities.getCookieValue(cookies, "userID", NO_VALUE); String newID; if (oldID.equals(NO_VALUE)) { newID = randomID(); } else { newID = oldID; } LongLivedCookiecookie = new LongLivedCookie ("userID" , newID); response.addCookie(cookie); %> <%-- JSP Expressions (xem phn I.II.2) --%> This page was accessed at <%= new Date() %> with a userID cookie of <%= oldID %>. </body> </html>
2.
The include directive Chng ta s dng include directive a mt file vo ti liu JSP chnh vo lc ti liu dch thnh servlet (m thng vo ln u tin truy cp vo trang ny). C c php nh sau: <%@ include=Relative URL %> Tht s JSP chia lm hai nhnh include mt file vo mt ti liu chnh. File c include th c chn vo trang vo lc bin dch, Cn nhnh cn li th c chn vo ti thi gian yu cu (request) vi element l jsp:include s c trnh by trong mc IV. Cc action chun. File c include vo khng nhng cha HTML tnh m cn cha c m JSP ng. c tnh ny cho php chng ta to cc thanh nh hng, cc phn thng tin cn tng tc, m s trang, ... ring trn mt file khi chng ta c nhiu trang s dng li chng. Nu file c include thay i th tt c JSP files s dng n cn phi c cp nht li. V d v include directive File u tin l mt on ca trang cha cc thng tin tng tc cn thit cho file th hai dng li bng include directive.
Svth: inh L Giang 13 Trang
n tt nghip
Code 5: contact.jsp
<%@ page import="java.util.Date" %> <%-- Cc bin sau s tr thnh cc fields trong servlet khi JSP file gi file ny. --%> <%! private int accessCount = 0; private Date accessDate = new Date(); private String accessHost = "<i>No previous access</i>"; %> <hr/> This page © 2000 <a href="http//www.LG.com/">my-company.com</a>. This page has been accessed <%= ++accessCount %> times since server reboot. It was last accessed from <%= accessHost %> at <%= accessDate %>. <% accessHost = request.getRemoteHost(); %> <% accessDate = new Date(); %>
Code 6: includedirective.jsp
<?xml version="1.0" encoding="ISO-8859-1" ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "DTD/xhtml1-strict.dtd">
Code 6: includedirective.jsp
<!-- Example of including files at page translation time. --> <html> <head> <title>The include Directive</title> <link rel="styleshhet" href="JSP-Styles.css" type="text/css" /> </head> <body> <table boder=5 align="center"> <tr> <th class="title">Some Random Page</th> </tr> </ table > <p>Information about our products and services.</p> <p>Le, Le, Le.</p> <p>Giang, Giang, Giang.</p> <%@ include file="contact.jsp" %> </body> </html>
Trang
n tt nghip
3.
The taglib directive Directive ny nh ngha th vin tag v tip u ng cho nhng custom tag c s dng trong trang JSP. C c php sau: <%@ taglib uri=URIToTagLib prefix=tagPrefix%> taglib directive s c trnh by chi tit trong chng III.
IV.
Cc action chun.
Actions chng qua l elements c nh ngha trong bn c t JSP v lun lun c sn trong cc JSP file m khng cn import vo bt k th g v chng c c php XML. C chn actions chun: jsp:include, jsp:useBean, jsp:setProperty, jsp:getProperty, jsp:plugin, jsp:forward, jsp:fallback, jsp:params, jsp:param s c gii thiu trong mc ny. 1. Action chn vo files thi gian request. Vi include directive cho php chng ta thm vo cc ti liu cha m JSP vo nhiu trang khc nhau nhng li c vn l i hi chng ta phi cp nht li ngy sa i ca trang khi file c include thay i. loi b vn ny t t JSP cung cp cho chng ta mt action l <jsp:include> include cc file vo thi gian yu cu (request). Mc khc, do trang c bin dch thnh servlet vo thi gian yu cu v th cc file c include khng th cha m JSP. C php ca action ny l: <jsp:include page=Relative URL flush=true> V d sau s dng jsp:include action include bn file html, v d ny ch hin th cc thng tin ca cc web sites ni ting.
Code 7: includerequest.jsp
<?xml version="1.0" encoding="ISO-8859-1" ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "DTD/xhtml1-strict.dtd"> <!-- Example of including files at request time. --> <html> <head> <title>Whats New</title> <link rel="stylesheet" href="JSP-Styles.css" type="text/css" /> </head> <body> <center> <table boder="5"> <tr> <th class="title">What's New at JspNews.com </th> </tr> </table> Svth: inh L Giang 15 Trang
n tt nghip </center> <p>Here is a summary of our four most recent news stories:</p> <ol> <li><jsp:include page="item1.html" flush="true" /></li> <li><jsp:include page="item2.html" flush="true" /></li> <li><jsp:include page="item3.html" flush="true" /></li> <li><jsp:include page="item4.html" flush="true" /></li> </ol> </body> </html>
Code 8: item1.html
<b>Bill Gates acts humble.</b> In a startling and unexpected development, Microsoft big wig Bill Gates put on an open act of humility yesterday. <a href="http://www.microsoft.com/Never.html">More details...</a>
Code 9: item2.html
<b>Scott McNealy acts serious.</b> In an unexpected twist, wisecracking Sun head Scott McNealy was sober and subdued at yesterday's meeting. <a href="http://www.sun.com/Imposter.html">More details...</a>
Code 10: item3.html
<b>Larry Ellison acts conciliatory.</b> Catching his competitors off guard yesterday, Oracle prez Larry Ellison referred to his rivals in friendly and respectful terms. <b href="http://www.oracle.com/Mistake.html">More details...</a>
Code 11: item4.html
<b>Sportscaster uses "literally" correctly.</b> In an apparent slip of the tongue, a popular television commentator was heard to use the word "literally" when he did <i>not</i> mean "figuratively." <a href="http://www.espn.com/Slip.html">More details...</a>
2. Action chn vo Applets cho Java Plug-In. Vi JSP, chng ta khng cn c bt k c php c bit no include vo cc applet; ch dng APPLET tag ca HTML bnh thng. Tuy nhin, cc applet ny phi s dng t JDK 1.1 tr xung v c hai trnh duyt ph bit nht l Netscape 4.x v Internet Explorer 5.x vn cha h tr JDK 1.2. Do applet c mt s gii hn sau:
Svth: inh L Giang 16 Trang
n tt nghip
- s dng Swing, chng ta phi gi cc Swing files qua mng. Tin trnh ny tn rt nhiu thi gian v cng tht bi trong Internet Explorer 4 v Netscape 3.x (ch h tr JDK 1.02) m Swing li ph thuc vo JDK 1.1. - Chng ta khng th dng Java 2D. - Chng ta khng th dng gi collection (tp hp) ca Java 2. - M ca chng ta chy chm hn v hu ht cc trnh bin dch cho nn Java 2 c ci tin rt ng k so vi cc trnh bin dch t JDK 1.1 tr xung. Hn th na, cc phin bn ca cc trnh duyt c mt s mu thun trong cch thc m chng h tr AWT component khc nhau, lm cho vic th nghim v iu phi cc giao tip ngi dng tr nn phc tp v nng n hn. gii quyt cc vn ny, Sun pht trin Java Plug-In cho Netscape v Internet Explorer m cho php chng ta s dng Java 2 platform cho cc applet trong nhiu trnh duyt khc nhau. Tuy nhin, li tht khng may mn l APPLET tag bnh thng s khng lm vic vi Plug-In v cc trnh duyt c thit k ring ch s dng my o (Virtual Machine) c sn ca chng khi chng gp APPLET. Thay v th, chng ta phi s dng OBJECT tag i vi IE v EMBED tag i vi Netscape. Hn na v chng ta khng bit loi trnh duyt no s truy cp vo trang chng ta nn chng ta phi hoc l include c OBJECT ln EMBED (t EMBED trong phn COMMENT ca OBJECT) hoc l xc nh loi trnh duyt vo thi gian yu cu dng tag ng cho loi trnh duyt . Qu trnh ny th hin nhin nhng nhm chn v mt thi gian. Action jsp:plugin ch dn server xy dng mt tag thch hp cho cc applet m s dng Plug-In. a) jsp:plugin action. Phng cch n gin nht s dng jsp:plugin l cung cp cho n bn thuc tnh: type, code, width, height. Chng ta nh gi tr applet cho thuc tnh type v ba thuc tnh cn li s dng ging nh APPLET tag bnh thng. Vi ngoi l l cc action th c c php XML nn cc thuc tnh trong n cng phi theo qui c XML. V d vi APPLET tag trong HTML <APPLET CODE=MyApplet.class WIDTH=457 HEIGHT=350> </APPLET> s dng jsp:plugin action nh sau: <jsp:plugin type=applet code=MyApplet.class width=457 height=350 />
Svth: inh L Giang 17 Trang
n tt nghip
Ngoi bn thuc tnh ny jsp:plugin cn c cc thuc tnh sau v hu ht ging (nhng khng phi l tt c) nh cc thuc tnh ca APPLET tag. codebase, align, archive, hspace, name, vspace, title Ging nh APPLET tag. jreversion Xc nh s phin bn ca Java Runtime Environment, cc gi tr c th nhn l 1.1, 1.2. nspluginurl URL cho Netscape m c th download Plug-In. Gi tr mt nh s hng ngi dng n web site ca Sun, nhng vi intranet chng ta c th mun ch dn ngi dng n mt bn sao cc b. iepluginurl URL cho Internet Explorer m c th download Plug-In. b) jsp:param v jsp:params action. jsp:param c dng trong cc actions khc nh: jsp:include, jsp:forward, jsp:plugin. Action ny dng cung cp cp tn v gi tr (name/value) cho cc actions trn. C th vi jsp:plugin, th action ny s nh r tn v gi tr m c truy cp t trong applet bi getParameter. Tt c jsp:param actions u phi nm trong jsp:params action. V d:
Code 12: S dng Applet
<APPLET CODE=MyApplet.class WIDTH=457 HEIGHT=350> <PARAM NAME=PARAM1 VALUE=VALUE1> <PARAM NAME=PARAM2 VALUE=VALUE2> </APPLET>
c) jsp:fallback action.
Trang
n tt nghip
jsp:fallback cung cp vn bn thay th i vi cc trnh duyt khng h tr OBJECT hay EMDEB. Chng ta s dng action ny ging nh l dng vn bn thay th c t trong APPLET tag. V d chng ta c th thay th
Code 13: S dng jspfallback
<APPLET CODE=MyApplet.class WIDTH=457 HEIGHT=350> <B> Error: this example requires Java. </B> </APPLET> vi <jsp:plugin type=applet code=MyApplet.class width=457 height=350 > <jsp:fallback> <b> Error: this example requires Java. </b> </jsp:fallback> </jsp:plugin> 3. Actions dng forward v s dng Components. a) Chuyn cc request t cc trang JSP. Tnh hung chuyn request ph bin nht l request , u tin, bt ngun t servlet v servlet chuyn request ny n trang JSP. L do servlet thng x l request gc l kim tra cc tham s trong request v thit lp Beans nn i hi nhiu cng vic lp trnh v n thun tin lp trnh trong servlet hn l trong ti liu JSP. Nguyn nhn m trang ch thng li l ti liu JSP l JSP rt n gin trong tin trnh to ra ti liu HTML. Tuy nhin iu ny ch l nh hng thng dng ch khng c ngha l ch c mt cch thc hin. Do n gin v d s dng hn trong vic nhng m RequestDispatcher trong mt scriptlet chng ta c th s dng jsp:forward action. V d:
Code 14: S dng jspforward
<% String dest; if (Math.random() > 0.5) { dest = page1.jsp; } else { dest = page2.jsp; } %> <jsp:forward page=<%= dest %> />
Action ny cho php iu phi mt request hin hnh vo lc runtime n mt ti nguyn tnh, trang JSP hay lp servlet trong cng mt ng dng.
Svth: inh L Giang 19 Trang
n tt nghip
b) S dng component trong JSP. Chng ta c th s dng cc actions sau s dng li cc component (Beans) trong JSP: jsp:useBean, jsp:setProperty, jsp:getProperty. Cc action ny c trnh by trong chng II.
Trang
n tt nghip Hi
Chng II :
1. Khi nim.
JSP JAVABEANS
Trang 21
n tt nghip Hi
Cho php chng ta ti mt Bean vi tn v phm vi xc nh vo trang JSP. C php: <jsp:useBean id = beanName scope = value typeSpec> <!-- cc element khc --> </jsp:useBean> Nu khng c body, tc l khng c tag no trong thn ca jsp:useBean th c c php l empty tag. TypeSpec c th hoc (|) trong cc thuc tnh sau: TypeSpec ::= class = className | class = className type = typeName | type = typeName class = className | beanName = beanName type = typeName | type = typeName beanName = beanName | type = typeName Cc gi tr ca thuc tnh scope: page y l gi tr mc nh ca scope. Bean vi gi tr ny s c sn t javax.servlet.jsp.PageContext trong trang hin hnh. Bean s c loi b khi mt response gi tr v client hoc request c chuyn ti mt trang mi. request Bean c gi tr ny th c sn t i tng ServletRequest ca trang hin hnh v bt k trang c include hay forward no bng cch s dng phng thc getAttribute(name). Bean s b hu b khi mt response gi tr v client. session Bean c s dng trong bt k trang no c tham gia vo mt session ca client. C phm vi trong c mt session ca client. Bean ny c lu tr trong i tng HttpSession. application Bean c s dng trong bt k trang no trong ng dng hin hnh (c request hin ti v tng lai). b) jsp:setProperty element Gn mt gi tr hoc nhiu gi tr (thuc tnh mng) ca thuc tnh vo Bean. C php: <jsp:setProperty name = beanName options />
Svth: inh L Giang Trang 22
n tt nghip Hi
options c th hoc (|) trong cc thuc tnh sau: options::=property =* | property =propertyName | property =propertyName param =paraName | property =propertyName value ={<%= expr%> | string} c) jsp:getProperty element Ly gi tr ca thuc tnh Bean hin th gi tr ny trong trang kt qu. C php: <jsp:getProperty name = beanName property = propertyName /> 2. Phng php chuyn kiu t ng JSP Bean Cc thuc tnh ca mt thnh phn JSP th khng gii hn gi tr chui (string) nhng rt quan trng hiu rng tt c gi tr ca thuc tnh c truy cp qua <jsp:getProperty> tag s c chuyn thnh kiu chui. Tuy nhin, phng thc getter khng cn tr v kiu String mt cch tng minh v JSP container s t ng chuyn gi tr tr v ny thnh kiu String nu cn thit. i vi cc kiu d liu c bn ca Java, s chuyn i c th hin trong bng sau: Property Type boolean byte char double int float long Conversion to String Java.lang.Boolean.toString(boolean) Java.lang.Byte.toString(byte) Java.lang.Character.toString(char) Java.lang.Double.toString(double) Java.lang.Integer.toString(int) Java.lang.Float.toString(float) Java.lang.Long.toString(long)
Tng t, tt c phng thc setter ca thuc tnh c truy cp vi <jsp:setProperty> tag s c t ng chuyn t String sang mt kiu gc thch hp bi JSP container. iu ny c thc hin qua cc phng thc ca cc lp v bc Java. Property Type boolean or Boolean byte or Byte char or Character
Svth: inh L Giang
n tt nghip Hi
Tm hiu cch INTROSPECTOR lm vic. Introspector l b phn tch m qua Java xem xt cc on m ca chng trnh tm ra nhng phng thc dng xy dng v p dng cho tng thuc tnh cng nh tnh hung c th. Chng ta khng cn quan tm n cc khai bo phc tp khc. V d thit lp hai phng thc sau: public void setAge(int age) public int getAge() Theo cch ny Bean container s hiu l chng trnh mun to ra thuc tnh l age c kiu int Bean container s chuyn cc thuc tnh theo quy tc:
FoorBar foorBar Z z URL URL
b)Thit k cc phng thc mu dng cho thuc tnh. i vi thuc tnh mang nhng tr n, hai phng thc getter v setter c vit theo mu sau (vi getter v setter xem 4.Thuc tnh ca Bean): public void setAttributeName(AttributeType param) public AttributeType getAttributeName() i vi thuc tnh mang nhng tr kiu boolean, phng thc getter c dng vi tip u ng l is thay cho get: public void setAttributeName(AttributeType param) public boolean isAttributeName() i vi thuc tnh gm nhiu phn t (index attribute) cc phng thc getter v setter cng c thit lp tng t. Chng ta c th s dng mt cp phng thc hay c hai cp phng thc cng c. public void setAttributeName(int index, AttributeType value) public AttributeType getAttributeName() v/hoc public void setAttributeName(AttributeType[] value) public AttributeType[] getAttributeName() c) Khai bo cc phng thc mt cc tng minh.
Trang 24
n tt nghip Hi
Nu khng mun b phn tch Introspector ngm nh, chng ta c th khai bo v x l cc phng thc mt cch tng minh nh vo mt lp ph dng m t cc phng thc c gi l BeanInfo. Khi Beans c tn l xxx c bin dch, trc tin Bean container s i tm lp c tn l xxxBeanInfo. Nu lp ny tn ti, cc thng tin trong lp xxxBeanInfo s c x l trc v p dng cho cc phng thc c tm thy. Cc phng thc khng c m t trong xxxBeanInfo s c p dng cch phn tch kiu Introspector mc nh. Xem thm III. Cc giao tip b tr cho Bean. 4. Thuc tnh ca Bean. a) Cc phng thc truy xut. Thuc tnh tht ra ch l nhng bin nm trong mt lp, tuy nhin nhng bin ny khng nn s dng trc tip m nn thng qua cc phng thc truy xut chng. Thng thng bin c dng vo hai mc ch l gn d liu v ly d liu ra tnh ton. Java a ra hai loi phng thc p ng cho nhu cu truy xut bin l cc phng thc getter mang ngha c d liu t bin v cc phng thc setter mang ngha gn d liu cho bin. b) Cc loi thuc tnh. Chng ta hy xem cc v d sau: Thuc tnh mang nhng gi tr n. Bean sau y ly thi gian ca h thng.
Code 15: Java file
package com.legiang.bean; import java .util.*; public class CurrentTimeBean { /*Data members*/ private int hours; private int minutes; /* Methods */
Code 15: Java file (tip theo)
public CurrentTimeBean() { Date now = new Date(); this.hours = now.getHours(); this.minutes = now.getMinutes(); } public int getHours() { return hours; } public int getMinutes() { return minutes(); } Svth: inh L Giang Trang 25
n tt nghip Hi }
Code 16: JSP file
<jsp:useBean id="time" class="com.legiang.bean.CurrentTimeBean"/> <html> <body> It is now <jsp:getProperty name="time" property="minutes"/> minutes past the hour. </body> </html>
package com.legiang.bean; public class LogicBean { /*Data members*/ private boolean authorized; /*Methods*/ public LogicBean() { this.authorized = false; } public void setAuthorized(boolean authorized) { this.authorized = authorized; } public boolean isAuthorized() {
Code 17: Java file (tip theo)
return authorized; } }
Code 18: JSP file
<jsp:useBean id="logic" class="com.legiang.bean.LogicBean"/> <html> <body> Do you authorize?<br/> Answer:<jsp:getProperty name="logic" property="authorized"/> </body> </html>
Trang 26
n tt nghip Hi
package com.legiang.bean; import java.util.*; public class StatBean { /*Data members*/ private double[] numbers; /*Methods*/ public StatBean() { numbers = new double[0]; } public double getAverage() { double sum = this.getSum(); if (sum == 0) return 0; else return sum/numbers.length; } public double getSum() {
Code 19: Java file (tip theo)
double sum = 0; for (int i=0; i < numbers.length; i++) sum += numbers[i]; return sum; } public double[] getNumbers() { return numbers; } public double getNumbers(int index) { return numbers[index]; } public void setNumbers(double[] numbers) { this.numbers = numbers; } public void setNumbers(int index, double value) { numbers[index] = value; } public int getNumbersSize() { return numbers.length; } }
Trang 27
n tt nghip Hi
Code 20: JSP file
<jsp:useBean id="stat" class="com.lg.bean.StatBean"> <% double[] mynums = {100, 250, 150, 50, 450}; stat.setNumbers(mynums); %> </jsp:useBean> <html> <body> The average of <% double[] numbers = stat.getNumbers(); for (int i=0; i < numbers.length; i++) { if (i != numbers.length) out.print(numbers[i] + ","); else
Code 20: Java file (tip theo)
out.println("" + numbers[i]); } %> is equal to <jsp:getProperty name="stat" property="average" /> </body> </html>
Ngoi cc loi thuc tnh trn, Java cn cung cp mt s thuc tnh nng cao khc dng cho cc Bean ho.
Trang 28
n tt nghip Hi
to lp BeanInfo chng ta ch cn t tn lp cng vi tip v ng BeanInfo (nh SimpleBeanBeanInfo) v ci t giao tip java.beans.BeanInfo. Quy tc t tn ny l cch bo cho Bean container (nh JSP container) bit xc nh lp BeanInfo thch hp cho Bean chng ta. 2. Giao tip Serializable JavaBeans sau khi c thit k v em vo s dng ngi dng s tu thay i cc thuc tnh m Bean cung cp. Tuy nhin khi chm dt chng trnh th cc thuc tnh ny cng mt i. Ln sau khi dng cc thuc tnh ny phi c khi to v t li gi tr mi. Nh vy chu trnh sng ca Bean ch hn hp trong qu trnh hot ng ca chng trnh, khng s dng li sau ny c. Java cung cp mt kh nng lu li cc i tng JavaBeans ln a bng c ch Serializable. Khi mt i tng hay Bean c lu xung tp tin nh phn th tt c bin hay cc i tng con nm bn trong lp cha u c lu theo. Mt s server h tr c ch persistent session bng cch ghi bt k d liu no ca session vo a gia cc ln server ngng hot ng. Khi server hot ng tr li th d liu c serialization c phc hi tr li. Mt nguyn nhn tng t a vo cc server h tr cho vic nhm cc session li trong cc mi trng truyn thng chm chp (do hot ng nhiu, ...). Nhiu server s dng c ch serialization sao lp d liu ca session gia cc web server trong nhm. Nu Beans ca chng ta khng ci t giao tip Serializable th server khng th lu tr hoc chuyn Beans ca chng ta trong cc tnh hung ny. 3. Giao tip HttpSessionBindingListener Vic ci t giao tip HttpSessionBindingListener ca Servlet API trong Beans chng ta s cho php cc th hin nhn c thng bo ca cc s kin session. Giao tip ny kh n gin, ch cn nh ngha hai phng thc: public void valueBound(HttpSessionBindingListener event) public void valueUnBound(HttpSessionBindingListener event) Phng thc valueBound() c gi khi Bean c lu tr trong session ca ngi dng. Trong trng hp ca JSP, iu ny s thng xy ra ngay khi Bean c khi to bi <jsp:useBean> tag m c xc nh phm vi session trong thuc tnh scope. Phng thc valueUnBound() c gi khi i tng b xo khi session. C vi tnh hung lm cho Bean ca chng ta s b xo khi session. Khi JSP container d nh chm dt mt session ca ngi dng v hot ng km, trc tin JSP container xo tng mc d liu trong session, ri kch hot valueUnBound(). Th hai, S kin ny s c kch hot nu servlet, scriptlet, hay on m Java no xo b Bean khi session v mt s l nguyn nhn. Mi s kin kt hp vi giao tip HttpSessionBindingListener th c th s dng t c s truy cp vo i tng session. Vic ci t giao tip ny
Trang 29
n tt nghip Hi
s cho php chng ta tc ng tr li cc s kin ca session. V d ng cc ni kt khng cn thit, to cc giao tc hoc thc hin cc hot ng bo tr khc.
Trang 30
n tt nghip
Chng III :
I. Tag library l g ?
TAG LIBRARIES
Trong k thut JavaServer Pages, cc action l cc element c th to ra v truy cp vo cc i tng ca ngn ng lp trnh v xut vo nhng lung xut chun nh mn hnh, my in, JSP nh ngha ra chn action chun m phi c cung cp bi bt k engine no. Ngoi cc action chun ny , t JSP v1.1 tr ln cho php xy dng v pht trin cc module c th dng li c gi l custom action. Trong trang JSP, mt custom action c triu gi bng cch dng custom tag . Mt tag library l mt tp cc custom tag. Cc ng dng c th c thc hin bng custom action bao gm x l form, truy cp c s d liu v cc dch v mc x nghip khc nh email, qun l th mc v iu khin lung. Trc khi custom action xut hin th JSP c mt c ch dng li m l cc thnh phn JavaBean kt hp vi scriplet. Tuy nhin vi JavaBean c mt bt li l xy dng phc tp v kh qun l. Cc custom action lm du c vn ny bng cch mang li cc li ch di gc khc ca vic module ho tnh s dng li cho cc trang JSP. Cc custom action gi gn li cc tc v chng c th c dng li trong hn mt ng dng v tng hiu xut bng cch khuyn khch phn chia cng vic gia cc nh pht trin th vin v ngi s dng th vin. Cc tag library ca JSP c to bi cc nh pht trin, l ngi thnh tho ngn ng lp trnh Java v l chuyn gia trong giao tip vi c s d liu v cc dch v khc. Cc tag library c dng bi cc nh thit k ng dng web, l ngi c th ch tp trung vo cch thc hin th hn l quan tm n cch truy cp c s d liu v cc dch v khc. Mt s t tnh ca cc custom tag l: Chng c th c tu bin thng qua cc thuc tnh t mt trang ang gi. Chng c php truy cp vo tt c i tng c sn trong trang JSP. Chng c th thay i li p m c pht sinh bi mt trang ang gi. Chng c th c lng vi nhau v cho php cc tng tc phc tp trong mt trang. Chng c th truyn thng vi nhau. Chng ta c th to v khi to mt thnh phn JavaBean, to mt bin tham chiu n Bean trong mt tag v sau s dng Bean ny trong tag khc.
Trang 33
n tt nghip
n tt nghip
char or Character double or Double int or Integer float or Float long or Long
Gi tr thuc tnh c dng <%= expression %> c tnh vo thi gian yu cu. Gi tr ca biu thc tu thuc vo kiu thuc tnh c xc nh trong i tng ci t tag cn gi l tag handler (tag handler trong phn nh ngha cc tag). <tlt:helloWorld name=DHBK Ha Noi/> c) Cc tag c ni dung. Tag c th bao hm cc custom tag, scripting element, HTML, v ni dung nm gia start tag v end tag. Trong v d sau s a ra thng tin li cho c cung cp trong thn tag thay v trong thuc tnh ca n. <tlt:helloWorld> DHBK Ha Noi </tlt:helloWorld> d) Cc tag nh ngha cc bin kch bn. Mt tag c th nh ngha ra mt bin m bin ny c dng trong cng mt trang. V d sau y minh ho cch thc nh ngha v s dng mt bin cha mt i tng c tr v. e) Kt hp cc tag. Cc tag kt hp vi nhau bng cc phng php ca cc i tng dng chung. Trong v d sau, tag1 to mt i tng c tn l obj1, sau c s dng li bi tag2. Qui tc ny c khuyn khch bi bng t t JSP, mt tag to ra mt tn vi thuc tnh id v tag th hai c thuc tnh name dng li tn ny. <tlt:tag1 id=obj1 attr2=value/> <tlt:tag2 name=obj1/> Trong v d kt tip, dng cc tag lng nhau tng t nh trong XML v HTML. <tlt:outerTag> <tlt:innerTag /> <tlt:outerTag>
Trang 35
n tt nghip
- Khai bo tag trong b m t th vin tag (tag library descriptor) di dng tp tin XML. To tp tin JSP c s dng custom tag. Phn ny m t cc thuc tnh ca tag handler v cc b m t th vin tag, cng trnh by cch pht trin tag handler v cc element ca b m t th vin i vi mi loi tag c gii thiu trong phn trc. 1. Tag handler. Tag handler l mt i tng c gi ln bi JSP container nh tr cho custom tag trong xut qu trnh thc thi ca trang JSP c tham chiu ti mt tag no . Cc phng thc ca tag handler c gi bi lp ci t trang JSP vo cc thi im khc nhau trong xut qu trnh nh tr cho tag. Khi gp start tag ca custom tag th lp ci t trang JSP gi cc phng thc khi to cc gi tr thch hp v sau triu gi phng thc doStartTag. Khi gp end tag ca custom tag th phng thc doEndtag c gi. Tu theo mc ch ca tng custom tag m chng ta x l cc phng thc thch hp trong tng giao tip ci t. Bng sau m t cc loi tag c cc phng thc tng ng x l.
Cc phng thc cn x l
doStartTag, doEndTag, release doStartTag, doEndTag, set/getAttribute1...N doStartTag, doEndTag, release doStartTag, doEndTag, release, doInitBody, doAfterBody
Tag handler c s truy cp vo API m cho php n truyn thng vi trang JSP. Con ng vo API ny l i tng pageContext, qua tag handler c th truy cp vo mi i tng ngm nh khc nh request, session, application t trang JSP. Cc i tng ngm nh c th c cc thuc tnh kt hp vi chng. Cc thuc tnh nh th c truy cp qua cc phng thc [get/set]Attribute thch hp. Nu tag c lng nhau th tag handler cng c th truy cp handler ny (c gi l parent) cng vi ton b tag. Cc tag handler phi c ci t hai giao tip hoc Tag hoc BodyTag. Cc giao tip c th c dng ly i tng Java tn ti v to ra mt tag handler. nh ngha cc tag handler mi chng ta c th dng cc lp
Svth: inh L Giang Trang 36
n tt nghip
TagSupport v BodyTagSupport nh l cc lp c s (xem III. 4. Tag handler c triu gi nh th no?). 2. Tag library descriptor. Tag library descriptor (TLD) l mt ti liu XML dng m t th vin tag. Mt TLD cha ton b thng tin v th vin v mi tag cha trong th vin. JSP container v cc cng c pht trin JSP s dng TLD xc nh cc tag. Cc element ca TLD sau dng nh ngha th vin tag:
Code 21: HelloWorldTag.java
"http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd"> <!-- a tag library descriptor --> <taglib> <tlibversion> <!-- Phin bn ca th vin tag --> <!-- Phin bn ca JSP m tag handler ph thuc --> <jspversion> <!--Tn mt nh n gin c th dng bi cng c to trang JSP to tn vi gi tr gi nh; chng hn shortname c th c dng nh gi tr tip u ng thch hp trong taglib directive v/hoc to ra cc tip u ng cho cc id --> <shortname> <uri> <!-- URI duy nht xc nh tag library --> <info> <!-- Thng tin m t v tag library --> <tag> ... </tag> ... </taglib>
Tag element yu cu i vi mi tag xc nh mt lp c trong th vin tag. <tag> <tagclass>classname</tagclass> ... </tag> 3. Cc v d. to cc custom tag chng ta cn hai import gi c bn: import javax.servlet.jsp.*; import javax.servlet.jsp.tagext.*; // tag extension a) Cc tag n gin. Tag handler i vi cc tag n gin ch cn ci t hai phng thc ca giao tip Tag l doStartTag v doEndTag. doStartTag c triu gi khi JSP container gp start tag, n tr v SKIP_BODY v thn tag chng c ni dung no c. Ngc li khi gp end tag th JSP
Svth: inh L Giang Trang 37
n tt nghip
container gi doEndTag, tr v EVAL_PAGE nu phn cn li ca trang cn phi nh tr, nu khng tr v SKIP_PAGE. Lp tag handler s c ci 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; } }
TLD element Cc tag m khng c thn phi khai bo ni dung ca thn l rng.
Code 23: helloworld.tld
"http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd"> <!--Nu c JSP v1.2 th i li "http://java.sun.com/j2ee/dtds/jsptaglibrary_1_2.dtd"--> <!-- a tag library descriptor --> <taglib> <tlibversion>1.0</tlibversion> <jspversion>1.1</jspversion> <shortname>legiang</shortname> <uri></uri> <info> A tag library from authors at http://www.legiang.com/. </info> <tag> <name>helloWorld</name> <tagclass>com.legiang.HelloWorldTag</tagclass> <info>V d vi tag n gin nht</info> <!-- EMPTY is insensitive case --> <bodycontent>EMPTY</bodycontent> </tag> <!-- Other tags defined later... --> </taglib> Svth: inh L Giang Trang 38
n tt nghip
JSP page
Code 24: hello.jsp
<?xml version="1.0" encoding="ISO-8859-1" ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "DTD/xhtml1-strict.dtd"> <html> <head>
Code 24: hello.jsp (tip theo)
<%@ taglib uri = "helloworld.tld" prefix = "legiang" %> <title> <legiang:helloWorld /> </title> <!-- stylesheet hin th cc tag nh h1, --> <link rel = "stylesheet" href ="JSP-Styles.css" type = "text/css"/> </head> <body> <h1><legiang:helloWorld /></h1> <legiang:helloWorld /> </body> </html>
b) Cc tag c thuc tnh. nh ngha cc thuc tnh trong tag handler. i vi mi thuc tnch ca tag, chng ta phi nh ngha theo phong cch ca JavaBean, tc l phi c phng thc get/set[Attribute] trong tag handler. Hy nh rng, nu thuc tnh c t tn l id v tag handler kt tha t lp TagSupport th chng ta khng cn nh ngha cc phng thc get/set[Attribute] bi v nhng th ny c TagSupport lm sn. Lp tag handler s c ci t nh sau:
Code 25: HelloWorldTag.java (sa li 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); } catch (Exception ex) { throw new JspTagException("HelloWorldTag: " + e.getMessage()); Svth: inh L Giang Trang 39
TLD element
i vi mi thuc tnh chng ta phi xc nh thuc tnh no c yu cu (bt buc) v gi tr no c th c xc nh bi biu thc. Nu thuc tnh ca tag khng bt buc th tag handler nn cung p gi tr mt nh. TLD cho tag handler trn nh sau:
Code 26: TLD file (overwrite helloworld.tld)
... <!-- on ny tng t nh mc 1) --> <tag> <name>helloWorld</name> <tagclass>com.legiang.HelloWorldTag</tagclass> <info>V d vi tag n gin nht</info> <attribute> <name>name</name> <required>false</required> <rtexprvalue>false</rtexprvalue> </attribute> <!-- EMPTY is insensitive case --> <bodycontent>EMPTY</bodycontent> </tag>
JSP page
Code 27: paramtag.jsp
<?xml version="1.0" encoding="ISO-8859-1" ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "DTD/xhtml1-strict.dtd"> <html>
Code 27: paramtag.jsp (tip theo)
<head> <%@ taglib uri = "helloworld.tld" prefix = "legiang" %> <title> Tag With Attributes </title> <!-- stylesheet hin th cc tag nh h1, --> <link rel = "stylesheet" href ="JSP-Styles.css" type = "text/css"/> </head> Svth: inh L Giang Trang 40
n tt nghip
Gvhd: Ts. Nguyn Thc Hi <body> <h1><legiang:helloWorld name = "BKHN University" /></h1> <legiang:helloWorld name = "DHBK Ha Noi" /> </body> </html>
c) Cc tag c ni dung. Tag handler Tag handler cho loi ny c ci t khc nhau ph thuc vo tag handler c tng tc vi thn hay khng. Tng tc c ngha l tag handler c hoc sa i ni dung ca thn hoc to ra gi tr lp li cho thn tag. Cc tag c tng tc vi phn thn: nu tag handler khng cn tng tc vi phn thn th tag handler ny nn ci t giao tip Tag hoc dn xut t lp TagSupport. Nu thn ca tag cn nh tr th doStartTag cn phi tr v EVAL_BODY_INCLUDE, ngc li tr v SKIP_BODY. Cc tag c tng tc vi phn thn: tag handler phi ci t giao tip BodyTag hoc BodyTagSupport, thng ci t phng thc doInitBody v doAfterBody. Hai phng thc ny tng tc vi ni dung ca thn c chuyn vo tag handler bi lp ci t trang JSP. i tng BodyContent cung cp vi phng thc c v ghi ni dung ca n. Tag handler s dng cc phng thc getString, getReader ca BodyContent trch thng tin t phn thn v phng thc writeOut(out) ghi cc ni dung ca thn vo lung xut. Phng thc getPreviousOut thng c s dng bo m rng kt qu tr v ca tag handler th c sn i vi ton b tag handler. Cc phng thc chnh c dng trong loi tag ny: doInitBody: c gi sau khi ni dung ca thn c gn nhng trc khi c nh gi tr, thng c dng thc hin khi to gi tr m tu thuc vo ni dung ca thn. doAfterBody: c gi sau khi ni dung ca thn c nh tr. Nu thn c tr nhiu ln lp i lp li nn tr v EVAL_BODY_TAG, ngc li tr v SKIP_BODY. release: tag handler nn xc lp li trng thi ca n v gii phng cc ti nguyn dnh ring bng phng thc release. V d sau c ni dung ca thn, chuyn ni dung , v sau ghi li nhng thay i vo lung xut.
Code 28: TransformTag.java
public class TransformTag extends BodyTagSupport { public int doAfterBody() throws JspTagException { BodyContent bc = getBodyContent(); String body = bc.getString(); bc.clearBody(); Svth: inh L Giang Trang 41
n tt nghip
Gvhd: Ts. Nguyn Thc Hi try { getPreviousOut().print(body.transform()); } catch (IOException e) { throw new JspTagException("TransformTag: " + e.getMessage()); } return SKIP_BODY; } }
TLD element
TLD y ch sa i li cc v d trn trong bodycontent tag v t tn file l transform.tld <tag> ... <bodycontent>JSP<bodycontent> <tag> Vi cc tag c phn thn th bodycontent tag c hai gi tr. Mt l JSP, phn thn bao gm custom tag, scripting element v vn bn HTML. Tt c cc th cn li c gi tr l tagdependent. Ch rng gi tr ca element ny khng nh hng ti tin trnh thng dch ca thn. JSP page
Code 29: transformtag.jsp
<?xml version="1.0" encoding="ISO-8859-1" ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "DTD/xhtml1-strict.dtd"> <html> <head> <%@ taglib uri = "transform.tld" prefix = "legiang" %> <title> Tag With Body </title> <!-- stylesheet hin th cc tag nh h1, --> <link rel = "stylesheet" href ="JSP-Styles.css" type = "text/css"/> </head> <body> <h1> Tag With Body </h1> <legiang:transform> Hi! BKHN University </legiang:transform> </body> </html>
Tag handler
Trang 42
n tt nghip
Tag handler m nhn vic to v gn i tng c tham chiu bi bin kch bn vo ng cnh c th truy cp t mt trang. Lm c iu ny bng cch dng hoc phng thc pageContext.setAttribute(name, value, scope) hoc pageContext.setAttribute(name, value). Thng thng mt thuc tnh chuyn vo custom tag phi xc nh tn ca bin i tng; Tn ny c th truy xut bng cch gi phng thc get[Attribute] ca thuc tnh (xem 2) Cc tag c thuc tnh). Nu gi tr ca bin kch bn ph thuc vo i tng hin ti trong tag handler th n c th truy xut i tng ny bng cch dng pageContext.setAttribute(name, scope). Cc gi tr ca tham s scope c tm tc trong bng sau: Phm vi
page
C th truy cp t Trang hin hnh Trang hin hnh v bt k trang c include hay forward no Yu cu hin hnh v bt k yu cu tip theo trong cng browser Bt k yu cu hin ti v tng lai no t cng mt ng dng
Thi gian sng Cho ti khi li p gi tr li user hoc yu cu c chuyn ti trang mi Cho ti khi li p gi tr li user i sng ca mt phin lm vic (session) i sng ca mt ng dng
request
session
application
Ngoi vic ci t gi tr ca bin trong tag handler, chng ta cn phi nh ngha mt lp dn xut t lp TagExtrInfo. Lp ny cung cp thng tin cho JSP container v t tnh ca ca bin kch bn, phi ci t phng thc
getVariableInfo tr v mt mng cc i tng VariableInfo cha cc thng tin sau: tn bin, lp ca bin, liu bin ny c tham kho ti mt gi tr i tng mi hay c, tnh sn dng ca bin ny.
Bng sau m t tnh sn dng ca bin kch bn v cc phng thc xc lp v xc lp li gi tr ca bin. Value
NESTED AT_BEGIN
Methods Trong doInitBody v doAfterBody i Gia start tag v vi tag handler ci t BodyTag; end tag. ngc li trong doStartTag. T start tag cho Trong doInitBody, doAfterBody, v n cui trang. doEndTag i vi tag handler ci t BodyTag; ngc li trong
Trang 43
Availability
n tt nghip
doStartTag AT_END
v doEndTag.
Sau end tag cho Trong doEndTag. ti cui trang. Lp tag handler sau ly d liu t JNDI lookup c lu tr nh l thuc tnh ca i tng pageContext cng vi tn ca bin kch bn.
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) { 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 (tip theo)
} catch(javax.naming.NamingException e) { throw new JspException("Unable to look up " + name + " due to " + e.getMessage()); } return EVAL_PAGE; } }
Bin kch bn s c nh ngha trong lp dn xut t lp TagExtraInfo. Do bin c truyn vo nh cc thuc tnh ca tag nn s c truy xut bi phng thc getAttributeString ca lp TagData v dng lp y hm to ca VariableInfo. cho php bin kch bn c dng trong phn cn li ca trang th phm vi ca bin nn gn bng 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"), Svth: inh L Giang Trang 44
TLD element
Chng ta cn phi bo cho JSP container bit n nn dng lp TagExtraInfo to ra bin kch bn vi phm vi thch hp. on TLD c tn lookup.tld nh sau:
... <tag> <tagclass>com.legiang.LookupTag </tagclass> <teiclass>com.legiang.LookupTagTEI</teiclass> <attribute> <name>name</name> <required>true<required> <rtexprvalue>false</rtexprvalue> </attribute> <attribute> <name>type</name> <required>true<required> <rtexprvalue>false</rtexprvalue> </attribute> </tag> ...
JSP page
Code 33: JSP file
... <%@ taglib uri = "lookup.tld" prefix = "legiang" %> <!-- dng trong body ca JSP --> <legiang:lookup id = "sv" type = "UserTransaction" name = "java:comp/ UserTransaction "> <!-- Gi s trong lp UserTransaction c phng thc begin --> <% sv.begin() %>
Trang 45
n tt nghip
4. Tag handler c triu gi nh th no? Giao tip Tag nh ngha mt qui c truyn thng c bn gia tag handler v lp ci t trang JSP. Giao tip ny nh ngha chu k sng v cc phng thc c triu gi khi gp phi start tag v end tag ca mt action. Lp ci t trang JSP triu gi cc phng thc setPageContext, setParent, v cc phng thc ci t thuc tnh trc khi gi phng thc doStartTag. Lp ny cng bo m rng phng thc release s c gi trong tag handler trc khi kt thc trang. V d sau thc hin tng bc cch gi tag handler.
ATag t = new ATag(); t.setPageContext(...); t.setParent(...); t.setAttribute1(value1); t.setAttribute2(value2); t.doStartTag(); t.doEndTag(); t.release();
Giao tip BodyTag m rng t giao tip Tag bng cch nh ngha thm cc phng thc cho php tag handler truy cp vo thn ca n. Giao tip ny cung cp ba phng thc mi: setBodyContent: to ni dung ca thn tag v thm vo tag handler. doInitBody: c gi trc khi nh tr thn ca tag. DoAfterBody: c gi trc khi nh tr thn ca tag. V d:
Code 35: Cch thc hin tag handler c BodyContent
t.doStartTag(); out = pageContext.pushBody(); t.setBodyContent(out); /* thc hin cc khi to cn thit sau khi ni dung ca thn c gn */ t.doInitBody(); t.doAfterBody(); /**/ /* Khi doAfterBody tr v EVAL_BODY_TAG chng ta lp li phn nh tr cho thn tag */ ... t.doAfterBody(); /**/ t.doEndTag(); t.pageContext.popBody(); Svth: inh L Giang Trang 46
n tt nghip t.release();
Trang 47
n tt nghip
Phn II:
Chng IV:
I. Phn Tch.
1.
t vn .
Xut pht t nhu cu thc t trong qun l cng vic cac cng ty hin nay cn nhiu nhc im, vic ngi qun l cp cng cao cng khng nm bt thng tin, khng trc tip qun l c tc lm vic ca nhn vin mnh l kh ph bin. Hn na trong thi bui kinh t th trng thi bui ca cng ngh thng tin mi con ngi c qu nhiu cng vic phi lm, h khng c thi gian rnh ri ngi lm bo co ri cui tun em np cho qun l, h mun c nh nhng vn bit cng vic ca mnh phi lm trong ngy l g?, h mun c mt khong thi gian d t i tranh th ngh ngi. mt phn no tho g cc kh khn, nhc im v xut pht t cc yu cu thc t ca mt s cng ty chng trnh QUN L CNG VIC TRN WEB c ra i. Trong khun kh ca mt tt nghip i hc do thi gian, cc kin thc nht l v chuyn mn nghip v cn hn ch chc chn khng trnh khi nhng sai st. Song vi s n lc ht sc nhm hon thnh tt cng vic nhng do thi gian nghin cu thc hin khng nhiu, lng cng vic tng i ln, trang thit b, ti liu cha y v trnh hn ch cho nn chc chn ti ny s c t nhiu khim khuyt t thc t n tng lp trnh, mong c s lng th v ch bo thm ca cc Thy, C. Rt mong nhn c s ng gp kin chn thnh t thy c v cc bn chng trnh hon thin hn sm c a vo s dng thc t. 2. nh ngha cc yu cu. Qun L Phn cng cng vic cho tng nhn vin. Kim tra tin thc hin. nh gi cng vic. Thng k. Gii p thc mc.
Lp bng nh gi nhn vin bng biu . Tng hp bo co. Thit lp ch lm vic trc tip gia hai nhn vin.
Nhn Vin
Svth: inh L Giang Trang 48
n tt nghip
Xem cc cng vic c giao. Bo co tin thc hin theo ngy. xut cch gii quyt cng vic theo ngy. ng gp kin xy dng cng ty. Bo co cng vic thc hin xong. Xem cc nh gi ca bn qun l.
Qun Tr H Thng (Admin) To/Xo/Sa user. Thm/Xo/Sa cc quyn. Gn quyn cho user. Refresh database. Restore database. Cp nht database.
3. Phm vi ti. V D Liu Cho php lu tr trong mt nm pht sinh d liu D liu cp nht trc tuyn V Giao Din H thng hot ng trn mi trng Web V Mng Hot ng trong mi trng mng Intranet V x l Thng k Thit lp ch lm vic gia hai nhn vin Lp bo co Lm ti/ Phc hi CSDL 4. M hnh x l quan nim. a) S ng cnh.
Trang 49
n tt nghip
b)
Trang 50
n tt nghip
S h thng. Mc 1:
Trang 51
n tt nghip
Trang 52
n tt nghip
Trang 53
n tt nghip
Trang 54
n tt nghip
Trang 55
n tt nghip
n tt nghip
Trang 57
n tt nghip
II. Thit K.
6. Thit k x l. a) S h thng mc vt l.
b)
Cc n v thit k.
Cp nht cng vic. Thm cng vic: Nhp: TenCV & NoiDung & MaDA. Xut: Thng bo thm / thng bo li. Sa cng vic: Nhp: TenCV | NoiDung | MaDA | DaXong. Xut: Thng bo sa / thng bo li. Xo cng vic: Nhp: MaCV. Xut: Thng bo xo / thng bo li. Phn cng cng vic. Nhp: MaNV & mt hoc nhiu MaCV & NgayBD, NgayKT. Xut: Thng bo phn cng / thng bo li. nh gi cng vic. Nhp: MaDG vo bng Works. Xut: Thng bo nh gi / thng bo li. Kim tra tin cng vic. Ch hin th cc bo co tin ca nhn vin. Thit lp ch lm vic. Nhp: MaNV & MaCV & ThietLap vo bng PhanCong.
Trang 58
n tt nghip
Xut: Thng bo chuyn giao cng vic / thng bo li. Bo co tin cng vic. Nhp: MaCV & TienDo & Ngay | GhiChu | Km tp tin. Xut: Thng bo bo co chuyn i / thng bo li. Thay i mt khu. Nhp: Usename & Password c | Password & Confirm Password mi. Xut: Thng bo i mt khu / thng bo li. Thng k cng vic. Thng k cng vic theo ba tiu chun: + T ngy n ngy. + Theo nh gi (xp loi). + theo n. Lm ti c s d liu. Nhp: Tn CSDL mi cn phc hi khi b hng & lm ti t ngy no n ngy no | t thng no n thng no | nm no. Xut: Thng bo lm ti CSDL / thng bo li. Phc hi c s d liu. Nhp: Tn CSDL cn phc hi ( c t lm ti CSDL). Xut: Thng bo phc hi hon ton / thng bo li.
c)
Trang 59
n tt nghip
M ng cog vie ba n c
Cog vie to ta ? n c n i khog n - Tag ma cog vie n so n c - Ghi va CSDL ca d u a p o c lie nha Thog ba n o cog vie a n c the m co
co
n tt nghip
- Cho nha vie n n n - Cho mohoa nhie n t c u cog vie n c - Nga baa, ke y t u t thu c
M ng pha cog ba n n
NV na a c y d pha cog ca n n c cog vie ? n c khog n Ghi ca thog tin a p va CSDL c n nha o Thog ba n o cog vie a n c pha cog n n co
co
Thog ba lo n o i
n tt nghip
Thog Ke ng Vie n Co c
Kha i u
Lm ti c s d liu.
Trang 62
n tt nghip
Lam Ti CSDL
Khi au
co
- Tao CSDL mi (Backup) Thong bao - Xoa cac mau tin trong cac bang CSDL a co phat sinh
Trang 63
n tt nghip
e)
Svth: inh L Giang
n tt nghip
Table
Vng
Din Gii M Gp M Nhn Vin Ni Dung Ngy M File M Bo Co Tn File Kch thc File Loi Ni Dung File c Ti Ln Server M Bo Co Tng Hp M Cng Vic
Kiu
Kch Th c 10 9 50
Gii hn Gi Tr
Gi Tr Ngm nh
GOPY
Text Text Text Date time Int Text Text Long Text
FILES
30
MABCTH
Text
10
MACV
Int
Trang 65
n tt nghip
TON DONG
S Lng CV Cn Tn ng Ngy Cng Vic S Lm Trong Tun Ti Xut M nh Gi Phn Hi M Xp Loi M Nhn Vin M Nhm Tn Nhn Vin Ngy Sinh a ch Phi
Int
>=1
Date time
DANH GIA
Text Int Text Text Int Int Text Date time Text Bit
80 >=1 50 80 >=1 >=1 25 < ngy hin ti 50 L s nguyn 0 hoc 1 9 Kho Ngoi (FK) Kho Chnh (PK) Kho Ngoi (FK) Kho Chnh (PK)
NHAN VIEN
PHONE
in Thoi
Text
Trang 66
n tt nghip
USER NAME PASS WORD MABCN MACV TIENDO NGAY GHICHU DEXUAT WORKS MACV MADA MADG TENCV NOI DUNG DAXONG DEAN MADA TENDA DIA DIEM
Tn Ngi S Dng Mt Khu M Bo Co Ngy M Cng Vic Tin Ngy Ghi Ch Xut Kin M Cng Vic M An M nh Gi Tn Cng Vic Ni Dung Xong M An Tn An a im
Text
16
Text Text int Float Date time Text Text Int Int Int Text Text Bit Int Text Text
16 10 >=1 4 >= ngy ngy hin hin ti ti 80 50 >=1 >=1 >=1 20 100 0 hoc 1 >=1 30 40 Kho Chnh (PK) Kho Ngoi (FK) Kho Ngoi (FK) Kho Chnh (PK) Kho Ngoi (FK)
Trang 67
n tt nghip
XEP LOAI
MAXL XEPLOAI
M Xp Loi Xp Loi Ghi Ch M Nhn Vin M Cng Vic Ngy Bt u Thit lp Ngy Kt Thc M Nhm Tn Nhm Trng Nhm Ngy Nhn Chc M Quyn M Nhm M Quyn
Int Text Text Text Int Date time Bit Date time Int Text Text Date time Int Int Int 20 80 30 9 Ngay BD > Ngay KT 1 Ngay KT > Ngay BD 30 80 9
>=1
PHAN CONG
GROUPS MA GROUP TEN GROUP TRG GROUP NGAYNC GROUPS MAPER _PER MA GROUP PERMI SIONS MAPER TENPER GHICHU
Svth: inh L Giang
Trang 68
n tt nghip
f)
(RB15) MABC l kho ngoi ca FILES tham chiu t BAOCAONGAY. (RB16) MACV l kha ngoi ca BAOCAOTONGHOP tham chiu t WORKS
(RB17) MAXL l kho ngoi ca DANHGIA tham chiu t XEPLOAI. (RB18) MAGROUP l kho ngoi ca NHANVIEN tham chiu t GROUPS. (RB19) MACV l kho ngoi ca BAOCAONGAY tham chiu t WORKS. (RB20) MADG l kho ngoi ca WORKS tham chiu t DANHGIA. (RB21) MADA l kho ngoi ca WORKS tham chiu t DEAN. (RB22) MANV l kho ngoi ca PHANCONG tham chiu t NHANVIEN. (RB23) MACV l kho ngoi ca PHANCONG tham chiu t WORKS. (RB24) MAPER & MAGROUP l kho ngoi ca GROUP_PER tham chiu t GROUPS & PERMISSION. (RB25) Ngy nhn chc > Ngy sinh + 24. (RB26) Ngy kt thc >= Ngy bt u. (RB27) Mt cng vic c th c nhiu nhn vin nhng ti mt thi im ch c mt nhn vin thc hin mt cng vic.
Trang 69
n tt nghip
g)
Works Nhan Vien Phan Cong Gop Y Files
Bng tm nh hng.
Bao Cao Ngay Bao Cao Tong Hop Danh Gia Xep Loai Groups Groups _Per Permissi ons DeAn
T
RB1 RB2 RB3 RB4 RB5 RB6 RB7 RB8 RB9 RB10 RB11 RB12 RB13 RB14 RB15 RB16 RB17 RB18 RB19 RB20 RB21
X T S X T S X T S X T S X T S X T S X T
X T S X T
T S X
X X X X X X X X X X X X X X X X X X X X X X X X X X X X X
Trang 70
n tt nghip
RB22 RB23 RB24 RB25 RB26 RB27
X X
X X X
Trang 71
n tt nghip
8.
He Thong
Quan Ly
Nhan Vien
Tr Giup
CN nhom
anh gia CV
CN nhan vien
Thong ke CV
e xuay y kien
Lam ti CSDL
CN cong viec
9.
Thit k giao din. Cc Site map (thay th cho s dch chuyn trng thi).
Trang 72
n tt nghip
Website QLCV
Login
Trang 73
n tt nghip
Member components Admin component
The m
The m Co
Th m e Kiem tra User thuoc Group nao chua ? K Them User vao Group . jsp Co
OK
OK
Xoa Xoa Xoa permision. jsp
OK
Xoa
OK OK
Xoa
OK
OK
Yeu cau kiem tra User trong Group da xoa het chua. * Bat buoc phai xoa tat ca User moi xoa duoc Group.
Sua
Sua
Sua
OK
OK
Yeu cau kiem tra thong tin lien quan khi sua. - Quyen han o Group cu . - User dang thuoc Group nao, .. . .
OK
OK
Trang 74
n tt nghip
Trang Danh Sach Cac Thac Mac . html Giai Dap Thac Mac . jsp Thiet Lap Che Do LV . jsp Attach file
OK
Cong Viec
Thong Ke CV.jsp
Xoa
Tong Hop Bao Cao.Jsp Kiem Tra Tien Do.jsp Xem Bao Cao . jsp
Nhan vien
Phan Cong truc tiep tu cac File bao cao cua nhan vien khac.
S a
Thong Ke NV.jsp
Trang 75
n tt nghip
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
Tim CV .jsp
OK
Danh sach cac CV duoc giao
Error
Thong bao loi khong thay.
Add them file cong viec da lam. (trong chuyen nghanh tin hoc)
Add file
Trang 76
n tt nghip Hi
Chng V
Cc phn mm cn thit. y l ng dng c lp nn nn n c th chy trn cc h iu hnh khc nhau nh cc h thng Windows, Unix, . Do chng ta c th ci t h iu hnh thuc mt trong cc h thng trn v cc phn mm sau: Jakarta-Tomcat l mt Servlet/JSP container. Tht ra theo l thuyt, ng dng ny c th chy trn bt k container hay web server no c h tr Servlet/JSP nhng chng ti cha th nghim trn container khc Jakarta-Tomcat 3.1. JDK 1.2 tr ln. MySQL Server 3.23.27 bn beta. Hin nay ra bn 4.0. JDBC Driver loi bn h tr cho MySQL Server: mm.msql-2.0.4. Xalan v Xerces chuyn XML thnh HTML bng cch s dng XSLT. Mt trong cc web browser sau: Netscape, Inernet Explorer, Opera tt c t 4.0 tr ln. ng dng ny th nghim trn cc web browser ny. VietKey hoc bt k b g ting vit no khc.
II.
Trin khai ng dng web. ng dng web (ng dng server-side java) l mt tp cc trang JSPs, Servlets, HTML v cc ti nguyn khc c gi gn trong mt gi duy nht v chy trn nhiu platform t nhiu nh sn xut khc nhau. ng dng Web c xc nh trong mt ng dn t bit web server Mt ng dng web c th gm cc thnh phn sau: JavaServer Pages Servlets Cc lp tin ch Cc ti nh xml, html, Enterprise JavaBean (EJB) i vi cc ng dng x l phn tn. Cc media nh images, sounds, Cc i tng client nh javabeans, applets, cc lp,
Trang
n tt nghip Gvhd: Ts. Nguyn Thc Hi M hnh hot ng ca The Web Work. The Web Work hot ng da trn m hnh ba lp (3 layer). Sau y l m hnh ba lp tng qut ca ng dng Web.
Database Server
Internet/Intranet
Trn nn Java h tr c hai k thut x l Web ng l Servlet v JSP. Do vi tng k thut ti c chi tit hai m hnh (c th nhiu hn) da trn m hnh ba lp tng qut ny v gi l Kin Trc M Hnh Mt v M Hnh Hai. ng dng s dng c hai m hnh web trn nn Java l Kin Trc M Hnh Mt v M Hnh Hai m v ang cn tranh lun trn cc sites ni ting nh javaworld.com, developer.com, weblogic.com. Trong m hnh mt, mt trang JSP m nhn c vic x l yu cu v tr v cc kt qu cho client. y vn c s tch bit gia x l v hin th bi v tt c s truy cp d liu u c Beans thc hin. M hnh ny thch hp cho cc ng dng n gian, thch hp vi cc trang JSP c nhiu m HTML. Xem hnh v sau:
Trang
n tt nghip Hi
JSP
Web Server
Trong m hnh kin trc hai, l s kt hp c hai k thut x l web ng l Servlet v JSP. M hnh ny rt thch vi vi cc ng dng c x l phc tp. y, Servlets hot ng nh mt trm iu khin (controller) chu trch nhim x l cc yu cu v khi to cc components (Beans, Custom Tag) cho JSP s dng. M hnh ny tch phn x l v trnh by r rng nht.
Web Client
Response
Data Source
Web Client
Beans
4
5 Response
JSP (View)
Custom Tag
(Model)
Data Source
Trang
n tt nghip Hi
Nu bn s dng thng xuyn ng dng, bn nn gn gi tr mt nh cho browser vi a ch trn. Khi bn m browser, ng dng t ng c gi m bn khng cn phi g a ch trn address bar. Thc hin cng vic ny trong ba web browser: Internet Explorer, Netscape, Opera nh sau: Internet Explorer: Vo Tools menu, chn Internet Options. Trong hp thoi Internet Options, chn General tab, trong khung Home page c Address textbox cho php bn g a ch trn. Netscape: Vo Edit menu, chn Preferences. Trong hp thoi Preferences, chn navigator trong hp thoi category, hin ra mt trang Navigator, chn Home page button, trong khung Home Page c Location textbox nhp vo a ch trn. Opera: Vo Navigation menu, chn Set home page, hin ra mt input box cho chp bn nhp a ch mi vo.
Trang
n tt nghip Hi
KT LUN
ng dng p ng c yu cu ra trong giai on phn tch thit k h thng. ng dng kt hp c cc cng ngh c lp nn JSP, XML, XSLT, MySQL Server do c th chy trn nhiu nn, nhiu Web Server v nhiu Web Broswer khc nhau. V c s d liu, s thc th kt hp t dng chun ba. ng dng s dng c hai m hnh web l Kin Trc M Hnh Mt v Hai JSP Model 1 and 2 Architecture
Qun l cc hnh nh lin quan v cng vic cho ng dng sinh ng hn. Dng DOM x l XML ngay ti client. Ci t cc rng but ton vn trn database server trong phin bn mi ca h qun tr c s d liu MySQL (phin bn 4.0). Do phin bn hin ti (ang s dng MySQL 3.23.27) khng h tr kho ngoi, check, rule v trigger.
Trang
n tt nghip
http://www.allaire.com/products/jrun/ http://newatlanta.com/
Trang
n tt nghip
BNG THUT NG
action Mt element trong trang JSP c th tc ng ln nhng i tng ngm nh v i tng server-side khc hoc c th nh ngha bin kch bn mi (xem element). custom action Mt action c nh ngha linh hot bi b m t th vin tag v tp cc lp java v c a vo trang JSP bng taglib directive. declaration Mt scripting element m khai bo cc method, bin, hoc c hai trong trang JSP. C c php <%! javacode %> (xem scripting element). directive Mt element trong trang JSP c nhim v hng dn JSP container v c thng dch vo thi gian runtime. C c php <%@ %> (xem JSP container v scripting element). element Trnh thng dch JSP cng nhn element nh l mt thnh phn trong trang JSP. Mt element c th l directive, action, scripting element. Element bt u vi start tag, ni dung v end tag, nu khng c ni dung th n dng c php empty tag. expression Mt scripting element cha biu thc ca ngn ng java v c t vo i tng ngm nh out. C c php <%= java expression %> implicit object Mt i tng server-side c nh ngha bi JSP container v lun c sn trong trang JSP m khng cn khai bo. C cc i tng nh request, response, pageContext, session, application, out, config, page, exception. JSP container Mt thc th cp h thng cung cp s hot ng, qun l chu trnh sng cho cc thnh phn (conponent) JSP v Servlet. JSP page implementation class Mt lp ca ngn ng lp trnh java, c th l mt Servlet, c trnh by vo thi gian runtime ca mt trang v nhn i tng request ri tr v mt i tng response. Lp ci t trang c th dng cc dch v ca JSP container, gm c Servlet API v JSP API. persistent Mt i tng c serialization vo a v cc thit b lu tr khc. Persistent c cc dng nh files, RDBMS (Relational database management systems), ODBMS (Object database management systems). Svth: inh L Giang 84 Trang
n tt nghip
reflection L c ch cho php m Java tm ra cc thng tin v cc trng, phng thc v hm to ca cc lp c ti. scripting element L declaration, scriptlet hay expression, t t JSP nh ngha cc th ny theo c php tag. Ton b ni dung ng cnh c vit theo ngn ng java. scriptlet Mt scripting element cha bt k on m ca ngn ng kch bn no trong trang JSP. JSP v1.2 l phin bn mi nht ch h tr ngn ng java trong cc trang JSP. C c php <% javacode %>. Tuy nhin c mt s JSP container h tr ngn ng javascript nh RESIN. serialization L mt tin trnh lu tr ton b mt i tng vo a hoc cc thit b lu tr khc. Ngc li, mt tin trnh phc hi i tng th gi l deserialization. servlet Mt k thut server-side c vit bng Java, JSP pht trin da trn nn tng ca servlet. tag Gm on vn bn nm gia cp du <>, c tn, thuc tnh. C ba loi tag: start tag, end tag, v empty tag. V d: <book> <!-- start tag --> content </book> <!-- end tag --> <book name= Core Servlet & JSP/> <!-- empty tag --> tag handler Mt lp java c ci t cc giao tip Tag hoc TagBody m c trnh by vo lc thi gian runtime i vi mt custom action. tag library Mt tp cc custom action c m t trong b m t th vin tag (tag library descriptor) v cc lp java. tag library descriptor Mt ti liu XML m t th vin tag. transient Svth: inh L Giang 85 Trang
n tt nghip
Ngc li vi persistent, hu ht cc i tng trong b nh c gi l transient, c ngha l chng s cht i khi cc tham chiu ca chng ra khi phm vi hoc tc ngun in.
Trang
Gvhd:
Nguyn Phng Lan 2001 Hong c Hong Nguyn Tin Nguyn Vn Tm Nguyn Vn Hoi 2001
Trang