Tải bản đầy đủ (.pdf) (74 trang)

Head First Servlets and JSP phần 4 ppsx

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.52 MB, 74 trang )

VHVVLRQPDQDJHPHQW
\RXDUHKHUH

6HUYOHW$
:HE&RQWDLQHU
+
W
W
S
6
H
V
V
L
R
Q

$

7KHVHUYOHWUXQVLWVEXVLQHVVORJLF
LQFOXGLQJFDOOVWRWKHPRGHODQG
UHWXUQVDUHVSRQVHLQWKLVFDVH
DQRWKHUTXHVWLRQ
0HDQZKLOHLPDJLQH$127+(5FOLHQWJRHVWRWKHEHHUVLWH
6HUYOHW$
:HE&RQWDLQHU
+
W
W
S
6


H
V
V
L
R
Q

$
'LDQH·VVHVVLRQLVVWLOO
DFWLYHEXWPHDQZKLOH
7HUULVHOHFWV´3DOHµDQG
KLWVWKHVXEPLWEXWWRQ

7KH&RQWDLQHUVHQGV7HUUL·V
UHTXHVWWRDQHZWKUHDGRI
WKH%HHU$SSVHUYOHW
7KH%HHU$SSWKUHDGVWDUWV
DQHZ6HVVLRQIRU7HUULDQG
FDOOVVHW$WWULEXWHWRVWRUH
KHUFKRLFH´3DOHµ
+
W
W
S
6
H
V
V
L
R

Q

%
Terri
7HUUL
'LDQH
'LIIHUHQWFOLHQW
6DPHVHUYOHW
'LIIHUHQWUHTXHVW
'LIIHUHQWWKUHDG
'LIIHUHQWVHVVLRQ
We donÕt want Terri and
DianeÕs answers mixed up
so they each need their own
separate session object.
Chapter 6. Conversational state
Chapter 6. Conversational state
Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher: O'Reilly Prepared for Stephen Goss, Safari ID:
Print Publication Date: 8/1/2004 User number: 747221 Copyright 2007, Safari Books Online, LLC.
This PDF is exclusively for your use in accordance with the Safari Terms of Service. No part of it may be reproduced or transmitted in any form by any means without the prior
written permission for reprints and excerpts from the publisher. Redistribution or other use that violates the fair use priviledge under U.S. copyright laws (see 17 USC107) or that
otherwise violates the Safari Terms of Service is strictly prohibited.

FKDSWHU
7VMXZWJTMUPW_LWM[\PM+WV\IQVMZ
SVW__PW\PMKTQMV\Q['
4HE(440PROTOCOLUSESSTATELESSCONNECTIONS4HECLIENT
BROWSERMAKESACONNECTIONTOTHESERVERSENDSTHEREQUEST
GETSTHERESPONSEANDCLOSESTHECONNECTION)NOTHERWORDS
THECONNECTIONEXISTSFORONLYASINGLEREQUESTRESPONSE

"ECAUSETHECONNECTIONSDONTPERSISTTHE#ONTAINERDOESNT
RECOGNIZETHATTHECLIENTMAKINGASECONDREQUESTISTHE
SAMECLIENTFROMAPREVIOUSREQUEST!SFARASTHE#ONTAINERS
CONCERNEDEACHREQUESTISFROMANEWCLIENT
+RZZLOOWKH&RQWDLQHU
UHFRJQL]HLW·V'LDQHDQGQRW
7HUUL"+773LVVWDWHOHVV
VRHDFKUHTXHVWLVDQHZ
FRQQHFWLRQ
,·PVRUU\EXW,GRQ·W
UHPHPEHU\RX,·PVXUHZH
VKDUHGJRRGWLPHVWRJHWKHU
EXWZH·OOKDYHWRVWDUWRYHU
%XWWKLQJVZHUH
JRLQJVRZHOO,WKRXJKW
ZHKDGDUHODWLRQVKLS
WKHUH DUH QR
'
XPE 4XHVWLRQV
4

7HYCANTTHE#ONTAINERJUSTUSETHE)0ADDRESSOF
THECLIENT)TSPARTOFTHEREQUESTRIGHT
$
/HTHE#ONTAINERCANGETTHE)0ADDRESSOFTHE
REQUESTBUTDOESTHATUNIQUELYIDENTIFYTHECLIENT)FYOURE
ONALOCAL)0NETWORKYOUHAVEAUNIQUE)0ADDRESSBUT
CHANCESARETHATSNOTTHE)0ADDRESSTHEOUTSIDEWORLD
SEES4OTHESERVERYOUR)0ADDRESSISTHEADDRESSOFTHE
ROUTERSOYOUHAVETHESAME)0ADDRESSASEVERYBODYELSE

ONTHATNETWORK3OTHATWOULDNTHELP9OUDHAVETHE
SAMEPROBLEMTHESTUFF*IMPUTSINHISSHOPPINGCART
MIGHTENDUPIN0RADEEPSCARTANDVICEVERSA3ONO)0
ADDRESSISNTASOLUTIONFORUNIQUELYIDENTIFYINGASPECIFIC
CLIENTONTHEINTERNET
4

7ELLTHENHOWABOUTSECURITYINFO)FTHEUSER
ISLOGGEDINANDTHECONNECTIONISSECURE(4403THE
#ONTAINERKNOWS%8!#4,9WHOTHECLIENTISRIGHT
$
9ESIFTHEUSERISLOGGEDINANDTHECONNECTIONIS
SECURETHE#ONTAINERCANIDENTIFYTHECLIENTANDASSOCIATE
HIMWITHASESSION"UTTHATSABIGIF-OSTGOODWEBSITE
DESIGNSAYShDONTFORCETHEUSERTOLOGINUNTILITREALLY
MATTERSANDDONTSWITCHONSECURITY(4403UNTILITREALLY
MATTERSv)FYOURUSERSAREJUSTBROWSINGEVENIFTHEYRE
ADDINGITEMSTOASHOPPINGCARTYOUPROBABLYDONT
WANTTHEOVERHEADFORYOUORTHEUSEROFHAVINGTHEM
AUTHENTICATETOTHESYSTEMUNTILTHEYDECIDETOCHECKOUT
3OWENEEDAMECHANISMTOLINKACLIENTTOASESSIONTHAT
DOESNTREQUIREASECURELYAUTHENTICATEDCLIENT7ELLGO
INTOSECURITYDETAILSINTHEWAITFORIT3ECURITYCHAPTER
UHFRJQL]LQJWKHFOLHQW
Chapter 6. Conversational state
Chapter 6. Conversational state
Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher: O'Reilly Prepared for Stephen Goss, Safari ID:
Print Publication Date: 8/1/2004 User number: 747221 Copyright 2007, Safari Books Online, LLC.
This PDF is exclusively for your use in accordance with the Safari Terms of Service. No part of it may be reproduced or transmitted in any form by any means without the prior
written permission for reprints and excerpts from the publisher. Redistribution or other use that violates the fair use priviledge under U.S. copyright laws (see 17 USC107) or that

otherwise violates the Safari Terms of Service is strictly prohibited.
VHVVLRQPDQDJHPHQW
\RXDUHKHUH

+
W
W
S
6
H
V
V
L
R
Q

,'
+
W
W
S
6
H
V
V
L
R
Q

,'

