You are on page 1of 84

n tt nghip

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.

Svth: inh L Giang

Trang 1

n tt nghip

I. Mt s so snh cc cng ngh c s dng vi cng ngh khc?


1. MySQL Server. MySQL l h qun tr c s d liu quan h. C s d liu l mt tp d liu c cu trc v c lu tr trong cc bng ring bit, mi bng c lu trong ba files vi tn c s d liu l tn th mc cha cc files . SQL c vit tt t Structured Query Language, l ngn ng chun ph bin nht truy cp c s d liu. Sau y l mt s u v nhc im ca MySQL vi cc h qun tr c s d liu khc: a) u dim. Chy c trn rt nhiu nn khc nhau nh Unix, Windows, MacOS, . MySQL l h qun tr nhanh, nh gn. Cc script files c th chy trn mt s h qun tr khc nh MS SQL Server, Oracle. Theo mt s web site thng k, vic thc hin cc lnh insert, update, delete nhanh nht trong cc h qun tr. Min ph v m ngun m (open source code). Khuyt im. Cha h tr mt s chun ANSI SQL92 nh khng cho cc cu select lng nhau, select into table, kho ngoi, triggers, stored procedures, Khng c mi trng ho.

b)

a) ASP. JSP vi ASP.

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.

II. JSP scripting elements.


Cc scripting elements trong JSP cho php chng ta chn m vo servlet m s c pht sinh t trang JSP. C ba dng sau: - Biu thc c dng <%= expressions %>, c nh gi tr v chn vo lung xut ca servlet. - Scriptlet c dng <% code %>, c chn vo phng thc _jspService ca servlet (c gi l service). - Khai bo c dng <%! code %>, c chn vo thn ca lp servlet, nh l cc field ca lp thng thng. Template text Trong nhiu trng hp, phn ln cc trang JSP ch bao gm HTML tnh, c bit nh l template text. C hai ngoi l ph cho quy tc template text c chuyn thng sang HTML tnh. u tin, nu chng ta mun c <% trong
Svth: inh L Giang Trang 4

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

<% Scriptlets %>

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

<%! Declarations %>

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

Svth: inh L Giang

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

n tt nghip <meta name="description" content=


Code 1: expression.jsp (tip theo)

"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

n tt nghip </body> </html>

III. JSP directives.


Directives l cc lnh (ch th) n JSP container x l trang JSP, chng tc ng ln ton b cu trc ca lp servlet. Chng c dng sau: <%@ directive {attr=value} %> C php ny th d son tho, ngn gn, sc tch nhng khng tng thch vi XML (C php XML di). Directives th khng xut bt k th g ra lung xut out. Ch c ba directives trong JSP: page, include v taglib. C php XML Tng t nh scripting elements, cc directives cng c hai dng c php:
JSP Syntax XML Syntax

<%@ 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 &copy; 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>

Svth: inh L Giang 14

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>

trong JSP s dng nh sau:


<jsp:plugin type=applet code=MyApplet.class width=457 height=350 > <jsp:params> <jsp:param name=PARAM1 value=VALUE1 /> <jsp:param name=PARAM2 value=VALUE2 /> </jsp:params> </jsp:plugin>

c) jsp:fallback action.

Svth: inh L Giang 18

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.

Svth: inh L Giang 20

Trang

n tt nghip Hi

Gvhd: Ts.Nguyn Thc

Chng II :
1. Khi nim.

JSP JAVABEANS

I. Khi nim v cc quy c ca Bean.


