You are on page 1of 50

Tm hiu Java Struts

Gii thiu chung D n Struts


Struts, mt d n m ngun m ca Apache Software Foundation, l mt bn hin thc Java pha server ca mu thit k Model-View-Controller (MVC). D n Struts c khi xng bi Craig McClanahan vo thng 5/2000, thuc d n Apache Jakarta. Hin ti, d n Struts tr thnh mt d n c lpd n Apache Struts. D n Struts c thit k vi mc ch cung cp mt b khung m ngun m to cc ng dng Web, tch tng trnh by (presentation layer) ra khi tng giao tc (transaction layer) v tng d liu (data layer). T khi ra i, d n Struts nhn c nhiu ng h ca cc nh pht trin v nhanh chng chim u th trong cng ng m ngun m. Quyn sch ny cp phin bn 1.1 ca Struts. Mt cuc tranh lun nh din ra trong cng ng nhng nh pht trin v mu thit k m d n Struts ging nht. Theo ti liu c cung cp t chnh nhng nh pht trin d n Struts, n c thit k theo mu MVC; nhng mt s khc th cho rng n ging mu thit k Front Controller hn (mu ny c m t bi Sun's J2EE Blueprints Program). S tht th n rt ging mu Front Controller; nhng trong quyn sch ny, chng ta tho lun theo mu MVC. Nu mun tm hiu v mu Front Controller, bn c th xem ti: http://developer.java.sun.com/developer ... EE/despat/

Mu thit k MVC
nm vng Struts Framework, bn phi hiu c bn v mu thit k MVC. Mu thit k MVC, c bt ngun t Smalltalk, bao gm ba thnh phn: Model, View, v Controller. Ba thnh phn ca mu thit k MVC Model Biu din cc i tng d liu. Thnh phn Model l nhng g ang c thao tc v trnh by cho ngi dng. View ng vai tr l phn biu din trn mn hnh (screen representation) ca thnh phn Model. Thnh phn View l i tng trnh by trng thi hin ti ca cc i tng d liu. Controller nh ngha cch thc giao din ngi dng tng tc li d liu u vo. Thnh phn Controller l i tng thao tc thnh phn Model (hay i tng d liu). Di y l mt s li ch khi s dng mu thit k MVC: Tnh tin cyTng trnh by v tng giao tc c s phn chia r rng, cho php bn thay i

cm quan ca ng dng m khng cn bin dch li m lnh ca Model hay Controller. Tnh thch ng v ti s dng caoMu MVC cho php bn s dng nhiu loi khung nhn, tt c cng truy xut n mt m ngun pha server, t trnh duyt web (HTTP) cho n trnh duyt khng dy (WAP). Cc ph tn trong vng i pht trin rt thpMu MVC ch cn c ngi lp trnh cp thp pht trin v bo tr cc giao din ngi dng. Trin khai nhanh chngThi gian pht trin c th c gim ng k, bi v nhng ngi lp trnh cho thnh phn Controller (nh pht trin Java) ch tp trung vo phn giao tc, cn nhng ngi lp trnh cho thnh phn View (nh pht trin HTML v JSP) ch tp trung vo phn trnh by. Tnh bo trVic tch phn trnh by v logic nghip v cng khin vic bo tr v sa i mt ng dng Web da trn Struts d dng hn.

Bn hin thc Struts ca mu MVC


Struts Framework m hnh ha bn hin thc pha server ca mu MVC bng cch kt hp cc trang JSP, cc th JSP ty bin, v mt Java servlet. Trong phn ny, chng ta m t ngn gn cch Struts Framework nh x n mi thnh phn ca mu MVC.

Bn hin thc Struts ca mu MVC Hnh trn m t quy trnh x l m hu ht cc yu cu ng dng Struts cn tun theo. Quy trnh ny c th c chia thnh 5 bc c bn: 1. Mt yu cu xut pht t mt View c hin th trc . 2. Yu cu ny c tip nhn bi ActionServlet (ng vai tr l mt Controller), ActionServlet tm URI c yu cu trong mt file XML (s c m t trong chng 3, Lm quen vi Struts) v xc nh tn lp Action s thc hin logic nghip v cn thit.

3. Lp Action thc hin logic ca n trn cc thnh phn Model ca ng dng. 4. Khi hon tt qu trnh x l, lp Action tr quyn iu khin cho ActionServlet, ng thi cung cp mt kha (key) biu th cc kt qu x l. ActionServlet s dng kha ny xc nh cc kt qu s c chuyn n u khi trnh by. 5. Yu cu kt thc khi ActionServlet chuyn yu cu n View c gn vi kha tr v, v View ny trnh by cc kt qu ca Action. Bn c th nhn ra nhng bc trn l mt dng biu din c n gin ha ca mt yu cu Struts. Chng ta s cp chi tit hn v nhng bc ny, bao gm cc thnh phn khc, trong phn tip theo. Thnh phn Model Cc thnh phn Model ca Struts Framework, nh c gii thiu phn trc, biu din cc i tng d liu ca ng dng Struts. Chng thng biu din cc i tng nghip v hay cc h thng backend khc v c th c hin thc l nhng JavaBean n gin, nhng Enterprise JavaBean, nhng biu din i tng ca d liu c lu tr trong mt c s d liu quan h, hoc ch l nhng g cn c thao tc hay biu din trong mt ng dng Web. Chng ta s tho lun chi tit hn v thnh phn Model trong phn sau, Tch hp Jakarta Commons Database Connection Pool. Thnh phn View Mi thnh phn View trong Struts Framework c nh x n mt trang JSP, trang ny c th cha bt k s kt hp no ca cc th ty bin Struts, JSP, v HTML. Cc trang JSP trong Struts Framework c hai chc nng chnh. Th nht, ng vai tr l tng trnh by ca mt Controller Action c thc thi trc . iu ny thng c hon thnh bng cch s dng mt tp th ty bin duyt v thu ly d liu m Controller Action chuyn n JSP ch. Loi View ny khng th hin c trng ca Struts v khng c lu tm. Chc nng th hai, th hin c trng ca Struts, l thu thp d liu cn thit thc hin mt Controller Action c th. iu ny thng c hon thnh bng cch kt hp cc th vin th Struts v cc i tng ActionForm. Loi View ny cha mt s lp v th c-trng-Struts. on m sau l mt v d n gin v loi View ny: Code: Chn ht
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html"> <html:form action="loginAction.do" name="loginForm" type="com.stock.loginForm" > User Id: <html:text property="username"><br/> Password: <html:password property="password"><br/> <html:submit /> </html:form>

Chng ta s tho lun chi tit hn v thnh phn View trong phn sau, Lm quen vi Struts, v Xy dng tng trnh by. Thnh phn Controller Thnh phn Controller ca Struts Framework l xng sng ca tt c cc ng dng Web Struts. N c hin thc bng mt servlet c tn l org.apache.struts.action.ActionServlet. Servlet ny nhn cc yu cu HTTP v giao quyn iu khin ca mi yu cu, da vo URI ca yu cu, cho mt lp org.apache.struts.action.Action do ngi dng nh ngha. Lp Action l ni m thnh phn Model ca ng dng c thu ly v/hay thay i. Khi lp Action hon tt qu trnh x l, n tr v mt kha cho ActionServlet. Kha ny c s dng xc nh View no s trnh by cc kt qu x l. Bn c th hnh dung ActionServlet nh mt i l nhn cc yu cu cho cc dch v, v da trn cc yu cu ny, to ra cc i tng Action nhm thc hin logic nghip v cn thit hon tt cc dch v ny. Controller l thnh phn quan trng nht ca Struts Framework. Chng ta s tho lun chi tit hn v thnh phn ny trong phn sau, Lm quen vi Struts, v Action v ActionServlet.

ng dng Web
Tt c cc ng dng Struts c ng gi theo nh dng ng dng Web Java. V th, trc khi tip tc, chng ta kho st s lc cc ng dng Web Java. Java Servlet Specification 2.2 m t cc ng dng Web Java nh sau: Mt ng dng Web l tp hp cc servlet, cc trang HTML, cc lp, v cc ti nguyn khc, chng c ng gi v chy trn nhiu container t nhiu nh cung cp. Ni mt cch n gin hn, mt ng dng Web Java l mt tp hp ca mt hay nhiu thnh phn web c ng gi cng vi nhau nhm mc ch to ra mt ng dng hon chnh c thc thi tng web ca mt ng dng Enterprise. Di y l danh sch cc thnh phn c th c ng gi trong mt ng dng Web: - Cc servlet - Cc trang JSP - Cc th vin th ty bin JSP - Cc lp tin ch v cc lp ng dng - Cc ti liu tnh, bao gm HTML, hnh nh, v JavaScript - Thng tin m t ng dng Web (siu thng tin) Cu trc th mc Tt c cc ng dng Web c t trong mt cu trc th mc chung, cu trc th mc ny l mt container cha cc thnh phn ca mt ng dng Web. Bc u tin trong vic to ra mt ng dng Web l to ra cu trc th mc ny. Bng 1.2 m t mt ng dng Web mu, c tn l stockapp, v lit k ni dung ca mi th mc. Mi th mc s c to t <SERVER_ROOT> ca Servlet/JSP container. Cu trc th mc ca mt ng dng Web /stockapp y l th mc gc ca ng dng Web. Tt c cc file JSP v HTML u c lu tr ti y.

/stockapp/WEB-INF y l th mc cha tt c cc ti nguyn c lin quan n ng dng m khng nm trong gc ti liu ca ng dng. y l ni lu tr b m t trin khai ng dng Web. Bn cn rng th mc WEB-INF khng phi l phn ti liu cng khai. Khng file no trong th mc ny c th c cung cp trc tip cho client. /stockapp/WEB-INF/classes Th mc ny cha cc lp tin ch v servlet. /stockapp/WEB-INF/lib Th mc ny cha cc file JAR (Java Archive) m ng dng Web ph thuc vo . Nu bn s dng Tomcat lm container, th mc gc mc nh l <CATALINA_HOME>/webapps/. Hnh sau cho thy ng dng stockapp khi n c host bi Tomcat container.

ng dng stockapp c host bi Tomcat ng dng web cho php lu tr cc lp c bin dch trong th mc /WEB-INF/classes v /WEB-INF/lib. Khi x l, cc lp trong th mc /classes s c np trc, sau n cc file JAR trong th mc /lib. Nu c cc lp trng nhau c hai th mc th cc lp trong th mc /classes s c u tin. B m t trin khai ng dng Web Xng sng ca tt c cc ng dng Web l b m t trin khai ng dng Web (Web application deployment descriptor)mt file XML c tn l web.xml nm trong th mc /<SERVER_ROOT>/ application-name/WEB-INF/. File web.xml m t tt c cc thnh phn trong ng ng dng Web. Nu chng ta s dng ng dng stockapp th file web.xml s nm

trong th mc /<SERVER_ROOT>/ stockapp/WEB-INF/. Nhng thng tin c th c m t trong b m t trin khai bao gm: - Cc thng s khi to ServletContext - Ni dung c bn a ha - Cu hnh phin lm vic - Cc nh ngha Servlet/JSP - Cc nh x Servlet/JSP - Cc tham chiu th vin th - Cc nh x kiu MIME - Danh sch file cho mng - Cc trang li - Thng tin bo mt B m t trin khai di y nh ngha mt servlet. Chng ta s kho st chi tit hn v file web.xml trong cc phn sau. Code: Chn ht
<?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd"> <web-app> <servlet> <servlet-name>SimpleServlet</servlet-name> <servlet-class>com.stock.SimpleServlet</servlet-class> </servlet> </web-app>

Tomcat JSP/Servlet container


Tomcat JSP/Servlet container l mt b cha ng dng Web (Web application container) m ngun m da trn Java, c to ra thc thi cc ng dng servlet v JavaServer Page. Chng ta s s dng Tomcat cho tt c cc v d ti y. Trc khi ci t v cu hnh Tomcat, bn phi m bo cc khon sau: Cc yu cu khi ci t Tomcat Java SE Development Kit 5 http://java.sun.com/javase/downloads/index_jdk5.jsp Apache Tomcat 5.5.8 http://archive.apache.org/dist/tomcat/tomcat-5/ Ci t v cu hnh Tomcat Khi ti c Tomcat v JDK, bn tin hnh ci t theo hng dn i km. Mc ch ca chng ta l ci t Tomcat lm mt server c lp trn h iu hnh Windows Vista. Chng ta ci

t Tomcat trong th mc C:\Program Files\Apache Software Foundation\Tomcat 5.5 v JDK trong th mc C:\Program Files\Java\jdk1.5.0. Sau khi ci t Tomcat v JDK xong, bc k tip l thit lp bin mi trng JAVA_HOME. Tht ra, bc ny khng cn thit, bn c th b qua. thit lp bin mi trng JAVA_HOME, thc hin nh sau: 1. M Control Panel. 2. M hp thoi System Properties, sau chn th Advanced. 3. Nhp vo nt Environment Variables, bn s thy mn hnh tng t nh hnh 1.3. 4. Nhp vo nt New trong phn System variables ca hp thoi Environment Variables. 5. Thm bin c tn l JAVA_HOME v thit lp gi tr l ng dn ca bn ci t JDK. Hnh 1.4 cho thy thit lp ng vi bn ci t ca chng ta. Tt c xong, by gi bn c th qua phn k tip kim tra bn ci t Tomcat.

Hp thoi Environment Variables

Thit lp bin mi trng JAVA_HOME ng vi bn ci t ca chng ta Kim tra bn ci t Tomcat Trc khi tip tc, chng ta kim tra cc bc va hon tt. u tin, khi ng Tomcat server bng cch vo Start | All Programs | Apache Tomcat 5.5 | Monitor Tomcat, ri nhp nt Start

trong hp thoi Apache Tomcat Properties (xem hnh di).

Hp thoi Apache Tomcat Properties Sau khi Tomcat khi ng, m trnh duyt theo a ch: http://localhost:8080 Bn s thy trang ch mc nh ca Tomcat (xem hnh di).

[img]Trang%20ch%20mc%20nh%20ca%20Tomcat[/img]

Bc k tip l kim tra bn ci t JDK. Cch tt nht thc hin iu ny l chy th mt trong cc v d do Tomcat server cung cp. chy mt v d JSP, t trang ch mc nh ca Tomcat, chn JSP Examples. Bn s thy trang tng t nh hnh di.

Trang JSP Examples Chn v d c tn l Snoop v nhp vo lin kt Execute. Nu mi th c ci t ng, bn s thy trang tng t nh hnh di.

Kt xut ca v d Snoop

<Ht phn gii thiu chung>

Re: Tm hiu Java Struts


tuannq 01-01-2009, 18:37

Tng quan v kin trc Java servlet v Javaserver page


Trong phn ny, chng ta s tho lun v hai cng ngh m Struts Framework da vo: Java servlet v JavaServer Page (JSP). Trc tin, chng ta m t kin trc servlet, bao gm vng i ca servlet; mi quan h gia ServletContext v mt ng dng Web; v cch thu ly d liu form bng cc servlet. Mt khi bn nm vng v servlet, chng ta s chuyn sang tho lun v JSP, ng vai tr l thnh phn View ca Struts Framework. y, chng ta nh ngha JSP v m t cc thnh phn ca n. Mc ch ca chng ny l gii thiu ngn gn v cng ngh servlet v JSP. Qua chng ny, bn s hiu r v servlet v JSP, cng nh cch p dng chng vo qu trnh pht trin ng dng Web Java.

Kin trc Java servlet


Java servlet l mt thnh phn ng dng Web c lp nn (platform-independent) c host trong mt JSP/Servlet container. Servlet kt hp vi web-client theo m hnh yu cu/p ng (request/response), c qun l bi mt JSP/Servlet container. Hnh 2.1 m t qu trnh thc thi ca mt Java servlet.

Hnh: Qu trnh thc thi ca mt Java servlet Hai gi cu thnh nn kin trc servlet l javax.servlet v javax.servlet.http. Gi javax.servlet cha cc lp v cc giao din tng qut, c hin thc v k tha bi tt c cc servlet. Gi javax.servlet.http cha tt c cc lp servlet th hin c trng ca giao thc HTTP.

Phn ct li ca kin trc ny l giao din javax.servlet.Servlet. y l giao din lp c s cho tt c cc servlet. Giao din Servlet nh ngha nm phng thc, trong ba phng thc quan trng nht l: - Phng thc init()khi to mt servlet - Phng thc service()nhn v p ng cc yu cu ca client - Phng thc destroy()thc hin dn dp y l cc phng thc trong vng i ca servlet. Chng ta s m t cc phng thc ny trong phn sau. Tt c cc servlet phi hin thc giao din Servlet mt cch trc tip hoc thng qua k tha. Hnh 2.2 l mt m hnh i tng, cho bn ci nhn mc cao v b khung servlet.

Hnh: Mt m hnh i tng n gin ca b khung servlet Lp GenericServlet v HttpServlet Hai lp chnh trong kin trc servlet l GenericServlet v HttpServlet. Lp HttpServlet c k tha t lp GenericServlet, GenericServlet hin thc giao din Servlet. Khi pht trin cc servlet cho mnh, rt c kh nng bn s k tha mt trong hai lp ny. Khi k tha lp GenericServlet, bn phi hin thc phng thc service(). Phng thc GenericServlet.service() c nh ngha l mt phng thc tru tng ct buc bn tun theo b khung ny. Nguyn mu ca phng thc service() c nh ngha nh sau: Code: Chn ht

public abstract void service(ServletRequest request, ServletResponse response) throws ServletException, IOException;

Hai tham s c truyn cho phng thc service() l i tng ServletRequest v ServletResponse. i tng ServletRequest cha thng tin c gi n servlet, v i tng ServletResponse l ni t d liu m bn mun gi v client. Ngc vi GenericServlet, khi k tha HttpServlet, bn thng khng hin thc phng thc service(); lp HttpServlet hin thc phng thc service() cho bn. Nguyn mu sau cha ch k ca phng thc HttpServlet.service(): Code: Chn ht
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException;

Khi phng thc HttpServlet.service() c gi, n xt loi phng thc trong yu cu v xc nh cc phng thc HTTP no c gi da vo gi tr ny. y l cc phng thc m bn c th chp . Nu loi phng thc l GET, n s gi phng thc doGet(). Nu loi phng thc l POST, n s gi phng thc doPost(). C nm loi phng thc i cng vi phng thc service(), nhng doGet() v doPost() l hai phng thc thng c s dng nht. Do , chng ta ch tp trung vo hai phng thc ny. Vng i ca mt servlet Vng i ca mt Java servlet tun theo mt trnh t kh hp l. Giao din khai bo cc phng thc trong vng i ca servlet l javax.servlet.Servlet. Cc phng thc ny l init(), service(), v destroy(). Trnh t ny c th c m t trong mt qu trnh n gin gm ba bc: 1. Mt servlet c np v khi to bng phng thc init(). Phng thc ny c gi khi mt servlet c np trc hoc trong ln u tin yu cu servlet ny. 2. Sau , servlet s phc v 0 hoc nhiu yu cu. Servlet s dng phng thc service() phc v mi yu cu. 3. Sau , servlet b hy v dn dp khi ng dng Web cha servlet kt thc. Phng thc c gi khi kt thc l destroy(). Phng thc init() Phng thc init() l ni bt u vng i ca servlet. Phng thc ny c gi ngay sau khi servlet c th hin ha v ch c gi mt ln duy nht. Phng thc init() nn c s dng to v khi to cc ti nguyn s c s dng trong khi th l cc yu cu. Ch k ca phng thc init() c nh ngha nh sau: Code: Chn ht
public void init(ServletConfig config) throws ServletException;

Phng thc init() nhn mt i tng ServletConfig lm tham s. Tham chiu ny nn c lu tr trong mt bin thnh vin c th c s dng sau ny. Cch thng thng lm iu ny l cho init() gi phng thc supper.init() v truyn i tng ServletConfig.

Phng thc init() cng khai bo rng n c th nm bit l ServletException. Nu v mt l do no m servlet khng th khi to cc ti nguyn cn thit nhm th l cc yu cu, n s nm bit l ServletException vi mt thng bo li. Phng thc service() Phng thc service() phc v tt c cc yu cu nhn c t client theo mu yu cu/p ng. Ch k ca phng thc service() nh sau: Code: Chn ht
public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException;

Phng thc service() nhn hai tham s: - i tng ServletRequestcha thng tin yu cu t client. - i tng ServletResponsecha thng tin tr v cho client. Bn thng khng hin thc phng thc ny mt cch trc tip, tr phi k tha lp tru tng GenericServlet. Bn hin thc ph bin nht ca phng thc service() l trong lp HttpServlet. Lp ny hin thc giao din Servlet bng vic k tha lp GenericServlet. Phng thc service() ca n h tr cc yu cu HTTP/1.1 chun bng cch xc nh loi yu cu v gi phng thc ph hp. Phng thc destroy() Phng thc ny l du hiu kt thc vng i ca mt servlet. Khi mt ng dng Web kt thc, phng thc destroy() ca servlet s c gi. Lc ny y, tt c cc ti nguyn c to trong phng thc init() s c dn dp. Di y l ch k ca phng thc destroy(): Code: Chn ht
public void destroy();

Xy dng mt servlet Chng ta hiu c bn v servlet v cch lm vic ca n, gi y chng ta s xy dng mt servlet n gin. Mc ch ca servlet ny l phc v mt yu cu v p ng bng vic in ra a ch ca client. Sau khi kho st m ngun ca servlet ny, chng ta s xt cc bc lin quan khi bin dch v ci t n. Di y l m ngun ca servlet ny: V d: File SimpleServlet.java Code: Chn ht
package ch02; import import import import javax.servlet.*; javax.servlet.http.*; java.io.*; java.util.*;

public class SimpleServlet extends HttpServlet { public void init(ServletConfig config)

throws ServletException { // Lun truyn i tng ServletConfig cho lp super super.init(config); } // X l yu cu HTTP GET public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request, response); } // X l yu cu HTTP POST public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.println("<html>"); out.println("<head><title>Simple Servlet</title></head>"); out.println("<body>"); // Xut a ch ca client out.println("Your address is " + request.getRemoteAddr() + "\n"); out.println("</body></html>"); out.close(); } }

Bn xem qua m ngun ca SimpleServlet, by gi hy xem k hn mi phn trong . Chng ta xt servlet ny khp vi b khung Java Servlet Development Kit (JSDK) im no, cc phng thc m servlet hin thc, v cc i tng m servlet s dng. C ba phng thc c chp trong SimpleServlet: - Phng thc init() - Phng thc doGet() - Phng thc doPost() By gi, chng ta xt chi tit mi phng thc. Phng thc init() Trc ht, SimpleServlet nh ngha mt bn hin thc n gin ca phng thc init(). N nhn i tng ServletConfig, ri truyn cho phng thc init() cha i tng ny c th c s dng v sau. Dng m sau thc hin iu ny: Code: Chn ht
super.init(config);

Cha ca SimpleServlet, thc s nm gi i tng ServletConfig, chnh l GenericServlet. Bn nn rng bn hin thc ny ca phng thc init() khng to ra bt c ti nguyn no. y l l do khin SimpleServlet khng hin thc phng thc destroy(). Phng thc doGet() v doPost() Phng thc doGet() v doPost() ca SimpleServlet l ni tt c cc logic nghip v thc s c thc hin, v trong trng hp ny, phng thc doGet() gi phng thc doPost(). Phng thc doGet() ch c thc thi khi mt yu cu GET c gi n container. Nu mt yu cu POST c tip nhn th phng thc doPost() s phc v yu cu ny. C hai phng thc doGet() v doPost() u nhn i tng HttpServletRequest v HttpServletResponse lm tham s. HttpServletRequest cha thng tin c gi t client, v HttpServletResponse cha thng tin s c tr v client. Dng m c thc thi u tin ca phng thc doPost() l thit lp loi ni dung ca p ng. iu ny c thc hin nh sau: Code: Chn ht
response.setContentType("text/html");

Phng thc ny thit lp loi ni dung ca p ng. Bn c th thit lp thuc tnh ny ch mt ln, v phi c thit lp trc khi ghi ra mt Writer hay OutputStream. Trong v d trn, chng ta thit lp loi p ng l text/html. Vic k tip chng ta lm l thu ly mt PrintWriter. iu ny c thc hin bng cch gi phng thc getWriter() ca ServletResponse. PrintWriter cho php chng ta ghi ra lung p ng. Mi th c ghi ra PrintWriter s c hin th trong trnh duyt client. Bc ny c hon tt bng dng m sau: Code: Chn ht
PrintWriter out = response.getWriter();

Khi c mt tham chiu n i tng cho php ghi vn bn n client, chng ta s dng i tng ny ghi mt thng ip n client. Thng ip ny c nh dng theo HTML, v s c trnh by trong trnh duyt client. iu ny c thc hin bng on m sau: Code: Chn ht
out.println("<html>"); out.println("<head><title>Simple Servlet</title></head>"); out.println("<body>"); // Xut a ch ca client out.println("Your address is " + request.getRemoteAddr() + "\n"); out.println("</body></html>"); out.close();

SimpleServlet s dng mt phng php rt n gin gi HTML n client: truyn cho phng thc println() ca PrintWriter on vn bn HTML m chng ta mun a vo p ng v ng lung ny li. C l bn quan tm nht n dng m: Code: Chn ht
// Xut a ch ca client out.println("Your address is " + request.getRemoteAddr() + "\n");

Dng m ny da vo thng tin nhn c t client v gi phng thc getRemoteAddr() ca HttpServletRequest, phng thc ny tr v a ch IP ca client. i tng HttpServletRequest gi nhiu thng tin c-trng-giao-thc-HTTP v client. Nu mun tm hiu su hn v cc i tng HttpServletRequest v HttpServletResponse, bn c th vo website ca Sun: http://java.sun.com/products/servlet/ Xy dng v trin khai mt servlet xem SimpleServlet hot ng th no, trc tin bn cn to mt ng dng Web s qun l servlet ny, sau bin dch v trin khai servlet ny vo ng dng Web . Cc bc ny c m t di y: 1. To mt ng dng Web c tn l ch02, s dng cu trc th mc c m t trong chng 1, Gii thiu d n Struts. 2. Thm file servlet.jar vo ng dn lp ca bn, file ny nm trong th mc <CATALINA_HOME>/common/lib/. 3. Bin dch m ngun ca SimpleServlet. 4. Chp file .class vo th mc <CATALINA_HOME>/webapps/ch02/WEB-INF/classes/ch02. 5. Thm nh ngha sau vo file web.xml. SimpleServlet s c triu gi khi URL cha mu simple: Code: Chn ht
<servlet> <servlet-name>SimpleServlet</servlet-name> <servlet-class>ch02.SimpleServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>SimpleServlet</servlet-name> <url-pattern>simple</url-pattern> </servlet-mapping>

Khi hon tt cc bc trn, bn c th thc thi SimpleServlet v xem kt qu. thc hin iu ny, bn hy khi ng Tomcat v m trnh duyt theo a ch: http://localhost:8080/ch02/simple Bn s thy kt qu tng t nh hnh di ( rng a ch IP ca client c nh dng theo IPv6 trn Windows Vista, y l 0:0:0:0:0:0:0:1i vi IPv4 l 127.0.0.1).

Hnh: Kt xut ca SimpleServlet (y l IPv6) ServletContext Mt ServletContext l mt i tng c nh ngha trong gi javax.servlet. N nh ngha tp hp cc phng thc c s dng bi cc thnh phn pha server ca mt ng dng Web giao tip vi Servlet container. ServletContext thng c s dng lm vng lu tr cho cc i tng cn c hiu lc vi tt c cc thnh phn pha server trong mt ng dng Web. Bn c th xem ServletContext nh mt phn on b nh dng chung cho cc ng dng Web. Khi mt i tng c t trong ServletContext, n tn ti cng vi mt ng dng Web, tr phi n b loi b hay thay th. C bn phng thc c nh ngha bi ServletContext, ch yu cung cp cc chc nng ca b nh dng chung. Bng di m t cc phng thc ny. Bng: Cc phng thc b nh dng chung ca ServletContext setAttribute() Gn mt i tng vo tn cho trc v lu i tng ny vo ServletContext hin hnh. Nu tn c s dng, phng thc ny loi b i tng c v gn tn ny vo i tng mi. getAttribute() Tr v i tng c tham chiu bi tn cho trc, hoc tr v null nu khng c i tng no vi tn ny. removeAttribute() Loi b mt i tng vi tn cho trc khi ServletContext. getAttributeNames() Tr v cc chui cha tn ca cc i tng c lu tr trong ServletContext hin hnh.

Mi quan h gia ng dng Web v ServletContext ServletContext ng vai tr l container (b cha) cho mt ng dng Web. Mi ng dng Web ch c mt th hin ca ServletContext. Mi quan h ny c quy nh bi Java Servlet Specification v l bt buc i vi tt c cc Servlet container. thy c mi quan h ny nh hng nh th no n cc thnh phn Web, chng ta s dng mt servlet v mt JSP. Thnh phn Web u tin m chng ta xt n l mt servlet, servlet ny lu tr mt i tng trong ServletContext vi mc ch lm cho i tng ny c hiu lc vi tt c cc thnh phn pha server trong ng dng Web. V d 2.2 trnh by m ngun ca servlet: V d: ContextServlet.java Code: Chn ht
package ch02; import import import import javax.servlet.*; javax.servlet.http.*; java.io.*; java.util.*;

public class ContextServlet extends HttpServlet { private static final String CONTENT_TYPE = "text/html"; public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request, response); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // Thu ly mt tham chiu n ServletContext ServletContext context = getServletContext(); // Thu ly i tng userName t ServletContext String userName = (String)context.getAttribute("USERNAME"); // Nu khng c i tng userName th to mi v thm vo ServletContext if ( userName == null ) { userName = new String("Bob Roberts"); context.setAttribute("USERNAME", userName); } response.setContentType(CONTENT_TYPE); PrintWriter out = response.getWriter(); out.println("<html>"); out.println("<head><title>Context Servlet</title></head>");

out.println("<body>"); // Xut gi tr hin ti ca i tng userName out.println("<p>The current User is : " + userName + ".</p>"); out.println("</body></html>");

public void destroy() { }

Khi xem ContextServlet, rng n thc hin cc bc sau: 1. Trc tin, n thu ly mt tham chiu n ServletContext bng phng thc getServletContext(): Code: Chn ht
ServletContext context = getServletContext();

2. Khi c mt tham chiu n ServletContext, n thu ly mt tham chiu n i tng c gn tn USERNAME t ServletContext bng phng thc getAttribute(): Code: Chn ht
String userName = (String)context.getAttribute("USERNAME");

3. Sau , n kim tra tham chiu tr v c hp l hay khng. Nu getAttribute() tr v null th khng mt i tng no c gn tn USERNAME. Khi , i tng s c to mi v thm vo ServletContext bng phng thc setAttribute(): Code: Chn ht
// Nu khng c i tng userName th to mi v thm vo ServletContext if ( userName == null ) { userName = new String("Bob Roberts"); context.setAttribute("USERNAME", userName); }

4. Sau , gi tr ca tham chiu ny c in ra lung xut bng phng thc PrintWriter. println(): Code: Chn ht
// Xut gi tr hin ti ca i tng userName out.println("<p>The current User is : " + userName + ".</p>");

Sau khi xem qua servlet ny, bn hy hon tt cc bc sau: 1. Bin dch m ngun ca ContextServlet. 2. Chp file .class vo th mc <CATALINA_HOME>/webapps/ch02/WEB-INF/classes/ch02. 3. Thm nh ngha sau vo file web.xml: Code: Chn ht
<servlet> <servlet-name>ContextServlet</servlet-name> <servlet-class>ch02.ContextServlet</servlet-class> </servlet>

<servlet-mapping> <servlet-name>ContextServlet</servlet-name> <url-pattern>context</url-pattern> </servlet-mapping>

JSP m chng ta s s dng rt ging vi servlet trn, tuy nhin c hai im khc: - M lnh truy xut ServletContext nm trong mt on kch bn JSP, s c tho lun trong phn sau ca chng ny. - Nu khng tm thy i tng no c gn tn USERNAME, JSP s khng to i tng mi. Phn m lnh cn li thc hin nhng hnh ng v c bn l ging nhau, nhng thc hin trong mt trang JSP. Bn hy xem m ngun JSP trong v d di V d: Context.jsp Code: Chn ht
<HTML> <HEAD> <TITLE>Context</TITLE> </HEAD> <BODY> <% // Thu ly i tng userName t ServletContext String userName = (String)application.getAttribute("USERNAME"); if ( userName == null ) { // Khng thm mi, ch thng bo rng khng tm thy out.println("<b>Could not find a reference to the attribute USERNAME"); } else { out.println("<b>The current User is : " + userName + "</b>"); } %> </BODY> </HTML>

Trong Context.jsp, chng ta s dng hai i tng JSP ngm: i tng application tham chiu n ServletContext, v i tng out tham chiu n lung xut. Chng ta s tho lun chng trong phn sau ca chng ny.

By gi, bn hy chp Context.jsp vo th mc <CATALINA_HOME>/webapps/ch02/, khi ng Tomcat v m trnh duyt theo a ch: http://localhost:8080/ch02/Context.jsp Bn s thy trang tng t nh hnh sau:

Hnh: Kt qu ca Context.jsp Theo , Context.jsp khng tm thy i tng no c gn tn USERNAME. N s khng th tm thy cho n khi i tng ny c to bi ContextServlet. thc hin iu ny, bn m trnh duyt theo a ch: http://localhost:8080/ch02/context Bn s thy kt qu tng t nh sau:

Hnh: Kt qu ca ContextServlet Sau khi thc thi servlet ny, ng dng ch02 c mt i tng c gn tn USERNAME lu trong ServletContext. thy n nh hng nh th no n cc thnh phn Web khc trong ng dng ch02, bn hy m li Context.jsp trong trnh duyt. Gi y, JSP c th tm thy USERNAME v in ra gi tr ny.

loi b mt i tng khi ServletContext, bn c th khi ng li JSP/Servlet container hoc s dng phng thc ServletContext.removeAttribute(). S dng servlet thu ly d liu HTTP Trong phn ny, chng ta nghin cu cch thu ly thng tin t client ca servlet. C ba phng thc c th c s dng thu ly cc tham s yu cu; l cc phng thc getParameter(), getParameterValues(), getParameterNames() ca ServletRequest. Ch k ca mi phng thc nh sau: Code: Chn ht
public String ServletRequest.getParameter(String name); public String[] ServletRequest.getParameterValues(String name); public Enumeration ServletRequest.getParameterNames();

Phng thc getParameter() tr v gi tr n ca tham s c nu tn ( dng chui), hoc tr v null nu tham s ny khng c trong yu cu. Bn nn s dng phng thc ny khi chc rng yu cu ch cha mt gi tr cho tham s. Nu tham s c nhiu gi tr, bn nn s dng phng thc getParameterValues(). Phng thc getParameterValues() tr v cc gi tr ca tham s c nu tn ( dng mng chui), hoc tr v null nu tham s ny khng c trong yu cu. Phng thc getParameterNames() tr v tn ca cc tham s trong yu cu ( dng Enumeration), hoc tr v Enumeration rng nu khng c tham s no. Phng thc ny c s dng lm phng thc h tr cho phng thc getParameter() v getParameterValues(). Danh sch tn tham s c th c duyt qua bng cch gi phng thc getParameter() hay getParameterValues() ng vi mi tn tham s trong danh sch . thy cch s dng cc phng thc ny thu ly d liu, chng ta hy quan st mt servlet phc v cc yu cu POST: thu ly cc tham s gi n v tr v cc tham s cng gi tr ca chng cho client. Servlet ny c trnh by trong v d sau: V d: ParameterServlet.java Code: Chn ht
package ch02; import import import import javax.servlet.*; javax.servlet.http.*; java.io.*; java.util.*;

public class ParameterServlet extends HttpServlet { // X l yu cu HTTP GET public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

doPost(request, response); } // X l yu cu HTTP POST public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.println("<html>"); out.println("<head>"); out.println("<title>Parameter Servlet</title>"); out.println("</head>"); out.println("<body>"); // Thu ly tn ca cc tham s Enumeration parameters = request.getParameterNames(); String param = null; // Duyt qua tn ca cc tham s, thu ly gi tr ca cc tham s while ( parameters.hasMoreElements() ) { param = (String)parameters.nextElement(); out.println(param + " : " + request.getParameter(param) + } out.println("</body></html>"); out.close();

"<BR>");

} }