<PMKTQMV\VMML[I]VQY]M[M[[QWV1,
4HEIDEAISSIMPLEONTHECLIENTSlRSTREQUESTTHE#ONTAINER
GENERATESAUNIQUESESSION)$ANDGIVESITBACKTOTHECLIENT
WITHTHERESPONSE4HECLIENTSENDSBACKTHESESSION)$WITH
EACHSUBSEQUENTREQUEST4HE#ONTAINERSEESTHE)$lNDSTHE
MATCHINGSESSIONANDASSOCIATESTHESESSIONWITHTHEREQUEST
<HVEXW,·PVWDWHFKDOOHQJHGDQG
ZRQ·WUHPHPEHU\RXVR,·PJLYLQJ
\RXDXQLTXHVHVVLRQ,'<RX0867JLYH
WKDWEDFNWRPHHDFKWLPH\RXPDNHD
UHTXHVWVR,·OONQRZLW·V
\RX

+H\VHUYHUKHUH·V
P\ÀUVWUHTXHVWZLWK
WKHSDUDPHWHU´GDUNµ&DQ
ZHVWDUWDFRQYHUVDWLRQ"
UHTXHVW´GDUNµ
QHZ
/HW·VVHHRKWKHUH
\RXDUH<HV,UHPHPEHU
\RXQRZ/DVWWLPH\RXVDLGWKDW
\RXOLNHG´GDUNµEHHU
+HUH·VP\VHFRQG
UHTXHVWZLWKWKHSDUDPHWHU
´DOHµ0\,'LVGR
\RXUHPHPEHUPH"
UHTXHVW´DOHµ,'



UHVSRQVH,'
&RQWDLQHU
&RQWDLQHU

+
W
W
S
6
H
U
Y
O
H
W
5
H
T
X
H
V
W

DVVRFLDWH
´GDUNµ
VHW$WWULEXWH´GDUNµ



´GDUNµ

´DOHµ

Chapter 6. Conversational state
Chapter 6. Conversational state
Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher: O'Reilly Prepared for Stephen Goss, Safari ID:
Print Publication Date: 8/1/2004 User number: 747221 Copyright 2007, Safari Books Online, LLC.
This PDF is exclusively for your use in accordance with the Safari Terms of Service. No part of it may be reproduced or transmitted in any form by any means without the prior
written permission for reprints and excerpts from the publisher. Redistribution or other use that violates the fair use priviledge under U.S. copyright laws (see 17 USC107) or that
otherwise violates the Safari Terms of Service is strictly prohibited.

FKDSWHU
2.KHUH·VWKHFRRNLH
ZLWKP\UHTXHVW
0W_LW\PM+TQMV\IVL+WV\IQVMZ
M`KPIVOM;M[[QWV1,QVNW'
3OMEHOWTHE#ONTAINERHASTOGETTHESESSION)$TOTHE
CLIENTASPARTOFTHERESPONSEANDTHECLIENTHASTOSENDBACK
THESESSION)$ASPARTOFTHEREQUEST4HESIMPLESTANDMOST
COMMONWAYTOEXCHANGETHEINFOISTHROUGHCOOKIES
+WWSQM[
+7732.
6HW&RRNLH-6(66,21,' $$%&'(
&RQWHQW7\SHWH[WKWPO
&RQWHQW/HQJWK
'DWH:HG1RY*07
6HUYHU$SDFKH&R\RWH
&RQQHFWLRQFORVH
KWPO!

KWPO!


3267
VHOHFWVHOHFW%HHU7DVWHGR+773
+RVWZZZZLFNHGO\VPDUWFRP
8VHU$JHQW0R]LOOD
&RRNLH-6(66,21,' $$%&'(
$FFHSWWH[W[PODSSOLFDWLRQ[PODSSOLFDWLRQ[KWPO[POWH[W
KWPOT WH[WSODLQT YLGHR[PQJLPDJHSQJLPDJH
MSHJLPDJHJLIT T 
$FFHSW/DQJXDJHHQXVHQT 
$FFHSW(QFRGLQJJ]LSGHӿDWH
ÒSet-CookieÓ is just another
header sent in the response.
ÒCookieÓ is another header
sent in the request.
+HUH·V\RXU
FRRNLHZLWKWKH
VHVVLRQ,'LQVLGH
+7735HVSRQVH
+7735HTXHVW
WKHMR\RI&RRNLHV
Chapter 6. Conversational state
Chapter 6. Conversational state
Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher: O'Reilly Prepared for Stephen Goss, Safari ID:
Print Publication Date: 8/1/2004 User number: 747221 Copyright 2007, Safari Books Online, LLC.
This PDF is exclusively for your use in accordance with the Safari Terms of Service. No part of it may be reproduced or transmitted in any form by any means without the prior
written permission for reprints and excerpts from the publisher. Redistribution or other use that violates the fair use priviledge under U.S. copyright laws (see 17 USC107) or that
otherwise violates the Safari Terms of Service is strictly prohibited.
VHVVLRQPDQDJHPHQW
\RXDUHKHUH


<PMJM[\XIZ\"\PM+WV\IQVMZLWM[
^QZ\]ITTaITT\PMKWWSQM_WZS
9OUDOHAVETOTELLTHE#ONTAINERTHATYOUWANTTOCREATEORUSE
ASESSIONBUTTHE#ONTAINERTAKESCAREOFGENERATINGTHESESSION
)$CREATINGANEW#OOKIEOBJECTSTUFlNGTHESESSION)$INTOTHE
COOKIEANDSETTINGTHECOOKIEASPARTOFTHERESPONSE!NDON
SUBSEQUENTREQUESTSTHE#ONTAINERGETSTHESESSION)$FROMACOOKIE
INTHEREQUESTMATCHESTHESESSION)$WITHANEXISTINGSESSIONAND
ASSOCIATESTHATSESSIONWITHTHECURRENTREQUEST
6HQGLQJDVHVVLRQFRRNLHLQWKH5(63216(
+WWS6HVVLRQVHVVLRQ UHTXHVWJHW6HVVLRQ
4HATSIT3OMEWHEREINYOURSERVICEMETHODYOUASKFORA
SESSIONANDEVERYTHINGELSEHAPPENSAUTOMATICALLY
9OUDONTMAKETHENEW(TTP3ESSIONOBJECTYOURSELF
9OUDONTGENERATETHEUNIQUESESSION)$
9OUDONTMAKETHENEW#OOKIEOBJECT
9OUDONTASSOCIATETHESESSION)$WITHTHECOOKIE
9OUDONTSETTHE#OOKIEINTOTHERESPONSE
UNDERTHE3ET#OOKIEHEADER
!LLTHECOOKIEWORKHAPPENSBEHINDTHESCENES
You ask the request for a session,
and the Container kicks everything
else into action. You donÕt have to
do anything else!
(This method does more than just
create a session, but the FIRST
time you invoke it on the request, it
will cause a cookie to be sent with
the response. Now, thereÕs still not

guarantee the client will ACCEPT
the cookie but weÕre getting ahead
of ourselves.)
*HWWLQJWKHVHVVLRQ,'IURPWKH5(48(67
+WWS6HVVLRQVHVVLRQ UHTXHVWJHW6HVVLRQ
,OOKFAMILIAR9ESITSEXACTLYTHESAMEMETHODUSEDTO
GENERATETHESESSION)$ANDCOOKIEFORTHERESPONSE
)&THEREQUESTINCLUDESASESSION)$COOKIE
lNDTHESESSIONMATCHINGTHAT)$
%,3%)&THERESNOSESSION)$COOKIE/2THERESNOCURRENT
SESSIONMATCHINGTHESESSION)$
CREATEANEWSESSION
!LLTHECOOKIEWORKHAPPENSBEHINDTHESCENES
Whoa! The method for GETTING a
session ID cookie (and matching it
with an existing session) is the same
as SENDING a session ID cookie.
You never actually SEE the session
ID yourself (although you can ask
the session to give it to you).
Chapter 6. Conversational state
Chapter 6. Conversational state
Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher: O'Reilly Prepared for Stephen Goss, Safari ID:
Print Publication Date: 8/1/2004 User number: 747221 Copyright 2007, Safari Books Online, LLC.
This PDF is exclusively for your use in accordance with the Safari Terms of Service. No part of it may be reproduced or transmitted in any form by any means without the prior
written permission for reprints and excerpts from the publisher. Redistribution or other use that violates the fair use priviledge under U.S. copyright laws (see 17 USC107) or that
otherwise violates the Safari Terms of Service is strictly prohibited.

FKDSWHU
4


9OUGETASESSIONBYCALLINGREQUESTGET3ESSION
BUTISTHATTHEONLYWAYTOGETTHESESSION#ANTYOUGET
ITFROMTHE3ERVLET#ONTEXT
$
9OUGETASESSIONFROMTHEREQUESTOBJECTBECAUSE
THINKABOUTITTHESESSIONISIDENTIFIEDBYTHEREQUEST
7HENYOUCALLGET3ESSIONONTHE#ONTAINERYOURESAYING
h)WANTASESSIONFOR4()3CLIENTEITHERTHESESSIONTHAT
MATCHESTHESESSION)$THISCLIENTSENTORANEWONE"UTIN
EITHERCASETHESESSIONISFORTHECLIENTASSOCIATEDWITHTHIS
REQUESTv
"UTTHEREISANOTHERWAYTHATYOUCANGETASESSIONFROM
ASESSIONEVENTOBJECT2EMEMBERALISTENERCLASSISNTA
SERVLETOR*30ITSJUSTACLASSTHATWANTSTOKNOWABOUT
THEEVENTS&OREXAMPLETHELISTENERMIGHTBEANATTRIBUTE
TRYINGTOFINDOUTWHENITTHEATTRIBUTEOBJECTWASADDED
TOORREMOVEDFROMASESSION
4HEEVENTHANDLINGMETHODSDEFINEDBYTHELISTENER
INTERFACESRELATEDTOSESSIONSTAKEANARGUMENTOFTYPE
(TTP3ESSION%VENTORITSSUBCLASS(TTP3ESSION"INDING%VENT
!ND(TTP3ESSION%VENTHASAGET3ESSIONMETHOD
3OIFYOUIMPLEMENTANYOFTHEFOURLISTENERINTERFACES
RELATEDTOSESSIONSWELLGETTOTHATLATERINTHECHAPTER
YOUCANACCESSTHESESSIONTHROUGHTHEEVENTHANDLING
CALLBACKMETHODS&OREXAMPLETHISCODEISFROMACLASS
THATIMPLEMENTSTHE(TTP3ESSION,ISTENERINTERFACE
?PI\QN1_IV\\WSVW__PM\PMZ\PM[M[[QWV
ITZMILaM`Q[\MLWZ_I[R][\KZMI\ML'
'OODQUESTION4HENOARGREQUESTMETHODGET3ESSIONRETURNSA

SESSIONREGARDLESSOFWHETHERTHERESAPREEXISTINGSESSION3INCEYOUALWAYSGET
AN(TTP3ESSIONINSTANCEBACKFROMTHATMETHODTHEONLYWAYTOKNOWIF
THESESSIONISNEWISTOASKTHESESSION
SXEOLFYRLGGR*HW+WWS6HUYOHW5HTXHVWUHTXHVW+WWS6HUYOHW5HVSRQVHUHVSRQVH
WKURZV,2([FHSWLRQ6HUYOHW([FHSWLRQ^
UHVSRQVHVHW&RQWHQW7\SH³WH[WKWPO´
3ULQW:ULWHURXW UHVSRQVHJHW:ULWHU
RXWSULQWOQ³WHVWVHVVLRQDWWULEXWHVEU!´
+WWS6HVVLRQVHVVLRQ UHTXHVWJHW6HVVLRQ
LI
VHVVLRQLV1HZ^
RXWSULQWOQ³7KLVLVDQHZVHVVLRQ´
`HOVH^
RXWSULQWOQ³:HOFRPHEDFN´
`
`
getSession() returns a session no matter
what but you canÕt tell if itÕs a new
session unless you ask the session.
isNew() returns true if the
client has not yet responded
with this session ID.
SXEOLFYRLGVHVVLRQ&UHDWHG+WWS6HVVLRQ(YHQWHYHQW^
+WWS6HVVLRQVHVVLRQ 
HYHQWJHW6HVVLRQ
HYHQWKDQGOLQJFRGH
`
FKHFNLQJIRUDQHZVHVVLRQ
Chapter 6. Conversational state
Chapter 6. Conversational state

Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher: O'Reilly Prepared for Stephen Goss, Safari ID:
Print Publication Date: 8/1/2004 User number: 747221 Copyright 2007, Safari Books Online, LLC.
This PDF is exclusively for your use in accordance with the Safari Terms of Service. No part of it may be reproduced or transmitted in any form by any means without the prior
written permission for reprints and excerpts from the publisher. Redistribution or other use that violates the fair use priviledge under U.S. copyright laws (see 17 USC107) or that
otherwise violates the Safari Terms of Service is strictly prohibited.
VHVVLRQPDQDJHPHQW
\RXDUHKHUH

?PI\QN1_IV\764AIXZMM`Q[\QVO[M[[QWV'
9OUMIGHTHAVEASCENARIOINWHICHASERVLETWANTSTOUSEONLYAPREVIOUSLY
CREATEDSESSION)TMIGHTNOTMAKESENSEFORTHECHECKOUTSERVLETFOREXAMPLE
TOSTARTANEWSESSION
3OTHERESANOVERLOADEDGET3ESSIONBOOLEANMETHODJUSTFORTHATPURPOSE
)FYOUDONTWANTTOCREATEANEWSESSIONCALLGET3ESSIONFALSEANDYOULLGET
EITHERNULLORAPREEXISTING(TTP3ESSION
4HECODEBELOWCALLSGET3ESSIONFALSETHENTESTSWHETHERTHERETURNVALUEWAS
NULL)FITWASNULLTHECODEOUTPUTSAMESSAGEANDTHENCREATESANEWSESSION
SXEOLFYRLGGR*HW+WWS6HUYOHW5HTXHVWUHTXHVW+WWS6HUYOHW5HVSRQVHUHVSRQVH
WKURZV,2([FHSWLRQ6HUYOHW([FHSWLRQ^
UHVSRQVHVHW&RQWHQW7\SH³WH[WKWPO´
3ULQW:ULWHURXW UHVSRQVHJHW:ULWHU
RXWSULQWOQ³WHVWVHVVLRQVEU!´
+WWS6HVVLRQVHVVLRQ UHTXHVWJHW6HVVLRQIDOVH
LIVHVVLRQ QXOO^
RXWSULQWOQ³QRVHVVLRQZDVDYDLODEOH´
RXWSULQWOQ³PDNLQJRQH´
VHVVLRQ UHTXHVWJHW6HVVLRQ
`HOVH^
RXWSULQWOQ³WKHUHZDVDVHVVLRQ´
`

`
Passing ÒfalseÓ means the method
returns a pre-existing session,
or null if there was no session
associated with this client.
Now we can test for whether
there was already a session
(the no-arg getSession()
would NEVER return null).
Here we KNOW weÕre making a new session.
4

)SNTTHECODEABOVEJUSTASTUPIDINEFlCIENTWAY
TODOTHESAMETHINGASTHEOPPOSITEPAGE)NTHEEND
YOUSTILLCREATEDANEWSESSION
$
9OURERIGHT4HECODEABOVEISJUSTFORTESTINGHOW
THETWODIFFERENTVERSIONSOFGET3ESSIONWORK)NTHEREAL
WORLDTHEONLYTIMEYOUDWANTTOUSEGET3ESSIONFALSEIS
IFYOUDO./4WANTTOCREATEANEWSESSION)FYOURGOALIS
TOCREATEANEWSESSIONBUTSTILLRESPONDDIFFERENTLYIFYOU
KNOWTHISISANEWVERSUSPREEXISTINGSESSIONTHENUSE
THENOARGGET3ESSIONMETHODANDSIMPLYASKTHESESSION
IFITSNEWUSINGTHE(TTP3ESSIONIS.EWMETHOD
4

3OITLOOKSLIKEGET3ESSIONTRUEISEXACTLYTHE
SAMEASGET3ESSION
$


2IGHTAGAIN4HENOARGVERSIONISACONVENIENCE
FORTHOSETIMESWHENYOUKNOWTHATYOUALWAYSWANTA
SESSIONNEWOREXISTING4HEVERSIONTHATTAKESABOOLEANIS
USEFULWHENYOUKNOWTHATYOUDONTWANTANEWSESSION
ORWHENTHEDECISIONOFWHETHERTOMAKEANEWSESSION
HAPPENSATRUNTIMEANDYOUREPASSINGAVARIABLEINTOTHE
GET3ESSIONSOME"OOLEANMETHOD
Chapter 6. Conversational state
Chapter 6. Conversational state
Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher: O'Reilly Prepared for Stephen Goss, Safari ID:
Print Publication Date: 8/1/2004 User number: 747221 Copyright 2007, Safari Books Online, LLC.
This PDF is exclusively for your use in accordance with the Safari Terms of Service. No part of it may be reproduced or transmitted in any form by any means without the prior
written permission for reprints and excerpts from the publisher. Redistribution or other use that violates the fair use priviledge under U.S. copyright laws (see 17 USC107) or that
otherwise violates the Safari Terms of Service is strictly prohibited.

FKDSWHU
AW]KIVLW[M[[QWV[M^MVQN\PMKTQMV\
LWM[V¼\IKKMX\KWWSQM[J]\aW]PI^M
\WLWITQ\\TMUWZM_WZS
7EDONTAGREETHATANYBODYWITHHALFABRAINDISABLES
COOKIES)NFACTMOSTBROWSERSDOHAVECOOKIESENABLED
ANDEVERYTHINGSWONDERFUL"UTTHERESNOGUARANTEE
)FYOURAPPDEPENDSONSESSIONSYOUNEEDADIFFERENTWAY
FORTHECLIENTAND#ONTAINERTOEXCHANGESESSION)$INFO
,UCKYFORYOUTHE#ONTAINERCANHANDLEACOOKIEREFUSING
CLIENTBUTITTAKESALITTLEMOREEFFORTFROMYOU
)FYOUUSETHESESSIONCODEONTHEPREVIOUSPAGESCALLING
GET3ESSIONONTHEREQUESTTHE#ONTAINERTRIESTOUSE
COOKIES)FCOOKIESARENTENABLEDITMEANSTHECLIENTWILL
NEVERJOINTHESESSION)NOTHERWORDSTHESESSIONSIS.EW

METHODWILLALWAYSRETURNTRUE
*HHWKLVDOOVRXQGVQLFH
EXWXK1(:6)/$6+³DQ\ERG\
ZLWKKDOIDEUDLQGLVDEOHVFRRNLHV
+RZGR\RXGRVHVVLRQVLI\RX
FDQ·WXVHFRRNLHV"

,IDFOLHQWGRHVQ¶WDFFHSWFRRNLHV\RXZRQ¶WJHWDQH[FHSWLRQ1R
EHOOVDQGVLUHQVJRLQJRIIWRWHOO\RXWKDW\RXUDWWHPSWWRKDYHD
VHVVLRQZLWKWKLVFOLHQWZHQWZURQJ1RLWMXVWPHDQVWKHFOLHQW
LJQRUHV\RXUDWWHPSWWRVHWDFRRNLHZLWKWKHVHVVLRQ,',Q\RXU
FRGHLI\RXGR127XVH85/UHZULWLQJLWPHDQVWKDWJHW6HVVLRQ
ZLOODOZD\VUHWXUQD1(:VHVVLRQLHRQHWKDWDOZD\VUHWXUQV
³WUXH´ZKHQ\RXFDOOLV1HZRQLW7KHFOLHQWVLPSO\QHYHUVHQGV
EDFNDUHTXHVWWKDWKDVDVHVVLRQ,'FRRNLHKHDGHU
$FOLHQWZLWKFRRNLHVGLVDEOHGZLOOLJQRUH
´6HW&RRNLHµUHVSRQVHKHDGHUV
ZKHQFRRNLHVIDLO
Chapter 6. Conversational state
Chapter 6. Conversational state
Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher: O'Reilly Prepared for Stephen Goss, Safari ID:
Print Publication Date: 8/1/2004 User number: 747221 Copyright 2007, Safari Books Online, LLC.
This PDF is exclusively for your use in accordance with the Safari Terms of Service. No part of it may be reproduced or transmitted in any form by any means without the prior
written permission for reprints and excerpts from the publisher. Redistribution or other use that violates the fair use priviledge under U.S. copyright laws (see 17 USC107) or that
otherwise violates the Safari Terms of Service is strictly prohibited.
VHVVLRQPDQDJHPHQW
\RXDUHKHUH

=:4ZM_ZQ\QVO"[WUM\PQVO\WNITTJIKSWV
85/


MVHVVLRQLG 
)FTHECLIENTWONTTAKECOOKIESYOUCANUSE52,REWRITINGASABACK
UP!SSUMINGYOUDOYOURPARTCORRECTLY52,REWRITINGWILLALWAYS
WORKTHECLIENTWONTCARETHATITSHAPPENINGANDWONT
DOANYTHINGTOPREVENTIT2EMEMBERTHEGOALISFORTHE
CLIENTAND#ONTAINERTOEXCHANGESESSION)$INFO0ASSING
COOKIESBACKANDFORTHISTHESIMPLESTWAYTOEXCHANGE
SESSION)$SBUTIFYOUCANTPUTTHE)$INACOOKIEWHERE
CANYOUPUTIT52,REWRITINGTAKESTHESESSION)$THATSIN
THECOOKIEANDSTICKSITRIGHTONTOTHEENDOFEVERY52,THATCOMES
INTOTHISAPP
)MAGINEAWEBPAGEWHEREEVERYLINKHASALITTLEBITOFEXTRAINFOTHE
SESSION)$TACKEDONTOTHEENDOFTHE52,7HENTHEUSERCLICKS
THAThENHANCEDvLINKTHEREQUESTGOESTOTHE#ONTAINERWITHTHAT
EXTRABITONTHEENDANDTHE#ONTAINERSIMPLYSTRIPSOFFTHEEXTRA
PARTOFTHEREQUEST52,ANDUSESITTOlNDTHEMATCHINGSESSION
+7732.
&RQWHQW/HQJWK
'DWH:HG1RY*07
6HUYHU$SDFKH&R\RWH
&RQQHFWLRQFORVH
KWPO!
ERG\!