M hnh thnh phn (component) trong JSP c tp trung vo cc component phn mm ca Java c gi l Bean. nh ngha chnh thc ca JavaSoft v Bean: JavaBean l mt component phn mm c th dng li c, c th c thc hin trc quan bng mi trng pht trin tch hp IDE (Integrated Development Environment). JavaBean API: tun theo cc quy c c xc nh bi JavaBean API, cho php JSP container tng tc vi Beans mc lp trnh mc d JSP container thc s chng hiu Bean thc hin nhng g v hot ng ra sao. i vi JSP, chng ta ch quan tn n cc kha cnh API ri ra cc du hiu cho nhng hm to ca Bean v cc phng thc truy cp thuc tnh x l. Ging nh bt k lp Java no, cc th hin ca Bean n thun ch l cc i tng Java. Chng ta thng c s la chn hoc l tham chiu ti Beans v cc phng thc ca chng trc tip qua m Java trong cc lp khc hoc l thng qua cc scripting element trong trang JSP. V cc scripting element cng theo cc quy c ca Bean nn chng ta c th lm vic vi Beans m khng cn phi vit mt on m Java no. Bean container nh JSP container, c th cung cp s truy cp d dng vo Beans v cc thuc tnh ca chng. 2. Cc quy c ca Bean. Khi nh ngha Bean chng ta phi tun theo cc quy tc sau: Tn lp ca Bean phi c tip v ng l Bean chng hn UserBean, DataAccessBean, ...Tht s th quy tc ny khng l yu cu bt buc nhng n l mt nh hng thng dng v cho php nhng nh pht trin khc hiu ngay lp tc vai tr ca lp ny. Mt Bean phi c mt hm to khng c tham s. Bean khng nn c bt k bin th hin (field) no l public. ho. Cc gi tr bn vng nn c truy cp thng qua cc phng thc gi l getXxx v setXxx. i vi cc server-side Bean khng nn dng th vin

II.JSP s dng Beans.


1. Cc JSP element dng cho Bean. a)jsp:useBean element a)

Svth: inh L Giang

Trang 21

n tt nghip Hi

Gvhd: Ts.Nguyn Thc

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

Gvhd: Ts.Nguyn Thc

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

Conversion from String java.lang.Boolean.valueOf(string) java.lang.Byte.valueOf(string) java.lang.Character.valueOf(string)


Trang 23

n tt nghip Hi

Gvhd: Ts.Nguyn Thc

double or Double int or Integer float or Float long or Long 3. a)Introspector l g?

java.lang.Double.valueOf(string) java.lang.Integer.valueOf(string) java.lang.Float.valueOf(string) java.lang.Long.valueOf(string)

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.

Svth: inh L Giang

Trang 24

n tt nghip Hi

Gvhd: Ts.Nguyn Thc

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

Gvhd: Ts.Nguyn Thc

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

Thuc tnh mang gi tr boolean.


Code 17: Java file

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>

Thuc tnh mang gi tr mng.

Svth: inh L Giang

Trang 26

n tt nghip Hi

Gvhd: Ts.Nguyn Thc

V d ny s xy dng mt component m c th thc hin cc tnh ton tnh trn mt dy s.


Code 19: Java file

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; } }

Svth: inh L Giang

Trang 27

n tt nghip Hi
Code 20: JSP file

Gvhd: Ts.Nguyn Thc

<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.

III. Cc giao tip b tr cho Bean.


Trong khi iu ny khng phi l yu cu c bit th c mt s giao tip cho php chng ta ci t vo Beans. Cc giao tip ny c th c dng m rng tnh nng cc Bean ca chng ta i vi cc tnh hung khc nhau. 1. Giao tip BeanInfo Chng ta bit v c ch tng phn (reflection) trong mc trc, nhng c phng php khc m mt lp Bean c th bo cho Bean container (nh JSP container) bit v cc thuc tnh ca n bng cch ci t giao tip BeanInfo. Giao tip BeanInfo cho php chng ta to ra mt lp ng hnh vi Bean ca chng ta m nh ngha cc thuc tnh v cc cp truy cp ca n. Giao tip c th c dng thch ng vi cc lp Java c i vi vic s dng ca Bean m khng cn thay i giao tip to. N cng c s dng che du cc thuc tnh no c truy cp thng xuyn t client, v thnh thong c ch reflection chun ca Java c th phi by nhiu thng tin m chng ta li khng mun nh th.

Svth: inh L Giang

Trang 28

n tt nghip Hi

Gvhd: Ts.Nguyn Thc

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

Svth: inh L Giang

Trang 29