Hnh ng u tin c thc hin bi servlet ny l ly tt c tn tham s c truyn trong yu cu bng phng thc getParameterNames(). Khi c danh sch ny, n thc hin vng lp while, thu ly v in tt c gi tr cng vi tn tham s bng phng thc getParameter(). Bn c th gi ParameterServlet bng cch m ha chui URL vi cc tham s v gi tr, hoc s dng HTML form. V d: Form.html Code: Chn ht
<HTML> <HEAD> <TITLE>Parameter Servlet Form</TITLE> </HEAD> <BODY> <form action="parameter" method=POST> <table width="400" border="0" cellspacing="0"> <tr> <td>Name: </td> <td> <input type="text" name="name" size="20" maxlength="20">

</td> <td>SSN:</td> <td> <input type="text" name="ssn" size="11" maxlength="11"> </td> </tr> <tr> <td>Age:</td> <td> <input type="text" name="age" size="3" </td> <td>email:</td> <td> <input type="text" name="email" size="30" maxlength="30"> </td> </tr> <tr> <td>&nbsp;</td> <td>&nbsp;</td> <td>&nbsp;</td> <td> <input type="submit" name="Submit"

maxlength="3">

value="Submit">

<input type="reset" name="Reset" value="Reset"> </td> </tr> </table> </FORM> </BODY> </HTML>