DKUHI µKWWSZZZZLFNHGO\VPDUWFRP%HHU7HVWGR
MVHVVLRQLG $$%&'(
´

FOLFNPH

D!
ERG\!
KWPO!

*(7
%HHU7HVWGR
MVHVVLRQLG $$%&'(
+773
+RVWZZZZLFNHGO\VPDUWFRP
8VHU$JHQW0R]LOOD
$FFHSWWH[W[PODSSOLFDWLRQ[PODSSOLFDWLRQ[KWPO[POWH[WKWPOT WH[W
SODLQT YLGHR[PQJLPDJHSQJLPDJHMSHJLPDJHJLIT T 
$FFHSW/DQJXDJHHQXVHQT 
$FFHSW(QFRGLQJJ]LSGHӿDWH
We add the session ID to the end
of all the URLs in the HTML we
send back in the Response.
The session ID comes back as ÒextraÓ info
stuck to the end of the Request URL. (The
semicolon separator is vendor-speciÞ c.)
+7735HVSRQVH
+7735HTXHVW
Chapter 6. Conversational state
Chapter 6. Conversational state
Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher: O'Reilly Prepared for Stephen Goss, Safari ID:
Print Publication Date: 8/1/2004 User number: 747221 Copyright 2007, Safari Books Online, LLC.
This PDF is exclusively for your use in accordance with the Safari Terms of Service. No part of it may be reproduced or transmitted in any form by any means without the prior
written permission for reprints and excerpts from the publisher. Redistribution or other use that violates the fair use priviledge under U.S. copyright laws (see 17 USC107) or that
otherwise violates the Safari Terms of Service is strictly prohibited.


FKDSWHU
=:4ZM_ZQ\QVOSQKS[QV764AQNKWWSQM[NIQT
IVL764AQNaW]\MTT\PMZM[XWV[M\WMVKWLM\PM=:4
)FCOOKIESDONTWORKTHE#ONTAINERFALLSBACKTO52,REWRITINGBUTONLY
IFYOUVEDONETHEEXTRAWORKOFENCODINGALLTHE52,SYOUSENDINTHE
RESPONSE)FYOUWANTTHE#ONTAINERTOALWAYSDEFAULTTOUSINGCOOKIESlRST
WITH52,REWRITINGONLYASALASTRESORTYOUCANRELAX4HATSEXACTLYHOWIT
WORKSEXCEPTFORTHElRSTTIMEBUTWELLGETTOTHATINAMOMENT"UTIFYOU
DONTEXPLICITLYENCODEYOUR52,SANDTHECLIENTWONTACCEPTCOOKIESYOUDONT
GETTOUSESESSIONS)FYOUDOENCODEYOUR52,STHE#ONTAINERWILLlRSTATTEMPT
TOUSECOOKIESFORSESSIONMANAGEMENTANDFALLBACKTO52,REWRITINGONLYIF
THECOOKIEAPPROACHFAILS
SXEOLFYRLGGR*HW+WWS6HUYOHW5HTXHVWUHTXHVW+WWS6HUYOHW5HVSRQVHUHVSRQVH
WKURZV,2([FHSWLRQ^
UHVSRQVHVHW&RQWHQW7\SH³WH[WKWPO´
3ULQW:ULWHURXW UHVSRQVHJHW:ULWHU
+WWS6HVVLRQVHVVLRQ UHTXHVWJHW6HVVLRQ
RXWSULQWOQ³KWPO!ERG\!´
RXWSULQWOQ³DKUHI ?´´
UHVSRQVHHQFRGH85/³%HHU7HVWGR´³?´!FOLFNPHD!´
RXWSULQWOQ³ERG\!KWPO!´
`
get a session
Add the extra session ID info to this URL.
4

7AITAMINUTEHOW$/%3THE#ONTAINERKNOW
THATCOOKIESARENTWORKING!TWHATPOINTDOESTHE
#ONTAINERDECIDETOUSE52,REWRITING
$


!REALLYDUMB#ONTAINERDOESNTCAREWHETHERCOOK
IESWORKORNOTTHEDUMB#ONTAINERWILLALWAYSATTEMPT
TOSENDTHECOOKIE!.$DO52,REWRITINGEACHTIMEEVEN
IFCOOKIESAREWORKING"UTHERESHOWADECENT#ONTAINER
HANDLESIT
7HENTHE#ONTAINERSEESACALLTOGET3ESSIONANDTHE
#ONTAINERDIDNTGETASESSION)$WITHTHECLIENTSREQUEST
THE#ONTAINERNOWKNOWSTHATITMUSTATTEMPTTOSTARTA
NEWSESSIONWITHTHECLIENT!TTHISPOINTTHE#ONTAINER
DOESNTKNOWIFCOOKIESWILLWORKSOWITHTHISFIRSTRESPONSE
BACKTOTHECLIENTITTRIES"/4(COOKIESAND52,REWRITING
4

7HYCANTITTRYCOOKIESlRSTANDDO52,REWRIT
INGONTHENEXTRESPONSEIFITDOESNTGETBACKACOOKIE
$

2EMEMBERIFTHE#ONTAINERDOESNTGETASESSION)$
FROMTHECLIENTTHE#ONTAINERWONTEVEN+./7THATTHISIS
THENEXTREQUESTFROMTHATCLIENT4HE#ONTAINERWONTHAVE
ANYWAYTOKNOWTHATITTRIEDCOOKIESTHELASTTIMEAND
THEYDIDNTWORK2EMEMBERTHE/.,9WAYTHE#ONTAINER
CANRECOGNIZETHATITHASSEENTHISCLIENTBEFOREISIFTHE
CLIENTSENDSASESSION)$
3OWHENTHE#ONTAINERSEESYOUCALLREQUESTGET3ESSION
ANDREALIZESITNEEDSTOSTARTANEWSESSIONWITHTHISCLIENT
THE#ONTAINERSENDSTHERESPONSEWITHBOTHAh3ET#OOKIEv
HEADERFORTHESESSION)$ANDTHESESSION)$APPENDEDTO
THE52,SASSUMINGYOUUSEDRESPONSEENCODE52,

.OWIMAGINETHENEXTREQUESTFROMTHISCLIENTITWILLHAVE
THESESSION)$APPENDEDTOTHEREQUEST52,BUTIFTHE
CLIENTACCEPTSCOOKIESTHEREQUESTWILL!,3/HAVEASESSION
)$COOKIE7HENTHESERVLETCALLSREQUESTGET3ESSIONTHE
#ONTAINERREADSTHESESSION)$FROMTHEREQUESTFINDSTHE
SESSIONANDTHINKSTOITSELFh4HISCLIENTACCEPTSCOOKIESSO)
CANIGNORETHERESPONSEENCODE52,CALLS)NTHERESPONSE
)LLSENDACOOKIESINCE)KNOWTHATWORKSANDTHERESNO
NEEDFORANY52,REWRITINGSO)WONTBOTHERv
85/
UHZULWLQJ
Chapter 6. Conversational state
Chapter 6. Conversational state
Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher: O'Reilly Prepared for Stephen Goss, Safari ID:
Print Publication Date: 8/1/2004 User number: 747221 Copyright 2007, Safari Books Online, LLC.
This PDF is exclusively for your use in accordance with the Safari Terms of Service. No part of it may be reproduced or transmitted in any form by any means without the prior
written permission for reprints and excerpts from the publisher. Redistribution or other use that violates the fair use priviledge under U.S. copyright laws (see 17 USC107) or that
otherwise violates the Safari Terms of Service is strictly prohibited.
VHVVLRQPDQDJHPHQW
\RXDUHKHUH

=:4ZM_ZQ\QVO_WZS[_Q\P[MVL:MLQZMK\
9OUMIGHTHAVEASCENARIOINWHICHYOUWANTTOREDIRECTTHE
REQUESTTOADIFFERENT52,BUTYOUSTILLWANTTOUSEASESSION
4HERESASPECIAL52,ENCODINGMETHODJUSTFORTHAT
U
HVSRQVHHQFRGH5HGLUHFW85/³%HHU7HVWGR´
4

7HATABOUTALLMYSTATIC(4-,PAGESTHEYAREFULLOFA

HREFLINKS(OWDO)DO52,REWRITINGONTHOSESTATICPAGES
$

9OUCANT4HEONLYWAYTOUSE52,REWRITINGISIF!,,THE
PAGESTHATAREPARTOFASESSIONAREDYNAMICALLYGENERATED9OU
CANTHARDCODESESSION)$SOBVIOUSLYSINCETHE)$DOESNTEXIST
UNTILRUNTIME3OIFYOUDEPENDONSESSIONSYOUNEED52,REWRITING
ASAFALLBACKSTRATEGY!NDSINCEYOUNEED52,REWRITINGYOUHAVE
TODYNAMICALLYGENERATETHE52,SINTHERESPONSE(4-,!NDTHAT
MEANSYOUHAVETOPROCESSTHE(4-,ATRUNTIME
9ESTHISISAPERFORMANCEISSUE3OYOUMUSTTHINKVERYCAREFULLY
ABOUTTHEPLACESWHERESESSIONSMATTERTOYOURAPPANDWHETHER
SESSIONSARECRITICALTOHAVEORMERELYGOODTOHAVE
4

9OUSAIDTHATTOUSE52,REWRITINGPAGESMUSTBEDY
NAMICALLYGENERATEDSODOESTHISMEAN)CANDOITWITH*30S
$

9ES9OUCANDO52,REWRITINGINA*30ANDTHERESEVENA
SIMPLE*34,TAGTHATMAKESITEASYC52,THATYOULLSEEWHENYOU
GETTOTHECHAPTERONUSINGCUSTOMTAGS
4

)S52,REWRITINGHANDLEDINAVENDORSPECIlCWAY
$

9ES52,REWRITINGISHANDLEDINAVENDORSPECIFICWAY4OM
CATUSESASEMICOLONhvTOAPPENDTHEEXTRAINFOTOTHE52,!NOTHER
VENDORMIGHTUSEACOMMAORSOMETHINGELSE!NDWHILE4OMCAT

ADDShJSESSIONIDvINTHEREWRITTEN52,ANOTHERVENDORMIGHTAP
PENDONLYTHESESSION)$ITSELF4HEPOINTISWHATEVERTHE#ONTAINER
USESASTHESEPARATORISRECOGNIZEDBYTHE#ONTAINERWHENAREQUEST
COMESIN3OWHENTHE#ONTAINERSEESTHESEPARATORTHATITUSESIN
OTHERWORDSTHESEPARATORTHATITADDEDDURING52,REWRITINGIT
KNOWSTHATEVERYTHINGAFTERTHATIShEXTRAINFOvTHATTHE#ONTAINER
PUTTHERE)NOTHERWORDSTHE#ONTAINERKNOWSHOWTORECOGNIZE
ANDPARSETHEEXTRASTUFFITTHE#ONTAINERAPPENDEDTOTHE52,
85/UHZULWLQJLVDXWRPDWLF
EXWRQO\LI\RXHQFRGH\RXU
85/V<28KDYHWRUXQDOO\RXU
85/VWKURXJKDPHWKRGRIWKH
UHVSRQVHREMHFW³HQFRGH85/RU
HQFRGH5HGLUHFW85/³DQGWKH
&RQWDLQHUGRHVHYHU\WKLQJHOVH

'RQ¶WIRUJHWWKDWWKHHQFRGH85/
PHWKRGLVVRPHWKLQJ\RXFDOORQ\RXU
+WWS6HUYOHW5HVSRQVHREMHFW<RXGRQ¶WFDOO
LWRQWKHUHTXHVWRURQ\RXUFRQWH[WRU\RXU
VHVVLRQREMHFW-XVWUHPLQG\RXUVHOIWKDW
85/HQFRGLQJLVDOODERXWWKHUHVSRQVH
85/HQFRGLQJLV
KDQGOHGE\WKH
5HVSRQVH
Chapter 6. Conversational state
Chapter 6. Conversational state
Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher: O'Reilly Prepared for Stephen Goss, Safari ID:
Print Publication Date: 8/1/2004 User number: 747221 Copyright 2007, Safari Books Online, LLC.
This PDF is exclusively for your use in accordance with the Safari Terms of Service. No part of it may be reproduced or transmitted in any form by any means without the prior

written permission for reprints and excerpts from the publisher. Redistribution or other use that violates the fair use priviledge under U.S. copyright laws (see 17 USC107) or that
otherwise violates the Safari Terms of Service is strictly prohibited.

FKDSWHU


<28GRQ¶WHYHUXVH³MVHVVLRQLG´\RXUVHOI,I\RXVHHD³MVHVVLRQLG´UHTXHVWSDUDPHWHU
VRPHERG\¶VGRLQJVRPHWKLQJZURQJ<RXVKRXOGQHYHUVHHVRPHWKLQJOLNHWKLV
6WULQJVHVVLRQ,' UHTXHVWJHW3DUDPHWHU³MVHVVLRQLG´
$QG\RXVKRXOGQ¶WVHHDFXVWRP³MVHVVLRQLG´KHDGHULQDUHTXHVWRUUHVSRQVH
3267VHOHFWVHOHFW%HHU7DVWHGR+773
8VHU$JHQW0R]LOOD
-6(66,21,'$$%&'(
,QIDFWWKH21/<SODFHD³MVHVVLRQLG´EHORQJVLVLQVLGHDFRRNLHKHDGHU
3267VHOHFWVHOHFW%HHU7DVWHGR+773
8VHU$JHQW0R]LOOD
&RRNLH-6(66,21,' $$%&'(
RUDSSHQGHGWRWKHHQGRID85/DV³H[WUDLQIR´
3267VHOHFWVHOHFW%HHU7DVWHGRMVHVVLRQLG $$%&'(
'RQ·WEHIRROHGE\DUHTXHVWSDUDPHWHU
´MVHVVLRQLGµRUD´-6(66,21,'µKHDGHU
No!!
DonÕt do this! ItÕs supposed to be a header!
This is right, but you
donÕt do it yourself.
The result of
URL rewriting
(you donÕt do this
yourself either).
:MDD=LHGAFLK

VHVVLRQPDQDJHPHQW
 85/UHZULWLQJDGGVWKHVHVVLRQ,'WRWKHHQGRIDOOWKH85/VLQWKH
+70/WKDW\RXZULWHWRWKHUHVSRQVH
 7KHVHVVLRQ,'WKHQFRPHVEDFNZLWKWKHUHTXHVWDV´H[WUDµLQIRDW
WKHHQGRIWKHUHTXHVW85/
 85/UHZULWLQJZLOOKDSSHQDXWRPDWLFDOO\LIFRRNLHVGRQ·WZRUNZLWK
WKHFOLHQWEXW\RXKDYHWRH[SOLFLWO\HQFRGHDOORIWKH85/V\RX
ZULWH
 7RHQFRGHD85/FDOOUHVSRQVHHQFRGH85/D6WULQJ
 7KHUH·VQRZD\WRJHWDXWRPDWLF85/UHZULWLQJZLWK\RXUVWDWLF
SDJHVVRLI\RXGHSHQGRQVHVVLRQV\RXPXVWXVHG\QDPLFDOO\
JHQHUDWHGSDJHV
RXWSULQWOQ³DKUHI ?´´

UHVSRQVHHQFRGH85/³%HHU7HVWGR´
VHVVLRQ
HVVL
HU
6(66,2
66,
Chapter 6. Conversational state
Chapter 6. Conversational state
Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher: O'Reilly Prepared for Stephen Goss, Safari ID:
Print Publication Date: 8/1/2004 User number: 747221 Copyright 2007, Safari Books Online, LLC.
This PDF is exclusively for your use in accordance with the Safari Terms of Service. No part of it may be reproduced or transmitted in any form by any means without the prior
written permission for reprints and excerpts from the publisher. Redistribution or other use that violates the fair use priviledge under U.S. copyright laws (see 17 USC107) or that
otherwise violates the Safari Terms of Service is strictly prohibited.
VHVVLRQPDQDJHPHQW
\RXDUHKHUH


/M\\QVOZQLWN[M[[QWV[
4HECLIENTCOMESINSTARTSASESSIONTHENCHANGESHER
MINDANDLEAVESTHESITE/RTHECLIENTCOMESINSTARTSA
SESSIONTHENHERBROWSERCRASHES/RTHECLIENTCOMES
INSTARTSASESSIONANDTHENCOMPLETESTHESESSIONBY
MAKINGAPURCHASESHOPPINGCARTCHECKOUT/RHER
COMPUTERCRASHES7HATEVER
4HEPOINTISSESSIONOBJECTSTAKERESOURCES9OUDONT
WANTSESSIONSTOSTICKAROUNDLONGERTHANNECESSARY
2EMEMBERTHE(440PROTOCOLDOESNTHAVEANY
MECHANISMFORTHESERVERTOKNOWTHATTHECLIENTIS
GONE)NDISTRIBUTEDAPPLICATIONTERMSFORTHOSEOF
YOUFAMILIARWITHTHEMTHERESNOLEASING
"UTHOWDOESTHE#ONTAINERORYOUKNOWWHENTHE
CLIENTWALKEDAWAY(OWDOESTHE#ONTAINERKNOWWHEN
THECLIENTSBROWSERCRASHED(OWDOESTHE#ONTAINER
KNOWWHENITSSAFETODESTROYASESSION
,5($//<GRQ·WZDQWD
EXQFKRIVWDOHVHVVLRQVVLWWLQJ
DURXQGLQP\VHUYHUWDNLQJ
XSYDOXDEOHVSDFH
#4X3X98
:KDWDUHVWUDWHJLHV\RXDQGWKH&RQWDLQHUPLJKW
XVHWRPDQDJHWKHQXPEHURIVHVVLRQVDQGHOLPLQDWH
XQQHHGHGVHVVLRQV":KDWDUHVRPHSRVVLEOHZD\V
LQZKLFKWKH&RQWDLQHUFRXOGWHOOWKDWDVHVVLRQLVQR
ORQJHUQHHGHG"
7KLQNDERXWLWWKHQORRNDWWKH+WWS6HVVLRQ$3,DIHZ
SDJHVIURPQRZIRUFOXHV
6RPHGLVWULEXWHGDSSVXVHOHDVLQJDVDZD\IRUWKHVHUYHUWRNQRZZKHQ

DFOLHQWLVJRQH7KHFOLHQWJHWVDOHDVHIURPWKHVHUYHUDQGWKHQPXVW
UHQHZWKHOHDVHDWVSHFLILHGLQWHUYDOVWRWHOOWKHVHUYHUWKDWWKHFOLHQWLV
VWLOODOLYH,IWKHFOLHQW·VOHDVHH[SLUHVWKHVHUYHUNQRZVLWFDQGHVWUR\DQ\
UHVRXUFHVLWZDVKROGLQJIRUWKDWFOLHQW
(He wants to conserve space
on his machine for playing
ÒThe SimsÓ with the ÒHot
DateÓ expansion pack.)
Chapter 6. Conversational state
Chapter 6. Conversational state
Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher: O'Reilly Prepared for Stephen Goss, Safari ID:
Print Publication Date: 8/1/2004 User number: 747221 Copyright 2007, Safari Books Online, LLC.
This PDF is exclusively for your use in accordance with the Safari Terms of Service. No part of it may be reproduced or transmitted in any form by any means without the prior
written permission for reprints and excerpts from the publisher. Redistribution or other use that violates the fair use priviledge under U.S. copyright laws (see 17 USC107) or that
otherwise violates the Safari Terms of Service is strictly prohibited.

FKDSWHU
6HUYOHW$
:HE&RQWDLQHU
+
W
W
S
6
H
V
V
L
R
Q


$
'LDQHVHOHFWV´'DUNµ
DQGKLWVWKHVXEPLW
EXWWRQ

7KH&RQWDLQHUVHQGVWKH
UHTXHVWWRDQHZWKUHDGRI
WKH%HHU$SSVHUYOHW
7KH&RQWDLQHUPDNHVDQHZVHV
VLRQ,'7KH´-6(66,21,'µ
FRRNLHLVVHQWEDFNWR'LDQHLQWKH
UHVSRQVHQRWVKRZQ
6HUYOHW$
:HE&RQWDLQHU
+
W
W
S
6
H
V
V
L
R
Q

$
'LDQHYDQLVKHV
P\VWHULRXVO\


7KH&RQWDLQHUGRHVZKDWHYHU
&RQWDLQHUVGRLQWKHLUVSDUHWLPH
DOWKRXJKWKHUHDUHSUREDEO\
SOHQW\RIRWKHUFOLHQWVWRVHUYLFH
7KHVHVVLRQVWDUWHGIRU'LDQHLVVWLOO
VLWWLQJWKHUHZDLWLQJ
DEDQGRQHG

,'
,'
6HUYOHW$
:HE&RQWDLQHU
+
W
W
S
6
H
6
V
H
V
V
L
R
Q
$
'LDQHGRHVQ·WUHWXUQ
0LQXWHVJRE\


7KH&RQWDLQHUFKHFNVWKHVWDWHRI
VHVVLRQDQGÀQGVWKDWQR
UHTXHVWVKDYHFRPHLQZLWKWKDW
VHVVLRQ,'IRUPLQXWHV
7KH&RQWDLQHUVD\V´PLQXWHV
LVMXVW
WRRORQJ
6KH·VQRWFRPLQJ
EDFNµDQGGHVWUR\VWKHSRRU
DEDQGRQHGVHVVLRQ
This is an
ex-Session
0W__M_IV\Q\\W_WZS
7EDLIKETHE#ONTAINERTORECOGNIZEWHENASESSIONHASBEEN
INACTIVEFORTOOLONGANDDESTROYTHESESSION/FCOURSEWE
MIGHTHAVETOlGHTTHE#ONTAINEROVERWHAThTOOLONGvREALLY
MEANS)SMINUTESTOOLONG!NHOUR!DAY-AYBETHERES
AWAYFORUSTOTELLTHE#ONTAINERWHAThTOOLONGvIS
end the session
DEDQGRQHGVHVVLRQV
Chapter 6. Conversational state
Chapter 6. Conversational state
Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher: O'Reilly Prepared for Stephen Goss, Safari ID:
Print Publication Date: 8/1/2004 User number: 747221 Copyright 2007, Safari Books Online, LLC.
This PDF is exclusively for your use in accordance with the Safari Terms of Service. No part of it may be reproduced or transmitted in any form by any means without the prior
written permission for reprints and excerpts from the publisher. Redistribution or other use that violates the fair use priviledge under U.S. copyright laws (see 17 USC107) or that
otherwise violates the Safari Terms of Service is strictly prohibited.
VHVVLRQPDQDJHPHQW
\RXDUHKHUH


<PM0\\X;M[[QWVQV\MZNIKM
!LLYOUCAREABOUTWHENYOUCALLGET3ESSIONISTHAT
YOUGETANINSTANCEOFACLASSTHATIMPLEMENTSTHE
(TTP3ESSIONINTERFACE)TSTHE#ONTAINERSJOBTO
CREATETHEIMPLEMENTATION
/NCEYOUHAVEASESSIONWHATCANYOUDOWITHIT
-OSTOFTHETIMEYOULLUSESESSIONSTOGETANDSETSESSION
SCOPEDATTRIBUTES
"UTTHERESMOREOFCOURSE3EEIFYOUCANlGUREOUT
SOMEOFTHEKEYMETHODSFORYOURSELFANSWERSAREON
THENEXTPAGESODONTTURNTHEPAGE
2EMHFWJHW$WWULEXWH6WULQJ
ORQJJHW&UHDWLRQ7LPH
6WULQJJHW,G
ORQJJHW/DVW$FFHVVHG7LPH
LQWJHW0D[,QDFWLYH,QWHUYDO
6HUYOHW&RQWH[WJHW6HUYOHW&RQWH[W
YRLGLQYDOLGDWH
ERROHDQLV1HZ
YRLGUHPRYH$WWULEXWH6WULQJ
YRLGVHW$WWULEXWH6WULQJ2EMHFW
YRLGVHW0D[,QDFWLYH,QWHUYDOLQW
DIHZPRUHPHWKRGV
LQWHUIDFH!!
MDYD[VHUYOHWKWWS+WWS6HVVLRQ
:KDWLWGRHV :KDW\RX·GXVHLWIRU
JHW&UHDWLRQ7LPH
JHW/DVW$FFHVVHG7LPH
VHW0D[,QDFWLYH,QWHUYDO

JHW0D[,QDFWLYH,QWHUYDO
LQYDOLGDWH
6KDUSHQ \RXU SHQFLO
Chapter 6. Conversational state
Chapter 6. Conversational state
Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher: O'Reilly Prepared for Stephen Goss, Safari ID:
Print Publication Date: 8/1/2004 User number: 747221 Copyright 2007, Safari Books Online, LLC.
This PDF is exclusively for your use in accordance with the Safari Terms of Service. No part of it may be reproduced or transmitted in any form by any means without the prior
written permission for reprints and excerpts from the publisher. Redistribution or other use that violates the fair use priviledge under U.S. copyright laws (see 17 USC107) or that
otherwise violates the Safari Terms of Service is strictly prohibited.

FKDSWHU
3Ma0\\X;M[[QWVUM\PWL[
9OUALREADYKNOWABOUTTHEMETHODSFORATTRIBUTES
GET!TTRIBUTESET!TTRIBUTEREMOVE!TTRIBUTE
BUTHEREAREAFEWKEYONESYOUMIGHTNEEDINYOUR
APPLICATIONANDTHATMIGHTBEONTHEEXAM
:KDWLWGRHV :KDW\RX·GXVHLWIRU
JHW&UHDWLRQ7LPH
JHW/DVW$FFHVVHG7LPH
VHW0D[,QDFWLYH,QWHUYDO
JHW0D[,QDFWLYH,QWHUYDO
5HWXUQVWKHWLPHWKH
VHVVLRQZDVILUVWFUHDWHG
7RILQGRXWKRZROGWKHVHVVLRQLV<RXPLJKWZDQWWRUHVWULFW
FHUWDLQVHVVLRQVWRDIL[HGOHQJWKRIWLPH)RUH[DPSOH\RX
PLJKWVD\´2QFH\RX·YHORJJHGLQ\RXKDYHH[DFWO\
PLQXWHVWRFRPSOHWHWKLVIRUPµ
5HWXUQVWKHODVWWLPHWKH
&RQWDLQHUJRWDUHTXHVW

ZLWKWKLVVHVVLRQ,'LQ
PLOOLVHFRQGV
7RILQGRXWZKHQDFOLHQWODVWDFFHVVHGWKLVVHVVLRQ<RX
PLJKWXVHLWWRGHFLGHWKDWLIWKHFOLHQW·VEHHQJRQHDORQJ
WLPH\RX·OOVHQGWKHPDQHPDLODVNLQJLIWKH\·UHFRPLQJ
EDFN2UPD\EH\RX·OOLQYDOLGDWHWKHVHVVLRQ
6SHFLILHVWKHPD[LPXP
WLPHLQVHFRQGVWKDW\RX
ZDQWWRDOORZEHWZHHQFOLHQW
UHTXHVWVIRUWKLVVHVVLRQ
7RFDXVHDVHVVLRQWREHGHVWUR\HGDIWHUDFHUWDLQDPRXQW
RIWLPHKDVSDVVHGZLWKRXWWKHFOLHQWPDNLQJDQ\UHTXHVWV
IRUWKLVVHVVLRQ7KLVLVRQHZD\WRUHGXFHWKHDPRXQWRI
VWDOHVHVVLRQVVLWWLQJLQ\RXUVHUYHU
(QGVWKHVHVVLRQ7KLV
LQFOXGHVXQELQGLQJDOO
VHVVLRQDWWULEXWHVFXUUHQWO\
VWRUHGLQWKLVVHVVLRQ0RUH
RQWKDWODWHULQWKLVFKDSWHU
7RNLOODVHVVLRQLIWKHFOLHQWKDVEHHQLQDFWLYHRULI\RX.12:
WKHVHVVLRQLVRYHUIRUH[DPSOHDIWHUWKHFOLHQWGRHVD
VKRSSLQJFKHFNRXWRUORJV7KHVHVVLRQLQVWDQFHLWVHOIPLJKW
EHUHF\FOHGE\WKH&RQWDLQHUEXWZHGRQ·WFDUH,QYDOLGDWH
PHDQVWKHVHVVLRQ,'QRORQJHUH[LVWVDQGWKHDWWULEXWHVDUH
UHPRYHGIURPWKHVHVVLRQREMHFW
LQYDOLGDWH
5HWXUQVWKHPD[LPXPWLPH
LQVHFRQGVWKDWLVDOORZHG
EHWZHHQFOLHQWUHTXHVWVIRU
WKLVVHVVLRQ

7RILQGRXWKRZORQJWKLVVHVVLRQFDQEHLQDFWLYHDQGVWLOOEH
DOLYH<RXFRXOGXVHWKLVWRMXGJHKRZPXFKPRUHWLPHDQ
LQDFWLYHFOLHQWKDVEHIRUHWKHVHVVLRQZLOOEHLQYDOLGDWHG
#4X3X98
1RZWKDW\RX¶YHVHHQWKHVHPHWKRGV
FDQ\RXSXWWRJHWKHUDVWUDWHJ\IRU
HOLPLQDWLQJDEDQGRQHGVHVVLRQV"
+WWS6HVVLRQPHWKRGV
Chapter 6. Conversational state
Chapter 6. Conversational state
Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher: O'Reilly Prepared for Stephen Goss, Safari ID:
Print Publication Date: 8/1/2004 User number: 747221 Copyright 2007, Safari Books Online, LLC.
This PDF is exclusively for your use in accordance with the Safari Terms of Service. No part of it may be reproduced or transmitted in any form by any means without the prior
written permission for reprints and excerpts from the publisher. Redistribution or other use that violates the fair use priviledge under U.S. copyright laws (see 17 USC107) or that
otherwise violates the Safari Terms of Service is strictly prohibited.
VHVVLRQPDQDJHPHQW
\RXDUHKHUH

;M\\QVO[M[[QWV\QUMW]\
'OODNEWSYOUDONTHAVETOKEEPTRACKOFTHISYOURSELF3EETHOSE
METHODSONTHEOPPOSITEPAGE9OUDONTHAVETOUSETHEMTOGET
RIDOFSTALEINACTIVESESSIONS4HE#ONTAINERCANDOITFORYOU
<RXFDQ·WEHVHULRXVGRHV
WKLVPHDQWKDW
,
KDYHWR
NHHSWUDFNRIVHVVLRQDFWLYLW\
DQGWKDW
,
KDYHWRGHVWUR\

WKHVWDOHVHVVLRQV"&DQ·WWKH
&RQWDLQHU
GRWKDW"

 )TTIMESOUT

 9OUCALLINVALIDATEONTHESESSIONOBJECT

 4HEAPPLICATIONGOESDOWNCRASHESORISUNDEPLOYED
7KUHHZD\VDVHVVLRQFDQGLH
&RQÀJXULQJVHVVLRQWLPHRXWLQWKH''
#ONlGURINGATIMEOUTINTHE$$HASVIRTUALLYTHE
SAMEEFFECTASCALLINGSET-AX)NACTIVE)NTERVALON
EVERYSESSIONTHATSCREATED
ZHEDSS!
VHUYOHW!

VHUYOHW!
VHVVLRQFRQ¿J!

VHVVLRQWLPHRXW!VHVVLRQWLPHRXW!
VHVVLRQFRQ¿J!
ZHEDSS!
6HWWLQJVHVVLRQWLPHRXWIRUD
VSHFLÀF
VHVVLRQ
)FYOUWANTTOCHANGETHESESSIONTIMEOUTVALUEFOR
APARTICULARSESSIONINSTANCEWITHOUTAFFECTINGTHE
TIMEOUTLENGTHFORANYOTHERSESSIONSINTHEAPP
The Ò15Ó is in minutes. This says if

the client doesnÕt make any requests
on this session for 15 minutes, kill it.
*
VHVVLRQVHW0D[,QDFWLYH,QWHUYDO
The argument to the method is in seconds,
so this says if the client doesnÕt make any
requests on the session for 20 minutes, kill it.
*
Only the session on
which you call the
method is affected.



+HUH¶VDELJLQFRQVLVWHQF\WR
ZDWFKRXWIRU\RXVSHFLI\
WLPHRXWVLQWKH''XVLQJ
0,187(6EXWLI\RXVHWD
WLPHRXWSURJUDPPDWLFDOO\\RX
VSHFLI\6(&21'6
7LPHRXWVLQ
WKH''DUHLQ
0,187(6
*The session, not the client.
Chapter 6. Conversational state
Chapter 6. Conversational state
Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher: O'Reilly Prepared for Stephen Goss, Safari ID:
Print Publication Date: 8/1/2004 User number: 747221 Copyright 2007, Safari Books Online, LLC.
This PDF is exclusively for your use in accordance with the Safari Terms of Service. No part of it may be reproduced or transmitted in any form by any means without the prior
written permission for reprints and excerpts from the publisher. Redistribution or other use that violates the fair use priviledge under U.S. copyright laws (see 17 USC107) or that

otherwise violates the Safari Terms of Service is strictly prohibited.

FKDSWHU
SXEOLFYRLGGR*HW+WWS6HUYOHW5HTXHVWUHTXHVW+WWS6HUYOHW5HVSRQVHUHVSRQVH
WKURZV,2([FHSWLRQ^

`
&RGH0DJQHWV
ZHEDSS!
VHUYOHW!
VHUYOHW!
VHUYOHW!
VHVVLRQWLPHRXW!

ZHEDSS!

ZHEDSS!
VHVVLRQFRQ¿J!
VHVVLRQFRQ¿J!
FRQWH[WFRQ¿J!
FRQWH[WFRQ¿J!
WLPHRXW!
WLPHRXW!
VHVVLRQWLPHRXW!
+WWS6HVVLRQ
VHVVLRQ
UHTXHVWJHW6HVVLRQ

JHW6HUYOHW&RQWH[WJHW6HVVLRQ
VHVVLRQ

VHW0D[,QDFWLYH,QWHUYDO

UHTXHVW
VHW&UHDWLRQ7LPH


VHW7LPHRXW
!
VHW6HVVLRQ7LPHRXW
PD[LQDFWLYHLQWHUYDO!
PD[LQDFWLYHLQWHUYDO!
6SHFLI\LQERWKWKH''DQGSURJUDPPDWLFDOO\WKDWLIDVHV
VLRQGRHVQRWUHFHLYHDQ\UHTXHVWVIRUPLQXWHVLWVKRXOG
EHGHVWUR\HG:HSXWRQHPDJQHWLQWKHVHUYOHWIRU\RXWR
JHWVWDUWHGDQG\RXPLJKWQRWXVHDOOPDJQHWV

6HUYOHW
''
VHVVLRQWLPHRXWH[HUFLVH
Chapter 6. Conversational state
Chapter 6. Conversational state
Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher: O'Reilly Prepared for Stephen Goss, Safari ID:
Print Publication Date: 8/1/2004 User number: 747221 Copyright 2007, Safari Books Online, LLC.
This PDF is exclusively for your use in accordance with the Safari Terms of Service. No part of it may be reproduced or transmitted in any form by any means without the prior
written permission for reprints and excerpts from the publisher. Redistribution or other use that violates the fair use priviledge under U.S. copyright laws (see 17 USC107) or that
otherwise violates the Safari Terms of Service is strictly prohibited.
VHVVLRQPDQDJHPHQW
\RXDUHKHUH

(DFKRIWKHWZROLVWLQJVUHSUHVHQWVFRGH

IURPDFRPSLOHG+WWS6HUYOHW<RXUMRELV
WRWKLQNOLNHWKH&RQWDLQHUDQGGHWHUPLQH
ZKDWZLOOKDSSHQZKHQHDFKRIWKHVH
VHUYOHWVDUHLQYRNHGWZLFHE\
WKHVDPHFOLHQW'HVFULEH
ZKDWKDSSHQVWKHILUVWDQG
VHFRQGWLPHWKHVDPHFOLHQW
DFFHVVHVWKHVHUYOHW
%(WKH&RQWDLQHU
SXEOLFYRLGGR*HW+WWS6HUYOHW5HTXHVWUHTXHVW+WWS6HUYOHW5HVSRQVHUHVSRQVH
WKURZV,2([FHSWLRQ^
UHVSRQVHVHW&RQWHQW7\SH³WH[WKWPO´
3ULQW:ULWHURXW UHVSRQVHJHW:ULWHU
+WWS6HVVLRQVHVVLRQ UHTXHVWJHW6HVVLRQ
VHVVLRQVHW$WWULEXWH³IRR´³´
VHVVLRQVHW$WWULEXWH³EDU´³´
VHVVLRQLQYDOLGDWH
6WULQJIRR 6WULQJVHVVLRQJHW$WWULEXWH³IRR´
RXWSULQWOQ³)RR³IRR
`
SXEOLFYRLGGR*HW+WWS6HUYOHW5HTXHVWUHTXHVW+WWS6HUYOHW5HVSRQVHUHVSRQVH
WKURZV,2([FHSWLRQ^
UHVSRQVHVHW&RQWHQW7\SH³WH[WKWPO´
3ULQW:ULWHURXW UHVSRQVHJHW:ULWHU
+WWS6HVVLRQVHVVLRQ UHTXHVWJHW6HVVLRQ
VHVVLRQVHW$WWULEXWH³IRR´³´
VHVVLRQVHW0D[,QDFWLYH,QWHUYDO
6WULQJIRR 6WULQJVHVVLRQJHW$WWULEXWH³IRR´
LIVHVVLRQLV1HZ^
RXWSULQWOQ³7KLVLVDQHZVHVVLRQ´

`HOVH^
RXWSULQWOQ³:HOFRPHEDFN´
`

RXWSULQWOQ³)RR³IRR
`


Chapter 6. Conversational state
Chapter 6. Conversational state
Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher: O'Reilly Prepared for Stephen Goss, Safari ID:
Print Publication Date: 8/1/2004 User number: 747221 Copyright 2007, Safari Books Online, LLC.
This PDF is exclusively for your use in accordance with the Safari Terms of Service. No part of it may be reproduced or transmitted in any form by any means without the prior
written permission for reprints and excerpts from the publisher. Redistribution or other use that violates the fair use priviledge under U.S. copyright laws (see 17 USC107) or that
otherwise violates the Safari Terms of Service is strictly prohibited.

FKDSWHU
SXEOLFYRLGGR*HW+WWS6HUYOHW5HTXHVWUHTXHVW+WWS6HUYOHW5HVSRQVHUHVSRQVH
WKURZV,2([FHSWLRQ^

`
Remember, the timeout
in the DD is speciÞ ed in
MINUTES.
&RGH0DJQHWV
$QVZHUV
ZHEDSS!
VHUYOHW!
VHUYOHW!
VHUYOHW!

VHVVLRQWLPHRXW!

ZHEDSS!

ZHEDSS!
VHVVLRQFRQ¿J!
VHVVLRQFRQ¿J!
FRQWH[WFRQ¿J!
FRQWH[WFRQ¿J!
WLPHRXW!
WLPHRXW!
VHVVLRQWLPHRXW!
+WWS6HVVLRQ
VHVVLRQ UHTXHVWJHW6HVVLRQ
JHW6HUYOHW&RQWH[WJHW6HVVLRQ
VHVVLRQ VHW0D[,QDFWLYH,QWHUYDO

UHTXHVW
VHW&UHDWLRQ7LPH


VHW7LPHRXW
!
VHW6HVVLRQ7LPHRXW
PD[LQDFWLYHLQWHUYDO!
PD[LQDFWLYHLQWHUYDO!
6SHFLI\LQERWKWKH''DQGSURJUDPPDWLFDOO\
WKDWLIDVHVVLRQGRHVQRWUHFHLYHDQ\UHTXHVWV
IRUPLQXWHVLWVKRXOGEHGHVWUR\HG
In code, the timeout is

speciÞ ed in SECONDS.
6HUYOHW
''
H[HUFLVHDQVZHUV
Chapter 6. Conversational state
Chapter 6. Conversational state
Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher: O'Reilly Prepared for Stephen Goss, Safari ID:
Print Publication Date: 8/1/2004 User number: 747221 Copyright 2007, Safari Books Online, LLC.
This PDF is exclusively for your use in accordance with the Safari Terms of Service. No part of it may be reproduced or transmitted in any form by any means without the prior
written permission for reprints and excerpts from the publisher. Redistribution or other use that violates the fair use priviledge under U.S. copyright laws (see 17 USC107) or that
otherwise violates the Safari Terms of Service is strictly prohibited.
VHVVLRQPDQDJHPHQW
\RXDUHKHUH

%(WKH&RQWDLQHU
SXEOLFYRLGGR*HW+WWS6HUYOHW5HTXHVWUHTXHVW+WWS6HUYOHW5HVSRQVHUHVSRQVH
WKURZV,2([FHSWLRQ^
UHVSRQVHVHW&RQWHQW7\SH³WH[WKWPO´
3ULQW:ULWHURXW UHVSRQVHJHW:ULWHU
+WWS6HVVLRQVHVVLRQ UHTXHVWJHW6HVVLRQ
VHVVLRQVHW$WWULEXWH³IRR´³´
VHVVLRQVHW$WWULEXWH³EDU´³´

VHVVLRQLQYDOLGDWH
6WULQJIRR 6WULQJVHVVLRQ
JHW$WWULEXWH³IRR´
RXWSULQWOQ³)RR³IRR
`
SXEOLFYRLGGR*HW+WWS6HUYOHW5HTXHVWUHTXHVW+WWS6HUYOHW5HVSRQVHUHVSRQVH
WKURZV,2([FHSWLRQ^

UHVSRQVHVHW&RQWHQW7\SH³WH[WKWPO´
3ULQW:ULWHURXW UHVSRQVHJHW:ULWHU
+WWS6HVVLRQVHVVLRQ UHTXHVWJHW6HVVLRQ
VHVVLRQVHW$WWULEXWH³IRR´³´

VHVVLRQVHW0D[,QDFWLYH,QWHUYDO

LI
VHVVLRQLV1HZ^
RXWSULQWOQ³7KLVLVDQHZVHVVLRQ´
`HOVH^
RXWSULQWOQ³:HOFRPHEDFN´
`
RXWSULQWOQ³)RR³VHVVLRQJHW$WWULEXWH³IRR´
`
5HVXOWDUXQWLPHH[FHSWLRQ,OOHJDO6WDWH([FHSWLRQLV
WKURZQEHFDXVH\RXFDQ¶WJHWDQDWWULEXWH$)7(5WKH
VHVVLRQEHFRPHVLQYDOLG
Uh-oh! ItÕs too late to call
getAttribute() on the session
because the session already IS
invalid!
here we invalidate the session
5HVXOWDUXQWLPHH[FHSWLRQ,OOHJDO6WDWH([FHSWLRQLVWKURZQ
EHFDXVH\RXFDQ¶WFDOOLV1HZRQWKHVHVVLRQ$)7(5WKHVHVVLRQ
EHFRPHVLQYDOLG6HWWLQJWKHPD[LPXPLQDFWLYHLQWHUYDOWR
PHDQVWKHVHVVLRQWLPHVRXWDQGLVLQYDOLGDWHGLPPHGLDWHO\
Here weÕre causing the session to
timeout IMMEDIATELY, because
weÕre saying, Òtimeout after 0

seconds of inactivityÓ.
You canÕt call isNew() on a session thatÕs
already been invalidated. So itÕs really the
same problem as the code above you canÕt
call this method on an invalid session.
$QVZHUV


Chapter 6. Conversational state
Chapter 6. Conversational state
Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher: O'Reilly Prepared for Stephen Goss, Safari ID:
Print Publication Date: 8/1/2004 User number: 747221 Copyright 2007, Safari Books Online, LLC.
This PDF is exclusively for your use in accordance with the Safari Terms of Service. No part of it may be reproduced or transmitted in any form by any means without the prior
written permission for reprints and excerpts from the publisher. Redistribution or other use that violates the fair use priviledge under U.S. copyright laws (see 17 USC107) or that
otherwise violates the Safari Terms of Service is strictly prohibited.

FKDSWHU
+IV1][MKWWSQM[NWZW\PMZ\PQVO[WZ
IZM\PMaWVTaNWZ[M[[QWV['
!LTHOUGHCOOKIESWEREORIGINALLYDESIGNEDTOHELPSUPPORT
SESSIONSTATEYOUCANUSECUSTOMCOOKIESFOROTHERTHINGS
2EMEMBERACOOKIEISNOTHINGMORETHANALITTLEPIECEOF
DATAANAMEVALUE3TRINGPAIREXCHANGEDBETWEENTHE
CLIENTANDSERVER4HESERVERSENDSTHECOOKIETOTHECLIENT
ANDTHECLIENTRETURNSTHECOOKIEWHENTHECLIENTMAKES
ANOTHERREQUEST
/NECOOLTHINGABOUTCOOKIESISTHATTHEUSERDOESNT
HAVETOGETINVOLVEDTHECOOKIEEXCHANGEISAUTOMATIC
ASSUMINGCOOKIESAREENABLEDONTHECLIENTOFCOURSE
"YDEFAULTACOOKIELIVESONLYASLONGASASESSIONONCETHE

CLIENTQUITSHISBROWSERTHECOOKIEDISAPPEARS4HATSHOW
THEh*3%33)/.)$vCOOKIEWORKS"UTYOUCANTELLACOOKIETO
STAYALIVEEVEN!&4%2THEBROWSERSHUTSDOWN
4HATWAYYOURWEBAPPCANSTILLGETTHECOOKIEINFORMATION
EVENTHOUGHTHESESSIONWITHTHATCLIENTISLONGGONE
)MAGINETHAT+IMWANTSTODISPLAYTHEUSERSNAMEEACH
TIMEHERETURNSTOTHEBEERSITE3OHESETSTHECOOKIETHE
lRSTTIMEHERECEIVESTHECLIENTSNAMEANDIFHEGETSTHE
COOKIEBACKWITHAREQUESTHEKNOWSNOTTOASKFORTHE
NAMEAGAIN!NDITDOESNTMATTERIFTHEUSERRESTARTEDHISBROWSER
ANDHASNTBEENONTHESITEFORAWEEK
+7732.
6HW&RRNLHXVHUQDPH 7RPDV+LUVFK
&RQWHQW7\SHWH[WKWPO
&RQWHQW/HQJWK
'DWH:HG1RY*07
6HUYHU$SDFKH&R\RWH
&RQQHFWLRQFORVH
KWPO!

KWPO!

3267

VHOHFWVHOHFW%HHU7DVWHGR+773
+RVWZZZZLFNHGO\VPDUWFRP
8VHU$JHQW0R]LOOD
&RRNLHXVHUQDPH 7RPDV+LUVFK
$FFHSWWH[W[PODSSOLFDWLRQ[PODSSOLFDWLRQ[KWPO[POWH[W
KWPOT WH[WSODLQT YLGHR[PQJLPDJHSQJLPDJH

MSHJLPDJHJLIT T 
$FFHSW/DQJXDJHHQXVHQT 
$FFHSW(QFRGLQJJ]LSGHӿDWH
<RXFDQXVHFRRNLHVWR
H[FKDQJHQDPHYDOXH
6WULQJSDLUVEHWZHHQWKH
VHUYHUDQGWKHFOLHQW
7KHVHUYHUVHQGVWKH
FRRNLHWRWKHFOLHQWDQG
WKHFOLHQWVHQGVLWEDFN
ZLWKHDFKVXEVHTXHQW
UHTXHVW
6HVVLRQFRRNLHVYDQLVK
ZKHQWKHFOLHQW·VEURZVHU
TXLWVEXW\RX&$1WHOO
DFRRNLHWRSHUVLVWRQ
WKHFOLHQWHYHQDIWHUWKH
EURZVHUVKXWVGRZQ
Server sends
this Þ rst.
Client sends
this back.
FXVWRPFRRNLHV
Chapter 6. Conversational state
Chapter 6. Conversational state
Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher: O'Reilly Prepared for Stephen Goss, Safari ID:
Print Publication Date: 8/1/2004 User number: 747221 Copyright 2007, Safari Books Online, LLC.
This PDF is exclusively for your use in accordance with the Safari Terms of Service. No part of it may be reproduced or transmitted in any form by any means without the prior
written permission for reprints and excerpts from the publisher. Redistribution or other use that violates the fair use priviledge under U.S. copyright laws (see 17 USC107) or that
otherwise violates the Safari Terms of Service is strictly prohibited.

VHVVLRQPDQDJHPHQW
\RXDUHKHUH

=[QVO+WWSQM[_Q\P\PM;MZ^TM\)81
9OUCANGETCOOKIERELATEDHEADERSOUTOFTHE(440
REQUESTANDRESPONSEBUTDONT%VERYTHINGYOU
NEEDTODOWITHCOOKIESHASBEENENCAPSULATEDIN
THE3ERVLET!0)INTHREECLASSES(TTP3ERVLET2EQUEST
(TTP3ERVLET2ESPONSEAND#OOKIE
&RRNLH6WULQJ6WULQJ
6WULQJJHW'RPDLQ
LQWJHW0D[$JH
6WULQJJHW1DPH
6WULQJJHW3DWK
ERROHDQJHW6HFXUH
6WULQJJHW9DOXH
YRLGVHW'RPDLQ6WULQJ
YRLGVHW0D[$JHLQW
YRLGVHW3DWK6WULQJ
YRLGVHW9DOXH6WULQJ
DIHZPRUHPHWKRGV
MDYD[VHUYOHWKWWS&RRNLH
&UHDWLQJDQHZ&RRNLH
&RRNLHFRRNLH QHZ&RRNLH³XVHUQDPH´QDPH
6HWWLQJKRZORQJDFRRNLHZLOOOLYHRQWKHFOLHQW
FRRNLHVHW0D[$JH
6HQGLQJWKHFRRNLHWRWKHFOLHQW
UHVSRQVHDGG&RRNLHFRRNLH
*HWWLQJWKHFRRNLHVIURPWKHFOLHQWUHTXHVW
&RRNLH>@FRRNLHV UHTXHVWJHW&RRNLHV

IRULQWL LFRRNLHVOHQJWKL^
&RRNLHFRRNLH FRRNLHV>L@
LIFRRNLHJHW1DPHHTXDOV³XVHUQDPH´^
6WULQJXVHU1DPH FRRNLHJHW9DOXH
RXWSULQWOQ³+HOOR³XVHU1DPH
EUHDN
`
`
JHW&RQWH[W3DWK
JHW&RRNLHV
JHW+HDGHU6WULQJ
JHW4XHU\6WULQJ
JHW6HVVLRQ
0$1<PRUHPHWKRGV
LQWHUIDFH!!
MDYD[VHUYOHWKWWS+WWS6HUYOHW5H
TXHVW
DGG&RRNLH
DGG+HDGHU
HQFRGH5HGLUHFW85/
VHQG(UURU
VHW6WDWXV
0$1<PRUHPHWKRGV
LQWHUIDFH!!
MDYD[VHUYOHWKWWS+WWS6HUYOHW5HVSRQVH
The Cookie constructor takes
a name/value String pair.
setMaxAge is deÞ ned in SECONDS. This code says Òstay
alive on the client for 30*60 secondsÓ (30 minutes).
Setting max age to -1 makes the cookie disappear when

the browser exits. So, if you call getMaxAge() on the
ÒJSESSIONIDÓ cookie, what will you get back?
ThereÕs no getCookie(String) method
you can only get cookies in a Cookie
array, and then you have to loop over
the array to Þ nd the one you want.
Chapter 6. Conversational state
Chapter 6. Conversational state
Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher: O'Reilly Prepared for Stephen Goss, Safari ID:
Print Publication Date: 8/1/2004 User number: 747221 Copyright 2007, Safari Books Online, LLC.
This PDF is exclusively for your use in accordance with the Safari Terms of Service. No part of it may be reproduced or transmitted in any form by any means without the prior
written permission for reprints and excerpts from the publisher. Redistribution or other use that violates the fair use priviledge under U.S. copyright laws (see 17 USC107) or that
otherwise violates the Safari Terms of Service is strictly prohibited.

FKDSWHU
;QUXTMK][\WUKWWSQMM`IUXTM
3OIMAGINETHAT+IMWANTSTOPUTUPAFORMTHATASKSTHEUSERTOSUBMITHIS
NAME4HEFORMCALLSASERVLETTHATGETSTHEUSERNAMEREQUESTPARAMETER
ANDUSESTHENAMEVALUETOSETACOOKIEINTHERESPONSE
4HENEXTTIMETHISUSERMAKESAREQUESTON!.9SERVLETINTHISWEBAPPTHE
COOKIECOMESBACKWITHTHEREQUESTASSUMINGTHECOOKIEISSTILLALIVEBASED
ONTHECOOKIESMAX!GEVALUE7HENASERVLETINTHEWEBAPPSEESTHIS
COOKIEITCANPUTTHEUSERSNAMEINTOTHEDYNAMICALLYGENERATEDRESPONSE
ANDTHEBUSINESSLOGICKNOWSNOTTOASKTHEUSERTOINPUTHISNAMEAGAIN
4HISCODEISASIMPLIlEDTESTVERSIONOFTHESCENARIOWEJUSTDESCRIBED
LPSRUWMDYD[VHUYOHW
LPSRUWMDYD[VHUYOHWKWWS
LPSRUWMDYDLR
SXEOLFFODVV&RRNLH7HVWH[WHQGV+WWS6HUYOHW^


SXEOLFYRLGGR3RVW+WWS6HUYOHW5HTXHVWUHTXHVW+WWS6HUYOHW5HVSRQVHUHVSRQVH
WKURZV,2([FHSWLRQ6HUYOHW([FHSWLRQ^
UHVSRQVHVHW&RQWHQW7\SH³WH[WKWPO´

6WULQJQDPH UHTXHVWJHW3DUDPHWHU³XVHUQDPH´
&RRNLHFRRNLH QHZ&RRNLH³XVHUQDPH´QDPH
FRRNLHVHW0D[$JH
UHVSRQVHDGG&RRNLHFRRNLH
5HTXHVW'LVSDWFKHUYLHZ UHTXHVWJHW5HTXHVW'LVSDWFKHU³FRRNLHUHVXOWMVS´
YLHZIRUZDUGUHTXHVWUHVSRQVH

`
`
KWPO!ERG\!
DKUHI ´FKHFNFRRNLHGR´!FOLFNKHUHD!
ERG\!KWPO!
6HUYOHWWKDWFUHDWHVDQG6(76WKHFRRNLH
-63WRUHQGHUWKHYLHZIURPWKLVVHUYOHW
OK, sure, thereÕs nothing JSP-ish about
this, but we hate outputting even THIS
much HTML from a servlet. The fact
that weÕre forwarding to a JSP doesnÕt
change the cookie setting. The cookie is
already in the response by the time the
request is forwarded to the JSP
Get the userÕs name
submitted in the form.
Make a new cookie so
store the userÕs name.
Keep it alive on the client for 30 minutes.

Add the cookie as a ÒSet-CookieÓ
response header.
Let a JSP make
the response page.
FRRNLHH[DPSOH
Chapter 6. Conversational state
Chapter 6. Conversational state
Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher: O'Reilly Prepared for Stephen Goss, Safari ID:
Print Publication Date: 8/1/2004 User number: 747221 Copyright 2007, Safari Books Online, LLC.
This PDF is exclusively for your use in accordance with the Safari Terms of Service. No part of it may be reproduced or transmitted in any form by any means without the prior
written permission for reprints and excerpts from the publisher. Redistribution or other use that violates the fair use priviledge under U.S. copyright laws (see 17 USC107) or that
otherwise violates the Safari Terms of Service is strictly prohibited.
VHVVLRQPDQDJHPHQW
\RXDUHKHUH

6HUYOHWWKDW*(76WKHFRRNLH
LPSRUWMDYD[VHUYOHW
LPSRUWMDYD[VHUYOHWKWWS
LPSRUWMDYDLR
SXEOLFFODVV&KHFN&RRNLHH[WHQGV+WWS6HUYOHW^

SXEOLFYRLGGR*HW+WWS6HUYOHW5HTXHVWUHTXHVW+WWS6HUYOHW5HVSRQVHUHVSRQVH
WKURZV,2([FHSWLRQ6HUYOHW([FHSWLRQ^
UHVSRQVHVHW&RQWHQW7\SH³WH[WKWPO´
3ULQW:ULWHURXW UHVSRQVHJHW:ULWHU
&RRNLH>@FRRNLHV UHTXHVWJHW&RRNLHV
IRULQWL LFRRNLHVOHQJWKL^
&RRNLHFRRNLH FRRNLHV>L@
LIFRRNLHJHW1DPHHTXDOV³XVHUQDPH´^
6WULQJXVHU1DPH FRRNLHJHW9DOXH

RXWSULQWOQ³+HOOR³XVHU1DPH
EUHDN
`
`

`
`
+][\WUKWWSQMM`IUXTMKWV\QV]ML
Get the cookies
from the request.
Loop through the cookie array
looking for a cookie named
ÒusernameÓ. If there is one, get
the value and print it.
<RXGRQ¶WKDYHWRNQRZ
$//WKHFRRNLHPHWKRGV
)RUWKHH[DP\RXGRQ¶WKDYHWR
PHPRUL]HHYHU\RQHRIWKHPHWKRGV
LQFODVV&RRNLHEXW\RXPXVW
NQRZWKHUHTXHVWDQGUHVSRQVH
PHWKRGVWRJHWDQGDGG&RRNLHV
<RXVKRXOGDOVRNQRZWKH&RRNLH
FRQVWUXFWRUDQGWKHJHW0D[$JH
DQGVHW0D[$JHPHWKRGV

:KHQ\RXDGGDKHDGHUWRDUHVSRQVH\RXSDVVWKHQDPH
DQGYDOXH6WULQJVDVDUJXPHQWV
UHVSRQVHDGG+HDGHU³IRR´³EDU´
%XWZKHQ\RXDGGD&RRNLHWRWKHUHVSRQVH\RXSDVVD
&RRNLHREMHFW<RXVHWWKH&RRNLHQDPHDQGYDOXHLQWKH

&RRNLHFRQVWUXFWRU
&RRNLHFRRNLH QHZ&RRNLH³QDPH´QDPH
UHVSRQVHDGG&RRNLHFRRNLH
$QGUHPHPEHUWRRWKDWWKHUH¶VERWKDVHW+HDGHUDQG
DQDGG+HDGHUPHWKRGDGG+HDGHUDGGVDQHZYDOXHWR
DQH[LVWLQJKHDGHULIWKHUHLVRQHEXWVHW+HDGHUUHSODFHV

WKHH[LVWLQJYDOXH%XWWKHUH¶V127DVHW&RRNLHPHWKRG
7KHUH¶VRQO\DQDGG&RRNLHPHWKRG
'RQ·WFRQIXVH&RRNLHV
ZLWKKHDGHUV
Chapter 6. Conversational state
Chapter 6. Conversational state
Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher: O'Reilly Prepared for Stephen Goss, Safari ID:
Print Publication Date: 8/1/2004 User number: 747221 Copyright 2007, Safari Books Online, LLC.
This PDF is exclusively for your use in accordance with the Safari Terms of Service. No part of it may be reproduced or transmitted in any form by any means without the prior
written permission for reprints and excerpts from the publisher. Redistribution or other use that violates the fair use priviledge under U.S. copyright laws (see 17 USC107) or that
otherwise violates the Safari Terms of Service is strictly prohibited.

×