n tt nghip Hi

Gvhd: Ts.Nguyn Thc

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.

Svth: inh L Giang

Trang 30

n tt nghip

Gvhd: Ts. Nguyn Thc Hi

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.

Svth: inh L Giang

Trang 33

n tt nghip

Gvhd: Ts. Nguyn Thc Hi

II. Cch dng cc tags trong JSP.


Phn ny trnh by cch thc m tc gi ca trang web s dng tag library trong JSP v gii thiu cc loi tag khc nhau. Cc v d trong phn ny s c nh ngha trong phn III. 1. Khai bo cc tag library. Trang JSP s s dng cc tag c nh ngha trong mt tag library bng cch a vo taglib directive trong trang trc bt k custom tag c s dng: <%@ taglib uri = /tlt prefix = tlt %> Thuc tnh uri tham chiu ti URI l nh danh duy nht cho tag library. URI c th l URI tng i hay tuyt i. Nu URI tng i th n phi c nh x n mt URI tuyt i trong taglib element ca b m t trin khai ng dng Web, tp tin cu hnh ny cng vi ng dng Web c pht trin theo bn t t Java Servlet v JavaServer Pages. Thuc tnh prefix nh ngha mt tip u ng phn bit vi cc tag library khc, do thuc tnh ny gii quyt c vn xung t v cc tn tag. 2. Cc loi tag. Nhng custom action c din t bng c php XML. Chng c start tag, ni dung v end tag: <tlt:tag> body </tlt:tag> Mt tag m khng c ni dung c biu din nh sau: <tlt:tag /> a) Cc tag n gin. Mt tag n gin sau triu gi mt action v xut ra li cho Hello World.. <tlt:helloWorld /> b) Cc tag c thuc tnh. Mt start tag ca custom action c th cha cc thuc tnh di dng attr = value. Cc thuc tnh ny tu bin cc tham s dng trong cc phng thc ca mt lp java. Cc thuc tnh c th c gn mt hay nhiu tham s trong mt i tng request hoc t mt hng chui. Ch c cc kiu thuc tnh trong bng sau mi c th c gn t cc gi tr tham s ca request v ca cc hng chui Kiu thuc tnh boolean or Boolean byte or Byte
Svth: inh L Giang

Phng thc valueOf chuyn chui java.lang.Boolean.valueOf(String) java.lang.Byte.valueOf(String)


Trang 34

n tt nghip

Gvhd: Ts. Nguyn Thc Hi

char or Character double or Double int or Integer float or Float long or Long

java.lang.Character.valueOf(String) java.lang.Double.valueOf(String) java.lang.Integer.valueOf(String) java.lang.Float.valueOf(String) java.lang.Long.valueOf(String)

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>

III. nh ngha cc tag.


s dng cc custom tag trong trang JSP, chng ta cn phi nh ngha ba thnh phn ring bit: Pht trin tag handler v cc lp tr gip cho tag.

Svth: inh L Giang

Trang 35

n tt nghip

Gvhd: Ts. Nguyn Thc Hi

- 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.

Loi tag handler Simple Attributes Body, No Interaction Body, Interaction

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

Gvhd: Ts. Nguyn Thc Hi

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

<?xml version="1.0" encoding="ISO-8859-1" ?> <!DOCTYPE taglib


PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library1.1//EN"

"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

Gvhd: Ts. Nguyn Thc Hi

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

<?xml version="1.0" encoding="ISO-8859-1" ?> <!DOCTYPE taglib


PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN"

"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

Gvhd: Ts. Nguyn Thc Hi

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

n tt nghip } return SKIP_BODY; } public int doEndTag() { return EVAL_PAGE; } }

Gvhd: Ts. Nguyn Thc Hi


Code 25: HelloWorldTag.java (sa li trong Code 22) (tip theo)

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>

d) Cc tag nh ngha cc bin kch bn. Svth: inh L Giang

Tag handler
Trang 42

n tt nghip

Gvhd: Ts. Nguyn Thc Hi

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

Svth: inh L Giang