Ti liu HTML ny cha mt HTML form n gin, c th c s dng truyn d liu cho ParameterServlet. xem v d ny hot ng th no, bn hy thc hin cc bc sau: 1. Bin dch m ngun ca ParameterServlet. 2. Chp file .class vo th mc <CATALINA_HOME>/webapps/ch02/WEB-INF/classes/ch02. 3. Thm nh ngha sau vo file web.xml: Code: Chn ht
<servlet> <servlet-name>ParameterServlet</servlet-name> <servlet-class>ch02.ParameterServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>ParameterServlet</servlet-name> <url-pattern>parameter</url-pattern> </servlet-mapping>

4. Chp file Form.html vo th mc <CATALINA_HOME>/webapps/ch02/. By gi, bn hy m trnh duyt theo a ch:

http://localhost:8080/ch02/Form.html Nhp d liu vo form v nhp nt Submit (xem hnh di). Tt nhin, p ng m bn nhn c ty theo d liu nhp vo, nhng n cng gn ging nh hnh di http://codeprovn.com/store/nqnam/xay_du ... age055.jpg Hnh: Kt xut ca Form.html

Hnh: p ng ca ParameterServlet V d ny cho thy vic ly cc tham s yu cu trong mt servlet rt d. Mc d ParameterServlet lm vic rt tt i vi hu ht cc yu cu, nhng n vn c li. Khi s dng phng thc getParameter() ly cc gi tr tham s, chng ta ch mong nhn c mt gi tr cho mt tham s yu cu. Nu khng th cy vo lp lun ny, chng ta nn s dng phng thc getParameterValues(). <Ht phn con Kin trc Java servlet, phn con tip theo l JavaServer Page>

