You are on page 1of 68

Mc lc

Mc lc......................................................................................................................1
SERVLET..................................................................................................................3
javax.servlet.Servlet ..................................................................................................3
GenericServlet:..........................................................................................................4
HttpServlet.................................................................................................................5
ServletReqest inter!ace:...........................................................................................5
ServletResp"nse inter!ace..........................................................................................#
HttpServletReqest inter!ace:....................................................................................#
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
Reqest6ispatc/er.....................................................................................................5
Err"r l"& v7 sen* err"r.............................................................................................18
Sessi"n Trac2in& 9 L: *; sessi"n........................................................................18
Secrit< %"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
%",p"se* C< HaiFT
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 3qHc tI /Ja4 ..............................................................34
>S? cst", ta&s.......................................................................................................3'
?/ lc.....................................................................................................................4'
KIt nHi cL sM *N li. ...............................................................................................#5
%",p"se* C< HaiFT
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 javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import 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
A4 K/ai CQ" tr"n& XeC.x,l
*servlet+
*servlet,name+Serv1*-servlet,name+
*servlet,class+com.test.servlet.Servlet1*-servlet,class+
%",p"se* C< HaiFT
*-servlet+
*servlet,mapping+
*servlet,name+Serv1*-servlet,name+
*url,pattern+-Serv1*-url,pattern+
*-servlet,mapping+
34 %/O< En& *n& trUn Cr"Xser: /ttp:YYl"cal/"st:'8'8Y6e,"YServ1
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 void !estro"#$
public ServletConfig getServletConfig#$
public String getServletInfo#$
public void init#ServletConfig config$
public 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& qa 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 V-
t/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
%",p"se* C< HaiFT
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. jan tr\n& n/;t l7 # ,et/"* *"xxx V:bc &\i 2/i Http reqest 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
ServletRe!est inter"ace:
ServletReqest inter!ace cn& c;p cQc p/:Ln& t/Ec qan tr\n& c/" p/rp COn tr<
csp t/"n& tin v+ ser. V) *g p/:Ln& t/Ec &et?ara,eterFa,es tra v+ 2iD
En,erati"n c/Ea tsp /bp cQc tUn para,eter c`a reqest /i.n t/fi. SD l;< t/_n&
tin c`a cQc reqest n7< ta se *n& p/:Ln& t/Ec &et?ara,eter.
V61: in ra *an/ sQc/ t;t ca cQc ?ara,eter c`a reqest /i.n t/fi
Enumeration parameters ' request.getParameter3ames#$;
40ile #parameters.0as5oreElements#$$
String parameter3ame ' #String$ parameters.nextElement#$;
%",p"se* C< HaiFT
S"stem.out.println#(Parameter 3ame6 ( 7 parameter3ame$;
S"stem.out.println#(Parameter 8alue6 ( 7
request.getParameter#parameter3ame$$;
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 ServletReqest tr"n&
Can& *an/ ,c cQc p/:Ln& t/Ec c`a ServletReqest M cHi 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 qan 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#$;
"t.println3woHTMLqw4m
xx.
"t.println3woYHTMLqw4m
HttpServletRe!est inter"ace:
Gnter!ace n7< V:bc 2I t/Ra tR javax.servlet.ServletReqest VD cn& c;p cQc t/_n&
tin v+ reqest c/" HTT? servlet. HttpServletReqest V:bc t/U, v7" ,(t sH cQc
p/:Ln& t/Ec ,7 ServletReqest 2" cJ p/c v c/" HttpServlet.
V6: &et=t/T<pe34: tra v+ 2iD xQc t/1c VD Ca" v. servlet. KIt qa tra v+ cJ t/D l7
yZ=SG%zg ySSLz /"Wc F{LL nI servlet 2" V:bc Ca" v..
&et%"ntext?at/34: tra v+ 1 p/Tn {RL c`a c"ntext c`a reqest 3V6:
YServet6e,"4.
%Qc p/:Ln& t/Ec HTT? Case* 2/Qc l7: &et%""2ies34g &etHea*erxxx34x.
Tt c cc phng thc ca interface ny c lit k trong phn ph lc
%",p"se* C< HaiFT
HttpServletResponse inter"ace:
KI t/Ra tR ServletResp"nse inter!ace VD cn& 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+
;;;;
oYXeC@appq
A4 S\c cQc t/a, sH:
package com.test.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Enumeration;
import javax.servlet.ServletConfig;
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#$;
%",p"se* C< HaiFT
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#$$;
%
%
Tt c cc phng thc ca interface ny c lit k trong phn ph lc
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=ttriCte 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 javax.servlet..;
import javax.servlet.0ttp.1ttpServlet;
import java.util.Enumeration;
import java.io.IOException;
import 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#$$;
%
%
%",p"se* C< HaiFT
Tt c cc phng thc ca interface ny c lit k trong phn ph lc
%&t v' d v( m) l*n+ l,n$ n$+e s- .i*n (listener)
M~i 2/i ,(t s1 2i.n &[ VJ xa< ra t/i cQc p/:Ln& t/Ec t:Ln& En& si V:bc &\i
package com."ourcompan".listener;
import javax.servlet.ServletContextDttri:uteEvent;
import javax.servlet.ServletContextDttri:uteEistener;
public class 5"ServletContextDttri:uteEistener implements
ServletContextDttri:uteEistener
public void attri:uteD!!e!#ServletContextDttri:uteEvent sca:$
S"stem.out.println#(Dn attri:ute 4as a!!e! to t0e (
7 (ServletContext o:ject($;
%
public void attri:uteRemove!#ServletContextDttri:uteEvent sca:$
S"stem.out.println#(Dn attri:ute 4as remove! from (
7 (t0e ServletContext o:ject($;
%
public void attri:uteReplace!#ServletContextDttri:uteEvent sca:$
S"stem.out.println#(Dn attri:ute 4as replace! in t0e (
7 (ServletContext o:ject($;
%
%
%; /[n/ tr"n& XeC.x,l
*listener+
*listener,class+
com."ourcompan".listener.5"ServletContextDttri:uteEistener
*-listener,class+
*-listener+
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;< Reqest6ispatc/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
%",p"se* C< HaiFT
vBi HTT? reqest /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(tget+e,-e)t.i)patcher/0 c1 th2 34ng 5ng 36n tng 7i
request.getRequest)ispatc0er#(-in!ex.jsp($.inclu!e#request& response$;
request.getRequest)ispatc0er#(-in!ex.jsp($.for4ar!#request& response$;
Error lo$ v/ send error
log#(Fest log error(& new Exception#$$;
response.sen!Error#response.SC_BAD_GATEWAY$;
Session Trac.in$ 0 L1! d2! session
V[ p/:Ln& t/Ec HTT? l7 stateless 32" l: cQc t/_n& tin l^c/ se4g Vi+ n7< an/
/:Mn& sh s0c VIn lsp tr[n/ En& *n& XeC. %J 4 2 t/st VD l: *; sessi"n:
14 {RL reXrittin& 9 T/U, cQc t/a, sH v7" cHi {RL
A4 Hi**en !iel*s 9 Se *n& cQc tr:fn& n
34 %""2ies 9 Se *n& c""2ie VD tra" V]i *N li. &iNa client v7 server
44 Sessi"n o#&ect) 9 Se *n& cQc VHi t:bn& cJ p/O, vi 3sc"pe4 l7 sessi"n VD
tr<+n t/_n& tin.
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 <.
%",p"se* C< HaiFT
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. Reqest 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.
8ilter v/ Servlet comm!nication
pilter l7 ,(t C] xn& ,Bi c/" Servlet A.3g c/" p/rp COn c/0n 1 reqest tr:Bc 2/i
nJ tBi cQc t7i n&<Un. FJi cQc/ 2/Qcg !ilter c/" COn q<+n tr< csp VIn cQc
%",p"se* C< HaiFT
HttpServletReqest 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 reqest
V:bc &ei VIn v7 l"& V^a c/d G? c`a cQc ,Q< &ei reqest. 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 pClic v"i* init3pilter%"n!i& !ilter%"n!i&4
A4 pClic v"i* *"pilter3HttpServletReqest reqestg HttpServletResp"nse
resp"nseg pilter%/ain c/ain4
34 pClic v"i* *estr"<34
V) *1: Tr"n& v) * n7< si *e," vn& Vfi c`a !ilter:
TestFilter.java
import java.io..;
import java.net..;
import java.util..;
import java.text..;
import javax.servlet..;
import javax.servlet.0ttp..;
import javax.servlet.Jilter;
import javax.servlet.JilterC0ain;
import javax.servlet.JilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
public class FestJilter implements Jilter
%",p"se* C< HaiFT
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+
A4 T/e" {RL pattern:
*filter,mapping+
*filter,name+FestJilter*-filter,name+
*url,pattern+-Jiltere!Servlet*-url,pattern+
*-filter,mapping+
6:Bi Vh< l7 2/ai CQ" 3t/e" {RL4 tr"n& XeC.x,l
%",p"se* C< HaiFT
*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 java.io..;
import java.net..;
import javax.servlet..;
import 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+($;
%
%
%",p"se* C< HaiFT
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+
%",p"se* C< HaiFT
;<S=#
<e#(=l
*login,config+
*aut0,met0o!+ZDSIC*-aut0,met0o!+
*realm,name+9ser Zasic Dut0entication*-realm,name+
*-login,config+
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 attriCte 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+
%",p"se* C< HaiFT
*FR+
*F)+
9ser name6
*-F)+
*F)+
*I3P9F F\PE'FEXF 3D5E'(jYusername(+
*-F)+
*-FR+
*FR+
*F)+
Pass4or!6
*-F)+
*F)+
*I3P9F F\PE'PDSSWOR)
3D5E'(jYpass4or!(+
*-F)+
*-FR+
*FR+
*F)+
*I3P9F F\PE'RESEF+
*-F)+
*F)+
*I3P9F F\PE'S9Z5IF 8DE9E'(Eogin(+
*-F)+
*-FR+
*-FDZEE+
*-JOR5+
*-ZO)\+
*-1F5E+
"rror.jsp
*1F5E+
*1ED)+
*FIFEE+Error Page*-FIFEE+
*-1ED)+
*ZO)\+
Eogin faile!. ClicG
*D 1REJ'(*]'request.getContextPat0#$]+-Eogin.jsp(+0ere*-D+ to tr"
again.
*-ZO)\+
*-1F5E+
SSL (Soc.et Sec!re la:er )
SD c7i VWt SSL tr"n& t",cat COn p/ai t/1c /i.n 3 C:Bc sa:
1. TO" !ile Ke<st"re.
A. %; /[n/ T",cat VD se *n& Ke<st"re.
3. %; /[n/ XeC applicati"n VD cJ t/D l7, vi.c vBi SSL.
%",p"se* C< HaiFT
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
ZOn si p/ai tra lfi ,(t sH ch /i:
C6^)ocuments an! Settings^)D3CO+Ge"tool ,genGe" ,alias Ge"Dlias
,Ge"pass certPas
s ,Ge"store c6-testCertificate ,storepass certPass
W0at is "our first an! last nameV
H9nGno4nI6 1ai 3gu"en F0an0
W0at is t0e name of "our organiUational unitV
H9nGno4nI6 0ome
W0at is t0e name of "our organiUationV
H9nGno4nI6 Dptec0
W0at is t0e name of "our Cit" or Eocalit"V
H9nGno4nI6 1anoi
W0at is t0e name of "our State or ProvinceV
H9nGno4nI6 5etri
W0at is t0e t4o,letter countr" co!e for t0is unitV
H9nGno4nI6 @>
Is C3'1ai 3gu"en F0an0& O9'0ome& O'Dptec0& E'1anoi& SF'5etri& C'@>
correctV
HnoI6 "es
SWt !ile 2e<st"re v7" t/: ,c XeCapps c`a t",cat
C:u h;nh trong tomcat
MM !ile B*CTCDEFCGHIJKLYc"n!Yserver.x,l v7 t/iIt lsp n/: sa:
*Connector port'(@>>A( maxF0rea!s'(2==( sc0eme'(0ttps( secure'(true(
SSEEna:le!'(true( Ge"storeJile'(4e:apps-testCertificate(
Ge"storePass'(certPass( clientDut0'(false( sslProtocol'(FES( -+
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+
%",p"se* C< HaiFT
<pplet
Test'pplet.java
i,p"rt java.applet.m
i,p"rt java.aXt.m
pClic class Test=pplet exten*s =pplet
pClic v"i* paint3Grap/ics &4
&.*raXStrin&3wuelc",e in >ava =pplet.wg 48g A84m
t
pClic int ,<Met/"*3int a4
retrn 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)tappletcla)) ' a 'o c4ng th- =c 'Oi
Te)tCppletht=l /*hPn Te)tCpplet&a'a pre)) QR0
'pplet &<t n9i v=i c7c ,9i t3>ng &h7c)
14 =pplet cJ t/D &\i v7 V:bc &\i tR >avascript.
A4 =pplet cJ t/D 2It nHi vBi applet 2/Qc se *n& javascript "Cject 3>SkCject4.
34 =pplet cJ t/D liUn /. vBi servlet
%",p"se* C< HaiFT
@S5 A @ava Server 5a$es
GiBi t+i*! v( @S5
>sp V:bc se *n& VD tO" XeC V(n& 3*<na,ic XeC4g tr"n& En& *n& XeC Va tTn&
3,lti la<ere* XeC app4g >S? V:bc se *n& l7, tTn& tr[n/ *in. FJ cn& cJ 2/a
n|n& t:Ln& tQc vBi tTn& En& *n& 3applicati"n la<er4 v7 tO" ra XeC V(n& *1a trUn
Csiness l"&ic.
K/i >S? V:bc &\i lTn VTg nJ V:bc tr[n/ CiUn *^c/ p/hn t)c/ v7 CiUn *^c/ t/7n/
servlet class. FI CiUn *^c/ t/7n/ c_n&g jsp servlet class n7< si V:bc nOp v7" C(
n/B. Tr"n& lTn &\i tiIp t/e"g servlet clas n7< V- M sn tr"n& C( n/Bg t< n/iUn nJ
cJ t/D V:bc p*ate. ZMi vs<g tr[n/ CiUn *^c/ si s" sQn/ ti,esta,p c`a jsp servlet
vBi jsp. FI jsp ,Bi /Ln t/[ nJ si CiUn *^c/ lOi. V[ vs< COn cJ t/D ca, t/;< ,~i
2/i v7" tran& jsp lTn VT Ca" &if cn& t/;< c/s, /Ln cQc lTn sa.
Vn& Vfi c`a >S? 3Li!e circle4
14 Translati"n: >S? V:bc *^c/ t/7n/ >S? servlet vBi 3 p/:Ln& t/Ec: jspGnit34g
jspService34 v7 jsp6estr"<34. V6: p-#lic cla)) !i=pleSageG&)p e(ten3)
HttpT)pMa)e
A4 %",pilati"n: >S? servlet V:bc CiUn *^c/ san& class
34 T/1c t/i cQc p/:Ln& t/Ec init34 v7 service34 v7 c/<Dn v+ *On& /t,l VD /iDn
t/^ lUn Cr"Xser.
Expresssion (9iC! t+Dc)
on3Aq
Scriptlets
o Strin& an yaCczm
Gnt i n 8m
"t.println3yT/is is scriptlets sa,plez4m
q
%",p"se* C< HaiFT
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 EiC! $iF trG GiF trG mHc IGn+
lan&a&e Scriptin& lan&a&e na,e wjavaw
in!" Strin& 6epen*s "n t/e >S? c"ntainer
c"ntentT<pe MGME t<peg c/aracter set wtextY/t,lmc/arsetnGSk@''55@1w
exten*s %lass na,e F"ne
i,p"rt pll< qali!ie* class na,e "r pac2a&e na,e F"ne
C!!er Z!!er sie "r !alse '15A
at"pls/ Z""lean wtrew
sessi"n Z""lean wtrew
isT/rea*Sa!e Z""lean wtrew
err"r?a&e {RL F"ne
isErr"r?a&e Z""lean w!alsew
8)6 errorPage
%",p"se* C< HaiFT
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 tre4
*]< page errorPage'(errorPage.jsp( ]+
*]
int i ' 1=;
i ' i - =;
]+
Tran& /iDn t/^ l~i err"r?a&e.jsp
*]< page isErrorPage'(true(]+
*0tml+
*0ea!+
*title+Error Page*-title+
*-0ea!+
*:o!"+
*:+Exception6*-:+
*:r+
*]'exception.toString#$]+
*-:o!"+
</html>
autoFlush Attribute
at"pls/ liUn qan VUn pa&e C!!er. K/i &iQ tr^ V:bc VWt l7 treg >S? c"ntainer si t1 V(n& !ls/
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 !ls/ C!!er ,anall< qa vi.c se *n& ,et/"* c`a >spuriterg V6:
out.flus0#$;
V6g V"On c"*e sa set at"pls/ attriCte CPn& !alse:
*]< page autoJlus0'(false( ]+
Session Attribute
FI VWt &iQ tr^ l7 tre 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
%",p"se* C< HaiFT
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 qa n #@@q
jsp:param
%",p"se* C< HaiFT
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!+
TO" sccess.jsp vBi n(i *n& n/: sa:
Parameter a ' *]'request.getParameter#(a($]+
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.
%",p"se* C< HaiFT
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
MHn 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+
Tr!: cJp @ava;ean
Se *n& >avaZean tr"n& v) * v+ jsp:seZean 3%alc.java4
*jsp6useZean i!'(calc( class'(com.aptec0.:ean.Calc(
scope'(request( -+
acalc.a% *`b,0iPn t0N Gct qud lR giM trN cKa propert" a,,+
HiCn t+G attri9!te
AB Ci/n th8 attriute
*]request.setDttri:ute#(:(& (a:c($;]+
a:% *`b,0iPn t0N giM trN cKa attri:ute :,,+
DB Ci/n th8 collection
*]
StringHI first3ames ' (Zill(& (Scott(& (Earr"( %;
request.setDttri:ute#(first(& first3ames$;
]+
%",p"se* C< HaiFT
*9E+
*EI+afirstH=I%
*EI+afirstH1I%
*EI+afirstH2I%
*-9E+
SK dn$ implicit o9ject
*:+ Session I)6*-:+ apageContext.session.i!%
*:r-+
*:+1ea!er accept6*-:+ a0ea!er.Dccept%
*:r -+
or
*:r -+
a0ea!erH(Dccept(I%
*:r-+
*:+0ea!er accept,enco!ing6*-:+ a0ea!erH(Dccept,Enco!ing(I%
SK dn$ cFc EL operator (toFn tK EL )
'rithmetic Eperators Fto7n tG s9 hHcB
g 9g

g Y3*iv4g 3,"*4
Relational Eperators FTo7n tG quan hIB
nn 3 eq4g n 3ne4g o 3lt4g q 3&t4g on 3le4g qn 3&e4
!ogical Eperators Fto7n tG logicB
3an*4g 3"r4g 3n"t4
The empt% Eperator Fto7n tG empt%B
FI VHi t:bn& cJ &iQ tr^ l7 nll t/[ tra v+ tre v7 n&:bc lOi. %l p/Qp: aempty x%
@i/u thJc ,iKu &iIn Fconditionall% expressionB
test expressi"n1 : expressi"nA t
V6: a1''2 V (aaa( 6 (:::(%
@STL A @ava Server 5a$es Standard Ta$ Li9rar:
#Fc t+/n+ p+Ln v/ c+Dc nMn$ cNa:
%",p"se* C< HaiFT
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<
cst", ta&s V:bc tO" ra n/: 1 s1 t/a< t/I. >STL cn& c;p tsp cQc t/v cst", 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& cn& 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& qa >S? V:bc c/n /Ja CMi tsp t/v cst", ta& c`a >STL
TU! manipulation: ML V:bc se *n& r(n& r-i tr"n& javag v[ vs< >STL cn& c;p tsp
cQc cst", ta& V:bc t/iIt 2I riUn& VD xe l ML.
Tru% c-p Dataase) 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.
TOi sao 9On nPn sK dn$ @STL
>STL 2/Q ,Bi n/:n& cQc c/Ec n|n& ,7 nJ t/a< t/I 2/_n& ,Bi. M\i t/E ,7 >STL
cn& c;p cJ t/D V:bc t/1c /i.n v7 t/:fn& x<Un V:bc t/1c /i.n vBi cQc cst",
ta& c`a 1 !ra,eX"r2 n7" VJ /"Wc >S? c"ntainer. L7 v_ n&/}a VD &ia C( rPn& >STL
l_n l_n V:bc se *n& VD c/Hn& lOi cQc &iai p/Qp tr:Bc. >STL l7 ,(t tiU c/ng
v[ nJ V:bc xh< *1n& c/n& CMi cQc t/7n/ viUn c`a c(n& Vn& >S? v7 nJ ,an& lOi
,(t s1 C] xn& tHt v7 /N *n& vBi n/i+ /7, /N )c/. >STL cn& c;p cQc t/7n/
p/Tn c/n& cL Can VD xh< *1n& ,(t *1 Qn ,7 cQc *evel"per 2" cTn p/ai xh< *1n&
lOi.
M(t l *" lBn 2/Qc l7 CPn& vi.c se *n& >STL COn cJ t/D 2/_n& cTn CiIt n/i+ v+
java /"Wc COn 2/_n& ,;< qan th, VIn 2iIn trlc MV% liUn qan VI vi.c se *n&
servletg !ilterg javaCean v7 >S?.
#/i IHt @STL
%"p< A .jar !ile v7" t/ ,c liC:
%",p"se* C< HaiFT
1$ stan!ar!.jar
2$ 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 qag &ei 2It qa 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. attriutes)
1. value: &iQ tr^ c`a value attriCte l7 CiD t/Ec VD VQn/ &iQ. KIt qa 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< 3rnti,e4.
A. escapeTml: c/d ra rPn& nI 2It qa 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< 3rnti,e4.
V6: oc:"t valenwltmg $tmg a,pmg 835mg 834mtw
escape,lnw!alsewYq
Tra v+ 2It qa l7: og qg g g w
oc:"t valenwltmg $tmg a,pmg 835mg 834mtw Yq
Tra v+ 2It qa l7: ltmg &tmg a,pmg 835mg 834m
%",p"se* C< HaiFT
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 qa l7 nll.
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 qa c`a javaZean /"Wc 1 VHi t:bn& java.til.Map.
set acti"n cJ cQc t/(c t)n/ sa:
1. vale: l7 &iQ tr^ &Qn. T/(c n7< cJ t/D l7 CiD t/Ec rnti,e.
A. var: l7 tUn c`a tUn V:bc set &iQ tr^.
3. sc"pe: l7 p/O, v^ c`a CiIn pageg requestg sessiong v7 applicationg pa&e l7 &iQ
tr^ ,Wc V^n/.
4. 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^ rnti,e.
5. pr"pert<: l7 tUn c`a t/(c t)n/ c`a VHi t:bn& V:bc c/d V^n/ CMi target
attriCte. T/(c t)n/ n7< cJ t/D l7 &iQ tr^ rnti,e.
V6:
*]
com.aptec0.:ean.9ser user ' new com.aptec0.:ean.9ser#$;
]+

*c6set var '(name( value'(5ic0ael_s( propert"'(username( target'(user(-+
*c6out value'(aname%( !efault'(xxx(-+
Xc)removeY
Se *n& VD xJa CiIn.
%:re,"ve cJ A attriCte:
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.
%",p"se* C< HaiFT
var: tUn CiIn VD re,"ve.
V6:
*c6set var '(a( value'(a:c( scope'(session(-+
*c6set var '(:( value'(x"U( scope'(session(-+
*c6out value'(aa%( !efault'(xxx(-+
*c6remove var'(a( scope'(session(-+
a after removing6*c6out value'(aa%(-+
*c6remove var'(:( scope'(request(-+
: after removing6 *c6out value'(a:%(-+
Xc)catchY
Lteration FvMng lNpB
<forEach>
!"rEac/ ta& /~ trb cQc 2iD *N li. &a'a-til*ollectiong &a'a-tilEteratorg
&a'a-tilKn-=erationg /"Wc &a'a-tilJap. !"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
rnti,e.
varStats: 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 cHi 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#$$;
%",p"se* C< HaiFT
]+
*c6forEac0 var'(item( :egin'(=( items'(aset%(+
F0e value is *c6out value'(aitem%( -+
*-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'(aitem%( -+
</c:forTokens>
Conditionals FcZu lInh ,iKu &iInB
<c:if>
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'(aa%( -+.
<choose>, <when>, v <otherwise>
*c6c0oose+
*c640en test'(a" '' [aa:c[%(+
" '' [aa:c[
*-c640en+
*c6ot0er4ise+
" `' [aa:c[
*-c6ot0er4ise+
*-c6c0oose+
%",p"se* C< HaiFT
QR! Uanipulation
<c:import> and <c:param>
T/e import ta& /as t/e !"ll"Xin& attriCtes:
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/
rnti,e.
c"ntext: T/e context attriCte 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 vale ,a< Ce
speci!ie* C< a rnti,e vale. = !"rei&n c"ntext is an"t/er ueC =pplicati"n t/at is
exectin& "n t/e sa,e ueC server. T/is vale 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 eqivalent "! a reqest *ispatc/ acr"ss
ueC =pplicati"n C"n*aries an* ,a< n"t X"r2 "n particlar c"ntainers *e t" secrit< "r
"t/er restricti"ns.
var: T/e var attriCte 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 attriCte *e!ines t/e sc"pe "! a variaCle na,e* C< t/e var attriCte.
Vali* vales are pageg requestg sessiong an* application.
c/arEnc"*in&: T/e c0arEnco!ing attriCte can Ce se* t" speci!< t/e c/aracter enc"*in&
"! t/e c"ntent at t/e inpt res"rce. Z< *e!alt it is ass,e* t/e stan*ar*g ISO,@@W?,1g
enc"*in& is se*.
varRea*er: T/e varRea!er attriCte is availaCle t" create a Rea!er "Cject !"r se C<
c"ntent in t/e i,p"rt ta&s C"*<. T/e vale "! t/e varRea!er attriCte is t/e na,e "! t/e
sc"pe* variaClem t/e t<pe "! t/e variaCle is java.io.Rea!er.
V6: *c6import url'(-jstl.jsp( var'(value( -+
*c6out value'(avalue%( -+
c)param
L7 t/v c"n c`a c:i,p"rt vBi na,e l7 tUn para,eterg vale 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+
%",p"se* C< HaiFT
1ofc
*c6url value'(-in!ex.jsp( var'(u( -+
*a 0ref'(au%(+ZooG Site*-a+
url ta& cJ cQc t/(c t)n/ sa:
vale: T/e value attriCte is se* t" pr"vi*e t/e {RL t" Ce pr"cesse*.
c"ntext: T/e context attriCte *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 attriCte can Ce se* t" exp"rt t/e reXritten {RL t" a sc"pe* variaCle. T/e
vale "! 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 attriCte.
sc"pe: T/e scope attriCte *eter,ines t/e sc"pe "! t/e "Cject na,e* C< t/e var attriCte.
Vali* vales are pageg requestg sessiong an* application.
Xc)redirectY
T:Ln& V:Ln& 1ttpServletResponse sen!Re!irect#$
V6: oc:re*irect rlnwYjstl.jspwYq
SQL ta$ Li9rar:
*sql6set)ataSource !river'(com.microsoft.sqlserver.j!:c.SgEServer)river(
url'(j!:c6sqlserver6--local0ost^^0ai61>>A;!ata:ase3ame'test;( user'(sa(
pass4or!'(....( var'(conn( -+
*sql6quer" var'(users( !ataSource'(aconn%(+
SEEECF . JRO5 H9SERI
*-sql6quer"+
*ta:le :or!er'(1(+
*tr+
*c6forEac0 var'(col3ame( items'(ausers.column3ames%(+
*t0+
*c6out value'(acol3ame%( -+
*-t0+
*-c6forEac0+
*-tr+
*c6forEac0 items'(ausers.ro4sZ"In!ex%( var'(ro4(+
*tr+
*c6forEac0 var'(col( items'(aro4%(+
*t!+
*c6out value'(acol%( -+
*-t!+
*-c6forEac0+
*-tr+
*-c6forEac0+
%",p"se* C< HaiFT
*-ta:le+
=RST 0 =nternationalisation (!Uc tV +Wa)
14 T/a< V]i n&_n n&N t/e" 2/ v1c 3l"cale4 ,7 2/_n& cTn t/a< V]i n/i+ tr"n&
c_n& n&/..
A4 L"caliati"n: &ilp tO" ra En& *n& Va n&_n n&Ng V^n/ *On& ti+n t.
3crrenc<4g n&7< t/Qn& 3*ate@ti,e4 t/e" 2/ v1c V^a l 3&e"&rap/ic re&i"n4.
Se *n& java.til.L"cale.
34 {nic"*e: l7 Can& ,- c/Ea cQc 2 t1 v7 cQc CiD t:bn& c`a t;t ca cQc n:Bc
c/)n/ trUn t/I &iBi.
44 Res"rce Cn*le: l7 .pr"perties !ile c/Ea *N li. *On& 2e< v7 vale t/D /iDn
Va n&_n n&N. S^n/ *On& xx vBi xx l7 A c/N viIt t0t c`a n&_n n&N 3c/N
t/:fn&m l7 A c/N viIt t0t c/" tUn qHc &ia 3c/N /"a4. V6
Messa&eZn*leen{S.pr"perties l7 !ile c; /[n/ c/" tiIn& an/ M.
Messa&eZn*le2"KR c/" Sel H7n jHc.
Messa&eZn*le.pr"perties
Messa&eZn*le!r.pr"perties
Xp dn$ =RST tron$ @S5:
V6: 1
test.jsp
*]< tagli: uri'(0ttp6--java.sun.com-jstl-fmt( prefix'(fmt(]+
*fmt6:un!le :asename'(com.aptec0.conf.5essageZun!le(+
*0tml+
*0ea!+
*title+*fmt6message Ge"'(title(-+*-title+
*-0ea!+
*:o!"+
*fmt6message Ge"'(4elcome(-+
*-:o!"+
*-0tml+
*-fmt6:un!le+
MessageBundle.properties
%",p"se* C< HaiFT
title'Welcome`
4elcome'Welcome to t0e I1@3 resource :un!le sample.
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+acontent.title%*-title+
*-0ea!+
*:o!"+
acontent.4elcome%
*-:o!"+
*-0tml+
Welcome.java
package com.aptec0.:ean;
public class Welcome
protected String title ' null;
protected String 4elcome ' null;
@@@@@t/U, cQc p/:Ln& t/Ec &et v7 set v7"
%
T/a< V]i L"cale tR *e!alt san& L"cale.pR=F%E si t/;< 2It qa /iDn t/^ t/a< V]i.
Xp dn$ =RST tron$ Servlet:
protected void !o/et#1ttpServletRequest request&
1ttpServletResponse response$ throws
ServletException& IOException
ResourceZun!le :un!le ' ResourceZun!le.getZun!le#
(com.aptec0.conf.5essageZun!le(& Eocale.CORED3$;
Enumeration Ge"s ' :un!le.getCe"s#$;
PrintWriter out ' response.getWriter#$;
while #Ge"s.0as5oreElements#$$
String Ge" ' #String$ Ge"s.nextElement#$;
out.println#(Ge"6( 7 Ge"$;%%
Reso!rce;!ndle class
%",p"se* C< HaiFT
get@undleFB)
TO" VHi t:bn& Cn*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 Cn*le
&etkCject32e<4
T/a, sH l7 tUn 2e< tr"n& .pr"perties !ile. KIt qa tra v+ l7 vale 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+ vale t:Ln& En& vBi t/a, sH 2e< tr"n& .pr"perties !ile.
Date 8ormattin$ (YGn+ dOn$ n$/: t+Fn$)
)ate to!a" ' new )ate#$;
)ateJormat !f ' )ateJormat.get)ateInstance#)ateJormat.)EJD9EF& Eocale.JRE3C1$;
)ateJormat !f1 ' )ateJormat.get)ateInstance#)ateJormat.)EJD9EF&
Eocale.E3/EIS1$;
PrintWriter out ' response.getWriter#$;
out.println#!f.format#to!a"$$;
out.println#!f1.format#to!a"$$;
Simple)ateJormat sf ' new Simple)ateJormat#(""",55,!!(& Eocale.JRE3C1$;
out.println#sf.format#to!a"$$;
#!rencies 8ormattin$ (IGn+ dOn$ ti(n t*):
Currenc% Class
getLnstanceF!ocaleB
L;< instance 3VHi t:bn&4 2iD %rrenc< t/e" l"cale V:bc c/d V^n/.
%",p"se* C< HaiFT
8)6 Currenc" cr ' Currenc".getInstance#Eocale.9S$;
getCurrenc%CodeFB)
tra v+ ,- ti+n t. t/e" l"cale
V6:
out.println#(Currenc" co!e6( 7 cr.getCurrenc"Co!e#$$;--Gct qud trd vh lR 9S)
getS%molFB)
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
NumerFormat Class)
formatFdouleB)
3um:erJormat nf ' 3um:erJormat.getPercentInstance#Eocale.JRD3CE$;
out.println#(nf6( 7 nf.format#=.W1$$;
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#$$;
parseFStringB)
%/<Dn tR c/~i t/7n/ sH
3um:erJormat nf ' 3um:erJormat.getInstance#$;
out.println#(nf6( 7 nf.parse#(1.???.???&=1($$;--1iPn t0N Gct qud 1.???
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$;
%",p"se* C< HaiFT
@S5 c!stom ta$s
Ta$ li9rar: descriptor
Sh< l7 ,(t !ile ML ,_ ta cQc cst", ta&s tr"n& En& *n& >S?. FJ V^n/ n&/}a 1
cst", ta& v7 V:bc l: vBi p/Tn ,M r(n& .tl*.
Ta$ +andler
Sh< l7 ,(t !ile java VLn &ian c/Ea c"*e c/" cQc c/Ec n|n& c`a cst", ta&. %J A
l"Oi classic v7 simple.
#Fc t+!Jt n$Z !an tr[n$ liPn !an
Classic Custom Tag
S:bc V^n/ n&/}a CMi classic ta& /an*ler class.
Simple Custom Tag
S:bc V^n/ n&/}a CMi si,ple ta& /an*ler class.
@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&Spp"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&
Spp"rt class.
@asper \
%",p"se* C< HaiFT
>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 Sn 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:
tliCversi"n
jspversi"n
s/"rtna,e
in!"
ri
ta&
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.
%",p"se* C< HaiFT
#4 ta& l7 t/7n/ p/Tn qan tr\n& n/;t c`a ta& liCrar<. ZOn cJ t/D c/d V^n/ /Ln 1
t/v ta&.
VDR #lassic c!stom ta$ 4it+o!t 9od:
*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!(+
*tagli:+
*tli:version+1.=.12A.12A.2A>*-tli:version+
*jspversion+1.2*-jspversion+
*s0ortname+*-s0ortname+
*info+Example tags*-info+
*uri+*-uri+
*tag+
*name+m"Fag*-name+
*tagclass+com.aptec0.customtag.1elloFag*-tagclass+
*attri:ute+
*name+name*-name+
*require!+true*-require!+
*-attri:ute+
*-tag+
*-tagli:+
E+ai 9Fo tron$ 4e9.xml
*jsp,config+
*tagli:+
*tagli:,uri+-0ello*-tagli:,uri+
*tagli:,location+-WEZ,I3J-tl!s-0ello.tl!*-tagli:,location+
*-tagli:+
*-jsp,config+
TOo Ta$ Handler
package com.aptec0.customtag;
import javax.servlet.jsp..;
import javax.servlet.jsp.tagext..;
public class 1elloFag extends FagSupport
private String name;
public int !oEn!Fag#$ throws _spException
_spWriter out ' pageContext.getOut#$;
try
out.println#(*0r-+($;
% catch #Exception e$
%
return super.!oEn!Fag#$;
%",p"se* C< HaiFT
%
-..
. @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;
%
%
^K l_ ta$ tron$ @S5
*]< tagli: uri'(-WEZ,I3J-tl!s-0ello.tl!( prefix'(0ello( ]+
*0tml+
*0ea!+
*title+\our Stan!ar! 1ello Worl! )emo*-title+
*-0ea!+
*:o!" :gcolor'(iffffff(+
*0ello6m"Fag name'(1ai(-+
*-:o!"+
*-0tml+
VD\ classic c!stom ta$ 4it+ 9od:
Tag handler ClassicTagDemo.java
package com.aptec0.tag0an!ler;
import java.io.IOException;
import java.util.logging.Eevel;
import java.util.logging.Eogger;
import javax.servlet.0ttp..;
import javax.servlet.jsp..;
import javax.servlet.jsp.tagext..;
public class ClassicFag)emo extends Zo!"FagSupport
%",p"se* C< HaiFT
--F0ese varia:le represent t0e custom tag[s attri:utes
private String 0ea!ing ' null;
private String image ' null;
private String 4i!t0 ' null;
private 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;
%
%",p"se* C< HaiFT
--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+
%",p"se* C< HaiFT
*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+
Qse tag in ?S(
*]< tagli: uri'(-aptec0-Classic !emo...( prefix'(clsFag)emo(]+
*]
--If require!' false ,+ error for image attri:ute
String img3ame ' (islan!Y0ula.gif(;
]+
*clsFag)emo6logo 0ea!ing'(k( image'(*]'img3ame]+( 4i!t0'(AAW( 0eig0t'(1W=(+
Come 0ere come 0ere& :a:e`
*-clsFag)emo6logo+
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+
%",p"se* C< HaiFT
*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 java.io.IOException;
import java.text.Simple)ateJormat;
import java.util.)ate;
import javax.servlet.jsp..;
import 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'ttriuteTag
pacGage com.aptec0.tag0an!ler;
import javax.servlet.jsp.tagext..;
import javax.servlet.jsp..;
import java.util..;
import 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
%",p"se* C< HaiFT
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 java.io.IOException;
import java.text.Simple)ateJormat;
import java.util.)ate;
import javax.servlet.jsp..;
import 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(
%",p"se* C< HaiFT
F0e current !ate is *simple6!ate format'(!!-55-""( -+.
*0r+
*simple6!"namicDttri:ute name'(test( value'(a value(-+
*0r+
*simple6:o!"-+
3sin$ Ta$ "ile
caps.tag
*]<tag :o!",content'(scriptless(]+
*jsp6!oZo!" var ' (t0eZo!"( scope'(session(-+
*]String :c ' #String$ session.getDttri:ute#(t0eZo!"($;]+
*]':c.to9pperCase#$]+
heading.tag
*]<attri:ute name'(0ea!ing1(]+
*]<attri:ute name'(0ea!ing2(]+
*]<attri:ute name'(0ea!ingA(]+
*]<attri:ute name'(0ea!ing>(]+
*tr+
*t!+a0ea!ing1%*-t!+
*t!+a0ea!ing2%*-t!+
*t!+a0ea!ingA%*-t!+
*t!+a0ea!ing>%*-t!+
*-tr+
column.tag
*]<attri:ute name'(col1(]+
*]<attri:ute name'(col2(]+
*]<attri:ute name'(colA(]+
*]<attri:ute name'(col>(]+
*tr+
*t!+acol1%*-t!+
*t!+acol2%*-t!+
*t!+acolA%*-t!+
*t!+acol>%*-t!+
*-tr+
?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+
%",p"se* C< HaiFT
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 getervlet!onfig#$
Retrns a ServletConfig "Cjectg X/ic/ c"ntains
initialiati"n an* startp para,eters !"r t/is servlet.
java.lang.String getervlet"nfo#$
Retrns in!"r,ati"n aC"t t/e servletg sc/ as at/"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 reqest.

#Fc p+1`ng thDc cNa ServletRe!est inter"ace:
java.lang.O:ject get#ttribute#java.lang.String name$
Retrns t/e vale "! t/e na,e* attriCte as an
O:jectg "r null i! n" attriCte "! t/e &iven na,e exists.
java.util.Enumeration get#ttribute$ames#$
Retrns an Enumeration c"ntainin& t/e na,es "! t/e
attriCtes availaCle t" t/is reqest.
%",p"se* C< HaiFT
java.lang.String get!haracter%ncoding#$
Retrns t/e na,e "! t/e c/aracter enc"*in& se* in
t/e C"*< "! t/is reqest.
int get!ontent&ength#$
Retrns t/e len&t/g in C<tesg "! t/e reqest C"*<
an* ,a*e availaCle C< t/e inpt strea,g "r @1 i! t/e len&t/
is n"t 2n"Xn.
java.lang.String get!ontentType#$
Retrns t/e MGME t<pe "! t/e C"*< "! t/e reqestg
"r null i! t/e t<pe is n"t 2n"Xn.
ServletInputStream get"nputtream#$
Retrieves t/e C"*< "! t/e reqest as Cinar< *ata
sin& a ServletInputStream.
java.util.Eocale get&ocale#$
Retrns 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#$
Retrns 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$
Retrns t/e vale "! a reqest para,eter as a
Stringg "r null i! t/e para,eter *"es n"t exist.
java.util.Enumeration getParameter$ames#$
Retrns an Enumeration "! String "Cjects c"ntainin&
t/e na,es "! t/e para,eters c"ntaine* in t/is reqest.
java.lang.StringHI getParameter'alues#java.lang.String name$
Retrns an arra< "! String "Cjects c"ntainin& all "!
t/e vales t/e &iven reqest para,eter /asg "r null i! t/e
%",p"se* C< HaiFT
para,eter *"es n"t exist.
java.lang.String getProtocol#$
Retrns t/e na,e an* versi"n "! t/e pr"t"c"l t/e
reqest 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 reqest 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 ServletContextgetRealPat!"#avalangStr$ng%
in)tea3
java.lang.String get(emote#ddr#$
Retrns t/e Gnternet ?r"t"c"l 3G?4 a**ress "! t/e
client t/at sent t/e reqest.
java.lang.String get(emote)ost#$
Retrns t/e !ll< qali!ie* na,e "! t/e client t/at
sent t/e reqestg "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$
Retrns 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 getcheme#$
Retrns t/e na,e "! t/e sc/e,e se* t" ,a2e t/is
reqestg !"r exa,pleg 0ttpg 0ttpsg "r ftp.
java.lang.String geterver$ame#$
Retrns t/e /"st na,e "! t/e server t/at receive*
t/e reqest.
%",p"se* C< HaiFT
int geterverPort#$
Retrns t/e p"rt n,Cer "n X/ic/ t/is reqest Xas
receive*.
:oolean isecure#$
Retrns a C""lean in*icatin& X/et/er t/is reqest
Xas ,a*e sin& a secre c/annelg sc/ as HTT?S.
voi! remove#ttribute#java.lang.String name$
Re,"ves an attriCte !r", t/is reqest.
voi! set#ttribute#java.lang.String name&
java.lang.O:ject o$
St"res an attriCte in t/is reqest.

#Fc p+1`ng thDc cNa ServletResponse inter"ace:
voi! flush,uffer#$
p"rces an< c"ntent in t/e C!!er t" Ce Xritten t" t/e
client.
int get,ufferi-e#$
Retrns t/e actal C!!er sie se* !"r t/e resp"nse.
java.lang.String get!haracter%ncoding#$
Retrns 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#$
Retrns t/e l"cale assi&ne* t" t/e resp"nse.
ServletOutputStream get.utputtream#$
Retrns a ServletOutputStream sitaCle !"r Xritin&
Cinar< *ata in t/e resp"nse.
java.io.PrintWriter get/riter#$
Retrns a PrintWriter "Cject t/at can sen* c/aracter
%",p"se* C< HaiFT
text t" t/e client.
:oolean is!ommitted#$
Retrns a C""lean in*icatin& i! t/e resp"nse /as Ceen
c",,itte*.
voi! reset#$
%lears an< *ata t/at exists in t/e C!!er as Xell as t/e
stats c"*e an* /ea*ers.
voi! set,ufferi-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.

#Fc p+1`n$ t+Dc cNa HttpRe!est inter"ace
java.lang.String get#uthType#$
Retrns t/e na,e "! t/e at/enticati"n sc/e,e
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#$
%",p"se* C< HaiFT
Retrns t/e p"rti"n "! t/e reqest {RG t/at
in*icates t/e c"ntext "! t/e reqest.
CooGieHI get!ookies#$
Retrns an arra< c"ntainin& all "! t/e CooGie
"Cjects t/e client sent Xit/ t/is reqest.
long get+ate)eader#java.lang.String name$
Retrns t/e vale "! t/e speci!ie* reqest /ea*er
as a long vale t/at represents a )ate "Cject.
java.lang.String get)eader#java.lang.String name$
Retrns t/e vale "! t/e speci!ie* reqest /ea*er
as a String.
java.util.Enumeration get)eader$ames#$
Retrns an en,erati"n "! all t/e /ea*er na,es
t/is reqest c"ntains.
java.util.Enumeration get)eaders#java.lang.String name$
Retrns all t/e vales "! t/e speci!ie* reqest
/ea*er as an Enumeration "! String "Cjects.
int get"nt)eader#java.lang.String name$
Retrns t/e vale "! t/e speci!ie* reqest /ea*er
as an int.
java.lang.String get0ethod#$
Retrns t/e na,e "! t/e HTT? ,et/"* Xit/ X/ic/
t/is reqest Xas ,a*eg !"r exa,pleg GETg ?kSTg "r
?{T.
java.lang.String getPath"nfo#$
Retrns an< extra pat/ in!"r,ati"n ass"ciate*
Xit/ t/e {RL t/e client sent X/en it ,a*e t/is reqest.
java.lang.String getPathTranslated#$
Retrns an< extra pat/ in!"r,ati"n a!ter t/e
%",p"se* C< HaiFT
servlet na,e Ct Ce!"re t/e qer< strin&g an* translates it
t" a real pat/.
java.lang.String get1uerytring#$
Retrns t/e qer< strin& t/at is c"ntaine* in t/e
reqest {RL a!ter t/e pat/.
java.lang.String get(emote2ser#$
Retrns t/e l"&in "! t/e ser ,a2in& t/is reqestg
i! t/e ser /as Ceen at/enticate*g "r null i! t/e ser /as
n"t Ceen at/enticate*.
java.lang.String get(e*uestedession"d#$
Retrns t/e sessi"n G6 speci!ie* C< t/e client.
java.lang.String get(e*uest2("#$
Retrns t/e part "! t/is reqests {RL !r", t/e
pr"t"c"l na,e p t" t/e qer< strin& in t/e !irst line "!
t/e HTT? reqest.
java.lang.String getervletPath#$
Retrns t/e part "! t/is reqests {RL t/at calls
t/e servlet.
1ttpSession getession#$
Retrns t/e crrent sessi"n ass"ciate* Xit/ t/is
reqestg "r i! t/e reqest *"es n"t /ave a sessi"ng creates
"ne.
1ttpSession getession#:oolean create$
Retrns t/e crrent 1ttpSession ass"ciate* Xit/
t/is reqest "rg i! i! t/ere is n" crrent sessi"n an* create
is treg retrns a neX sessi"n.
java.securit".Principal get2serPrincipal#$
Retrns a java.securit".Principal "Cject
c"ntainin& t/e na,e "! t/e crrent at/enticate* ser.
%",p"se* C< HaiFT
:oolean is(e*uestedession"d3rom!ookie#$
%/ec2s X/et/er t/e reqeste* sessi"n G6 ca,e in
as a c""2ie.
:oolean is(e*uestedession"d3rom2rl#$
Deprecated. C) of Uer)ion %V of the Ta'a !er'let
CSEW -)e $sRe&ueste'Sess$onI'(ro)*RL"% in)tea3
:oolean is(e*uestedession"d3rom2(&#$
%/ec2s X/et/er t/e reqeste* sessi"n G6 ca,e in
as part "! t/e reqest {RL.
:oolean is(e*uestedession"d'alid#$
%/ec2s X/et/er t/e reqeste* sessi"n G6 is still
vali*.
:oolean is2ser"n(ole#java.lang.String role$
Retrns a C""lean in*icatin& X/et/er t/e
at/enticate* ser is incl*e* in t/e speci!ie* l"&ical
wr"lew.

#Fc +an$ sU cNa HttpServletResponse
static int !4#!!%PT%+
Stats c"*e 3A8A4 in*icatin& t/at a reqest Xas accepte* !"r
pr"cessin&g Ct Xas n"t c",plete*.
static int !4,#+45#T%/#6
Stats c"*e 358A4 in*icatin& t/at t/e HTT? server receive* an
invali* resp"nse !r", a server it c"nslte* X/en actin& as a pr"x< "r
&ateXa<.
static int !4,#+4(%12%T
Stats c"*e 34884 in*icatin& t/e reqest sent C< t/e client Xas
s<ntacticall< inc"rrect.
%",p"se* C< HaiFT
static int !4!.$3&"!T
Stats c"*e 34854 in*icatin& t/at t/e reqest c"l* n"t Ce
c",plete* *e t" a c"n!lict Xit/ t/e crrent state "! t/e res"rce.
static int !4!.$T"$2%
Stats c"*e 31884 in*icatin& t/e client can c"ntine.
static int !4!(%#T%+
Stats c"*e 3A814 in*icatin& t/e reqest sccee*e* an* create* a
neX res"rce "n t/e server.
static int !4%7P%!T#T".$43#"&%+
Stats 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 reqest /ea*er.
static int !43.(,"++%$
Stats c"*e 34834 in*icatin& t/e server n*erst""* t/e reqest Ct
re!se* t" !l!ill it.
static int !45#T%/#64T"0%.2T
Stats 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.$%
Stats 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$.T42PP.(T%+
Stats c"*e 35854 in*icatin& t/at t/e server *"es n"t spp"rt "r
re!ses t" spp"rt t/e HTT? pr"t"c"l versi"n t/at Xas se* in t/e
reqest ,essa&e.
static int !4"$T%($#&4%('%(4%((.(
Stats c"*e 35884 in*icatin& an err"r insi*e t/e HTT? server
X/ic/ prevente* it !r", !l!illin& t/e reqest.
static int !4&%$5T)4(%12"(%+
Stats c"*e 34114 in*icatin& t/at t/e reqest cann"t Ce /an*le*
%",p"se* C< HaiFT
Xit/"t a *e!ine* Content+Lengt!.
static int !40%T).+4$.T4#&&./%+
Stats 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
Stats c"*e 33814 in*icatin& t/at t/e res"rce /as per,anentl<
,"ve* t" a neX l"cati"ng an* t/at !tre re!erences s/"l* se a neX
{RG Xit/ t/eir reqests.
static int !40.'%+4T%0P.(#("&6
Stats c"*e 338A4 in*icatin& t/at t/e res"rce /as te,p"raril<
,"ve* t" an"t/er l"cati"ng Ct t/at !tre re!erences s/"l* still se t/e
"ri&inal {RG t" access t/e res"rce.
static int !402&T"P&%4!)."!%
Stats c"*e 33884 in*icatin& t/at t/e reqeste* 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
Stats c"*e 3A844 in*icatin& t/at t/e reqest sccee*e* Ct t/at
t/ere Xas n" neX in!"r,ati"n t" retrn.
static int !4$.$4#2T).("T#T"'%4"$3.(0#T".$
Stats 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#,&%
Stats c"*e 348#4 in*icatin& t/at t/e res"rce i*enti!ie* C< t/e
reqest 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 reqest.
static int !4$.T43.2$+
%",p"se* C< HaiFT
Stats c"*e 34844 in*icatin& t/at t/e reqeste* res"rce is n"t
availaCle.
static int !4$.T4"0P&%0%$T%+
Stats c"*e 35814 in*icatin& t/e HTT? server *"es n"t spp"rt
t/e !ncti"nalit< nee*e* t" !l!ill t/e reqest.
static int !4$.T40.+"3"%+
Stats 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
Stats c"*e 3A884 in*icatin& t/e reqest sccee*e* n"r,all<.
static int !4P#(T"#&4!.$T%$T
Stats c"*e 3A8#4 in*icatin& t/at t/e server /as !l!ille* t/e
partial GET reqest !"r t/e res"rce.
static int !4P#60%$T4(%12"(%+
Stats c"*e 348A4 reserve* !"r !tre se.
static int !4P(%!.$+"T".$43#"&%+
Stats c"*e 341A4 in*icatin& t/at t/e prec"n*iti"n &iven in "ne "r
,"re "! t/e reqest@/ea*er !iel*s evalate* t" !alse X/en it Xas teste*
"n t/e server.
static int !4P(.764#2T)%$T"!#T".$4(%12"(%+
Stats c"*e 348$4 in*icatin& t/at t/e client JX!T !irst
at/enticate itsel! Xit/ t/e pr"x<.
static int !4(%12%T4%$T"T64T..4&#(5%
Stats c"*e 34134 in*icatin& t/at t/e server is re!sin& t" pr"cess
t/e reqest Cecase t/e reqest entit< is lar&er t/an t/e server is Xillin&
"r aCle t" pr"cess.
static int !4(%12%T4T"0%.2T
Stats c"*e 348'4 in*icatin& t/at t/e client *i* n"t pr"*ce a
%",p"se* C< HaiFT
reqestXit/in t/e ti,e t/at t/e server Xas prepare* t" Xait.
static int !4(%12%T42("4T..4&.$5
Stats c"*e 34144 in*icatin& t/at t/e server is re!sin& t" service
t/e reqest Cecase 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"#,&%
Stats c"*e 341#4 in*icatin& t/at t/e server cann"t serve t/e
reqeste* C<te ran&e.
static int !4(%%T4!.$T%$T
Stats c"*e 3A854 in*icatin& t/at t/e a&ent !HIXD. reset t/e
*"c,ent vieX X/ic/ case* t/e reqest t" Ce sent.
static int !4%%4.T)%(
Stats c"*e 33834 in*icatin& t/at t/e resp"nse t" t/e reqest can
Ce !"n* n*er a *i!!erent {RG.
static int !4%('"!%42$#'#"&#,&%
Stats 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 reqest.
static int !4/"T!)"$54P(.T.!.&
Stats 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%+
Stats c"*e 34814 in*icatin& t/at t/e reqest reqires HTT?
at/enticati"n.
static int !42$2PP.(T%+40%+"#4T6P%
Stats c"*e 34154 in*icatin& t/at t/e server is re!sin& t" service
t/e reqest Cecase t/e entit< "! t/e reqest is in a !"r,at n"t spp"rte*
C< t/e reqeste* res"rce !"r t/e reqeste* ,et/"*.
static int !42%4P(.76
Stats c"*e 33854 in*icatin& t/at t/e reqeste* res"rce JX!T Ce
%",p"se* C< HaiFT
accesse* t/r"&/ t/e pr"x< &iven C< t/e Lo,at$on !iel*.

#Fc p+1`n$ t+Dc cNa HttpServletResponse
voi! add!ookie#CooGie cooGie$
=**s t/e speci!ie* c""2ie t" t/e resp"nse.
voi! add+ate)eader#java.lang.String name& long !ate$
=**s a resp"nse /ea*er Xit/ t/e &iven na,e an* *ate@
vale.
voi! add)eader#java.lang.String name& java.lang.String value$
=**s a resp"nse /ea*er Xit/ t/e &iven na,e an* vale.
voi! add"nt)eader#java.lang.String name& int value$
=**s a resp"nse /ea*er Xit/ t/e &iven na,e an* inte&er
vale.
:oolean contains)eader#java.lang.String name$
Retrns 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$
Deprecated. C) of 'er)ion %VW -)e
enco3e+e3irectX+D/!tring -rl0 in)tea3
java.lang.String encode(edirect2(&#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 retrns t/e {RL
nc/an&e*.
java.lang.String encode2rl#java.lang.String url$
Deprecated. C) of 'er)ion %VW -)e enco3eX+D/!tring
-rl0 in)tea3
java.lang.String encode2(&#java.lang.String url$
%",p"se* C< HaiFT
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 retrns 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*
stats.
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*
stats 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@
vale.
voi! set)eader#java.lang.String name& java.lang.String value$
Sets a resp"nse /ea*er Xit/ t/e &iven na,e an* vale.
voi! set"nt)eader#java.lang.String name& int value$
Sets a resp"nse /ea*er Xit/ t/e &iven na,e an* inte&er
vale.
voi! settatus#int sc$
Sets t/e stats c"*e !"r t/is resp"nse.
voi! settatus#int sc& java.lang.String sm$
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

%",p"se* C< HaiFT
#Fc p+1`n$ t+Dc cNa Servlet#on"i$
java.lang.String get"nitParameter#java.lang.String name$
Retrns a String c"ntainin& t/e vale "! 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#$
Retrns 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 getervlet!ontext#$
Retrns a re!erence t" t/e ServletContext in X/ic/
t/e servlet is exectin&.
java.lang.String getervlet$ame#$
Retrns t/e na,e "! t/is servlet instance.

#Fc p+1`n$ t+Dc cNa Servlet #ontext
java.lang.O:ject get#ttribute#java.lang.String name$
Retrns t/e servlet c"ntainer attriCte Xit/ t/e &iven
na,eg "r null i! t/ere is n" attriCte C< t/at na,e.
java.util.Enumeration get#ttribute$ames#$
Retrns an Enumeration c"ntainin& t/e attriCte
na,es availaCle Xit/in t/is servlet c"ntext.
ServletContext get!ontext#java.lang.String uripat0$
Retrns 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$
%",p"se* C< HaiFT
Retrns a String c"ntainin& t/e vale "! 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#$
Retrns 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#$
Retrns t/e ,aj"r versi"n "! t/e >ava Servlet =?G
t/at t/is servlet c"ntainer spp"rts.
java.lang.String get0imeType#java.lang.String file$
Retrns 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#$
Retrns t/e ,in"r versi"n "! t/e Servlet =?G t/at
t/is servlet c"ntainer spp"rts.
Request)ispatc0er get$amed+ispatcher#java.lang.String name$
Retrns 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$
Retrns a String c"ntainin& t/e real pat/ !"r a &iven
virtal pat/.
Request)ispatc0er get(e*uest+ispatcher#java.lang.String pat0$
Retrns a Request)ispatc0er "Cject t/at acts as a
Xrapper !"r t/e res"rce l"cate* at t/e &iven pat/.
java.net.9RE get(esource#java.lang.String pat0$
Retrns a {RL t" t/e res"rce t/at is ,appe* t" a
speci!ie* pat/.
%",p"se* C< HaiFT
java.io.InputStream get(esource#stream#java.lang.String pat0$
Retrns t/e res"rce l"cate* at t/e na,e* pat/ as an
InputStream "Cject.
java.lang.String geterver"nfo#$
Retrns t/e na,e an* versi"n "! t/e servlet
c"ntainer "n X/ic/ t/e servlet is rnnin&.
Servlet getervlet#java.lang.String name$
Deprecated. C) of Ta'a !er'let CSE %VW Yith no
3irect replace=ent
Thi) =etho3 Ya) originally 3efine3 to retrie'e a )er'let fro= a
ServletContext En thi) 'er)ionW thi) =etho3 alYay) ret-rn) null
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
En lie- of thi) =etho3W )er'let) can )hare infor=ation -)ing the
ServletContext cla)) an3 can perfor= )hare3 #-)ine)) logic #y
in'oking =etho3) on co==on non>)er'let cla))e)
java.util.Enumeration getervlet$ames#$
Deprecated. C) of Ta'a !er'let CSE %VW Yith no
replace=ent
Thi) =etho3 Ya) originally 3efine3 to ret-rn an Enu)erat$on of all
the )er'let na=e) knoYn to thi) conte(t En thi) 'er)ionW thi) =etho3
alYay) ret-rn) an e=pty Enu)erat$on 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
java.util.Enumeration getervlets#$
Deprecated. C) of Ta'a !er'let CSE %ZW Yith no
replace=ent
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$
%",p"se* C< HaiFT
Deprecated. C) of Ta'a !er'let CSE %VW -)e
log"Str$ng )essage- T!ro/a0le t!ro/a0le% in)tea3
Thi) =etho3 Ya) originally 3efine3 to Yrite an e(ception[) )tack
trace an3 an e(planatory error =e))age to the )er'let log file
voi! log#java.lang.String msg$
urites t/e speci!ie* ,essa&e t" a servlet l"& !ileg
sall< 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 attriCte 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$
Zin*s an "Cject t" a &iven attriCte na,e in t/is
servlet c"ntext.
EVt nUi c` sb dZ li*!
Tr"n& ,_ /[n/ MV%g ,"*el l7 n/hn c`a c/:Ln& tr[n/g nJ c/Ea Csiness l"&ic c`a
ca En& *n&. M(t *1 Qn V:bc qan l tHt t/[ 2/_n& cJ Csiness l"&ic tr"n& VieX
v7 %"ntr"ller. F/i., v c`a c"ntr"ller c/d l7 n/sn reqestg xe l reqestg &\i
,"*el VD t/1c /i.n Csiness l"&ic ri c/\n vieX VD t/^ *N li..
%&t v' d v( 3ser;!siness .Vt nUi slserver \ccd
!=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;(;
%",p"se* C< HaiFT
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 qan 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#$ '' =$
%",p"se* C< HaiFT
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 qa 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($$;
%",p"se* C< HaiFT
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 String username;
private String pass4or!;
private String role;
private String !escription;
VHi @usiness trong controller*servlet
T/a< v[ &Qn /ar*c"*e:
loginJorm. get9sername#$.equals#(a!am($ jj
loginJorm.gePass4or!#$.equals#(12A>WkB@($....
Ta cJ t/D &\i {serZsiness VD xQc t/1c l"&in n/: sa:
9ser user ' new 9ser#$;
user.set9sername#loginJorm.get9sername#$$;
user.setPass4or!#loginJorm.gePass4or!#$$;
if #c0ecGEogin#user$$
--login successfull"
% else
--login faile!& s0o4 error if necessar"
%
Code sample
UserBusiness.rar
%",p"se* C< HaiFT

You might also like