n tt nghip
doStartTag AT_END

Gvhd: Ts. Nguyn Thc Hi

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

n tt nghip true, VariableInfo.AT_END); VariableInfo[] info = { info1 } ; return info; } }

Gvhd: Ts. Nguyn Thc Hi

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:

Code 32: TLD file

... <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() %>

Svth: inh L Giang

Trang 45

n tt nghip

Gvhd: Ts. Nguyn Thc Hi

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.

Code 34: Cch thc hin tag handler khng c BodyContent

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();

Gvhd: Ts. Nguyn Thc Hi

Svth: inh L Giang

Trang 47

n tt nghip

Gvhd: Ts. Nguyn Thc Hi

Phn II:
Chng IV:
I. Phn Tch.
1.

Phn Tch Thit K Ci t


PHN TCH THIT K

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

Gvhd: Ts. Nguyn Thc Hi

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.

Svth: inh L Giang

Trang 49

n tt nghip

Gvhd: Ts. Nguyn Thc Hi

b)

S phn r chc nng.

Svth: inh L Giang

Trang 50

n tt nghip

Gvhd: Ts. Nguyn Thc Hi

c) Svth: inh L Giang

S h thng. Mc 1:
Trang 51

n tt nghip

Gvhd: Ts. Nguyn Thc Hi

Mc 2: Phn r t x l 4_Phan Cong.

Svth: inh L Giang

Trang 52

n tt nghip

Gvhd: Ts. Nguyn Thc Hi

Phn r t x l 5_Cap Nhat CV.

Svth: inh L Giang

Trang 53

n tt nghip

Gvhd: Ts. Nguyn Thc Hi

Phn r t x l 6_Thong Ke.

Phn r t x l 9_Tong Hop Bao Cao.

Svth: inh L Giang

Trang 54

n tt nghip

Gvhd: Ts. Nguyn Thc Hi

Phn r t x l 13_Bao Cao Tien Do CV.

Phn r t x l 16_ Cap Nhat Permission.

Svth: inh L Giang

Trang 55

n tt nghip

Gvhd: Ts. Nguyn Thc Hi

Phn r t x l 19_ Cap Nhat User.

Phn r t x l 20_Gan Quyen.

5. M hnh d liu quan nim. S thc th kt hp (ERD):


Svth: inh L Giang Trang 56

n tt nghip

Gvhd: Ts. Nguyn Thc Hi

Svth: inh L Giang

Trang 57

n tt nghip

Gvhd: Ts. Nguyn Thc Hi

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

Svth: inh L Giang

n tt nghip

Gvhd: Ts. Nguyn Thc Hi

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)

Mt s gii thut c th hin bng lu . Thm cng vic.

Svth: inh L Giang

Trang 59

n tt nghip

Gvhd: Ts. Nguyn Thc Hi

The Cog Vie m n c


Kha i u

Nha taca lie ve p t d u cog vie n c

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

Thog ba n o cog vie a n c to ta n i

Tie tu ? p c khog n Cha d m t

Svth: inh L Giang

Phn cng cng vic.


Trang 60

n tt nghip

Gvhd: Ts. Nguyn Thc Hi

Pha Cog Cog Vie n n n c


Kha i u

- 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

Tie tu ? p c khog n Cha d m t

Svth: inh L Giang

Thng k cng vic.


Trang 61

n tt nghip

Gvhd: Ts. Nguyn Thc Hi

Thog Ke ng Vie n Co c
Kha i u

Cho motrong ba n t tie chua a u n cho

khog n Ca chua a n? c n cho co Truy va theo ca chua n c n Thog ba n o khog co n

Hie thbag n n thog ke n

Tie tu ? p c co khog n Cha d m t

Svth: inh L Giang

Lm ti c s d liu.
Trang 62

n tt nghip

Gvhd: Ts. Nguyn Thc Hi

Lam Ti CSDL
Khi au

- Nhap ten csdl mi - Nhap ngay thang nam

CSDL mi ton tai ? khong

co