Re: Tm hiu Java Struts


loga 04-01-2009, 00:03 c bi tut ny c 3 im cn mp m, nu ln mi ngi cng trao i : 1.S khc nhau gia Servlet v Jsp. Ti sao ngi ta li m rng Servlet thnh jsp? 2.S khc nhau gia 2 phung thc POST v GET trong th <form> 3.V d trong bi vit cha Demo r c chc nng ca ServletContext.Phn ln ngi ta hay dng HttpRequest v HttpResponse ly v thit lp gi tr c gi ti t Client, em thy rt t dng ServletContext, c l l do trong cc ng dng nh th cha ng ti n chng http://uit.edu.vn

Re: Tm hiu Java Struts


MicroStar 04-01-2009, 00:43 loga wrote:2.S khc nhau gia 2 phung thc POST v GET trong th <form> method="POST" action="do sth" : gi d liu ca cc th input n Server x l method=GET action="do sth" : Nhn d liu tr v t Server sau khi Server x l xong

Re: Tm hiu Java Struts


loga 04-01-2009, 00:59 method="POST" action="do sth" : gi d liu ca cc th input n Server x l method=GET action="do sth" : Nhn d liu tr v t Server sau khi Server x l xong Bn chc khng?? Bn th lm cng 1 trang html nhng thay i phung thc POST v GET trong th <form> cn thuc tnh action th cng tr v 1 trang no x l thng tin mnh gi ln server th Vdu: <form action="xuly" method="get"> vi li <form action="xuly" method="post">

