Professional Documents
Culture Documents
# HttpServletResp"nse inter!ace:.................................................................................$ Servlet%"n!i& inter!ace..............................................................................................$ Servlet%"ntext...........................................................................................................' M(t v) * v+ ,- l.n/ l0n& n&/e s1 2i.n 3listener4....................................................5 Req est6ispatc/er.....................................................................................................5 Err"r l"& v7 sen* err"r.............................................................................................18 Sessi"n Trac2in& 9 L: *; sessi"n........................................................................18 Sec rit< %"n!i& rati"n............................................................................................15 =pplet......................................................................................................................15 >S? @ >ava Server ?a&es...........................................................................................A8 GiBi t/i. v+ >S?.....................................................................................................A8 Expresssi"n 3CiD t/Ec4...........................................................................................A8 Scriptlets..................................................................................................................A8
6eclarati"ns.............................................................................................................A1 %",,ents................................................................................................................A1 6irectives.................................................................................................................A1 =cti"n......................................................................................................................AA >S? EL Expressi"ns ................................................................................................A5 >STL @ >ava Server ?a&es Stan*ar* Ta& LiCrar<...................................................A# G1'F 9 Gnternati"nalisati"n 3q Hc tI /Ja4 ..............................................................34 >S? c st", ta&s.......................................................................................................3' ?/ lc.....................................................................................................................4' KIt nHi cL sM *N li. ...............................................................................................#5
SERVLET javax.servlet.Servlet
Ta cJ t/D tO" ,(t servlet CPn& cQc/ implements tR inter!ace javax.servlet.Servlet. V) *:
package com.test.servlet; import java.io.IOException; import java.io.PrintWriter; import import import import javax.servlet.ServletConfig; javax.servlet.ServletException; javax.servlet.ServletRequest; javax.servlet.ServletResponse;
public class Servlet1 implements javax.servlet.Servlet public void !estro"#$ % public ServletConfig getServletConfig#$ return null; % public String getServletInfo#$ return null; % public void init#ServletConfig config$ throws ServletException % public void service#ServletRequest req& ServletResponse res$ throws ServletException& IOException PrintWriter out ' res.getWriter#$; out.println#()a" la servlet implements tu javax.servlet.Servlet($; % %
SD cJ t/D c/O< ,(t servlet ta cTn cQc C:Bc sa : 14 TO" !ile Servlet1.java vBi n(i * n& n/: trUn v7 VWt tr"n& pac2a&e
com.test.servlet
GenericServlet:
ZPn& cQc/ triDn 2/ai servlet n/: trUn t/[ ,\i vi.c V+ ]n n/:n& cJ A v;n V+ 2/J c/^ l7: 14 F/: ta t/;< M !ile Servlet1 M V6 trUn l _n cJ 5 p/:Ln& t/Ec l7
public public public public public void !estro"#$ ServletConfig getServletConfig#$ String getServletInfo#$ void init#ServletConfig config$ void service#ServletRequest req& ServletResponse res$
c`a inter!ace javax.servlet.Servlet C0t C (c p/ai V:bc triDn 2/ai ,Wc *c p/Tn lBn ta c/d se *n& 1 p/:Ln& t/Ec 3cQc p/:Ln& t/Ec 2/Qc VD trHn& 9 2" l7, &[ ca4. A4 FI ta , Hn l: &iN &iQ tr^ c`a Servlet%"n!i& t/[ ta p/ai 2/ai CQ" v7 l: &iQ tr^ c`a nJ t/"n& q a p/:Ln& t/Ec init34 n/: CUn *:Bi. Si+ n7< 2/_n& 2/J n/:n& tr"n& tr:fn& /bp n7< lOi t/U, ,(t C:Bc p/ai t/1c /i.n.
ServletConfig servletConfig; public void init#ServletConfig config$ throws ServletException servletConfig ' config; %
Si+ n7< V:bc &iai q <It CPn& cQc/ 2I t/Ra tR GenericServlet. Generic class Vt/1c t/i t;t ca cQc p/:Ln& t/Ecg /T /It l7 VD trHn&. Servlet%"n!i& V:bc t/1c /i.n CPn& cQc/ &\i getServletConfig() tr"n& service();. V7 &if Vh< 2/i ta tO" servlet 2I t/Ra tR lBp n7< si tr_n& VLn &ian v7 sQn& s`a /Ln n/i+ :
package com.test.servlet; import javax.servlet..; import java.io.IOException; import java.io.PrintWriter; public class Servlet1 extends javax.servlet./enericServlet
public void service#ServletRequest request& ServletResponse response$ throws ServletException& IOException PrintWriter out ' response.getWriter#$; out.println#()a" la servlet exten!s tu javax.servlet./enericServlet($; % %
HttpServlet
S:bc exten*s 32I t/Ra4 tR javax.servlet.GenericServlet v7 t/U, v7" ,(t sH cQc p/:Ln& t/Ec. j an tr\n& n/;t l7 # ,et/"* *"xxx V:bc &\i 2/i Http req est V:bc se *n& VJ l7: *"?"st34g doGet()g *"Trace34g *"kpti"n34g doDelete(). Tr"n& C7i n7< ta c/d c/l tr\n& v7" *"Get34 v7 *"?"st34m
package com.test.servlet; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.0ttp.1ttpServletRequest; import javax.servlet.0ttp.1ttpServletResponse; public class Servlet2 extends javax.servlet.0ttp.1ttpServlet public void !o/et#1ttpServletRequest request& 1ttpServletResponse response$ throws ServletException& IOException PrintWriter out ' response.getWriter#$; out.println#()a" la servlet exten!s tu javax.servlet.0ttp.1ttpServlet($; % %
*"?"st34 V:bc &\i 2/i ,et/"* V:bc VWt tr"n& !"r, l7 ?kST v7 *"Get 2/i ,et/"* n GET. MWc V^n/ *"Get34 si V:bc &\i. V6: opkRM METHk6n?kSTq
t
1"Wc
ta cJ t/D l;< V^a c/d G? c`a ser n p/:Ln& t/Ec &etRe,"te=**ressg tUn ,Q< n p/:Ln& t/Ec &etRe,"teH"st. Ta cJ t/D xe, v7 c/O< t/e t;t ca cQc p/:Ln& t/Ec c`a ServletReq est tr"n& Can& *an/ ,c cQc p/:Ln& t/Ec c`a ServletReq est M c Hi t7i li. n7<: V6A: L;< V^a c/d ,Q< c`a ser
out.println#(9serRemote1ost6( 7 request.getRemote1ost#$$;
ServletResponse inter"ace
?/:Ln& t/Ec q an tr\n& n/;t l7 java.i".?rinturiterg vBi VHi t:bn& n7< COn cJ t/D in ra cQc t/v HTML /"Wc *N li. *On& text lUn tr[n/ * <.t. V6:
PrintWriter out ' response.getWriter#$;
HttpServletResponse inter"ace:
KI t/Ra tR ServletResp"nse inter!ace VD c n& c;p cQc c/Ec n|n& VWc ta c`a HTT? servlet tr"n& vi.c &ei resp"nse. V) V cQc p/:Ln& t/Ec tr < csp HTT? /ea*ers v7 c""2ies. Tt c cc phng thc ca interface ny c lit k trong phn ph lc
Servlet#on"i$ inter"ace
S:bc se *n& CMi servlet c"ntainer VD tr <+n t/_n& tin tBi servlet tr"n& 2/i 2/Mi tO". V6: Se *n& Servlet%"ntext VD V\c cQc t/a, sH 2/Mi tO" c`a servlet. 14 %Qc t/a, sH n7< V:bc 2/ai CQ" tr"n& XeC.x,l n/: sa :
*4e:,app+ .;;. *servlet+ *servlet,name+Serv1*-servlet,name+ *servlet,class+com.test.servlet.Servlet1*-servlet,class+ *init,param+ *param,name+a!minEmail*-param,name+ *param,value+a!min<aptec0.com*-param,value+ *-init,param+ *init,param+ *param,name+a!minContact3um:er*-param,name+ *param,value+=>2?@AB12AB*-param,value+ *-init,param+ *-servlet+ ;;;;
public class Servlet2 extends javax.servlet.0ttp.1ttpServlet public void !o/et#1ttpServletRequest request& 1ttpServletResponse response$ throws ServletException& IOException PrintWriter out ' response.getWriter#$;
ServletConfig sc ' getServletConfig#$; Enumeration parameters ' sc.getInitParameter3ames#$; int count ' =; while #parameters.0as5oreElements#$$ count77; String parameter ' #String$ parameters.nextElement#$; out.println#(Para name6 ( 7 parameter 7( value6 ( 7 sc.getInitParameter#parameter$$; % if #count '' =$ out.println#(Co co parameter nao !uoc cai !at trong 4e:.xml cua servlet6 ( 7 sc.getServlet3ame#$$; % %
Servlet#ontext
S^n/ n&/}a tsp /bp cQc p/:Ln& t/Ec ,7 ,(t servlet se *n& VD &ia" tiIp vBi Servlet %"ntainer. V6: set=ttriC te c/" p/rp &\i t/ (c t)n/ n7< M t;t ca cQc servlet tr"n& ccn& ,(t c"ntext
package com.test.servlet; import import import import import javax.servlet..; javax.servlet.0ttp.1ttpServlet; java.util.Enumeration; java.io.IOException; java.io.PrintWriter;
public class Servlet1 extends 1ttpServlet public void service#ServletRequest request& ServletResponse response$ throws ServletException& IOException PrintWriter out ' response.getWriter#$; ServletContext servletContext ' getServletConfig#$.getServletContext#$; Enumeration attri:utes ' servletContext.getDttri:ute3ames#$; while #attri:utes.0as5oreElements#$$ String attri:ute ' #String$ attri:utes.nextElement#$; out.println#(Dttri:ute3ame6 ( 7 attri:ute$; out.println#(Dttri:ute8alue6 (7 servletContext.getDttri:ute#attri:ute$$; % out.println#(5ajor8ersion6 (7 servletContext.get5ajor8ersion#$$; out.println#(5inor8ersion6 (7 servletContext.get5inor8ersion#$$; out.println#(Server info 6 ( 7 servletContext.getServerInfo#$$; % %
Re !estDispatc+er
G, A p/:Ln& t/Ec l7 incl *e 3VD l;< n(i * n& c`a ,(t tran& 2/Qc v7" servlet /i.n t/fi. ?/:Ln& t/Ec !"rXar* VD c/ <Dn VIn 1 {RL 2/Qc. ZOn cJ t/D l;< Req est6ispatc/er t/e" 1 tr"n& 3 cQc/ sa :
Se *n& p/:Ln& t/Ec getRequestDispatcher c`a javax.servlet.ServletContext inter!aceg t/a, sH tr <+n v7" l7 c/ ~i c/Ea V:fn& *n tBi t7i n& <Un 2/Qc. S:fn& *n l7 V:fn& *n t:Ln& VHi vBi &Hc c`a Servlet#ontext. Se *n& p/:Ln& t/Ec getRequestDispatcher c`a javax.servlet.ServletRequest inter!aceg t/a, sH tr <+n v7" l7 c/ ~i c/Ea V:fn& *n tBi t7i n& <Un 2/Qc. S:fn& *n l7 t:Ln& VHi
vBi HTT? req est /i.n /7n/. S:fn& *n cJ t/D l7 t:Ln& VHi n/:n& nJ 2" t/D ,M r(n& ra n&"7i servlet c"ntext /i.n /7n/.
Se *n& p/:Ln& t/Ec getNamedDispatcher c`a javax.servlet.ServletContext inter!aceg t/a, sH tr <+n v7" l7 c/ ~i c/Ea tUn c`a t7i n& <Un 2/Qc 3V6: tUn 1 servlet V:bc V^n/ n&/}a tr"n& XeC.x,l4.
!" khc #it gi$a % phng thc ny l &a'a( )er'let *onte(t get+e,-e)t.i)patcher/0 c1 th2 34ng 5ng 36n tng 7i
3RL Re4rittin$:
V6: Http:YYl"cal/"st:'8'8Y6e,"YtestxnaCc<nx< ?/Tn sa xnaCc<nx< l7 p/Tn V:bc t/U, v7" VD tr <+n A para,eter x v7 < SD l;< &iQ tr^ n7< ta *cn& l.n/ re !est.$et5arameter(6x7)g t:Ln& t1 vBi <.
Hidden "ields:
oGF?{T T?EnHG66EF Fa,en/piel* V=L{EnwaCczq SD l;< &iQ tr^ n7< ta *cn& l.n/ re !est.$et5arameter(6+8ield7).
#oo.ies:
%""2ie V:bc l: CMi server v7 &ei v+ client ccn& resp"nse. Req est V:bc &ei tBi server ccn& vBi c""2ie n/:n& 2" t/a< V]i &iQ tr^ c`a c""2ie. GiQ tr^ c`a c""2ie V:bc l: tr"n& C( n/B 3] cEn& 4 c`a client. V61: l: c""2ie 3se *n& resp"nse4
CooGie c1 ' new CooGie#(user3ame(& (1elen($; CooGie c2 ' new CooGie#(pass4or!(& (Ceppler($; c2.set5axDge#A==$; response.a!!CooGie#c1$; response.a!!CooGie#c2$;
%""2ie V:bc c/ia l7, A l"Oi l7 c""2ie C^ xJa n&a< sa 2/i VJn& tr[n/ * <.t. L"Oi t/E A &\i l7 persistin& c""2iesg l"Oi l7 cA tr"n& v) * trUn. Ta se *n& setMaxa&e3int4 VD VWt t ]i t/e" &ih< c/" c""2ie. V6A: S\c &iQ tr^ c`a c""2ies:
CooGieHI cooGies ' request.getCooGies#$; for #int i ' =; i * cooGies.lengt0; i77$ CooGie cooGie ' cooGiesHiI; out.println#(3ame,+( 7 cooGie.get3ame#$ 7 ( 8alue,+( 7 cooGie.get8alue#$$; %
Session o9jects:
1ttpSession session ' request.getSession#true$; session.setDttri:ute#(logge!In(& ne4 String#(true($$;
V[ cJ p/O, vi 3sc"pe4 l7 sesi"n nUn &iQ tr^ n7< cJ t/D V:bc V\c CMi cQc servlet 3/"Wc >S?4 2/Qc.
HttpServletReq est v7 HttpServletResp"nse tr:Bc 2/i c/ln& V:bc c/ <Dn VIn 1 servlet. pilter cJ t/D r;t V0c *n&. V) *g COn cJ t/D viIt 1 !ilter VD l: t;t ca cQc req est V:bc &ei VIn v7 l"& V^a c/d G? c`a cQc ,Q< &ei req est. ZOn cn& cJ t/D se *n& !ilter n/: ,(t p/:Ln& ti.n VD ,- /Ja v7 &iai ,-. %n& cJ t/D *cn& VD xQc t/1c serg nrn *N li. g xQc t/1c *N li. ..vv... K/i viIt 1 !ilterg v+ cL Can COn si l7, vi.c vBi 3 inter!ace tr"n& pac2a&e javax.servlet: 14 pilter A4 pilter%"n!i& 34 pilter %/ain
Filter interface
Vn& Vfi 3li!e circle c`a 1 !ilter &, 3 ,et/"*4: 14 p Clic v"i* init3pilter%"n!i& !ilter%"n!i&4 A4 p Clic v"i* *"pilter3HttpServletReq est req estg HttpServletResp"nse
resp"nseg pilter%/ain c/ain4
34 p Clic v"i* *estr"<34 V) *1: Tr"n& v) * n7< si *e," vn& Vfi c`a !ilter: TestFilter.java
import import import import import import import import import import import import java.io..; java.net..; java.util..; java.text..; javax.servlet..; javax.servlet.0ttp..; javax.servlet.Jilter; javax.servlet.JilterC0ain; javax.servlet.JilterConfig; javax.servlet.ServletException; javax.servlet.ServletRequest; javax.servlet.ServletResponse;
private JilterConfig filterConfig ' null; public FestJilter#$ % public void !oJilter#ServletRequest request& ServletResponse response& JilterC0ain c0ain$ throws IOException& ServletException S"stem.out.printlnF0is is !oJilter($; --In ra 2 parameter cKa filter S"stem.out.println#(Init p16( 7 filterConfig.getInitParameter#(p1($$; S"stem.out.println#(Init p26( 7 filterConfig.getInitParameter#(p2($$; --EL" giM trN cKa parameter para1 OP sQa vR lSu vRo attri:ute att1 String para1 ' request.getParameter#(para1($; request.setDttri:ute#(att1(& para1 7 (,xxxT($; c0ain.!oJilter#request& response$; % public void setJilterConfig#JilterConfig filterConfig$ this.filterConfig ' filterConfig; % public void !estro"#$ S"stem.out.println#(F0is is !estro"($; % public void init#JilterConfig filterConfig$ % % S"stem.out.println#(FestJilter6 InitialiUing filter($;
We .xml %J A cQc/ t/iIt lsp ,appin& !ilter vBi servlet 14 T/e" tUn servlet 3kh8ng c1 3- 9:;4
*filter,mapping+ *filter,name+FestJilter*-filter,name+ *servlet,name+Jiltere!Servlet*-servlet,name+ *-filter,mapping+
*Vxml version'(1.=( enco!ing'(9FJ,@(V+ *4e:,app version'(2.W( xmlns'(0ttp6--java.sun.com-xml-ns-javaee( xmlns6xsi'(0ttp6--444.4A.org-2==1-X5ESc0ema,instance( xsi6sc0emaEocation'(0ttp6--java.sun.com-xml-ns-javaee 0ttp6--java.sun.com-xml-ns-javaee-4e:,appY2YW.xs!(+ *filter+ *filter,name+FestJilter*-filter,name+ *filter,class+com.aptec0.filter.FestJilter*-filter,class+ *init,param+ *param,name+p1*-param,name+ *param,value+v1*-param,value+ *-init,param+ *init,param+ *param,name+p2*-param,name+ *param,value+v2*-param,value+ *-init,param+ *-filter+ *filter,mapping+ *filter,name+FestJilter*-filter,name+ *servlet,name+-Jiltere!Servlet*-servlet,name+ *-filter,mapping+ *servlet+ *servlet,name+Jiltere!Servlet*-servlet,name+ *servlet,class+ com.aptec0.servlet.Jiltere!Servlet *-servlet,class+ *-servlet+ *servlet,mapping+ *servlet,name+Jiltere!Servlet*-servlet,name+ *url,pattern+-Jiltere!Servlet*-url,pattern+ *-servlet,mapping+ *-4e:,app+
Servlet
package com.aptec0.servlet; import import import import java.io..; java.net..; javax.servlet..; javax.servlet.0ttp..;
public class Jiltere!Servlet extends 1ttpServlet protected void !o/et#1ttpServletRequest request& 1ttpServletResponse response$ throws ServletException& IOException response.setContentF"pe#(text-0tml;c0arset'9FJ,@($; PrintWriter out ' response.getWriter#$; out.println#(Zefore6[( 7 request.getParameter#(para1($ 7([*ZR+($; out.println#(Dfter6[( 7 request.getDttri:ute#(att1($ 7([*ZR+($; % %
FilterConfig interface
Za" &, cQc p/:Ln& t/Ec: 14 &etpilterFa,e: Tra v+ tUn c`a !ilter A4 &etGnit?ara,eter3Strin&4: tra v+ &iQ tr^ c`a para, t:Ln& En& c`a para@na,e.
*init,param+ *param,name+p1*-param,name+ *param,value+v1*-param,value+ *-init,param+
34 &etGnit?ara,eterFa,es34: tra v+ tsp &iQ tr^ c`a tUn t/a, sH 2/Mi tO" c`a !ilter. 6N li. tra v+ l7 En ,erati"n c`a Strin&. 44 &etServlet%"ntext34: tra v+ t/a, c/iI tBi Servlet%"ntext c`a !ilter.
FilterChain interface
%J t/D se *n& n/i+ /Ln 1 !ilter. V6: A !ilter pilter v7 pilter1 Qp *n& c/" ccn& 1 servlet piltere*Servlet.
*filter,mapping+ *filter,name+Jilter*-filter,name+ *servlet,name+Jiltere!Servlet*-servlet,name+ *-filter,mapping+ *filter,mapping+ *filter,name+Jilter1*-filter,name+ *servlet,name+Jiltere!Servlet*-servlet,name+ *-filter,mapping+
Sec!rit: #on"i$!ration
We .xml
*securit",constraint+ *4e:,resource,collection+ *4e:,resource,name+ Restricte! Drea *-4e:,resource,name+ *url,pattern+-.*-url,pattern+ *-4e:,resource,collection+ *aut0,constraint+ *role,name+manager*-role,name+ *-aut0,constraint+ *-securit",constraint+
D=GEST
*login,config+ *aut0,met0o!+)I/ESF*-aut0,met0o!+ *-login,config+
8>R%
We .xml
*login,config+ *aut0,met0o!+JOR5*-aut0,met0o!+ *form,login,config+ *form,login,page+-Eogin.jsp*-form,login,page+ *form,error,page+-Error.jsp*-form,error,page+ *-form,login,config+ *-login,config+
!ogin.jsp
,et/"* c`a !"r, p/ai l7 5>ST. GiQ tr^ c`a =%TGkF attriC te p/ai l7 wj?sec!rit:?c+ec.w. p"r, p/ai cJ A textC"x l7 j?!sername v7 j?pass4ord.
*1F5E+ *1ED)+ *FIFEE+Eogin Page*-FIFEE+ *-1ED)+ *ZO)\+ *CE3FER+ *12+ Please enter "our user name an! pass4or! *-12+ *JOR5 DCFIO3'(jYsecurit"Yc0ecG( 5EF1O)'(POSF(+ *FDZEE+
*FR+
*-FR+ *FR+
*-F)+ *F)+ *-F)+ *F)+ *-F)+ *-FR+ *-FDZEE+ *-JOR5+ *I3P9F F\PE'S9Z5IF 8DE9E'(Eogin(+
*I3P9F F\PE'RESEF+
*-ZO)\+ *-1F5E+
"rror.jsp
*1F5E+ *FIFEE+Error Page*-FIFEE+ *-1ED)+ *ZO)\+ Eogin faile!. ClicG *D 1REJ'(*]'request.getContextPat0#$]+-Eogin.jsp(+0ere*-D+ to tr" again. *-ZO)\+ *-1F5E+ *1ED)+
T#o $e%store
Ke<st"re c/Ea cQc c/i tiIt v+ %erti!icates cTn t/iIt VD &ia" t/Ec V:bc Ca" ,st. Se *n& c",,an* Xin*"X v7 t/1c /i.n l.n/: keytool >genkey >alia) &e%'lias >keypa)) cert(ass >key)tore c)*testCertificate >)torepa)) cert(ass *h? @A ph+n in ,-m #n c. th/ tha% ,0i t1% 2 nh3ng 4&e%pass v5 4storepass ph6i c. gi7 tr8 gi9ng nhau
We .xml
*securit",constraint+ *4e:,resource,collection+ *4e:,resource,name+secure!app*-4e:,resource,name+ *url,pattern+-.*-url,pattern+ *-4e:,resource,collection+ *user,!ata,constraint+ *transport,guarantee+CO3JI)E3FIDE*-transport,guarantee+ *-user,!ata,constraint+ *-securit",constraint+
<pplet
Test'pplet.java
i,p"rt java.applet.m i,p"rt java.aXt.m p Clic class Test=pplet exten*s =pplet p Clic v"i* paint3Grap/ics &4 &.*raXStrin&3wuelc",e in >ava =pplet.wg 48g A84m t p Clic int ,<Met/"*3int a4 ret rn 35 a4m t t
Test'pplet.html
*1F5E+ *1ED)+*title+Dpplet In _sp*-title+ *SCRIPF+ function a!!#$ var result ' !ocument.appletsH=I.m"5et0o!#(A($; alert#(F0e sum is ( 7 result$; % *-SCRIPF+ *-1ED)+ *ZO)\+ *DPPEEF CO)E ' (FestDpplet.class( 3D5E ' (FestDpplet( WI)F1 ' 2== 1EI/1F ' W= 1SPDCE ' = 8SPDCE ' = DEI/3 ' mi!!le + *-DPPEEF+ *I3P9F F\PE'Z9FFO3 onClicG'[a!!#$;[ 8DE9E'(Run Dpplet[s 5et0o! (+ *-ZO)\+ *-1F5E+
Min 3Nch Te)tCpplet &a'a thnh te)tapplet cla)) ' a 'o c4ng th- =c 'Oi Te)tCpplet ht=l /*hPn Te)tCpplet &a'a pre)) QR0
Scriptlets
o Strin& an yaCczm Gnt i n 8m " t.println3yT/is is scriptlets sa,plez4m q
Declarations
6eclarati"ns c/" p/rp COn V^n/ n&/}a cQc ,et/"* v7 CiIn ,7 COn cJ t/D se *n& M C;t cE Vh tr"n& tran& jsp.
*]<page import'(java.util.Calen!ar(]+ *]` String getS"stemFime#$ return Calen!ar.getInstance#$.getFime#$.toString#$; % ]+ *] ]+ out.println#(Current Fime6 ( 7 getS"stemFime#$$;
#omments
Server si*e: o@@ @@q %lient si*e: o@@ @@q
Directives
6irectives l7 c/d *n tBi >S? c"ntainer c/Ea t/_n& tin c/d *n >S? c"ntainer p/ai CiUn *^c/ >S? t/7n/ servlet t:Ln& En&.
<ttri9!te lan& a&e in!" exten*s i,p"rt C !!er a t"pl s/ sessi"n err"r?a&e isErr"r?a&e Strin& %lass na,e p ll< q ali!ie* class na,e "r pac2a&e na,e Z !!er sie "r !alse Z""lean Z""lean {RL Z""lean EiC! $iF trG Scriptin& lan& a&e na,e wjavaw 6epen*s "n t/e >S? c"ntainer wtextY/t,lmc/arsetnGSk@''55@1w F"ne F"ne '15A wtr ew wtr ew wtr ew F"ne w!alsew GiF trG mHc IGn+
isT/rea*Sa!e Z""lean
8)6 errorPage
Sh< l7 tran& XeC p/Qt sin/ l~i. K/i p/Qt sin/ l~i si &\i VIn tran& err"r?a&e.jsp 3*irective c`a tran& n7< p/ai VWt l7 isErr"r?a&e n tr e4
*]< page errorPage'(errorPage.jsp( ]+ *] ]+ int i ' 1=; i ' i - =;
autoFlush Attribute
a t"pl s/ liUn q an VUn pa&e C !!er. K/i &iQ tr^ V:bc VWt l7 tr eg >S? c"ntainer si t1 V(n& !l s/ C !!er 2/i C !!er VT<. FI !alseg cJ t/D si cJ excepti"n t/r"X ra nI C !!er C^ tr7n 3"ver!l"X4. Ta cJ t/D !l s/ C !!er ,an all< q a vi.c se *n& ,et/"* c`a >spuriterg V6:
out.flus0#$;
Session Attribute
FI VWt &iQ tr^ l7 tr e t/[ sessi"n "Cject si tr tBi sessi"n /i.n tOi /"Wc tO" ,Bi. F&:bc lOi si 2" cJ sessi"n n7" V:bc V^n/ n&/}a /"Wc tO" ,Bi. 6" VJ i,plicit "Cject c/" sessi"n 2" sn s7n& VD se *n&.
*]< page session'(false(]+
<ction
jsp:!se;ean
SD tO" 1 instance c/" java Cean VD cJ t/D se *n& tr"n& jsp: V6: ?ava@ean
package com.aptec0.:ean; public class Calc private int a; private int :; public int a!!#$ return getD#$7getZ#$; % public int getD#$ return a; % public void setD#int a$ this.a ' a; % public int getZ#$ return :; % public void setZ#int :$ this.: ' :; % %
jsp)
*jsp6useZean i!'(calc( class'(com.aptec0.:ean.Calc( scope'(request( -+
jsp)set(ropert%
GQn &iQ tr^ c/" t/ (c t)n/ c`a java Cean
*jsp6setPropert" name'(calc( propert"'(a( value'(>(-+ *jsp6setPropert" name'(calc( propert"'(:( value'(2(-+
jsp)get(ropert%
HiDn t/^ &iQ tr^ t/ (c t)n/ c`a java Cean
ojsp:&et?r"pert< na,enwcalcw pr"pert<nwCwYq oncalc.a**34q o@ c/" 2It q a n #@@q
jsp:param
e, p/Tn jsp:!"rXar*
jsp:incl!de
6cn& VD n/ln& n(i * n& c`a 1 tran& 2/Qc v7" tran& /i.n t/fi. V6:
*jsp6inclu!e page'(-success.jsp(-+
jsp:"or4ard
!"rXar* VIn tran& 2/Qcg cJ t/D tr <+n t/a, sH se *n& t/v jsp:para,
*jsp6for4ar! page'(-success.jsp(+ *jsp6param name'(a( value'(a:c(-+ *-jsp6for4ar!+
jsp:pl!$in
jsp:pl &in acti"n V:bc *cn& VD tO" ra t/D HTML okZ>E%Tq /"Wc oEMZE6q c/Ea cQc c; trlc t:Ln& En& VD c/d V^n/ tr[n/ * <.t *"Xl"a* p/Tn ,+, >ava pl &in 3nI cTn4g v7 2/Mi tO" >ava applet /"Wc cQc t/7n/ p/Tn javaCean V:bc c/d V^n/.
*jsp6plugin t"pe'(applet( co!e'(ClocG.class( co!e:ase'(0ttp6--local0ost6@=@=-0ome-applets( jreversion'(1.>.1(+ *jsp6params+ *jsp6param name'(scripta:le( value'(false( -+ *-jsp6params+ *jsp6fall:acG+Sorr"& 4e are una:le to start t0e _ava plugin-+ *-jsp6fall:acG+ *-jsp6plugin+
jsp:params
L7 t/v c"n nP, tr"n& jsp:pl &in
jsp:"all9ac.
L7 t/v c"n nP, tr"n& jsp:pl &in *cn& VD t/_n& CQ" l~i nI 2/_n& t/D 2/Mi tO" V:bc pl &in.
@S5 EL Expressions
EL 9 Expressi"n lan& a&e 3CiD t/Ec4
Disa9le EL
M Hn v_ /i. /Ja EL tr"n& >S? ta se *n& *irectives n/: sa :
*]<page isEEIgnore!'(true( ]+
kr c"n!i& re in XeC.x,l
*jsp,config+ *jsp,propert",group+ *url,pattern+..jsp*-url,pattern+ *el,ignore!+false*-el,ignore!+ *-jsp,propert",group+ *-jsp,config+
Lteration FvMng lNpB v5 conditional F,iKu &iInB) Gterati"n v7 c"n*iti"nal l"&ic V:bc *cn& p/] CiIn CMi >S?m t <n n/iUng c/d ,(t sH p/:Ln& t/Ec tiU c/ n c`a l"Oi n7< V:bc t/1c /i.n CPn& cQc t/7n/ p/Tn script. S_i 2/i ta 2/_n& , Hn se *n& cQc t/7n/ p/Tng V[ vs< c st", ta&s V:bc tO" ra n/: 1 s1 t/a< t/I. >STL c n& c;p tsp cQc t/v c st", ta& c/" lWp v7 Vi+ 2i.n l"&ic. "xpression !anguage FngOn ngP i/u thJcB) 1 tr"n& cQc t/ (c t)n/ V:bc V+ csp n/i+ c`a >STL l7 >S? EL V:bc /~ trb. QR! manipulation: >S? /~ trb r;t &iBi /On v+ xe l RL. %Qc t7i n& <Un CUn n&"7i 1 En& *n& >S? 2/_n& t/D V:bc !"rXar* /"Wc incl *e se *n& cQc >S? acti"n tiU c/ ng >S? cn& 2/_n& c n& c;p cQc p/:Ln& t/Ec c/0c c/0n rPn& {RL V:bc ,- /Ja Vln& vBi cQc para,eter v7 t/_n& tin v+ sessi"n. >STL &iai q <It t;t ca cQc v;n V+ n7< vBi cQc t/D xe l {RL. CR tr> LASN Fqu9c t< h.aB) /~ trb Gnternati"naliati"n l7 ,(t n/i., v 2/J v7 >S? 2/_n& V:a ra cQc /~ trb ,Wc V^n/ c/" nJ. %Qc &iai p/Qp p/] CiIn n/Qt /~ trb cQc v;n V+ G1'F t/_n& q a >S? V:bc c/ n /Ja CMi tsp t/v c st", ta& c`a >STL TU! manipulation: ML V:bc se *n& r(n& r-i tr"n& javag v[ vs< >STL c n& c;p tsp cQc c st", ta& V:bc t/iIt 2I riUn& VD xe l ML. Tru% c-p Data ase) 6ataCases l7 ,(t &iai p/Qp tiU c/ n VD l: cQc *N li. p/Ec tOp tr"n& cQc tran& XeC V(n&. >STL V:a ra tsp cQc t/v SjL c/" p/rp tr < v;n %S6L.
1$ 2$
stan!ar!.jar jstl.jar
#ore ta$s
VeneralW(urpose Tags
%Qc t/v n7< ccn& vBi EL V:bc se *n& c/" cQc tQc v VLn &ian t/_n& t/:fn&. Tsp t/v n7< Ca" &,: outg setg removeg an* catc0 acti"ns.
Xc)outY
T/v " t t/1c /i.n >STL expressi"n 3CiD t/Ec4 v7 VQn/ &iQ 2It q ag &ei 2It q a tBi VHi t:bn& >spuriter /i.n /7n/. T/v n7< /N *n& n/: 1 s1 t/a< t/I c`a &et?r"pert< acti"n. Tr"n& tr:fn& /bp >avaZean 2/_n& /i.n /N /"Wc *evel"per 2/_n& , Hn se *n& Ceang " t acti"n V:a ra cQc c/Ec n|n& t:Ln& V:Ln&. T < n/iUng tr"n& jsp A.8 se *n& " t l7 2/_n& t/)c/ /bp v[ COn cJ t/D VLn &ian V:a ,(t CiD t/Ec t:Ln& V:Ln& tr1c tiIp v7" tran& v7 cJ /i. En& t:Ln& t1.
out action c. attri utes) 1. value: &iQ tr^ c`a value attriC te l7 CiD t/Ec VD VQn/ &iQ. KIt q a c`a CiD t/Ec V:bc &ei tBi client se *n& VHi t:bn& >spuriter c`a tran& /i.n /7n/. GiQ tr^ c`a t/ (c t)n/ value cJ t/D V:bc c/d V^n/ llc c/O< 3r nti,e4. A. escapeTml: c/d ra rPn& nI 2It q a c/ ~i /iDn t/^ V:bc c/ <Dn san& *On& ,- l.n/ VHi vBi cQc 1 sH 2 t1 VWc Ci.t nI &iQ tr^ l7 !alse. GiQ tr^ ,Wc V^n/ l7 true. GiQ tr^ c`a escapeXml cJ t/D V:bc c/d V^n/ 2/i Van& c/O< 3r nti,e4. V6: oc:" t val enwltmg $tmg a,pmg 835mg 834mtw escape,lnw!alsewYq Tra v+ 2It q a l7: og qg g g w oc:" t val enwltmg $tmg a,pmg 835mg 834mtw Yq Tra v+ 2It q a l7: ltmg &tmg a,pmg 835mg 834m
3. default: V^n/ n&/}a &iQ tr^ ,Wc V^n/ V:bc se *n& 2/i CiD t/Ec 2/_n& c/O< /"Wc 2It q a l7 n ll. Xc)setY Set acti"n t:Ln& t1 vBi set?r"pert< acti"n. T/v n7< V0c *n& v^ nJ VQn/ &iQ CiD t/Ec v7 se *n& 2It q a c`a javaZean /"Wc 1 VHi t:bn& java. til.Map. set acti"n cJ cQc t/ (c t)n/ sa :
1. A. 3.
val e: l7 &iQ tr^ &Qn. T/ (c n7< cJ t/D l7 CiD t/Ec r nti,e. var: l7 tUn c`a tUn V:bc set &iQ tr^. sc"pe: l7 p/O, v^ c`a CiIn pageg requestg sessiong v7 applicationg pa&e l7 &iQ tr^ ,Wc V^n/. tar&et: L7 tUn c`a VHi t:bn& cJ t/ (c t)n/ V:bc set &iQ. T/:fn& l7 >avaZean "Cject vBi p/:Ln& t/Ec setter t:Ln& En& /"Wc a java.util.5ap "Cject. GiQ tr^ n7< cJ t/D l7 &iQ tr^ r nti,e. pr"pert<: l7 tUn c`a t/ (c t)n/ c`a VHi t:bn& V:bc c/d V^n/ CMi target attriC te. T/ (c t)n/ n7< cJ t/D l7 &iQ tr^ r nti,e.
4.
5.
V6:
*] ]+ *c6set var '(name( value'(5ic0ael_s( propert"'(username( target'(user(-+ *c6out value'(a name%( !efault'(xxx(-+ com.aptec0.:ean.9ser user ' new com.aptec0.:ean.9ser#$;
Xc)removeY
Se *n& VD xJa CiIn. %:re,"ve cJ A attriC te:
sc"pe: V^n/ n&/}a p/O, vi t[, 2iI, CiIn VD xJa. FI 2/_n& V:bc c/d V^n/ t/[ CiIn C^ xJa CMi p/:Ln& t/Ec PageContext removeDttri:ute#var3ame$. FI V:bc c/d V^n/ t/[ p/:Ln& t/Ec V:bc &\i l7 PageContext removeDttri:ute#var3ame& scope.
V6:
*c6set var '(a( value'(a:c( scope'(session(-+ *c6set var '(:( value'(x"U( scope'(session(-+ *c6out value'(a a%( !efault'(xxx(-+ *c6remove var'(a( scope'(session(-+ a after removing6*c6out value'(a a%(-+ *c6remove var'(:( scope'(request(-+ : after removing6 *c6out value'(a :%(-+
Xc)catchY
!"rEac/ ta& /~ trb cQc 2iD *N li. &a'a -til *ollectiong &a'a -til Eteratorg &a'a -til Kn-=erationg /"Wc &a'a -til Jap. !"rEac/ ta& cJ cQc t/ (c t)n/ sa :
var: tUn c`a VHi t:bn& VWt ra VD se *n& tr"n& vn& lWp 3tc< 4. ite,s: VHi t:bn& V:bc c/d V^n/ VD lWp 3Gterat"rg En ,erati"n /"Wc Map4. GiQ tr^ cJ t/D l7 r nti,e. varStat s: tUn CiIn l: trOn& t/Qi c`a vn& lWp. SHi t:bn& cJ 2iD javax.servlet.jsp.jstl.EoopFagStatus. Ce&in: c/d V^n/ p/Tn te VT tiUn V:bc * <.t. en*: ?/Tn te c Hi V:bc * <.t. step: C:Bc * <.t.
V6:
*]< page import'(java.util..( ]+ *] Eist list ' new Drra"Eist#$; list.a!!#(a($; list.a!!#(:($; list.a!!#(c($; request.setDttri:ute#(set(& list.iterator#$$;
]+ *c6forEac0 var'(item( :egin'(=( items'(a set%(+ F0e value is *c6out value'(a item%( -+ *-c6forEac0+
XforTo&ensY T:Ln& t1 !"rEac/ n/:n& p/Tn te tsp /bp *" lsp tr[n/ viUn t1 V^n/ n&/}a tr"n& t/v ite,sg p/hn tQc/ CMi 2 t1 V:bc V^n/ n&/}a tr"n& t/v *e,i,s. %Qc t/ (c t)n/ 2/Qc t:Ln& t1. V6:
*c6forFoGens var'(item( !elims'(e( items'(toGen1etoGen2etoGenA(+ F0e value is *c6out value'(a item%( -+ </c:forTokens>
test: CiD t/Ec Vi+ 2i.n var: tUn CiIn l: &iQ tr^ c`a CiD t/Ec tr"n& test. ZiIn n7< l7 CiIn sc"pe cJ t/D se *n& sa n7< sc"pe: l7 p/O, v^ c`a CiIn V:bc V^n/ n&/}a tr"n& var
V6:
*] request.setDttri:ute#("(& (a:c($; ]+ *c6if test'(a "''[a:c[%( var'(a(+ Welcome *-c6if+ *:r -+,,+ *c6out value'(a a%( -+.
QR! Uanipulation
<c:import> and <c:param>
T/e import ta& /as t/e !"ll"Xin& attriC tes:
rl: GiQ tr^ c`a {RL i,p"rt v7" Ca" &, ca t <.t VHi v7 t:Ln& VHi. GiQ tr^ cJ t/D c/d V^n/ r nti,e. c"ntext: T/e context attriC te can Ce se* t" pr"vi*e t/e na,e "! a c"ntext X/en accessin& a relative {RL res" rce t/at Cel"n&s t" a !"rei&n c"ntext. T/e val e ,a< Ce speci!ie* C< a r nti,e val e. = !"rei&n c"ntext is an"t/er ueC =pplicati"n t/at is exec tin& "n t/e sa,e ueC server. T/is val e s/" l* Ce se* i! t/e {RL is relative t" t/at na,e* !"rei&n c"ntext. F"te t/at t/is is t/e eq ivalent "! a req est *ispatc/ acr"ss ueC =pplicati"n C" n*aries an* ,a< n"t X"r2 "n partic lar c"ntainers * e t" sec rit< "r "t/er restricti"ns. var: T/e var attriC te can Ce se* t" na,e a sc"pe* variaCle t" c"ntain t/e res" rces c"ntent. T/e t<pe "! t/e variaCle is Strin&. sc"pe: T/e scope attriC te *e!ines t/e sc"pe "! a variaCle na,e* C< t/e var attriC te. Vali* val es are pageg requestg sessiong an* application. c/arEnc"*in&: T/e c0arEnco!ing attriC te can Ce se* t" speci!< t/e c/aracter enc"*in& "! t/e c"ntent at t/e inp t res" rce. Z< *e!a lt it is ass ,e* t/e stan*ar*g ISO,@@W?,1g enc"*in& is se*. varRea*er: T/e varRea!er attriC te is availaCle t" create a Rea!er "Cject !"r se C< c"ntent in t/e i,p"rt ta&s C"*<. T/e val e "! t/e varRea!er attriC te is t/e na,e "! t/e sc"pe* variaClem t/e t<pe "! t/e variaCle is java.io.Rea!er.
*c6import url'(-jstl.jsp( var'(value( -+ *c6out value'(a value%( -+
V6:
c)param L7 t/v c"n c`a c:i,p"rt vBi na,e l7 tUn para,eterg val e l7 &iQ tr^. c)url L7 p/:Ln& t/Ec V:a ra VD t1 V(n& ,- /Ja {RL vBi cQc t/_n& tin v+ sessi"n v7 para,eters. TQc *n& t:Ln& V:Ln& vBi p/:Ln& t/Ec 1ttpServletResponse enco!e9RE#$. V6:
*a 0ref'[*]' response.enco!e9RE#(-in!ex.jsp($]+[+ZooG Site*-a+
val e: T/e value attriC te is se* t" pr"vi*e t/e {RL t" Ce pr"cesse*. c"ntext: T/e context attriC te *e!ines t/e na,e "! t/e c"ntext X/en speci!<in& a relative {RL res" rce "! a !"rei&n c"ntext. var: T/e var attriC te can Ce se* t" exp"rt t/e reXritten {RL t" a sc"pe* variaCle. T/e val e "! t/e var variaCle is t/e pr"cesse* {RL. T/e t<pe "! t/e variaCle is Strin&. T/e variaCles sc"pe *epen*s "n t/e scope attriC te. sc"pe: T/e scope attriC te *eter,ines t/e sc"pe "! t/e "Cject na,e* C< t/e var attriC te. Vali* val es are pageg requestg sessiong an* application.
*-ta:le+
V6A:
*]< page import'(java.util..& com.aptec0.:ean.Welcome(]+ *] Eocale locale ' Eocale.JRD3CE;--request.getEocale#$; ResourceZun!le r: ' ResourceZun!le.getZun!le#(com.aptec0.conf.5essageZun!le(& locale$; Welcome 4elcome ' new Welcome#$; 4elcome.setFitle#r:.getString#(title($$; 4elcome.setWelcome#r:.getString#(4elcome($$; request.setDttri:ute#(content(& 4elcome$; ]+ *]< tagli: uri'(0ttp6--java.sun.com-jstl-core( prefix'(c( ]+ *0tml+ *0ea!+ *title+a content.title%*-title+ *-0ea!+ *:o!"+ a content.4elcome% *-:o!"+ *-0tml+
Welcome.java
package com.aptec0.:ean; public class Welcome protected String title ' null; protected String 4elcome ' null;
T/a< V]i L"cale tR *e!a lt san& L"cale.pR=F%E si t/;< 2It q a /iDn t/^ t/a< V]i.
Reso!rce;!ndle class
get@undleFB)
TO" VHi t:bn& C n*le vBi vcn& V^a l n7" VJ 3l"cale4: V6: ResourceZun!le
:un!le ' ResourceZun!le.getZun!le#(com.aptec0.conf.5essageZun!le(& Eocale.CORED3$;
get$e%sFB
Tra v+ tsp cQc 2e< tr"n& .pr"perties t/e" 2iD En ,erati"n
8)6 Enumeration Ge"s ' :un!le.getCe"s#$;
get!ocaleFB
Tra v+ VHi t:bn& l"cale C n*le &etkCject32e<4 T/a, sH l7 tUn 2e< tr"n& .pr"perties !ile. KIt q a tra v+ l7 val e c`a 2e< t:Ln& En&. FI 2e< 2/_n& tn tOi si t/r"X excepti"n:
java.util.5issingResourceException
getStringF&e%B
Tra v+ val e t:Ln& En& vBi t/a, sH 2e< tr"n& .pr"perties !ile.
getS%m olFB) Tra v+ CiD t:bn& ti+n t. t/e" l"cale. V6: out.println#(Currenc"
s"m:ol$6( 7 cr.getS"m:ol#$$;--Gct qud trd vh lR a
getLnstanceFB) Tra v+ VHi t:bn& F ,Cerp"r,at vBi l"cale ,Wc V^n/ getCurrenc%FB) Tra v+ VHi t:bn& 2iD % rrenc< .
Currenc" cr ' 3um:erJormat.getInstance#$.getCurrenc"#$; out.println#(CR s"m:ol6( 7 cr.getS"m:ol#$$;
setCurrenc%FCurrenc%B)
Currenc" c ' Currenc".getInstance#Eocale._DPD3$; nf.setCurrenc"#c$; out.println#(nf6( 7 nf.getCurrenc"#$.getCurrenc"Co!e#$$;
UessageFormat
String string ' (1ello =%& it is 1&!ate% an! "ou 0ave 2& num:er& currenc"% in "our pocGet.(; O:jectHI o:jects ' (foo(& new )ate#$& new Integer#1=$%; String result ' 5essageJormat.format#string& o:jects$;
Ta$ +andler
Sh< l7 ,(t !ile java VLn &ian c/Ea c"*e c/" cQc c/Ec n|n& c`a c st", ta&. %J A l"Oi classic v7 simple.
@asic tags
Zasic ta& t/_n& t/:fn& 2/_n& c/Ea C;t cE C"*< n7". KD ca 2/i nJ c/Ea C"*<g p/Tn C"*< cn& 2" V:bc xe l CMi ta& n7<. Ta& /an*ler class c`a Casic ta& i,ple,ents tR Ta& inter!ace v7 exten*s Ta&S pp"rt class.
Lteration tags
%Qc t/v n7< t/:fn& l7 cQc t/v r~n&. Ta& /an*ler c/" iterati"n ta& i,ple,ents Gterati"nTa& inter!ace. Gnter!ace n7< exten*s tR Ta& inter!ace.
Complex tags
%Qc t/v n7< /~ trb C"*<. T/v n7< i,ple,ents tR Z"*<Ta& v7 exten*s Z"*<Ta& S pp"rt class.
@asper \
>S? en&ine l7 1 t/7n/ p/Tn c`a XeC c"ntainer t/1c /i.n c/ <Dn tR >S? san& servlet c"*e. >asper en&ine l7 tUn c`a >S? en&ine tr"n& t",cat 4. Tr"n& t",cat5g nJ cJ tUn l7 >asper A. FJ l7 s1 triDn 2/ai c`a VWc ta S n Micr"s<ste,s >S?A.8.
T]n$ 91Bc tOo R c!stom ta$: TOo ta$ li9rar: descriptor (.tld "ile).
TL6 l7 ,(t x,l !ile V^n/ n&/}a t/: vi.n t/v v7 cQc t/v. 6n& VT tiUn l7 x,l /ea*er c/ n:
*Vxml version'(1.=( enco!ing'(ISO,@@W?,1( V+ *`)OCF\PE tagli: P9ZEIC (,--Sun 5icros"stems& Inc.--)F) _SP Fag Ei:rar" 1.1--E3( (0ttp6--java.sun.com-j2ee-!t!s-4e:,jsptagli:rar"Y1Y1.!t!(+
TL6 !ile c/Ea t/v &Hc ota&liC. T/v n7< cJ cQc t/v c"n sa :
14 tliCversi"n c/d V^n/ versi"n c`a t/: vi.n t/v cJ V^n/ *On& sa : 38@54 3w.w 8@54 3w.w 8@54 3w.w 8@54 A4 T/e jspversi"n c/d V^n/ >S? versi"n. S^n/ *On& &iHn& vBi tliCversi"n: 38@54 3w.w 8@54 3w.w 8@54 3w.w 8@54 34 s/"rtna,e c/d V^n/ s/"rtna,e c`a t/ vi.n ta& liCrar<. GiQ tr^ n7< p/ai C0t VT CPn& c/N v7 2/_n& c/Ea 2/"an& tr0n&. 44 in!" c/Ea t/_n& tin c/" ,c V)c/ l7, t7i li. . 6N li. ,Wc V^n/ l7 r~n&. 54 ri c/d V^n/ lin2 tr VIn t/: vi.n t/v.
#4 ta& l7 t/7n/ p/Tn q an tr\n& n/;t c`a ta& liCrar<. ZOn cJ t/D c/d V^n/ /Ln 1 t/v ta&.
% -.. . @return t0e name .public String get3ame#$ return name; % -.. . @param name t0e name to set .public void set3ame#String name$ this.name ' name; % public int !oStartFag#$ try _spWriter out ' pageContext.getOut#$; out.println#(*0r-+($; out.println#(1ello ( 7 name$; % catch #Exception ex$ throw new Error#(Dll is not 4ell in t0e 4orl!.($; % return SKIP_BODY; % %
varia:le represent t0e custom tag[s attri:utes String 0ea!ing ' null; String image ' null; String 4i!t0 ' null; String 0eig0t ' null;
public int !oStartFag#$ throws _spException _spWriter out ' pageContext.getOut#$; try int 0 ' Integer.parseInt#0ea!ing$; if #`#0 + = jj 0 * B$$ out.println#(*font color'[re![+F0e [0ea!ing[ value must :et4een 1 an! k inclusive.*-font+($; % % catch #Exception e$ throw new _spException#e.get5essage#$$; % % return E8DEYZO)\YZ9JJERE);
public int !oEn!Fag#$ throws _spException _spWriter out ' pageContext.getOut#$; String img)ir ' ##1ttpServletRequest$ pageContext.getRequest#$$.getContextPat0#$ 7 (-img-(; String message ' (*font color'[iJJ====[+( 7 getZo!"Content#$.getString#$.trim#$ 7 (*-font+(; try out.println#(*img src'^(( 7 img)ir 7 image 7 (^( 4i!t0'^(( 7 4i!t0 7 (^( 0eig0t'^(( 7 0eig0t 7 (^( align'^(left^(+( 7 (*1( 7 0ea!ing 7 (+( 7 message 7 (*-1( 7 0ea!ing 7 (+($; % catch #IOException ex$ Eogger.getLogger#ClassicFag)emo.class.get3ame#$$.log#Eevel.SEVERE& null& ex$; % return E8DEYPD/E; % public void set1ea!ing#String level$ this.0ea!ing ' level; % public void setImage#String name$ this.image ' name; % public void setWi!t0#String 4i!t0$ this.4i!t0 ' 4i!t0; % public void set1eig0t#String 0eig0t$ this.0eig0t ' 0eig0t; %
--t0e _SP container ma" cac0e an! reuse tag 0an!ler o:jects. --t0is met0o! releases instance varia:les so t0at t0e tag 0an!ler --can :e reuse! afres0 public void release#$ 0ea!ing ' null; image ' null; 4i!t0 ' null; 0eig0t ' null; %
Tag descriptor
*Vxml version'(1.=( enco!ing'(ISO,@@W?,1( V+ *`)OCF\PE tagli: P9ZEIC (,--Sun 5icros"stems& Inc.--)F) _SP Fag Ei:rar" 1.2--E3( (0ttp6--java.sun.com-!t!-4e:,jsptagli:rar"Y1Y2.!t!(+ *tagli:+ *tli:,version+1.=*-tli:,version+ *jsp,version+1.2*-jsp,version+ *s0ort,name+clsFag)emo*-s0ort,name+ *`,, 1ere is t0e 9RI "ou use 4it0 t0e [tagli:[ !irective in t0e _SP ,,+ *uri+-aptec0-Classic !emo...*-uri+ *!escription+Dptec0 !emo classic tag*-!escription+ *tag+ *name+logo*-name+ *`,, maGe sure to use t0e full" qualife! class name ,,+ *tag,class+com.aptec0.tag0an!ler.ClassicFag)emo*-tag,class+ *:o!",content+_SP*-:o!",content+ *!escription+F0is tag 4rites a logo insi!e t0e _SP.*-!escription+ *attri:ute+ *name+0ea!ing*-name+ *`,, F0e logo tag requires t0is attri:ute ,,+ *require!+true*-require!+ *`,, F0e attri:ute can taGe a _SP expression as a value ,,+ *rtexprvalue+true*-rtexprvalue+ *!escription+F0e 0ea!ing level for t0e logo; 1 t0roug0 k. *-!escription+ *-attri:ute+ *attri:ute+ *name+image*-name+ *require!+true*-require!+ *rtexprvalue+true*-rtexprvalue+ *!escription+F0e image name for t0e logo.*-!escription+ *-attri:ute+ *attri:ute+
*name+4i!t0*-name+ *require!+true*-require!+ *rtexprvalue+true*-rtexprvalue+ *!escription+F0e image 4i!t0 for t0e logo.*-!escription+ *-attri:ute+ *attri:ute+ *name+0eig0t*-name+ *require!+true*-require!+ *rtexprvalue+true*-rtexprvalue+ *!escription+F0e image 0eig0t for t0e logo.*-!escription+ *-attri:ute+ *-tag+ *-tagli:+
We .xml declaration
*jsp,config+ *tagli:+ *tagli:,uri+-aptec0-Classic !emo...*-tagli:,uri+ *tagli:,location+-WEZ,I3J-tl!s-Classic)emo.tl!*-tagli:,location+ *-tagli:+ *-jsp,config+
Simple Ta$
Descriptor
*tagli: xmlns'(0ttp6--java.sun.com-xml-ns-j2ee( xmlns6xsi'(0ttp6--444.4A.org-2==1-X5ESc0ema,instance( xsi6sc0emaEocation'(0ttp6--java.sun.com-xml-ns-j2ee 0ttp6--java.sun.com-xml-ns-j2ee-4e:,jsptagli:rar"Y2Y=.xs!( version'(2.=(+ *tli:,version+1.=*-tli:,version+ *jsp,version+2.=*-jsp,version+ *s0ort,name+Example FE)*-s0ort,name+ *uri+-aptec0-simple-!emo...*-uri+ *tag+ *name+!ate*-name+ *tag,class+com.aptec0.tag0an!ler.SimpleFag)emo*-tag,class+ *:o!",content+empt"*-:o!",content+
*attri:ute+ *name+format*-name+ *-attri:ute+ *-tag+ *tag+ *name+!"namicDttri:ute*-name+ *tag,class+com.aptec0.tag0an!ler.)"namicDttri:uteFag*-tag,class+ *:o!",content+empt"*-:o!",content+ *!"namic,attri:utes+true*-!"namic,attri:utes+ *-tag+ *tag+ *name+:o!"*-name+ *tag,class+com.aptec0.tag0an!ler.Zo!"SimpleFag*-tag,class+ *:o!",content+scriptlet*-:o!",content+ *-tag+ *-tagli:+
Tag Candler
@od%SimpleTag
pacGage com.aptec0.tag0an!ler; import import import import import java.io.IOException; java.text.Simple)ateJormat; java.util.)ate; javax.servlet.jsp..; javax.servlet.jsp.tagext..;
pu:lic class Zo!"SimpleFag exten!s SimpleFagSupport pu:lic voi! !oFag#$ t0ro4s _spException& IOException PageContext context ' #PageContext$ get_spContext#$; _spWriter out ' context.getOut#$; out.4rite#(0ello($; % %
D%namic'ttri uteTag
pacGage com.aptec0.tag0an!ler; import import import import javax.servlet.jsp.tagext..; javax.servlet.jsp..; java.util..; java.io.IOException;
pu:lic class )"namicDttri:uteFag exten!s SimpleFagSupport implements )"namicDttri:utes protecte! 1as0ta:le map ' ne4 1as0ta:le#$; pu:lic voi! set)"namicDttri:ute#String uri& String name& O:ject value$ t0ro4s _spException
map.put#name& value$;
pu:lic voi! !oFag#$ t0ro4s _spException& IOException _spWriter out ' get_spContext#$.getOut#$; for #Enumeration Ge"s ' map.Ge"s#$; Ge"s.0as5oreElements#$;$ O:ject Ge" ' Ge"s.nextElement#$; O:ject value ' map.get#Ge"$; out.print#(*:+Dttri:ute6*-:+*:r+($; out.print#(name6 ( 7 Ge".toString#$ 7 (*:r+($; out.print#(value6 ( 7 value.toString#$ 7 (*:r+($; % % %
SimpleTagDemo
pacGage com.aptec0.tag0an!ler; import import import import import java.io.IOException; java.text.Simple)ateJormat; java.util.)ate; javax.servlet.jsp..; javax.servlet.jsp.tagext..;
pu:lic class SimpleFag)emo exten!s SimpleFagSupport private String format; pu:lic voi! setJormat#String format$ t0is.format ' format; % pu:lic voi! !oFag#$ t0ro4s _spException& IOException _spWriter out ' get_spContext#$.getOut#$; if #format `' null$ Simple)ateJormat s!f ' ne4 Simple)ateJormat#format$; out.println#s!f.format#ne4 )ate#$$$; % else out.println#ne4 )ate#$.toString#$$; % % %
We .xml
*tagli:+ *tagli:,uri+-aptec0-Simple !emo...*-tagli:,uri+ *tagli:,location+-WEZ,I3J-tl!s-Simple)emo.tl!*-tagli:,location+ *-tagli:+
?S(
F0e current !ate is *simple6!ate format'(!!-55-""( -+. *0r+ *simple6!"namicDttri:ute name'(test( value'(a value(-+ *0r+ *simple6:o!"-+
heading.tag
*]<attri:ute *]<attri:ute *]<attri:ute *]<attri:ute *tr+ *t!+a *t!+a *t!+a *t!+a *-tr+ 0ea!ing1%*-t!+ 0ea!ing2%*-t!+ 0ea!ingA%*-t!+ 0ea!ing>%*-t!+ name'(0ea!ing1(]+ name'(0ea!ing2(]+ name'(0ea!ingA(]+ name'(0ea!ing>(]+
column.tag
*]<attri:ute *]<attri:ute *]<attri:ute *]<attri:ute *tr+ *t!+a *t!+a *t!+a *t!+a *-tr+ name'(col1(]+ name'(col2(]+ name'(colA(]+ name'(col>(]+
?S(
*tags6caps+ *01+F0is is tags !emo*-01+*-tags6caps+ *ta:le :or!er'(1(+ *tags60ea!ing 0ea!ing1 '(1( 0ea!ing2 '(2( 0ea!ingA '(A( 0ea!ing> '(>(-+ *tags6column col1 '(v11( col2 '(v12( colA '(v1A( col> '(v1>(-+ *tags6column col1 '(v21( col2 '(v22( colA '(v2A( col> '(v2>(-+ *-ta:le+
5+ lc
#Fc p+1`n$ t+Dc cNa Servlet
voi! destroy#$
%alle* C< t/e servlet c"ntainer t" in*icate t" a servlet t/at t/e servlet is Cein& ta2en " t "! service.
ServletConfig get ervlet!onfig#$
Ret rns a ServletConfig "Cjectg X/ic/ c"ntains initialiati"n an* start p para,eters !"r t/is servlet.
java.lang.String get ervlet"nfo#$
Ret rns in!"r,ati"n aC" t t/e servletg s c/ as a t/"rg versi"ng an* c"p<ri&/t.
voi! init#ServletConfig config$
%alle* C< t/e servlet c"ntainer t" in*icate t" a servlet t/at t/e servlet is Cein& place* int" service.
voi! service#ServletRequest req& ServletResponse res$
%alle* C< t/e servlet c"ntainer t" all"X t/e servlet t" resp"n* t" a req est.
Ret rns t/e val e "! t/e na,e* attriC te as an O:jectg "r null i! n" attriC te "! t/e &iven na,e exists.
java.util.Enumeration get#ttribute$ames#$
Ret rns t/e na,e "! t/e c/aracter enc"*in& se* in t/e C"*< "! t/is req est.
int get!ontent&ength#$
Ret rns t/e len&t/g in C<tesg "! t/e req est C"*< an* ,a*e availaCle C< t/e inp t strea,g "r @1 i! t/e len&t/ is n"t 2n"Xn.
java.lang.String get!ontentType#$
Ret rns t/e MGME t<pe "! t/e C"*< "! t/e req estg "r null i! t/e t<pe is n"t 2n"Xn.
ServletInputStream get"nput tream#$
Retrieves t/e C"*< "! t/e req est as Cinar< *ata sin& a ServletInputStream.
java.util.Eocale get&ocale#$
Ret rns t/e pre!erre* Eocale t/at t/e client Xill accept c"ntent ing Case* "n t/e =ccept@Lan& a&e /ea*er.
java.util.Enumeration get&ocales#$
Ret rns an Enumeration "! Eocale "Cjects in*icatin&g in *ecreasin& "r*er startin& Xit/ t/e pre!erre* l"caleg t/e l"cales t/at are acceptaCle t" t/e client Case* "n t/e =ccept@Lan& a&e /ea*er.
java.lang.String getParameter#java.lang.String name$
Ret rns t/e val e "! a req est para,eter as a Stringg "r null i! t/e para,eter *"es n"t exist.
java.util.Enumeration getParameter$ames#$
Ret rns an Enumeration "! String "Cjects c"ntainin& t/e na,es "! t/e para,eters c"ntaine* in t/is req est.
java.lang.StringHI getParameter'alues#java.lang.String name$
Ret rns an arra< "! String "Cjects c"ntainin& all "! t/e val es t/e &iven req est para,eter /asg "r null i! t/e para,eter *"es n"t exist.
java.lang.String getProtocol#$
Ret rns t/e na,e an* versi"n "! t/e pr"t"c"l t/e req est ses in t/e !"r, protocol:=a&orUer)ion =inorUer)iong !"r exa,pleg HTT?Y1.1.
java.io.Zuffere!Rea!er get(eader#$
Retrieves t/e C"*< "! t/e req est as c/aracter *ata sin& a Zuffere!Rea!er.
java.lang.String get(ealPath#java.lang.String pat0$
Deprecated. C) of Uer)ion % V of the Ta'a !er'let CSEW -)e ServletContext getRealPat!"#ava lang Str$ng% in)tea3
java.lang.String get(emote#ddr#$
Ret rns t/e Gnternet ?r"t"c"l 3G?4 a**ress "! t/e client t/at sent t/e req est.
java.lang.String get(emote)ost#$
Ret rns t/e ! ll< q ali!ie* na,e "! t/e client t/at sent t/e req estg "r t/e G? a**ress "! t/e client i! t/e na,e cann"t Ce *eter,ine*.
Request)ispatc0er get(e*uest+ispatcher#java.lang.String pat0$
Ret rns a Request)ispatc0er "Cject t/at acts as a Xrapper !"r t/e res" rce l"cate* at t/e &iven pat/.
java.lang.String get cheme#$
Ret rns t/e na,e "! t/e sc/e,e se* t" ,a2e t/is req estg !"r exa,pleg 0ttpg 0ttpsg "r ftp.
java.lang.String get erver$ame#$
Ret rns t/e /"st na,e "! t/e server t/at receive* t/e req est.
int get erverPort#$
Ret rns t/e p"rt n ,Cer "n X/ic/ t/is req est Xas receive*.
:oolean is ecure#$
Ret rns a C""lean in*icatin& X/et/er t/is req est Xas ,a*e sin& a sec re c/annelg s c/ as HTT?S.
voi! remove#ttribute#java.lang.String name$
p"rces an< c"ntent in t/e C !!er t" Ce Xritten t" t/e client.
int get,uffer i-e#$
Ret rns t/e act al C !!er sie se* !"r t/e resp"nse.
java.lang.String get!haracter%ncoding#$
Ret rns t/e na,e "! t/e c/arset se* !"r t/e MGME C"*< sent in t/is resp"nse.
java.util.Eocale get&ocale#$
Ret rns a PrintWriter "Cject t/at can sen* c/aracter text t" t/e client.
:oolean is!ommitted#$
%lears an< *ata t/at exists in t/e C !!er as Xell as t/e stat s c"*e an* /ea*ers.
voi! set,uffer i-e#int siUe$
Sets t/e pre!erre* C !!er sie !"r t/e C"*< "! t/e resp"nse.
voi! set!ontent&ength#int len$
Sets t/e len&t/ "! t/e c"ntent C"*< in t/e resp"nse Gn HTT? servletsg t/is ,et/"* sets t/e HTT? %"ntent@Len&t/ /ea*er.
voi! set!ontentType#java.lang.String t"pe$
Sets t/e c"ntent t<pe "! t/e resp"nse Cein& sent t" t/e client.
voi! set&ocale#java.util.Eocale loc$
Sets t/e l"cale "! t/e resp"nseg settin& t/e /ea*ers 3incl *in& t/e %"ntent@T<pes c/arset4 as appr"priate.
se* t" pr"tect t/e servletg !"r exa,pleg wZ=SG%w "r wSSLgw "r null i! t/e servlet Xas n"t pr"tecte*.
java.lang.String get!ontextPath#$
Ret rns t/e p"rti"n "! t/e req est {RG t/at in*icates t/e c"ntext "! t/e req est.
CooGieHI get!ookies#$
Ret rns an arra< c"ntainin& all "! t/e CooGie "Cjects t/e client sent Xit/ t/is req est.
long get+ate)eader#java.lang.String name$
Ret rns t/e val e "! t/e speci!ie* req est /ea*er as a long val e t/at represents a )ate "Cject.
java.lang.String get)eader#java.lang.String name$
Ret rns t/e val e "! t/e speci!ie* req est /ea*er as a String.
java.util.Enumeration get)eader$ames#$
Ret rns an en ,erati"n "! all t/e /ea*er na,es t/is req est c"ntains.
java.util.Enumeration get)eaders#java.lang.String name$
Ret rns all t/e val es "! t/e speci!ie* req est /ea*er as an Enumeration "! String "Cjects.
int get"nt)eader#java.lang.String name$
Ret rns t/e val e "! t/e speci!ie* req est /ea*er as an int.
java.lang.String get0ethod#$
Ret rns t/e na,e "! t/e HTT? ,et/"* Xit/ X/ic/ t/is req est Xas ,a*eg !"r exa,pleg GETg ?kSTg "r ?{T.
java.lang.String getPath"nfo#$
Xit/ t/e {RL t/e client sent X/en it ,a*e t/is req est.
java.lang.String getPathTranslated#$
Ret rns an< extra pat/ in!"r,ati"n a!ter t/e servlet na,e C t Ce!"re t/e q er< strin&g an* translates it t" a real pat/.
java.lang.String get1uery tring#$
Ret rns t/e q er< strin& t/at is c"ntaine* in t/e req est {RL a!ter t/e pat/.
java.lang.String get(emote2ser#$
Ret rns t/e l"&in "! t/e ser ,a2in& t/is req estg i! t/e ser /as Ceen a t/enticate*g "r null i! t/e ser /as n"t Ceen a t/enticate*.
java.lang.String get(e*uested ession"d#$
Ret rns t/e part "! t/is req ests {RL !r", t/e pr"t"c"l na,e p t" t/e q er< strin& in t/e !irst line "! t/e HTT? req est.
java.lang.String get ervletPath#$
Ret rns t/e part "! t/is req ests {RL t/at calls t/e servlet.
1ttpSession get ession#$
Ret rns t/e c rrent sessi"n ass"ciate* Xit/ t/is req estg "r i! t/e req est *"es n"t /ave a sessi"ng creates "ne.
1ttpSession get ession#:oolean create$
Ret rns t/e c rrent 1ttpSession ass"ciate* Xit/ t/is req est "rg i! i! t/ere is n" c rrent sessi"n an* create is tr eg ret rns a neX sessi"n.
java.securit".Principal get2serPrincipal#$
Ret rns a java.securit".Principal "Cject c"ntainin& t/e na,e "! t/e c rrent a t/enticate* ser.
:oolean is(e*uested ession"d3rom!ookie#$
%/ec2s X/et/er t/e req este* sessi"n G6 ca,e in as part "! t/e req est {RL.
:oolean is(e*uested ession"d'alid#$
Ret rns a C""lean in*icatin& X/et/er t/e a t/enticate* ser is incl *e* in t/e speci!ie* l"&ical wr"lew.
Stat s c"*e 3A8A4 in*icatin& t/at a req est Xas accepte* !"r pr"cessin&g C t Xas n"t c",plete*.
static int !4,#+45#T%/#6
Stat s c"*e 358A4 in*icatin& t/at t/e HTT? server receive* an invali* resp"nse !r", a server it c"ns lte* X/en actin& as a pr"x< "r
&ateXa<.
static int !4,#+4(%12% T
Stat s c"*e 34884 in*icatin& t/e req est sent C< t/e client Xas s<ntacticall< inc"rrect.
static int !4!.$3&"!T
Stat s c"*e 34854 in*icatin& t/at t/e req est c" l* n"t Ce c",plete* * e t" a c"n!lict Xit/ t/e c rrent state "! t/e res" rce.
static int !4!.$T"$2%
Stat s c"*e 3A814 in*icatin& t/e req est s ccee*e* an* create* a neX res" rce "n t/e server.
static int !4%7P%!T#T".$43#"&%+
Stat s c"*e 341$4 in*icatin& t/at t/e server c" l* n"t ,eet t/e expectati"n &iven in t/e Expect req est /ea*er.
static int !43.(,"++%$
Stat s c"*e 34834 in*icatin& t/e server n*erst""* t/e req est C t re! se* t" ! l!ill it.
static int !45#T%/#64T"0%.2T
Stat s c"*e 35844 in*icatin& t/at t/e server *i* n"t receive a ti,el< resp"nse !r", t/e pstrea, server X/ile actin& as a &ateXa< "r pr"x<.
static int !45.$%
Stat s c"*e 34184 in*icatin& t/at t/e res" rce is n" l"n&er availaCle at t/e server an* n" !"rXar*in& a**ress is 2n"Xn.
static int !4)TTP4'%( ".$4$.T4 2PP.(T%+
Stat s c"*e 35854 in*icatin& t/at t/e server *"es n"t s pp"rt "r re! ses t" s pp"rt t/e HTT? pr"t"c"l versi"n t/at Xas se* in t/e req est ,essa&e.
static int
!4"$T%($#&4 %('%(4%((.(
Stat s c"*e 35884 in*icatin& an err"r insi*e t/e HTT? server X/ic/ prevente* it !r", ! l!illin& t/e req est.
static int !4&%$5T)4(%12"(%+
Stat s c"*e 34114 in*icatin& t/at t/e req est cann"t Ce /an*le* Xit/" t a *e!ine* Content+Lengt!.
static int !40%T).+4$.T4#&&./%+
Stat s c"*e 34854 in*icatin& t/at t/e ,et/"* speci!ie* in t/e Re&uest+L$ne is n"t all"Xe* !"r t/e res" rce i*enti!ie* C< t/e Re&uest+ *RI.
static int !40.'%+4P%(0#$%$T&6
Stat s c"*e 33814 in*icatin& t/at t/e res" rce /as per,anentl< ,"ve* t" a neX l"cati"ng an* t/at ! t re re!erences s/" l* se a neX {RG Xit/ t/eir req ests.
static int !40.'%+4T%0P.(#("&6
Stat s c"*e 338A4 in*icatin& t/at t/e res" rce /as te,p"raril< ,"ve* t" an"t/er l"cati"ng C t t/at ! t re re!erences s/" l* still se t/e "ri&inal {RG t" access t/e res" rce.
static int !402&T"P&%4!)."!%
Stat s c"*e 33884 in*icatin& t/at t/e req este* res" rce c"rresp"n*s t" an< "ne "! a set "! representati"nsg eac/ Xit/ its "Xn speci!ic l"cati"n.
static int !4$.4!.$T%$T
Stat s c"*e 3A844 in*icatin& t/at t/e req est s ccee*e* C t t/at t/ere Xas n" neX in!"r,ati"n t" ret rn.
static int !4$.$4#2T).("T#T"'%4"$3.(0#T".$
Stat s c"*e 3A834 in*icatin& t/at t/e ,eta in!"r,ati"n presente* C< t/e client *i* n"t "ri&inate !r", t/e server.
static int !4$.T4#!!%PT#,&%
Stat s c"*e 348#4 in*icatin& t/at t/e res" rce i*enti!ie* C< t/e
req est is "nl< capaCle "! &eneratin& resp"nse entities X/ic/ /ave c"ntent c/aracteristics n"t acceptaCle acc"r*in& t" t/e accept /ea*erssent in t/e req est.
static int !4$.T43.2$+
Stat s c"*e 34844 in*icatin& t/at t/e req este* res" rce is n"t availaCle.
static int !4$.T4"0P&%0%$T%+
Stat s c"*e 35814 in*icatin& t/e HTT? server *"es n"t s pp"rt t/e ! ncti"nalit< nee*e* t" ! l!ill t/e req est.
static int !4$.T40.+"3"%+
Stat s c"*e 33844 in*icatin& t/at a c"n*iti"nal GET "perati"n !" n* t/at t/e res" rce Xas availaCle an* n"t ,"*i!ie*.
static int !4.8
Stat s c"*e 3A8#4 in*icatin& t/at t/e server /as ! l!ille* t/e partial GET req est !"r t/e res" rce.
static int !4P#60%$T4(%12"(%+
Stat s c"*e 341A4 in*icatin& t/at t/e prec"n*iti"n &iven in "ne "r ,"re "! t/e req est@/ea*er !iel*s eval ate* t" !alse X/en it Xas teste* "n t/e server.
static int !4P(.764#2T)%$T"!#T".$4(%12"(%+
Stat s c"*e 348$4 in*icatin& t/at t/e client JX!T !irst a t/enticate itsel! Xit/ t/e pr"x<.
static int !4(%12% T4%$T"T64T..4&#(5%
Stat s c"*e 34134 in*icatin& t/at t/e server is re! sin& t" pr"cess t/e req est Ceca se t/e req est entit< is lar&er t/an t/e server is Xillin&
Stat s c"*e 348'4 in*icatin& t/at t/e client *i* n"t pr"* ce a req estXit/in t/e ti,e t/at t/e server Xas prepare* t" Xait.
static int !4(%12% T42("4T..4&.$5
Stat s c"*e 34144 in*icatin& t/at t/e server is re! sin& t" service t/e req est Ceca se t/e Re&uest+*RI is l"n&er t/an t/e server is Xillin& t" interpret.
static int !4(%12% T%+4(#$5%4$.T4 #T" 3"#,&%
Stat s c"*e 341#4 in*icatin& t/at t/e server cann"t serve t/e req este* C<te ran&e.
static int !4(% %T4!.$T%$T
Stat s c"*e 3A854 in*icatin& t/at t/e a&ent !HIXD. reset t/e *"c ,ent vieX X/ic/ ca se* t/e req est t" Ce sent.
static int !4 %%4.T)%(
Stat s c"*e 33834 in*icatin& t/at t/e resp"nse t" t/e req est can Ce !" n* n*er a *i!!erent {RG.
static int !4 %('"!%42$#'#"&#,&%
Stat s c"*e 35834 in*icatin& t/at t/e HTT? server is te,p"raril< "verl"a*e*g an* naCle t" /an*le t/e req est.
static int !4 /"T!)"$54P(.T.!.&
Stat s c"*e 31814 in*icatin& t/e server is sXitc/in& pr"t"c"ls acc"r*in& t" {p&ra*e /ea*er.
static int !42$#2T).("9%+
Stat s c"*e 34814 in*icatin& t/at t/e req est req ires HTT? a t/enticati"n.
static int !42$ 2PP.(T%+40%+"#4T6P%
Stat s c"*e 34154 in*icatin& t/at t/e server is re! sin& t" service t/e req est Ceca se t/e entit< "! t/e req est is in a !"r,at n"t s pp"rte*
C< t/e req este* res" rce !"r t/e req este* ,et/"*.
static int !42 %4P(.76
Stat s c"*e 33854 in*icatin& t/at t/e req este* res" rce JX!T Ce accesse* t/r" &/ t/e pr"x< &iven C< t/e Lo,at$on !iel*.
=**s a resp"nse /ea*er Xit/ t/e &iven na,e an* *ate@ val e.
voi! add)eader#java.lang.String name& java.lang.String value$
=**s a resp"nse /ea*er Xit/ t/e &iven na,e an* inte&er val e.
:oolean contains)eader#java.lang.String name$
Ret rns a C""lean in*icatin& X/et/er t/e na,e* resp"nse /ea*er /as alrea*< Ceen set.
java.lang.String encode(edirect2rl#java.lang.String url$
Enc"*es t/e speci!ie* {RL !"r se in t/e sen!Re!irect ,et/"* "rg i! enc"*in& is n"t nee*e*g ret rns t/e {RL nc/an&e*.
java.lang.String encode2rl#java.lang.String url$
Enc"*es t/e speci!ie* {RL C< incl *in& t/e sessi"n G6 in itg "rg i! enc"*in& is n"t nee*e*g ret rns t/e {RL nc/an&e*.
voi! send%rror#int sc$
Sen*s an err"r resp"nse t" t/e client sin& t/e speci!ie* stat s.
voi! send%rror#int sc& java.lang.String msg$
Sen*s an err"r resp"nse t" t/e client sin& t/e speci!ie* stat s c"*e an* *escriptive ,essa&e.
voi! send(edirect#java.lang.String location$
Sen*s a te,p"rar< re*irect resp"nse t" t/e client sin& t/e speci!ie* re*irect l"cati"n {RL.
voi! set+ate)eader#java.lang.String name& long !ate$
Sets a resp"nse /ea*er Xit/ t/e &iven na,e an* *ate@ val e.
voi! set)eader#java.lang.String name& java.lang.String value$
Sets a resp"nse /ea*er Xit/ t/e &iven na,e an* inte&er val e.
voi! set tatus#int sc$
Deprecated. C) of 'er)ion % VW 3-e to a=#ig-o-) =eaning of the =e))age para=eter To )et a )tat-) co3e -)e setStatus"$nt%W to )en3 an error Yith a 3e)cription -)e sen'Error"$nt-.Str$ng% !et) the )tat-) co3e an3 =e))age for
thi) re)pon)e
Ret rns a String c"ntainin& t/e val e "! t/e na,e* initialiati"n para,eterg "r null i! t/e para,eter *"es n"t exist.
java.util.Enumeration get"nitParameter$ames#$
Ret rns t/e na,es "! t/e servlets initialiati"n para,eters as an Enumeration "! String "Cjectsg "r an e,pt< Enumeration i! t/e servlet /as n" initialiati"n para,eters.
ServletContext get ervlet!ontext#$
Ret rns a re!erence t" t/e ServletContext in X/ic/ t/e servlet is exec tin&.
java.lang.String get ervlet$ame#$
Ret rns t/e servlet c"ntainer attriC te Xit/ t/e &iven na,eg "r null i! t/ere is n" attriC te C< t/at na,e.
java.util.Enumeration get#ttribute$ames#$
Ret rns an Enumeration c"ntainin& t/e attriC te na,es availaCle Xit/in t/is servlet c"ntext.
Ret rns a ServletContext "Cject t/at c"rresp"n*s t" a speci!ie* {RL "n t/e server.
java.lang.String get"nitParameter#java.lang.String name$
Ret rns a String c"ntainin& t/e val e "! t/e na,e* c"ntext@Xi*e initialiati"n para,eterg "r null i! t/e para,eter *"es n"t exist.
java.util.Enumeration get"nitParameter$ames#$
Ret rns t/e na,es "! t/e c"ntexts initialiati"n para,eters as an Enumeration "! String "Cjectsg "r an e,pt< Enumeration i! t/e c"ntext /as n" initialiati"n para,eters.
int get0a:or'ersion#$
Ret rns t/e ,aj"r versi"n "! t/e >ava Servlet =?G t/at t/is servlet c"ntainer s pp"rts.
java.lang.String get0imeType#java.lang.String file$
Ret rns t/e MGME t<pe "! t/e speci!ie* !ileg "r null i! t/e MGME t<pe is n"t 2n"Xn.
int get0inor'ersion#$
Ret rns t/e ,in"r versi"n "! t/e Servlet =?G t/at t/is servlet c"ntainer s pp"rts.
Request)ispatc0er get$amed+ispatcher#java.lang.String name$
Ret rns a Request)ispatc0er "Cject t/at acts as a Xrapper !"r t/e na,e* servlet.
java.lang.String get(ealPath#java.lang.String pat0$
Ret rns a String c"ntainin& t/e real pat/ !"r a &iven virt al pat/.
Request)ispatc0er get(e*uest+ispatcher#java.lang.String pat0$
Ret rns a {RL t" t/e res" rce t/at is ,appe* t" a speci!ie* pat/.
java.io.InputStream get(esource#s tream#java.lang.String pat0$
Ret rns t/e res" rce l"cate* at t/e na,e* pat/ as an InputStream "Cject.
java.lang.String get erver"nfo#$
Ret rns t/e na,e an* versi"n "! t/e servlet c"ntainer "n X/ic/ t/e servlet is r nnin&.
Servlet get ervlet#java.lang.String name$
Thi) =etho3 Ya) originally 3efine3 to ret-rn an Enu)erat$on of all the )er'let) knoYn to thi) )er'let conte(t En thi) 'er)ionW thi) =etho3 alYay) ret-rn) an e=pty en-=eration an3 re=ain) only to pre)er'e #inary co=pati#ility Thi) =etho3 Yill #e per=anently re=o'e3 in a f-t-re 'er)ion of the Ta'a !er'let CSE
voi! log#java.lang.Exception exception& java.lang.String msg$
urites t/e speci!ie* ,essa&e t" a servlet l"& !ileg s all< an event l"&.
voi! log#java.lang.String message& java.lang.F0ro4a:le t0ro4a:le$
urites an explanat"r< ,essa&e an* a stac2 trace !"r a &iven F0ro4a:le excepti"n t" t/e servlet l"& !ile.
voi! remove#ttribute#java.lang.String name$
Re,"ves t/e attriC te Xit/ t/e &iven na,e !r", t/e servlet c"ntext.
voi! set#ttribute#java.lang.String name& java.lang.O:ject o:ject$
!=p D@Connection)
LBp n7< cJ n/i., v tO" c"nnecti"n VIn 6ataCase
private static String 9SERY3D5E ' (sa(; private static String PDSSWOR) ' (12A>Wk(; private static String 9RE '(j!:c6sqlserver6--local0ost^^0ai61>>A;!ata:ase3ame'test;(; public static Connection get)ZConnection#$ throws Class3otJoun!Exception& SgEException& InstantiationException& IllegalDccessException Connection con ' null; Class.for3ame#(com.microsoft.sqlserver.j!:c.SgEServer)river($; con ' )river5anager.getConnection#9RE& 9SERY3D5E& PDSSWOR)$; return con; %
Tr"n& VJ FI SqlServer V:bc c7i *:Bi *On& instance t/[ server na,e si cJ V^n/ *On& l7: server,name^instance,name. 1443 l7 c]n& T%?@G? c; /[n/ tr"n& SqlServer 3nI c_n& n7< c/:a 2/ai CQ" t/[ p/ai 2/ai CQ" t/[ ,Bi c"nnect V:bc4.
!=p Qser@usiness
LBp n7< c/Ea t;t ca cQc n&/i.p v liUn q an VIn Can& {ser tr"n& 6ataCase n/: GFSERTg SELE%Tg {?6=TEg 6ELETE... V) * p/:Ln& t/Ec chec&!ogin V:bc &\i tr"n& !"r, l"&in VD 2iD, tra serYpassX"r* V|n& n/sp.
public static boolean c0ecGEogin#9ser user$ throws Class3otJoun!Exception& SgEException& InstantiationException& IllegalDccessException Connection conn ' )ZConnection.get)ZConnection#$; Prepare!Statement st ' conn.prepareStatement#(SEEECF . JRO5 H9SERI W1ERE username ' V D3) pass4or! ' V($; int i ' =; st.setString#77i& user.get9sername#$$; st.setString#77i& Encr"ptation.cr"pt#user.getPass4or!#$$$; int count ' =; ResultSet rs ' st.executeguer"#$; while #rs.next#$$ count77; % return count '' 1 V true 6 false;
%/l : Encr"ptation.cr"pt#user.getPass4or!#$ t/1c /i.n ,- /Ja passX"r* se *n& M65 1A'Cit. V+ n& <Un t0cg 2D ca n&:fi lsp tr[n/ cn& 2/_n& V:bc CiIt cQc
t/_n& tin n/O< ca, n/: passX"r* c`a 2/Qc/ /7n&. V[ vs< passX"r* V:bc l: tr"n& 6ataCase p/ai V:bc ,- /Ja t/e" 1 t/ st t"Qn VQn& tin cs<. S"On ,- t/1c /i.n ,- /Ja n/: sa :
public static String cr"pt#String str$ if #str '' null TT str.lengt0#$ '' =$ throw new IllegalDrgumentException#(String to encr"pt cannot :e null or Uero lengt0($; % StringZuffer 0exString ' new StringZuffer#$; try 5essage)igest m! ' 5essage)igest.getInstance#(5)W($; m!.up!ate#str.getZ"tes#$$; byteHI 0as0 ' m!.!igest#$; for #int i ' =; i * 0as0.lengt0; i77$ if ##=xff j 0as0HiI$ * =x1=$ 0exString.appen!#(=( 7 Integer.to1exString##=xJJ j 0as0HiI$$$; % else 0exString.appen!#Integer.to1exString#=xJJ j 0as0HiI$$; % % % catch #3oSuc0Dlgorit0mException e$ e.printStacGFrace#$; % return 0exString.toString#$; %
%J t/D test 2It q a CPn& cQc/ t/U, v7" /7, ,ain n/: CUn *:Bi Vh<:
public static void main#StringHI a$ S"stem.out.println#cr"pt#(a:c($$; S"stem.out.println#cr"pt#(aaaaaaa($$; %
L;< *an/ ,c cQc {ser VD Qp *n& v7" {ser Searc/ !"r, c/n& /Ong ta cJ t/D se *n& p/:Ln& t/Ec CUn *:Bi. ?/:Ln& t/Ec n7< c/" searc/ c/)n/ xQc v7 searc/ &Tn Vln& tc< v7" CiIn X/"leu"r* tr <+n v7".
public static Eist*9ser+ searc09serZ"3ame#String username& boolean 40oleWor!$ throws SgEException& Class3otJoun!Exception& InstantiationException& IllegalDccessException String quer" ' (SEEECF username& role& !escription JRO5 H9SERI W1ERE username ' V(; String con!ition ' username; Drra"Eist list ' new Drra"Eist#$; if #`40oleWor!$ quer" ' (SEEECF username& role& !escription JRO5 H9SERI W1ERE username EICE V(; con!ition ' username 7 (](; % Connection conn ' )ZConnection.get)ZConnection#$;
Prepare!Statement st ' conn.prepareStatement#quer"$; st.setString#1& con!ition$; ResultSet rs ' st.executeguer"#$; while #rs.next#$$ 9ser user ' new 9ser#$; user.set9sername#rs.getString#(username($$; user.setRole#rs.getString#(role($$; user.set)escription#rs.getString#(!escription($$; list.a!!#user$; % return list;
?ava@ean Qser.java
SJn& vai tr l7 6Tk 9 6ata Trans!er kCject. FJ Ca" &, cQc t/ (c t)n/ VD t/D /i.n tRn& tr:fn& tr"n& Can& {ser v7 cQc ,et/"* &etYset t:Ln& En&:
private private private private String String String String username; pass4or!; role; !escription;
Code sample
UserBusiness.rar