- Tao CSDL mi (Backup) Thong bao - Xoa cac mau tin trong cac bang CSDL a co phat sinh

Thong bao a lam ti CSDL

Tiep tuc ? co khong Cham dt

Svth: inh L Giang

Trang 63

n tt nghip

Gvhd: Ts. Nguyn Thc Hi

7. Thit k c s d liu d) M hnh d liu vt l. S thc th kt hp (ERD):

e)
Svth: inh L Giang

Bng m t chi tit.


Trang 64

n tt nghip

Gvhd: Ts. Nguyn Thc Hi

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

Rng buc Kho Chnh (PK) Kho Ngoi (FK)

GOPY

MAGY MANV NOI DUNG NGAY

Text Text Text Date time Int Text Text Long Text

FILES

MAFILE MABC TENFILE FILESIZE CONTEN TTYPE

>= ngy ngy hin hin ti ti >=1 10 30

Kho Chnh (PK) Kho Ngoi (FK)

30

BAO CAO TONG HOP

MABCTH

Text

10

Kho Chnh (PK) >=1 Kho Ngoi (FK)

MACV

Int

Svth: inh L Giang

Trang 65

n tt nghip

Gvhd: Ts. Nguyn Thc Hi

TON DONG

NGAY CV TUONG LAI

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

>= ngy ngy hin hin ti ti

DANH GIA

DEXUAT MADG PHAN HOI MAXL

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

MANV MA GROUP TENNV NGAY SINH DIACHI PHAI

PHONE

in Thoi

Text

Svth: inh L Giang

Trang 66

n tt nghip

Gvhd: Ts. Nguyn Thc Hi

USER NAME PASS WORD MABCN MACV TIENDO NGAY GHICHU DEXUAT WORKS MACV MADA MADG TENCV NOI DUNG DAXONG DEAN MADA TENDA DIA DIEM

BAO CAO NGAY

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)

Kho Chnh (PK)

Svth: inh L Giang

Trang 67

n tt nghip

Gvhd: Ts. Nguyn Thc Hi

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

Kho Chnh (PK)

PHAN CONG

GHICHU MANV MACV NGAYBD

>=1 Ngy hin ti 0 > Ngy hin ti >=1

Kho Ngoi (FK) Kho Ngoi (FK)

THIET LAP NGAYKT

GROUPS MA GROUP TEN GROUP TRG GROUP NGAYNC GROUPS MAPER _PER MA GROUP PERMI SIONS MAPER TENPER GHICHU
Svth: inh L Giang

Kho Chnh (PK)

>=1 >=1 >=1

Kho Chnh (PK) Kho Chnh (PK) Kho Chnh (PK)

Tn Text Quyn Ghi Ch Text

Trang 68

n tt nghip

Gvhd: Ts. Nguyn Thc Hi

f)

Cc rng buc ton vn .


(RB1) MAGY l kho chnh ca GOPY. (RB2) MAFILE l kho chnh ca FILES. (RB3) MABCTH l kho chnh ca BAOCAOTONGHOP. (RB4) MADG l kho chnh ca DANHGIA. (RB5) MANV l kho chnh ca NHANVIEN. (RB6) MABCN l kho chnh ca BAOCAONGAY. (RB7) MACV l kho chnh ca WORKS. (RB8) MADA l kho chnh ca DEAN. (RB9) MAXL l kho chnh ca XEPLOAI. (RB10) MANV&MACV l kho chnh ca PHANCONG. (RB11) MAPER l kho chnh ca PERMISSION. (RB12) MAGROUP l kho chnh ca GROUPS. (RB13) MAPER & MAGROUP l kho chnh ca GROUP_PER. (RB14) MANV l kho ngoi ca GOPY tham chiu t NHANVIEN.