Re: Tm hiu Java Struts


tuannq 12-01-2009, 11:37 loga wrote:c bi tut ny c 3 im cn mp m, nu ln mi ngi cng trao i : 1.S khc nhau gia Servlet v Jsp. Ti sao ngi ta li m rng Servlet thnh jsp? 2.S khc nhau gia 2 phung thc POST v GET trong th <form> 3.V d trong bi vit cha Demo r c chc nng ca ServletContext.Phn ln ngi ta hay dng HttpRequest v HttpResponse ly v thit lp gi tr c gi ti t Client, em thy rt t dng ServletContext, c l l do trong cc ng dng nh th cha ng ti n chng

1. jsp l file ca java, Servlet l gi th vin cho jsp, khng phi l m rng servlet thnh jsp 2. method GET s cho cc tham s xut hin trn URL, trong khi method POST cc d liu nh km hidden so vi user. Method GET c kch thc nh, khng mang tnh bo mt, ch chp nhn tham s dng chui (do cc tham s ny xut hin trn URL) Method POST c kch thc ln, c qui nh trong configuration ca web server, v khng gii hn v kiu d liu 3. ServletContext l object h tr bi gi th vin Servlet, cn HttpRequest, HttpResponse l

object ca java jsp. Trong ServletContext n vn s dng HttpRequest ly d liu.

Re: Tm hiu Java Struts


loga 12-01-2009, 11:58 1. jsp l file ca java, Servlet l gi th vin cho jsp, khng phi l m rng servlet thnh jsp 2. method GET s cho cc tham s xut hin trn URL, trong khi method POST cc d liu nh km hidden so vi user. Method GET c kch thc nh, khng mang tnh bo mt, ch chp nhn tham s dng chui (do cc tham s ny xut hin trn URL) Method POST c kch thc ln, c qui nh trong configuration ca web server, v khng gii hn v kiu d liu 3. ServletContext l object h tr bi gi th vin Servlet, cn HttpRequest, HttpResponse l object ca java jsp. Trong ServletContext n vn s dng HttpRequest ly d liu. Mnh b sung thm 1.Bn cht ca jsp l 1 file servlet v khi chy file jsp th n s c compile thnh 1 file servlet trc Cho nn mnh mi c thc mc, ti sao li phi dng jsp, trong khi ch vi servlet l dng, v cu tr li theo mnh ngh l: khi vit code trong servlet, xut ra d liu chng ta phi dng lnh out.println("cc th html"), tht l bt tin v rc ri khi debug cho nn ta dng jsp.Dng jsp hay servlet l ty theo mc ch s dng ca chng ta, theo mnh dng jsp cho View(hin th d liu) cn servlet cho vic x l(Controller).Ci ny cc bn s thy r trong nhng TUT v Struts sp ti

Re: Tm hiu Java Struts


tuannq 22-03-2009, 12:49 loga wrote:mnh c cu hi th ny: khi no th dng GET v khi no dng POST Cu hi ny kh c th tr li ht loga , t vo mt trng hp c th ta mi c th bit chnh xc nn dng g. Nnh mnh ni trn, nhng data c kch thc nh, dng chui, khng cn che du user, c th dng GET nu khng th dng POST Thng thng data t form th dng POST Khi ta cn mt URL ngn gn d nh cho user th dng GET (y l 1 im li ca GET so vi POST), v d Khi ti cn chia x bi vit "Tm hiu Java Struts" ny cho bn b th ti ch cn past cho h

ng link viewtopic.php?f=23&t=1403 v page "_http://codeprovn.com/forums/viewtopic.php" ca ti chp nhn v x l GET message nu page ch nhn POST message th mi bi vit ch c 1 ng link duy nht l "_http://codeprovn.com/forums/viewtopic.php", v trong ch c mt ci form cha 1 textbox cho ngi dng chn tn hoc id bi vit l ci c ca GET

Re: Tm hiu Java Struts


loga 23-03-2009, 21:20 Em xin b sung s khc nhau v POST vs GET m em c c trong cun introduction to java programing theo cch hiu ca em Em post 1 bi mi lun, v y l link ti bi vit mi ngi cng trao i

Re: Tm hiu Java Struts


tuannq 22-04-2009, 00:21

JavaServer Page l g?
JavaServer Page (JSP) l mt cng ngh n gin nhng mnh m, thng c s dng to HTML ng pha server. JSP l bn m rng trc tip ca Java servlet, c thit k ngi lp trnh nhng trc tip m x l Java vo ti liu c yu cu. Mt ti liu JSP phi c phn m rng .jsp. on m sau l mt file JSP n gin, kt qu c th hin hnh di Code: Chn ht
<HTML> <BODY> <% out.println("HELLO JSP READER"); %> </BODY> </HTML>

Hnh: Kt xut ca mt file JSP n gin Ti liu ny ging nh cc ti liu HTML khc, cng vi cc th cha m Java c thm vo. M ngun c lu trong file hello.jsp v c t vo th mc ti liu ca ng dng Web (JSP s c trin khai vo ). Khi mt yu cu c to ra cho ti liu ny, server nhn dng phn m rng .jsp v thy rng cn x l c bit. Sau , JSP c truyn n b my JSP (ch l mt servlet khc c nh x n phn m rng .jsp) x l. Khi file JSP c yu cu ln u tin, n c dch thnh mt servlet, sau c bin dch thnh mt i tng v c np vo b nh. Servlet s phc v yu cu v tr kt qu v cho client. Vi tt c cc yu cu v sau, server kim tra xem file JSP gc c b thay i hay khng. Nu khng thay i, server s gi i tng servlet c bin dch trc . Nu b thay i, b my JSP s phn tch li m ngun JSP ny. Hnh di m t cc bc ca mt yu cu JSP:

Hnh: Cc bc ca mt yu cu JSP Bn nn nh rng JSP l servlet c to ra t s kt hp HTML v m Java. V th, chng c cc ti nguyn v chc nng ca mt servlet. Cc thnh phn ca mt JavaServer Page Phn ny tho lun v cc thnh phn ca mt trang JSP, bao gm cc ch th, kch bn, cc i tng ngm, v cc hnh ng chun. Ch th JSP Cc ch th JSP l cc phn t JSP cung cp thng tin ton cc v mt trang JSP. V d, mt ch th gm mt danh sch cc lp Java c import vo mt trang JSP. C php ca mt ch th JSP nh sau: Code: Chn ht
<%@ directive {attribute="value"} %>

Cc ch th c nh ngha bi JSP Specification v1.2 bao gm: page, include, v taglib. Ch th page Ch th page nh ngha thng tin s nh hng n ton b trang JSP cha ch th ny. C php ca mt ch th page nh sau: Code: Chn ht
<%@ page {attribute="value"} %>

Bng di nh ngha cc c tnh ca ch th page. language="scriptingLanguage"

Bo cho server bit ngn ng no s c s dng bin dch file JSP ny. Hin ti Java l ngn ng duy nht c h tr, nhng chng ta hy vng trong tng lai s c thm nhng ngn ng khc. extends="className" nh ngha lp cha m JSP ny s k tha. Mc d bn c th k tha t cc servlet khc, nhng iu ny s hn ch kh nng thc hin ti u ha ca b my JSP/Servlet, v v th, khng c khuyn khch. import="importList" nh ngha danh sch cc gi Java s c import vo JSP ny (tn ca cc gi c phn cch bi du phy). session="true | false" Xc nh d liu phin lm vic c hiu lc vi trang JSP ny hay khng. Mc nh l true. Nu khng c s dng phin lm vic trong trang JSP, bn nn thit lp c tnh ny l false c hiu nng tt hn. buffer="none | size in kb" Xc nh vng m ca lung xut. Gi tr mc nh l 8KB. autoFlush="true | false" Xc nh vng m ca lung xut s c flush mt cch t ng hay s nm mt bit l khi vng m y. Mc nh l true. isThreadSafe="true | false" Bo vi b my JSP rng trang JSP ny c th phc v nhiu yu cu cng mt lc. Mc nh l true. Nu c tnh ny c thit lp l false, SingleThreadModel s c s dng. info="text" M t thng tin v trang JSP ny, c th c truy xut bng phng thc Servlet.getServletInfo(). errorPage="error_url" M t a ch tng i ca trang JSP s th l cc bit l JSP. isErrorPage="true | false" Cho bit trang JSP ny c phi l mt trang li hay khng. Mc nh l false. contentType="ctinfo" M t loi MIME v b k t ca p ng. Bi tt c cc c tnh bt buc c ngm nh, bn khng cn thit phi ch nh bt c ch th page no. Ch th taglib

Ch th taglib cho bit trang JSP s dng mt th vin th ty bin, c nh danh duy nht bi mt URI v kt hp vi mt tin t nhm phn bit cc b th ty bin c s dng. C php ca ch th taglib nh sau: Code: Chn ht
<%@ taglib uri="tagLibraryURI" prefix="tagPrefix" %>

Cc c tnh ca ch th taglib c m t trong bng di Bng cc c tnh ca ch th taglib uri URI nh danh duy nht mt th vin th ty bin. prefix Tin t c s dng phn bit th vin th ty bin. Dng m sau trnh by cch s dng ch th taglib: Code: Chn ht

<%@ taglib uri="http://jakarta.apache.org/taglibs/random-1.0" prefix="rand" %>

Kch bn JSP Kch bn l mt c ch ca JSP nhm nhng trc tip cc on m Java vo trong trang HTML. C ba thnh phn ngn ng kch bn trong mt kch bn JSP. Mi thnh phn gi mt v tr thch hp trong servlet c sinh ra. Khai bo JSP Khai bo JSP c s dng nh ngha cc bin v cc phng thc Java trong mt trang JSP. Mt khai bo JSP phi l mt cu lnh khai bo hon chnh. Khai bo JSP c khi to khi trang JSP ln u tin c np. Sau khi cc khai bo c khi to, chng s c hiu lc vi cc on kch bn, cc biu thc, v cc khai bo khc trong cng mt trang JSP. C php ca mt khai bo JSP nh sau: Code: Chn ht
<%! declaration %>

V d di y khai bo mt bin: Code: Chn ht


<%! String name = new String("BOB"); %>

V d di y khai bo mt phng thc: Code: Chn ht

<%! public String getName() { return name; } %>

hiu r hn v khai bo, chng ta hy ly khai bo bin trn nhng vo mt ti liu JSP:

Code: Chn ht
<HTML> <BODY> <%! String name = new String("BOB"); %> </BODY> </HTML>

Khi ti liu ny c np ln u tin, m JSP c chuyn thnh m servlet v khai bo name s c t trong phn khai bo ca servlet. Gi y, n c hiu lc vi tt c cc thnh phn JSP khc trong trang JSP. Ch rng, tt c cc khai bo JSP c nh ngha cp lp, trong servlet c sinh t trang JSP, v do , c nh gi trc cc biu thc v on kch bn JSP. Biu thc JSP Biu thc JSP l thnh phn JSP m nguyn bn ca n, da vo nh gi ca container, c thay bng kt qu nh gi. Biu thc JSP c nh gi ti thi im yu cu, v kt qu c chn ti v tr tham chiu trong trang JSP. Nu kt qu khng th c chuyn thnh chui, li thng dch s xut hin. Nu php chuyn i sang chui khng th c nhn bit trong lc dch, bit l ClassCastException s b nm ti thi im yu cu. C php ca mt biu thc JSP nh sau: Code: Chn ht
<%= expression %>

Dng m di y cha mt biu thc JSP: Code: Chn ht


Hello <B><%= getName() %></B>

Trang JSP di y cha mt biu thc JSP: Code: Chn ht

<HTML> <BODY> <%! public String getName() { return "Bob"; } %> Hello <B><%= getName() %></B> </BODY> </HTML>

on kch bn JSP on kch bn JSP l thnh phn JSP gom tt c cc phn t JSP li vi nhau. Chng c th cha hu nh bt k cu lnh hp l no i vi ngn ng c tham chiu trong c tnh language ca ch th page. Chng c thc thi ti thi im yu cu, v c th s dng tt c cc thnh phn JSP. C php ca mt on kch bn nh sau: Code: Chn ht

<% scriptlet source %>

Khi m kch bn JSP c chuyn sang m servlet, n c t trong phng thc service() ca servlet. on m sau l mt JSP n gin, n s dng mt phn t kch bn in cu Hello Bob ra trnh duyt client: Code: Chn ht
<HTML> <BODY> <% out.println("Hello Bob"); %> </BODY> </HTML>

Mc d m kch bn JSP c th rt mnh, nhng son tt c logic JSP bng m kch bn c th khin ng dng ca bn kh qun l. Vn ny dn n s ra i ca cc th vin th ty bin. C ch th l li ca JSP Ging nh cc phng php pht trin khc, JSP cng cn c mt c ch mnh th l li. Kin trc JSP cung cp mt gii php thng qua vic s dng cc trang JSP c vit ring th l li. Li thng xy ra nht l li thc thi (runtime error), chng c th pht sinh trong phn thn ca trang JSP hoc trong i tng no c gi t phn thn ca trang JSP. Cc li trong lc yu cu, dn n mt bit l b nm, c th c bt v th l trong phn thn ca trang JSP, bo hiu ht li. Cc bit l khng c th l trong trang JSP s chuyn yu cu ca client, bao gm bit l cha c bt, n mt trang li c ch nh bi trang JSP c li. To mt trang li JSP To mt trang li JSP rt n gin: to mt trang JSP thng thng ri bo vi b my JSP rng l mt trang li. Bn thc hin iu ny bng cch thit lp c tnh isErrorPage ca ch th page l true. Di y l mt trang li: V d To mt trang li JSPerrorpage.jsp Code: Chn ht
<html> <body> <%@ page isErrorPage="true" %> Error: <%= exception.getMessage() %> has been reported. </body> </html>

Dng m JSP th nht bo vi b my JSP rng y l trang li. Code: Chn ht


<%@ page isErrorPage="true" %>

Dng m JSP th hai s dng i tng ngm exception xut thng ip li cha trong bit l b nm.