(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.

Svth: inh L Giang

Trang 69

n tt nghip

Gvhd: Ts. Nguyn Thc Hi

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

Svth: inh L Giang

Trang 70

n tt nghip
RB22 RB23 RB24 RB25 RB26 RB27

Gvhd: Ts. Nguyn Thc Hi

X X

X X X

Svth: inh L Giang

Trang 71

n tt nghip

Gvhd: Ts. Nguyn Thc Hi

8.

Thit k chng trnh. S cu trc chng trnh.

S o Cau Truc Chng Trnh


Quan Ly Cong Viec

He Thong

Quan Ly

Nhan Vien

Tr Giup

CN nhom

anh gia CV

Xem bao cao

CN nhan vien

Thong ke CV

e xuay y kien

Lam ti CSDL

CN cong viec

Bao cao tien o

Phuc hoi CSDL

Kiem tra tien o

Xem anh gia cua quan ly

Xem thong tin NV

Thiet lap che o lam viec

9.

Thit k giao din. Cc Site map (thay th cho s dch chuyn trng thi).
Trang 72

Svth: inh L Giang

n tt nghip

Gvhd: Ts. Nguyn Thc Hi

WEBSITE Qua Ly ng Vie n Co c

Website QLCV

Login.htm ang nha he p thog n


Error

MainPage.htm Trang chu

About.htm Trang githie i u

Login

Kiem Tra Username & PassWord . jsp

Member Components Nodung ca trang i c thah pha n n

Svth: inh L Giang

Trang 73

n tt nghip
Member components Admin component

Gvhd: Ts. Nguyn Thc Hi

Com on t cu Ad in p en a m (Qua TrHe og n Th n )

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

The m

The m Co

Th m e Kiem tra User thuoc Group nao chua ? K Them User vao Group . jsp Co

The m Co Kiem tra Group da co chua ? K Them Group . jsp

Them permision . jsp

Kiem tra User da co ? K

Lam tuoi CSDL va Sao luu CSDL

OK

Them User . jsp

OK
Xoa Xoa Xoa permision. jsp

OK
Xoa

OK OK
Xoa

Xoa User . jsp OK OK


Sua

Xoa User khoi Group . jsp

Xoa group . jsp

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 permision. jsp

Sua User . jsp

Yeu cau chon User can sua

Sua

Sua

Chon Group de sua.


Sua User trong Group . jsp Sua Group . jsp

OK

OK

Yeu cau kiem tra thong tin lien quan khi sua. - Quyen han o Group cu . - User dang thuoc Group nao, .. . .

OK

OK

Svth: inh L Giang

Trang 74

n tt nghip

Gvhd: Ts. Nguyn Thc Hi

Com on p ents cu Manag (Qua Ly a er n )


Member Components Manager component

Trang Thong Ke . html

Trang TONG HOP User & Cac Bao Cao . html

Trang Danh Sach Cac Thac Mac . html Giai Dap Thac Mac . jsp Thiet Lap Che Do LV . jsp Attach file

Trang Thong Tin Ve Cac Cong Viec .jsp The m

OK

Doi Password . jsp

Cong Viec

Danh gia CV.jsp

Cong Viec . jsp

Phan Cong CV . jsp

Them cong viec .jsp

Thong Ke CV.jsp

Attach file Bang Thong Ke Cac CV

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.

Thiet lap che do lam viec tu de xuat cua nhan vien

Xoa cong viec .jsp

S a

Nhan Vien .jsp

Sua cong viec .jsp

Thong Ke NV.jsp

Bang Thong Ke Cac Nhan Vien

Svth: inh L Giang

Trang 75

n tt nghip

Gvhd: Ts. Nguyn Thc Hi

Com onent cu Em loyee(Nha Vie) p a p n n


Member component Employee component

Trang Gop y & Thac Mac html

De xuat cach giai quyet . html

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

Doi Password .jsp

Thac mac & gop y

Subm it OK Bao da goi thanh cong Error

Goi thong tin tren cho Quan ly

De xuat cach giai quyet bang van ban

De xuat cach giai quyet

Tim CV .jsp

Subm it Goi thong tin tren cho Quan ly

OK
Danh sach cac CV duoc giao

Error
Thong bao loi khong thay.

Bao goi khong thanh cong

Add them file cong viec da lam. (trong chuyen nghanh tin hoc)

Add file

Svth: inh L Giang

Trang 76

n tt nghip Hi

Gvhd: Ts. Nguyn Thc

Chng V

TRIN KHAI NG DNG

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,

Svth: inh L Giang 78

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.

Mo Hnh ng Dung Web 3 Lp Tong Quat


User Service Interface (Web Page) Business Service Data Service

Data Web Client Web Server

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:

Svth: inh L Giang 79

Trang

n tt nghip Hi

Gvhd: Ts. Nguyn Thc

JSP Model 1 Architecture


Kientruc m n m o h h ot
1 Request
4

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.

Svth: inh L Giang 80

Web Client

Response

Beans Custom Tag

JSP Model 2 Architecture


Kie tru mo n c hnh hai
Web Server 1 Request Servlet (Controller)
2 Kh i ta o

Data Source

Web Client

Beans
4

5 Response

JSP (View)

Custom Tag
(Model)

Data Source

Trang

n tt nghip Hi

Gvhd: Ts. Nguyn Thc

III. Hng dn s dng.


Sau khi ci t ng dng, bn m browser, trong address bar g a ch: htttp://servername:port/work/html/showLogin.html . servername: tn server ca bn, trn my cc b thng l localhost. port: s cng m web server ang m. Nu s port l 80 th thng s port khng cn nhp.

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.

Svth: inh L Giang 81

Trang

n tt nghip Hi

Gvhd: Ts. Nguyn Thc

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

HNG PHT TRIN


Cc hng pht trin sau s lm cho ng dng hon thin hn. M rng ng dng vi quy m ln hn, c kh nng trao i d liu v x l vi ng dng khc. client. Pht trin ng dng download cc files bo co v

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.

Svth: inh L Giang 82

Trang

n tt nghip

Gvhd: Ts. Nguyn Thc Hi

DANH SCH WEB SERVERS H TR JSP


chy c JSP chng ta cn mt trong cc Web Server sau. Hy xem cc hng dn ci t, ni t cc JSP files, thc thi c trong Web Servers u c y trong tng Web Server khi chng ta download v. Tn Web Servers Jakarta Tomcat JavaServer Web Developmet Kit (JSWDK) JRun ServletExec Lite WebServer Java Web Server WebSphere Resin Thuc T Chc / Cng Ty Apache Org. Sun Micro system Allaire Inc. New Atlanta

Trang Web http://jakarta.apache.org/ http://java.sun.com/products/servlet/download.html

http://www.allaire.com/products/jrun/ http://newatlanta.com/

Gefion http://www.gefionsoftware.com/ Software Sun Micro system http://www.sun.com/software/jwebserver/try/

IBM Corp. http://www.ibm.com/ Caucho http://www.caucho.com/ Technolog y

Svth: inh L Giang 83

Trang

n tt nghip

Gvhd: Ts.Nguyn Thc Hi

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

Gvhd: Ts.Nguyn Thc Hi

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

Gvhd: Ts.Nguyn Thc Hi

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.

Svth: inh L Giang 86

Trang

o an tot nghiep Ts.Nguyen Thuc Hai

Gvhd:

TI LIU THAM KHO


Tn Ti Liu Ach1 Servlets and JSP JSP JavaBeans Framework Tag Libraries Tutorial (v 1.0) Xalan 2.0 & Xerces 1.3 (API) XML and Java XML Professional Lun vn tt nghip Web Books Gio trnh l thuyt v bi tp Java Nguyn Tin Dng (Ch Bin) Lp trnh ng dng Web vi JSP/ Servlet Java Lp Trnh C S D Liu 1999 Tc Gi Marty Hall By IBM Sun Microsystem By apache.org Hiroshi Maruyama Didier Martin Cc kha trc CD Rom Sch Sch Sch Nm Loi Ti Liu 2000 2000 2000 2001 1999 2000 Sch Web site Web site Web site Sch Sch

Nguyn Phng Lan 2001 Hong c Hong Nguyn Tin Nguyn Vn Tm Nguyn Vn Hoi 2001

Svth: inh L Giang 87

Trang

You might also like