S dng mt trang li JSP xem mt trang li lm vic th no, chng ta hy to mt trang JSP sao cho trang ny nm mt bit l cha c bt. Trang JSP di y s dng trang li c to trn: V d S dng mt trang li JSPtesterror.jsp Code: Chn ht
<%@ page errorPage="errorpage.jsp" %> <% if ( true ) { // Ch nm mt bit l throw new Exception("An uncaught Exception"); }

%>

Dng u tin trong on m ny thit lp c tnh errorPage ca ch th page l errorpage.jsp, y l tn ca trang li. Phn m cn li nm mt bit l (bit l ny s khng c bt). xem v d ny hot ng th no, chp cc trang JSP vo th mc <CATALINA_HOME>/ webapps/ch02/ v m trnh duyt theo a ch: Code: Chn ht
http://localhost:8080/ch02/testerror.jsp

Bn s thy trang tng t nh hnh di

Hnh: Kt qu ca testerror.jsp

Cc i tng ngm ca JSP Bn c th truy xut ngm n cc i tng sn dng trong tt c cc ti liu JSP. Cc i tng ny c phn tch bi b my JSP v c chn vo servlet nh th do chnh bn nh ngha. out i tng out i din cho mt JspWriter (c dn xut t java.io.Writer), cung cp mt lung chy v client. Phng thc ph bin nht ca i tng ny l out.println(), dng in vn bn s c hin th trong trnh duyt ca client. Di y l mt v d s dng i tng out: V d S dng i tng outout.jsp Code: Chn ht
<%@ page errorPage="errorpage.jsp" %> <html> <head> <title>Use Out</title> </head> <body> <% // In mt thng ip n gin bng i tng out out.println("<center><b>Hello Reader!</b></center>"); %> </body> </html>

thc thi v d ny, chp out.jsp vo th mc <CATALINA_HOME>/webapps/ch02/ v m trnh duyt theo a ch: Code: Chn ht
http://localhost:8080/ch02/out.jsp

Bn s thy trang tng t nh hnh di

Hnh Kt qu ca out.jsp request i tng request i din cho javax.servlet.http.HttpServletRequest, c kt hp vi mi yu cu HTTP. i tng ny thng c s dng truy xut cc tham s ca yu cu. Bn c th thc hin iu ny bng cch gi phng thc getParameter() vi tn tham s cn tm. N s tr v chui cha gi tr ca tham s . Di y l mt v d s dng i tng request: V d S dng i tng requestrequest.jsp Code: Chn ht

<%@ page errorPage="errorpage.jsp"

%>

<html> <head> <title>UseRequest</title> </head> <body> <% out.println("<b>Welcome: " + request.getParameter("user") + ''</b>"); %> </body> </html>

Trang JSP ny gi phng thc request.getParameter(), truyn cho n tham s user. Phng thc ny tm kha user trong danh sch tham s v tr v gi tr nu tm thy. thc thi v d ny, chp request.jsp vo th mc <CATALINA_HOME>/webapps/ch02/ v m trnh duyt theo a ch:

Code: Chn ht
http://localhost:8080/ch02/request.jsp?user=Robert

Bn s thy trang tng t nh hnh di

Hnh Kt qu ca request.jsp (cn tip)

Re: Tm hiu Java Struts


tuannq 23-04-2009, 00:24 response i tng response i din cho javax.servlet.http.HttpServletResponse, c s dng truyn d liu v client. Tuy vy, API (giao din lp trnh ng dng JSP) cung cp chc nng truy xut lung xut vi i tng out ( c m t trn). pageContext i tng pageContext cung cp chc nng truy xut n cc khng gian tn kt giao vi mt trang JSP. N cng cho php truy xut n cc i tng ngm JSP khc. i tng pageContext thng c s dng thit lp v thu ly cc i tng (vi phng thc setAttribute() v getAttribute()). session i tng session i din cho javax.servlet.http.HttpSession, c s dng lu tr cc i tng gia cc yu cu ca client. Do vy, n cung cp mt dng tng tc HTTP c trng thi

(stateful). Di y l mt v d s dng i tng session: V d S dng i tng sessionsession.jsp Code: Chn ht


<%@ page errorPage="errorpage.jsp" %> <html> <head> <title>Session Example</title> </head> <body> <% // Thu ly i tng count t HttpSession Integer count = (Integer)session.getAttribute("COUNT"); if ( count == null ) { // Nu khng tm thy i tng count th to mi count = new Integer(1); // v a n vo HttpSession session.setAttribute("COUNT", count); } else { // Tri li, tng gi tr ca count count = new Integer(count.intValue() + 1); session.setAttribute("COUNT", count); } out.println("<b>You have accessed this page: " + count + " times.</b>"); %> </body> </html>

xem v d ny hot ng th no, chp session.jsp vo th mc <CATALINA_HOME>/ch02/ v m trnh duyt theo a ch: Code: Chn ht
http://localhost:8080/ch02/session.jsp

Nhp vo nt Refresh vi ln thy bin count tng dn. Hnh di l kt qu ca session.jsp.

Hnh Kt qu ca session.jsp application i tng application i din cho javax.servlet.ServletContext ( c tho lun phn trc ca chng ny). i tng ny thng c s dng truy xut cc i tng c lu tr trong ServletContext (c dng chung gia cc thnh phn Web tm vc ton cc). y l ni tt nht chia s cc i tng gia cc trang JSP v servlet. config i tng config gi mt tham chiu n ServletConfig, cha thng tin cu hnh v b my JSP/Servlet (trang JSP thuc v mt ng dng Web nm trong b my ny). page i tng page cha mt tham chiu n th hin hin hnh ca trang JSP ang c truy xut. i tng page c s dng ging nh i tng thistham chiu n th hin hin hnh ca servlet i din cho JSP ny. exception i tng exception cho php truy xut n mt bit l cha c bt (bit l ny b nm bi mt trang JSP). N c hiu lc ch trong cc trang JSP vi mt trang trong c c tnh isErrorPage l true. Cc hnh ng chun ca JSP Cc hnh ng chun ca JSP c nh ngha trc trong cc th ty bin. C hai loi hnh ng chun: loi th nht lin quan n chc nng JavaBean, loi th hai bao gm tt c cc hnh ng chun khc. Chng ta s nh ngha v s dng mi loi trong cc phn sau.

C ba hnh ng chun lin quan n vic s dng JavaBean: <jsp:useBean>, <jsp:setProperty>, v <jsp:getProperty>. Sau khi nh ngha cc th ny, chng ta s to mt v d n gin. <jsp:useBean> Hnh ng chun <jsp:useBean> to ra hoc tm kim mt th hin ca JavaBean vi ID v tm vc cho trc. Bng 2.4 m t cc c tnh ca hnh ng <jsp:useBean>, v bng 2.5 nh ngha cc gi tr tm vc. Hnh ng <jsp:useBean> rt linh hot. Khi mt hnh ng <jsp:useBean> xy n, n s tm mt i tng vi ID v tm vc nh th. Nu khng tm thy, n s to mt i tng vi ID v lu i tng ny vo tm vc tng ng. C php ca hnh ng <jsp:useBean> nh sau: Code: Chn ht
<jsp:useBean id="name" scope="page|request|session|application" typeSpec>body</jsp:useBean> typeSpec ::=class="className" | class="className" type="typeName" | type="typeName" class="className" | beanName="beanName" type="typeName" | type="typeName" beanName="beanName" | type="typeName"

Bng Cc c tnh ca hnh ng chun <jsp:useBean> id Kha kt giao vi mt th hin ca i tng trong tm vc c ch nh. Kha ny c phn bit ch hoa thng. c tnh id c s dng trong phng thc page.getAttribute(). scope Tm vc ca i tng c tham chiu. Tm vc ny c th l: page, request, session, hay application. class Tn y ca lp nh ngha bn hin thc ca i tng. Tn lp c phn bit ch hoa thng. beanName Tn ca JavaBean. type Kiu bin kch bn c nh ngha. Nu c tnh ny khng c ch nh th gi tr ca n ging nh gi tr ca c tnh class. Bng Cc gi tr tm vc (scope) ca hnh ng chun <jsp:useBean> page

Cc bean vi tm vc page ch c truy xut trong trang m chng c to ra. Tt c cc tham chiu n mt i tng vi tm vc page s c gii phng khi trang JSP hin hnh hon tt vic nh gi. request Cc bean vi tm vc request ch c truy xut trong cc trang phc v cho yu cu m i tng c to trong . Tt c cc tham chiu n i tng s c gii phng khi yu cu hon tt. session Cc bean vi tm vc session ch c truy xut trong cc trang ang x l cc yu cu trong cng mt phin lm vic. Tt c cc tham chiu n cc bean vi tm vc session s c gii phng khi phin lm vic ca chng ht hiu lc. application Cc bean vi tm vc application ch c truy xut trong cc trang x l cc yu cu trong cng mt ng dng Web. Tt c cc tham chiu n cc bean vi tm vc application s c gii phng khi JSP/Servlet container b ng. <jsp:setProperty> Hnh ng chun <jsp:setProperty> thit lp gi tr cho mt thuc tnh ca bean. c tnh name ca n biu din mt i tng c nh ngha trong tm vc no . C php ca hnh ng <jsp:setProperty> nh sau: Code: Chn ht
<jsp:setProperty name="beanName" propexpr />

Trong c php trn, c tnh name biu din tn ca bean (bn cn thit lp thuc tnh ca bean ), v propexpr c th l mt trong cc biu thc sau: Code: Chn ht
property="*" | property="propertyName" | property="propertyName" param="parameterName" | property="propertyName" value="propertyValue"

Bng Cc c tnh ca hnh ng chun <jsp:setProperty> name Tn ca th hin bean c nh ngha bi mt hnh ng <jsp:useBean> hay hnh ng no khc. property Thuc tnh m bn mun thit lp gi tr. Nu bn thit lp propertyName l du * th hnh ng s duyt qua cc tham s ca ServletRequest hin hnh, so trng tn tham s (cng kiu

gi tr) vi tn thuc tnh (cng kiu phng thc thit lp thuc tnh), v gn gi tr ca tham s vo mi thuc tnh trng khp. Nu mt tham s c gi tr l chui rng th thuc tnh tng ng s gi nguyn. param Tn ca tham s yu cu, gi tr ca tham s ny s l gi tr ca thuc tnh. Hnh ng <jsp:setProperty> khng th cha ng thi c tnh param v value. value Gi tr c gn cho thuc tnh. <jsp:getProperty> Hnh ng chun cui cng lin quan n vic tch hp JavaBean vo JSP l <jsp:getProperty>. N ly gi tr thuc tnh ca th hin bean c tham chiu, chuyn thnh java.lang.String v t vo lung xut. Th hin bean phi c nh ngha trong tm vc no trc khi hnh ng ny c th c s dng. C php ca hnh ng <jsp:getProperty> nh sau: Code: Chn ht
<jsp:getProperty name="name" property="propertyName" />

Bng m t cc c tnh ca hnh ng <jsp:getProperty>. name Tn ca th hin bean c nh ngha bi mt hnh ng <jsp:useBean> hay hnh ng no khc. property Thuc tnh m bn mun ly gi tr. Mt v d v hnh ng chun JavaBean bit cch s dng cc hnh ng chun JavaBean, chng ta s to mt v d. V d ny s dng mt JavaBean n gin, ng vai tr l mt b m. Bean Counter c thuc tnh count (kiu int) cha s ln thuc tnh ny c truy xut. Bean ny cng c cc phng thc ly v thit lp gi tr cho thuc tnh count. Di y l m ngun ca bean Counter: V d Counter.java Code: Chn ht

package ch02; public class Counter { int count = 0; public Counter() { }

public int getCount() { count++; return count; } public void setCount(int count) { this.count = count; } }

Chng ta s tch hp JavaBean ny vo mt trang JSP bng cch s dng cc hnh ng chun JavaBean. Di y l trang JSP s dng bean Counter: V d Trang JSP s dng bean Countercounter.jsp Code: Chn ht
<%@ page language="java" %> <HTML> <HEAD> <TITLE>Bean Example</TITLE> </HEAD> <BODY> <!-- To mt th hin ca Counter vi id l "counter" --> <jsp:useBean id="counter" scope="session" class="ch02.Counter" /> <% // Xut gi tr hin ti ca thuc tnh count out.println("Count from scriptlet code : " + counter.getCount() + "<BR>"); %> <!-- Thu ly thuc tnh count ca bean, --> <!-- s dng hnh ng jsp:getProperty --> Count from jsp:getProperty : <jsp:getProperty name="counter" property="count" /><BR> </BODY> </HTML>

Trang counter.jsp c bn thnh phn JSP. Thnh phn th nht bo vi JSP container rng ngn ng kch bn l Java: Code: Chn ht
<%@ page language="java" %>

Bc tip theo s dng hnh ng chun <jsp:useBean> to mt th hin ca lp Counter vi tm vc l session v ID l counter. Gi y, bn c th tham chiu bean ny bng tn counter trong sut phn cn li ca trang JSP. Dng m to bean nh sau: Code: Chn ht
<jsp:useBean id="counter" scope="session" class="ch02.Counter" />

Hai hnh ng cui cng trnh by cch ly gi tr hin hnh ca mt thuc tnh. Hnh ng th nht s dng mt on kch bn truy xut thuc tnh. N truy xut bean thng qua ID (counter) v gi phng thc getCount(). on kch bn nh sau: Code: Chn ht
<% // Xut gi tr hin ti ca thuc tnh count out.println("Count from scriptlet code : " + counter.getCount() + "<BR>");

%>

Hnh ng th hai s dng hnh ng chun <jsp:getProperty> vi ID ca bean v thuc tnh cn c truy xut. Hnh ng ny s gi phng thc truy xut thch hp v nhng kt qu vo trang HTML: Code: Chn ht
<!-- Thu ly thuc tnh count ca bean --> <!-- s dng hnh ng jsp:getProperty --> Count from jsp:getProperty : <jsp:getProperty name="counter" property="count" /><BR>

Khi bn thc thi counter.jsp, tham chiu th hai n thuc tnh count cho kt qu ln hn 1 so vi tham chiu th nht. l v c hai u truy xut n thuc tnh count, khin phng thc getCount() c gi, v phng thc ny lm tng gi tr ca count. xem trang JSP ny hot ng th no, bn hy bin dch lp Counter, chuyn n vo th mc <CATALINA_HOME>/ch02/WEB-INF/classes/ch02/, v chp file counter.jsp vo th mc <CATALINA_HOME>/ch02/. Sau , m trnh duyt theo a ch: Code: Chn ht
http://localhost:8080/ch02/counter.jsp

Bn s thy trang tng t nh hnh di Hnh Kt qu ca counter.jsp (Cn tip)

Re: Tm hiu Java Struts


tuannq 09-06-2009, 16:21 Cc hnh ng chun cn li c s dng cho cc tc v chung, t hnh ng tham s n hnh ng plug-in. Cc hnh ng ny s c m t trong cc phn tip theo. <jsp:param>

Hnh ng <jsp:param> cung cp tham s v gi tr cho cc hnh ng JSP chun: <jsp:include>, <jsp:forward>, v <jsp:plugin>. C php ca hnh ng <jsp:param> nh sau: Code: Chn ht
<jsp:param name="name" value="value"/>

Bng m t cc c tnh ca hnh ng <jsp:param>. name Tn ca tham s ang c tham chiu. value Gi tr ca tham s. <jsp:include> Hnh ng chun <jsp:include> cung cp mt phng cch a thm cc thnh phn Web tnh v ng vo trang JSP. C php ca hnh ng <jsp:include> nh sau: Code: Chn ht
<jsp:include page="urlSpec" flush="true"> <jsp:param ... /> </jsp:include>

Bng Cc c tnh ca hnh ng <jsp:include> page URL tng i ca ti nguyn c a vo. flush Mt gi tr kiu Boolean, cho bit vng m (buffer) c c flush hay khng. Mt iu quan trng cn lu tm l s khc bit gia ch th include v hnh ng chun <jsp:include>. Ch th include ch c nh gi mt ln duy nht lc dch, trong khi hnh ng chun <jsp:include> c nh gi vi mi yu cu. Di y l mt v d v hnh ng chun <jsp:include>: V d include.jsp Code: Chn ht
<html> <head> <title>Include Example</title> </head> <body> <table width="100%" cellspacing="0"> <tr> <td align="left"> <jsp:include page="header.jsp" flush="true"> <jsp:param name="user" value='<%= request.getParameter("user") %>' /> </jsp:include> </td>

</tr> </table> </body> </html>

V d header.jsp Code: Chn ht


<% %> out.println("<b>Welcome: </b>" + request.getParameter("user"));

Hnh ng <jsp:include> trong trang include.jsp s a kt qu ca vic nh gi header.jsp vo include.jsp. Trang header.jsp tm mt tham s vi tn l user v in ra li cho. xem v d ny hot ng th ny, bn hy chp hai file JSP trn vo th mc <CATALINA_HOME>/webapps/ch02/ v m trnh duyt theo a ch: http://localhost:8080/ch02/include.jsp?user=Bob Bn s thy trang tng t nh hnh di

Kt qu ca include.jsp <jsp:forward> Hnh ng chun <jsp:forward> cho php b my JSP gi yu cu hin hnh n mt ti nguyn khc ang tn ti trong ng dng Web hin hnh, bao gm cc ti nguyn tnh, servlet, hay JSP. S hin din ca <jsp:forward> thc s chm dt qu trnh thc thi ca trang JSP hin hnh. Mt hnh ng <jsp:forward> c th cha cc c tnh con <jsp:param>. Cc c tnh con ny ng vai tr l cc tham s c chuyn n ti nguyn ch.

C php ca hnh ng <jsp:forward> nh sau: Code: Chn ht


<jsp:forward page="relativeURL"> <jsp:param .../> </jsp:forward>

Bng m t c tnh ca hnh ng <jsp:forward>. page URL tng i ca ti nguyn ch. V d di l mt trang JSP s dng hnh ng <jsp:forward>. V d ny kim tra mt tham s yu cu v chuyn yu cu n mt trong hai trang JSP khc da vo gi tr ca tham s. V d forward.jsp Code: Chn ht

<html> <head> <title>JSP Forward Example</title> </head> <body> <% if ( (request.getParameter("role")).equals("manager") ) { %> <jsp:forward page="management.jsp" /> <% } else { %> <jsp:forward page="welcome.jsp"> <jsp:param name="user" value='<%=request.getParameter("user") %>' /> </jsp:forward> <% } %> </body> </html>

Trang forward.jsp kim tra tham s role v chuyn yu cu, cng cc tham s yu cu, n trang JSP ph hp da vo gi tr ny. 2 v d di l cc ti nguyn ch. V d welcome.jsp Code: Chn ht

<!-- Thit lp ngn ng kch bn l Java --> <%@ page language="java" %> <HTML> <HEAD>

<TITLE>Welcome Home</TITLE> </HEAD> <BODY> <table> <tr> <td> Welcome User: <%= request.getParameter("user") %> </td> </tr> </table> ...

V d management.jsp Code: Chn ht

<!-- Thit lp ngn ng kch bn l Java --> <%@ page language="java" %> <HTML> <HEAD> <TITLE>Management Console</TITLE> </HEAD> <BODY> <table> <tr> <td> Welcome Manager: <%= request.getParameter("user") %> </td> </tr> </table> ...

xem kt qu, bn chp ba file JSP trn vo th mc <CATALINA_HOME>/webapps/ch02/ v m trnh duyt theo a ch: http://localhost:8080/ch02/forward.jsp? ... r&user=Bob Bn s thy kt qu tng t hnh di.

Kt qu ca forward.jsp Bn cng c th i gi tr ca tham s role l manager i trang ch. <jsp:plugin> Hnh ng chun cui cng m chng ta tho lun l <jsp:plugin>. Hnh ng ny cho php bn sinh m HTML cn thit, s dng cc cu trc c-lp-trnh-duyt ph hp, dn n vic thc thi thnh phn JavaBean hay applet c ch nh. Khi c nh gi, th <jsp:plugin> c thay bng th <object> hay th <embed>. Cc c tnh ca hnh ng <jsp:plugin> cung cp d liu cu hnh cho vic trnh by phn t c nhng. C php ca hnh ng <jsp:plugin> nh sau: Code: Chn ht
<jsp:plugin type="pluginType" code="classFile" codebase="relativeURLpath"> <jsp:params> ... </jsp:params> </jsp:plugin>

Th <jsp:params> c s dng cung cp tham s cho plug-in. Cc c tnh ca hnh ng <jsp:plugin> type Loi plug-in thm vo (applet chng hn). code Tn lp s c thc thi bi plug-in. codebase ng dn m c tnh code c th c tm thy .

You might also like