VHVVLRQPDQDJHPHQW
\RXDUHKHUH
6HUYOHW$
:HE&RQWDLQHU
+
W
W
S
6
H
V
V
L
R
Q
$
7KHVHUYOHWUXQVLWVEXVLQHVVORJLF
LQFOXGLQJFDOOVWRWKHPRGHODQG
UHWXUQVDUHVSRQVHLQWKLVFDVH
DQRWKHUTXHVWLRQ
0HDQZKLOHLPDJLQH$127+(5FOLHQWJRHVWRWKHEHHUVLWH
6HUYOHW$
:HE&RQWDLQHU
+
W
W
S
6
H
V
V
L
R
Q
$
'LDQH·VVHVVLRQLVVWLOO
DFWLYHEXWPHDQZKLOH
7HUULVHOHFWV´3DOHµDQG
KLWVWKHVXEPLWEXWWRQ
7KH&RQWDLQHUVHQGV7HUUL·V
UHTXHVWWRDQHZWKUHDGRI
WKH%HHU$SSVHUYOHW
7KH%HHU$SSWKUHDGVWDUWV
DQHZ6HVVLRQIRU7HUULDQG
FDOOVVHW$WWULEXWHWRVWRUH
KHUFKRLFH´3DOHµ
+
W
W
S
6
H
V
V
L
R
Q
%
Terri
7HUUL
'LDQH
'LIIHUHQWFOLHQW
6DPHVHUYOHW
'LIIHUHQWUHTXHVW
'LIIHUHQWWKUHDG
'LIIHUHQWVHVVLRQ
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
7VMXZWJTMUPW_LWM[\PM+WV\IQVMZ
SVW__PW\PMKTQMV\Q['
4HE(440PROTOCOLUSESSTATELESSCONNECTIONS4HECLIENT
BROWSERMAKESACONNECTIONTOTHESERVERSENDSTHEREQUEST
GETSTHERESPONSEANDCLOSESTHECONNECTION)NOTHERWORDS
THECONNECTIONEXISTSFORONLYASINGLEREQUESTRESPONSE
"ECAUSETHECONNECTIONSDONTPERSISTTHE#ONTAINERDOESNT
RECOGNIZETHATTHECLIENTMAKINGASECONDREQUESTISTHE
SAMECLIENTFROMAPREVIOUSREQUEST!SFARASTHE#ONTAINERS
CONCERNEDEACHREQUESTISFROMANEWCLIENT
+RZZLOOWKH&RQWDLQHU
UHFRJQL]HLW·V'LDQHDQGQRW
7HUUL"+773LVVWDWHOHVV
VRHDFKUHTXHVWLVDQHZ
FRQQHFWLRQ
,·PVRUU\EXW,GRQ·W
UHPHPEHU\RX,·PVXUHZH
VKDUHGJRRGWLPHVWRJHWKHU
EXWZH·OOKDYHWRVWDUWRYHU
%XWWKLQJVZHUH
JRLQJVRZHOO,WKRXJKW
ZHKDGDUHODWLRQVKLS
WKHUH DUH QR
'
XPE 4XHVWLRQV
4
7HYCANTTHE#ONTAINERJUSTUSETHE)0ADDRESSOF
THECLIENT)TSPARTOFTHEREQUESTRIGHT
$
/HTHE#ONTAINERCANGETTHE)0ADDRESSOFTHE
REQUESTBUTDOESTHATUNIQUELYIDENTIFYTHECLIENT)FYOURE
ONALOCAL)0NETWORKYOUHAVEAUNIQUE)0ADDRESSBUT
CHANCESARETHATSNOTTHE)0ADDRESSTHEOUTSIDEWORLD
SEES4OTHESERVERYOUR)0ADDRESSISTHEADDRESSOFTHE
ROUTERSOYOUHAVETHESAME)0ADDRESSASEVERYBODYELSE
ONTHATNETWORK3OTHATWOULDNTHELP9OUDHAVETHE
SAMEPROBLEMTHESTUFF*IMPUTSINHISSHOPPINGCART
MIGHTENDUPIN0RADEEPSCARTANDVICEVERSA3ONO)0
ADDRESSISNTASOLUTIONFORUNIQUELYIDENTIFYINGASPECIFIC
CLIENTONTHEINTERNET
4
7ELLTHENHOWABOUTSECURITYINFO)FTHEUSER
ISLOGGEDINANDTHECONNECTIONISSECURE(4403THE
#ONTAINERKNOWS%8!#4,9WHOTHECLIENTISRIGHT
$
9ESIFTHEUSERISLOGGEDINANDTHECONNECTIONIS
SECURETHE#ONTAINERCANIDENTIFYTHECLIENTANDASSOCIATE
HIMWITHASESSION"UTTHATSABIGIF-OSTGOODWEBSITE
DESIGNSAYShDONTFORCETHEUSERTOLOGINUNTILITREALLY
MATTERSANDDONTSWITCHONSECURITY(4403UNTILITREALLY
MATTERSv)FYOURUSERSAREJUSTBROWSINGEVENIFTHEYRE
ADDINGITEMSTOASHOPPINGCARTYOUPROBABLYDONT
WANTTHEOVERHEADFORYOUORTHEUSEROFHAVINGTHEM
AUTHENTICATETOTHESYSTEMUNTILTHEYDECIDETOCHECKOUT
3OWENEEDAMECHANISMTOLINKACLIENTTOASESSIONTHAT
DOESNTREQUIREASECURELYAUTHENTICATEDCLIENT7ELLGO
INTOSECURITYDETAILSINTHEWAITFORIT3ECURITYCHAPTER
UHFRJQL]LQJWKHFOLHQW
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.
VHVVLRQPDQDJHPHQW
\RXDUHKHUH
+
W
W
S
6
H
V
V
L
R
Q
,'
+
W
W
S
6
H
V
V
L
R
Q
,'
<PMKTQMV\VMML[I]VQY]M[M[[QWV1,
4HEIDEAISSIMPLEONTHECLIENTSlRSTREQUESTTHE#ONTAINER
GENERATESAUNIQUESESSION)$ANDGIVESITBACKTOTHECLIENT
WITHTHERESPONSE4HECLIENTSENDSBACKTHESESSION)$WITH
EACHSUBSEQUENTREQUEST4HE#ONTAINERSEESTHE)$lNDSTHE
MATCHINGSESSIONANDASSOCIATESTHESESSIONWITHTHEREQUEST
<HVEXW,·PVWDWHFKDOOHQJHGDQG
ZRQ·WUHPHPEHU\RXVR,·PJLYLQJ
\RXDXQLTXHVHVVLRQ,'<RX0867JLYH
WKDWEDFNWRPHHDFKWLPH\RXPDNHD
UHTXHVWVR,·OONQRZLW·V
\RX
+H\VHUYHUKHUH·V
P\ÀUVWUHTXHVWZLWK
WKHSDUDPHWHU´GDUNµ&DQ
ZHVWDUWDFRQYHUVDWLRQ"
UHTXHVW´GDUNµ
QHZ
/HW·VVHHRKWKHUH
\RXDUH<HV,UHPHPEHU
\RXQRZ/DVWWLPH\RXVDLGWKDW
\RXOLNHG´GDUNµEHHU
+HUH·VP\VHFRQG
UHTXHVWZLWKWKHSDUDPHWHU
´DOHµ0\,'LVGR
\RXUHPHPEHUPH"
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·VWKHFRRNLH
ZLWKP\UHTXHVW
0W_LW\PM+TQMV\IVL+WV\IQVMZ
M`KPIVOM;M[[QWV1,QVNW'
3OMEHOWTHE#ONTAINERHASTOGETTHESESSION)$TOTHE
CLIENTASPARTOFTHERESPONSEANDTHECLIENTHASTOSENDBACK
THESESSION)$ASPARTOFTHEREQUEST4HESIMPLESTANDMOST
COMMONWAYTOEXCHANGETHEINFOISTHROUGHCOOKIES
+WWSQM[
+7732.
6HW&RRNLH-6(66,21,' $$%&'(
&RQWHQW7\SHWH[WKWPO
&RQWHQW/HQJWK
'DWH:HG1RY*07
6HUYHU$SDFKH&R\RWH
&RQQHFWLRQFORVH
KWPO!
KWPO!
3267
VHOHFWVHOHFW%HHU7DVWHGR+773
+RVWZZZZLFNHGO\VPDUWFRP
8VHU$JHQW0R]LOOD
&RRNLH-6(66,21,' $$%&'(
$FFHSWWH[W[PODSSOLFDWLRQ[PODSSOLFDWLRQ[KWPO[POWH[W
KWPOT WH[WSODLQT YLGHR[PQJLPDJHSQJLPDJH
MSHJLPDJHJLIT T
$FFHSW/DQJXDJHHQXVHQT
$FFHSW(QFRGLQJJ]LSGHӿDWH
ÒSet-CookieÓ is just another
header sent in the response.
ÒCookieÓ is another header
sent in the request.
+HUH·V\RXU
FRRNLHZLWKWKH
VHVVLRQ,'LQVLGH
+7735HVSRQVH
+7735HTXHVW
WKHMR\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.
VHVVLRQPDQDJHPHQW
\RXDUHKHUH
<PMJM[\XIZ\"\PM+WV\IQVMZLWM[
^QZ\]ITTaITT\PMKWWSQM_WZS
9OUDOHAVETOTELLTHE#ONTAINERTHATYOUWANTTOCREATEORUSE
ASESSIONBUTTHE#ONTAINERTAKESCAREOFGENERATINGTHESESSION
)$CREATINGANEW#OOKIEOBJECTSTUFlNGTHESESSION)$INTOTHE
COOKIEANDSETTINGTHECOOKIEASPARTOFTHERESPONSE!NDON
SUBSEQUENTREQUESTSTHE#ONTAINERGETSTHESESSION)$FROMACOOKIE
INTHEREQUESTMATCHESTHESESSION)$WITHANEXISTINGSESSIONAND
ASSOCIATESTHATSESSIONWITHTHECURRENTREQUEST
6HQGLQJDVHVVLRQFRRNLHLQWKH5(63216(
+WWS6HVVLRQVHVVLRQ UHTXHVWJHW6HVVLRQ
4HATSIT3OMEWHEREINYOURSERVICEMETHODYOUASKFORA
SESSIONANDEVERYTHINGELSEHAPPENSAUTOMATICALLY
9OUDONTMAKETHENEW(TTP3ESSIONOBJECTYOURSELF
9OUDONTGENERATETHEUNIQUESESSION)$
9OUDONTMAKETHENEW#OOKIEOBJECT
9OUDONTASSOCIATETHESESSION)$WITHTHECOOKIE
9OUDONTSETTHE#OOKIEINTOTHERESPONSE
UNDERTHE3ET#OOKIEHEADER
!LLTHECOOKIEWORKHAPPENSBEHINDTHESCENES
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.)
*HWWLQJWKHVHVVLRQ,'IURPWKH5(48(67
+WWS6HVVLRQVHVVLRQ UHTXHVWJHW6HVVLRQ
,OOKFAMILIAR9ESITSEXACTLYTHESAMEMETHODUSEDTO
GENERATETHESESSION)$ANDCOOKIEFORTHERESPONSE
)&THEREQUESTINCLUDESASESSION)$COOKIE
lNDTHESESSIONMATCHINGTHAT)$
%,3%)&THERESNOSESSION)$COOKIE/2THERESNOCURRENT
SESSIONMATCHINGTHESESSION)$
CREATEANEWSESSION
!LLTHECOOKIEWORKHAPPENSBEHINDTHESCENES
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
9OUGETASESSIONBYCALLINGREQUESTGET3ESSION
BUTISTHATTHEONLYWAYTOGETTHESESSION#ANTYOUGET
ITFROMTHE3ERVLET#ONTEXT
$
9OUGETASESSIONFROMTHEREQUESTOBJECTBECAUSE
THINKABOUTITTHESESSIONISIDENTIFIEDBYTHEREQUEST
7HENYOUCALLGET3ESSIONONTHE#ONTAINERYOURESAYING
h)WANTASESSIONFOR4()3CLIENTEITHERTHESESSIONTHAT
MATCHESTHESESSION)$THISCLIENTSENTORANEWONE"UTIN
EITHERCASETHESESSIONISFORTHECLIENTASSOCIATEDWITHTHIS
REQUESTv
"UTTHEREISANOTHERWAYTHATYOUCANGETASESSIONFROM
ASESSIONEVENTOBJECT2EMEMBERALISTENERCLASSISNTA
SERVLETOR*30ITSJUSTACLASSTHATWANTSTOKNOWABOUT
THEEVENTS&OREXAMPLETHELISTENERMIGHTBEANATTRIBUTE
TRYINGTOFINDOUTWHENITTHEATTRIBUTEOBJECTWASADDED
TOORREMOVEDFROMASESSION
4HEEVENTHANDLINGMETHODSDEFINEDBYTHELISTENER
INTERFACESRELATEDTOSESSIONSTAKEANARGUMENTOFTYPE
(TTP3ESSION%VENTORITSSUBCLASS(TTP3ESSION"INDING%VENT
!ND(TTP3ESSION%VENTHASAGET3ESSIONMETHOD
3OIFYOUIMPLEMENTANYOFTHEFOURLISTENERINTERFACES
RELATEDTOSESSIONSWELLGETTOTHATLATERINTHECHAPTER
YOUCANACCESSTHESESSIONTHROUGHTHEEVENTHANDLING
CALLBACKMETHODS&OREXAMPLETHISCODEISFROMACLASS
THATIMPLEMENTSTHE(TTP3ESSION,ISTENERINTERFACE
?PI\QN1_IV\\WSVW__PM\PMZ\PM[M[[QWV
ITZMILaM`Q[\MLWZ_I[R][\KZMI\ML'
'OODQUESTION4HENOARGREQUESTMETHODGET3ESSIONRETURNSA
SESSIONREGARDLESSOFWHETHERTHERESAPREEXISTINGSESSION3INCEYOUALWAYSGET
AN(TTP3ESSIONINSTANCEBACKFROMTHATMETHODTHEONLYWAYTOKNOWIF
THESESSIONISNEWISTOASKTHESESSION
SXEOLFYRLGGR*HW+WWS6HUYOHW5HTXHVWUHTXHVW+WWS6HUYOHW5HVSRQVHUHVSRQVH
WKURZV,2([FHSWLRQ6HUYOHW([FHSWLRQ^
UHVSRQVHVHW&RQWHQW7\SH³WH[WKWPO´
3ULQW:ULWHURXW UHVSRQVHJHW:ULWHU
RXWSULQWOQ³WHVWVHVVLRQDWWULEXWHVEU!´
+WWS6HVVLRQVHVVLRQ UHTXHVWJHW6HVVLRQ
LI
VHVVLRQLV1HZ^
RXWSULQWOQ³7KLVLVDQHZVHVVLRQ´
`HOVH^
RXWSULQWOQ³:HOFRPHEDFN´
`
`
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.
SXEOLFYRLGVHVVLRQ&UHDWHG+WWS6HVVLRQ(YHQWHYHQW^
+WWS6HVVLRQVHVVLRQ
HYHQWJHW6HVVLRQ
HYHQWKDQGOLQJFRGH
`
FKHFNLQJIRUDQHZVHVVLRQ
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.
VHVVLRQPDQDJHPHQW
\RXDUHKHUH
?PI\QN1_IV\764AIXZMM`Q[\QVO[M[[QWV'
9OUMIGHTHAVEASCENARIOINWHICHASERVLETWANTSTOUSEONLYAPREVIOUSLY
CREATEDSESSION)TMIGHTNOTMAKESENSEFORTHECHECKOUTSERVLETFOREXAMPLE
TOSTARTANEWSESSION
3OTHERESANOVERLOADEDGET3ESSIONBOOLEANMETHODJUSTFORTHATPURPOSE
)FYOUDONTWANTTOCREATEANEWSESSIONCALLGET3ESSIONFALSEANDYOULLGET
EITHERNULLORAPREEXISTING(TTP3ESSION
4HECODEBELOWCALLSGET3ESSIONFALSETHENTESTSWHETHERTHERETURNVALUEWAS
NULL)FITWASNULLTHECODEOUTPUTSAMESSAGEANDTHENCREATESANEWSESSION
SXEOLFYRLGGR*HW+WWS6HUYOHW5HTXHVWUHTXHVW+WWS6HUYOHW5HVSRQVHUHVSRQVH
WKURZV,2([FHSWLRQ6HUYOHW([FHSWLRQ^
UHVSRQVHVHW&RQWHQW7\SH³WH[WKWPO´
3ULQW:ULWHURXW UHVSRQVHJHW:ULWHU
RXWSULQWOQ³WHVWVHVVLRQVEU!´
+WWS6HVVLRQVHVVLRQ UHTXHVWJHW6HVVLRQIDOVH
LIVHVVLRQ QXOO^
RXWSULQWOQ³QRVHVVLRQZDVDYDLODEOH´
RXWSULQWOQ³PDNLQJRQH´
VHVVLRQ UHTXHVWJHW6HVVLRQ
`HOVH^
RXWSULQWOQ³WKHUHZDVDVHVVLRQ´
`
`
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
)SNTTHECODEABOVEJUSTASTUPIDINEFlCIENTWAY
TODOTHESAMETHINGASTHEOPPOSITEPAGE)NTHEEND
YOUSTILLCREATEDANEWSESSION
$
9OURERIGHT4HECODEABOVEISJUSTFORTESTINGHOW
THETWODIFFERENTVERSIONSOFGET3ESSIONWORK)NTHEREAL
WORLDTHEONLYTIMEYOUDWANTTOUSEGET3ESSIONFALSEIS
IFYOUDO./4WANTTOCREATEANEWSESSION)FYOURGOALIS
TOCREATEANEWSESSIONBUTSTILLRESPONDDIFFERENTLYIFYOU
KNOWTHISISANEWVERSUSPREEXISTINGSESSIONTHENUSE
THENOARGGET3ESSIONMETHODANDSIMPLYASKTHESESSION
IFITSNEWUSINGTHE(TTP3ESSIONIS.EWMETHOD
4
3OITLOOKSLIKEGET3ESSIONTRUEISEXACTLYTHE
SAMEASGET3ESSION
$
2IGHTAGAIN4HENOARGVERSIONISACONVENIENCE
FORTHOSETIMESWHENYOUKNOWTHATYOUALWAYSWANTA
SESSIONNEWOREXISTING4HEVERSIONTHATTAKESABOOLEANIS
USEFULWHENYOUKNOWTHATYOUDONTWANTANEWSESSION
ORWHENTHEDECISIONOFWHETHERTOMAKEANEWSESSION
HAPPENSATRUNTIMEANDYOUREPASSINGAVARIABLEINTOTHE
GET3ESSIONSOME"OOLEANMETHOD
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]KIVLW[M[[QWV[M^MVQN\PMKTQMV\
LWM[V¼\IKKMX\KWWSQM[J]\aW]PI^M
\WLWITQ\\TMUWZM_WZS
7EDONTAGREETHATANYBODYWITHHALFABRAINDISABLES
COOKIES)NFACTMOSTBROWSERSDOHAVECOOKIESENABLED
ANDEVERYTHINGSWONDERFUL"UTTHERESNOGUARANTEE
)FYOURAPPDEPENDSONSESSIONSYOUNEEDADIFFERENTWAY
FORTHECLIENTAND#ONTAINERTOEXCHANGESESSION)$INFO
,UCKYFORYOUTHE#ONTAINERCANHANDLEACOOKIEREFUSING
CLIENTBUTITTAKESALITTLEMOREEFFORTFROMYOU
)FYOUUSETHESESSIONCODEONTHEPREVIOUSPAGESCALLING
GET3ESSIONONTHEREQUESTTHE#ONTAINERTRIESTOUSE
COOKIES)FCOOKIESARENTENABLEDITMEANSTHECLIENTWILL
NEVERJOINTHESESSION)NOTHERWORDSTHESESSIONSIS.EW
METHODWILLALWAYSRETURNTRUE
*HHWKLVDOOVRXQGVQLFH
EXWXK1(:6)/$6+³DQ\ERG\
ZLWKKDOIDEUDLQGLVDEOHVFRRNLHV
+RZGR\RXGRVHVVLRQVLI\RX
FDQ·WXVHFRRNLHV"
,IDFOLHQWGRHVQ¶WDFFHSWFRRNLHV\RXZRQ¶WJHWDQH[FHSWLRQ1R
EHOOVDQGVLUHQVJRLQJRIIWRWHOO\RXWKDW\RXUDWWHPSWWRKDYHD
VHVVLRQZLWKWKLVFOLHQWZHQWZURQJ1RLWMXVWPHDQVWKHFOLHQW
LJQRUHV\RXUDWWHPSWWRVHWDFRRNLHZLWKWKHVHVVLRQ,',Q\RXU
FRGHLI\RXGR127XVH85/UHZULWLQJLWPHDQVWKDWJHW6HVVLRQ
ZLOODOZD\VUHWXUQD1(:VHVVLRQLHRQHWKDWDOZD\VUHWXUQV
³WUXH´ZKHQ\RXFDOOLV1HZRQLW7KHFOLHQWVLPSO\QHYHUVHQGV
EDFNDUHTXHVWWKDWKDVDVHVVLRQ,'FRRNLHKHDGHU
$FOLHQWZLWKFRRNLHVGLVDEOHGZLOOLJQRUH
´6HW&RRNLHµUHVSRQVHKHDGHUV
ZKHQFRRNLHVIDLO
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.
VHVVLRQPDQDJHPHQW
\RXDUHKHUH
=:4ZM_ZQ\QVO"[WUM\PQVO\WNITTJIKSWV
85/
MVHVVLRQLG
)FTHECLIENTWONTTAKECOOKIESYOUCANUSE52,REWRITINGASABACK
UP!SSUMINGYOUDOYOURPARTCORRECTLY52,REWRITINGWILLALWAYS
WORKTHECLIENTWONTCARETHATITSHAPPENINGANDWONT
DOANYTHINGTOPREVENTIT2EMEMBERTHEGOALISFORTHE
CLIENTAND#ONTAINERTOEXCHANGESESSION)$INFO0ASSING
COOKIESBACKANDFORTHISTHESIMPLESTWAYTOEXCHANGE
SESSION)$SBUTIFYOUCANTPUTTHE)$INACOOKIEWHERE
CANYOUPUTIT52,REWRITINGTAKESTHESESSION)$THATSIN
THECOOKIEANDSTICKSITRIGHTONTOTHEENDOFEVERY52,THATCOMES
INTOTHISAPP
)MAGINEAWEBPAGEWHEREEVERYLINKHASALITTLEBITOFEXTRAINFOTHE
SESSION)$TACKEDONTOTHEENDOFTHE52,7HENTHEUSERCLICKS
THAThENHANCEDvLINKTHEREQUESTGOESTOTHE#ONTAINERWITHTHAT
EXTRABITONTHEENDANDTHE#ONTAINERSIMPLYSTRIPSOFFTHEEXTRA
PARTOFTHEREQUEST52,ANDUSESITTOlNDTHEMATCHINGSESSION
+7732.
&RQWHQW/HQJWK
'DWH:HG1RY*07
6HUYHU$SDFKH&R\RWH
&RQQHFWLRQFORVH
KWPO!
ERG\!
DKUHI µKWWSZZZZLFNHGO\VPDUWFRP%HHU7HVWGR
MVHVVLRQLG $$%&'(
´
FOLFNPH
D!
ERG\!
KWPO!
*(7
%HHU7HVWGR
MVHVVLRQLG $$%&'(
+773
+RVWZZZZLFNHGO\VPDUWFRP
8VHU$JHQW0R]LOOD
$FFHSWWH[W[PODSSOLFDWLRQ[PODSSOLFDWLRQ[KWPO[POWH[WKWPOT WH[W
SODLQT YLGHR[PQJLPDJHSQJLPDJHMSHJLPDJHJLIT T
$FFHSW/DQJXDJHHQXVHQT
$FFHSW(QFRGLQJJ]LSGHӿ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.)
+7735HVSRQVH
+7735HTXHVW
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
=:4ZM_ZQ\QVOSQKS[QV764AQNKWWSQM[NIQT
IVL764AQNaW]\MTT\PMZM[XWV[M\WMVKWLM\PM=:4
)FCOOKIESDONTWORKTHE#ONTAINERFALLSBACKTO52,REWRITINGBUTONLY
IFYOUVEDONETHEEXTRAWORKOFENCODINGALLTHE52,SYOUSENDINTHE
RESPONSE)FYOUWANTTHE#ONTAINERTOALWAYSDEFAULTTOUSINGCOOKIESlRST
WITH52,REWRITINGONLYASALASTRESORTYOUCANRELAX4HATSEXACTLYHOWIT
WORKSEXCEPTFORTHElRSTTIMEBUTWELLGETTOTHATINAMOMENT"UTIFYOU
DONTEXPLICITLYENCODEYOUR52,SANDTHECLIENTWONTACCEPTCOOKIESYOUDONT
GETTOUSESESSIONS)FYOUDOENCODEYOUR52,STHE#ONTAINERWILLlRSTATTEMPT
TOUSECOOKIESFORSESSIONMANAGEMENTANDFALLBACKTO52,REWRITINGONLYIF
THECOOKIEAPPROACHFAILS
SXEOLFYRLGGR*HW+WWS6HUYOHW5HTXHVWUHTXHVW+WWS6HUYOHW5HVSRQVHUHVSRQVH
WKURZV,2([FHSWLRQ^
UHVSRQVHVHW&RQWHQW7\SH³WH[WKWPO´
3ULQW:ULWHURXW UHVSRQVHJHW:ULWHU
+WWS6HVVLRQVHVVLRQ UHTXHVWJHW6HVVLRQ
RXWSULQWOQ³KWPO!ERG\!´
RXWSULQWOQ³DKUHI ?´´
UHVSRQVHHQFRGH85/³%HHU7HVWGR´³?´!FOLFNPHD!´
RXWSULQWOQ³ERG\!KWPO!´
`
get a session
Add the extra session ID info to this URL.
4
7AITAMINUTEHOW$/%3THE#ONTAINERKNOW
THATCOOKIESARENTWORKING!TWHATPOINTDOESTHE
#ONTAINERDECIDETOUSE52,REWRITING
$
!REALLYDUMB#ONTAINERDOESNTCAREWHETHERCOOK
IESWORKORNOTTHEDUMB#ONTAINERWILLALWAYSATTEMPT
TOSENDTHECOOKIE!.$DO52,REWRITINGEACHTIMEEVEN
IFCOOKIESAREWORKING"UTHERESHOWADECENT#ONTAINER
HANDLESIT
7HENTHE#ONTAINERSEESACALLTOGET3ESSIONANDTHE
#ONTAINERDIDNTGETASESSION)$WITHTHECLIENTSREQUEST
THE#ONTAINERNOWKNOWSTHATITMUSTATTEMPTTOSTARTA
NEWSESSIONWITHTHECLIENT!TTHISPOINTTHE#ONTAINER
DOESNTKNOWIFCOOKIESWILLWORKSOWITHTHISFIRSTRESPONSE
BACKTOTHECLIENTITTRIES"/4(COOKIESAND52,REWRITING
4
7HYCANTITTRYCOOKIESlRSTANDDO52,REWRIT
INGONTHENEXTRESPONSEIFITDOESNTGETBACKACOOKIE
$
2EMEMBERIFTHE#ONTAINERDOESNTGETASESSION)$
FROMTHECLIENTTHE#ONTAINERWONTEVEN+./7THATTHISIS
THENEXTREQUESTFROMTHATCLIENT4HE#ONTAINERWONTHAVE
ANYWAYTOKNOWTHATITTRIEDCOOKIESTHELASTTIMEAND
THEYDIDNTWORK2EMEMBERTHE/.,9WAYTHE#ONTAINER
CANRECOGNIZETHATITHASSEENTHISCLIENTBEFOREISIFTHE
CLIENTSENDSASESSION)$
3OWHENTHE#ONTAINERSEESYOUCALLREQUESTGET3ESSION
ANDREALIZESITNEEDSTOSTARTANEWSESSIONWITHTHISCLIENT
THE#ONTAINERSENDSTHERESPONSEWITHBOTHAh3ET#OOKIEv
HEADERFORTHESESSION)$ANDTHESESSION)$APPENDEDTO
THE52,SASSUMINGYOUUSEDRESPONSEENCODE52,
.OWIMAGINETHENEXTREQUESTFROMTHISCLIENTITWILLHAVE
THESESSION)$APPENDEDTOTHEREQUEST52,BUTIFTHE
CLIENTACCEPTSCOOKIESTHEREQUESTWILL!,3/HAVEASESSION
)$COOKIE7HENTHESERVLETCALLSREQUESTGET3ESSIONTHE
#ONTAINERREADSTHESESSION)$FROMTHEREQUESTFINDSTHE
SESSIONANDTHINKSTOITSELFh4HISCLIENTACCEPTSCOOKIESSO)
CANIGNORETHERESPONSEENCODE52,CALLS)NTHERESPONSE
)LLSENDACOOKIESINCE)KNOWTHATWORKSANDTHERESNO
NEEDFORANY52,REWRITINGSO)WONTBOTHERv
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.
VHVVLRQPDQDJHPHQW
\RXDUHKHUH
=:4ZM_ZQ\QVO_WZS[_Q\P[MVL:MLQZMK\
9OUMIGHTHAVEASCENARIOINWHICHYOUWANTTOREDIRECTTHE
REQUESTTOADIFFERENT52,BUTYOUSTILLWANTTOUSEASESSION
4HERESASPECIAL52,ENCODINGMETHODJUSTFORTHAT
U
HVSRQVHHQFRGH5HGLUHFW85/³%HHU7HVWGR´
4
7HATABOUTALLMYSTATIC(4-,PAGESTHEYAREFULLOFA
HREFLINKS(OWDO)DO52,REWRITINGONTHOSESTATICPAGES
$
9OUCANT4HEONLYWAYTOUSE52,REWRITINGISIF!,,THE
PAGESTHATAREPARTOFASESSIONAREDYNAMICALLYGENERATED9OU
CANTHARDCODESESSION)$SOBVIOUSLYSINCETHE)$DOESNTEXIST
UNTILRUNTIME3OIFYOUDEPENDONSESSIONSYOUNEED52,REWRITING
ASAFALLBACKSTRATEGY!NDSINCEYOUNEED52,REWRITINGYOUHAVE
TODYNAMICALLYGENERATETHE52,SINTHERESPONSE(4-,!NDTHAT
MEANSYOUHAVETOPROCESSTHE(4-,ATRUNTIME
9ESTHISISAPERFORMANCEISSUE3OYOUMUSTTHINKVERYCAREFULLY
ABOUTTHEPLACESWHERESESSIONSMATTERTOYOURAPPANDWHETHER
SESSIONSARECRITICALTOHAVEORMERELYGOODTOHAVE
4
9OUSAIDTHATTOUSE52,REWRITINGPAGESMUSTBEDY
NAMICALLYGENERATEDSODOESTHISMEAN)CANDOITWITH*30S
$
9ES9OUCANDO52,REWRITINGINA*30ANDTHERESEVENA
SIMPLE*34,TAGTHATMAKESITEASYC52,THATYOULLSEEWHENYOU
GETTOTHECHAPTERONUSINGCUSTOMTAGS
4
)S52,REWRITINGHANDLEDINAVENDORSPECIlCWAY
$
9ES52,REWRITINGISHANDLEDINAVENDORSPECIFICWAY4OM
CATUSESASEMICOLONhvTOAPPENDTHEEXTRAINFOTOTHE52,!NOTHER
VENDORMIGHTUSEACOMMAORSOMETHINGELSE!NDWHILE4OMCAT
ADDShJSESSIONIDvINTHEREWRITTEN52,ANOTHERVENDORMIGHTAP
PENDONLYTHESESSION)$ITSELF4HEPOINTISWHATEVERTHE#ONTAINER
USESASTHESEPARATORISRECOGNIZEDBYTHE#ONTAINERWHENAREQUEST
COMESIN3OWHENTHE#ONTAINERSEESTHESEPARATORTHATITUSESIN
OTHERWORDSTHESEPARATORTHATITADDEDDURING52,REWRITINGIT
KNOWSTHATEVERYTHINGAFTERTHATIShEXTRAINFOvTHATTHE#ONTAINER
PUTTHERE)NOTHERWORDSTHE#ONTAINERKNOWSHOWTORECOGNIZE
ANDPARSETHEEXTRASTUFFITTHE#ONTAINERAPPENDEDTOTHE52,
85/UHZULWLQJLVDXWRPDWLF
EXWRQO\LI\RXHQFRGH\RXU
85/V<28KDYHWRUXQDOO\RXU
85/VWKURXJKDPHWKRGRIWKH
UHVSRQVHREMHFW³HQFRGH85/RU
HQFRGH5HGLUHFW85/³DQGWKH
&RQWDLQHUGRHVHYHU\WKLQJHOVH
'RQ¶WIRUJHWWKDWWKHHQFRGH85/
PHWKRGLVVRPHWKLQJ\RXFDOORQ\RXU
+WWS6HUYOHW5HVSRQVHREMHFW<RXGRQ¶WFDOO
LWRQWKHUHTXHVWRURQ\RXUFRQWH[WRU\RXU
VHVVLRQREMHFW-XVWUHPLQG\RXUVHOIWKDW
85/HQFRGLQJLVDOODERXWWKHUHVSRQVH
85/HQFRGLQJLV
KDQGOHGE\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
<28GRQ¶WHYHUXVH³MVHVVLRQLG´\RXUVHOI,I\RXVHHD³MVHVVLRQLG´UHTXHVWSDUDPHWHU
VRPHERG\¶VGRLQJVRPHWKLQJZURQJ<RXVKRXOGQHYHUVHHVRPHWKLQJOLNHWKLV
6WULQJVHVVLRQ,' UHTXHVWJHW3DUDPHWHU³MVHVVLRQLG´
$QG\RXVKRXOGQ¶WVHHDFXVWRP³MVHVVLRQLG´KHDGHULQDUHTXHVWRUUHVSRQVH
3267VHOHFWVHOHFW%HHU7DVWHGR+773
8VHU$JHQW0R]LOOD
-6(66,21,'$$%&'(
,QIDFWWKH21/<SODFHD³MVHVVLRQLG´EHORQJVLVLQVLGHDFRRNLHKHDGHU
3267VHOHFWVHOHFW%HHU7DVWHGR+773
8VHU$JHQW0R]LOOD
&RRNLH-6(66,21,' $$%&'(
RUDSSHQGHGWRWKHHQGRID85/DV³H[WUDLQIR´
3267VHOHFWVHOHFW%HHU7DVWHGRMVHVVLRQLG $$%&'(
'RQ·WEHIRROHGE\DUHTXHVWSDUDPHWHU
´MVHVVLRQLGµRUD´-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=LHGAFLK
VHVVLRQPDQDJHPHQW
85/UHZULWLQJDGGVWKHVHVVLRQ,'WRWKHHQGRIDOOWKH85/VLQWKH
+70/WKDW\RXZULWHWRWKHUHVSRQVH
7KHVHVVLRQ,'WKHQFRPHVEDFNZLWKWKHUHTXHVWDV´H[WUDµLQIRDW
WKHHQGRIWKHUHTXHVW85/
85/UHZULWLQJZLOOKDSSHQDXWRPDWLFDOO\LIFRRNLHVGRQ·WZRUNZLWK
WKHFOLHQWEXW\RXKDYHWRH[SOLFLWO\HQFRGHDOORIWKH85/V\RX
ZULWH
7RHQFRGHD85/FDOOUHVSRQVHHQFRGH85/D6WULQJ
7KHUH·VQRZD\WRJHWDXWRPDWLF85/UHZULWLQJZLWK\RXUVWDWLF
SDJHVVRLI\RXGHSHQGRQVHVVLRQV\RXPXVWXVHG\QDPLFDOO\
JHQHUDWHGSDJHV
RXWSULQWOQ³DKUHI ?´´
UHVSRQVHHQFRGH85/³%HHU7HVWGR´
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.
VHVVLRQPDQDJHPHQW
\RXDUHKHUH
/M\\QVOZQLWN[M[[QWV[
4HECLIENTCOMESINSTARTSASESSIONTHENCHANGESHER
MINDANDLEAVESTHESITE/RTHECLIENTCOMESINSTARTSA
SESSIONTHENHERBROWSERCRASHES/RTHECLIENTCOMES
INSTARTSASESSIONANDTHENCOMPLETESTHESESSIONBY
MAKINGAPURCHASESHOPPINGCARTCHECKOUT/RHER
COMPUTERCRASHES7HATEVER
4HEPOINTISSESSIONOBJECTSTAKERESOURCES9OUDONT
WANTSESSIONSTOSTICKAROUNDLONGERTHANNECESSARY
2EMEMBERTHE(440PROTOCOLDOESNTHAVEANY
MECHANISMFORTHESERVERTOKNOWTHATTHECLIENTIS
GONE)NDISTRIBUTEDAPPLICATIONTERMSFORTHOSEOF
YOUFAMILIARWITHTHEMTHERESNOLEASING
"UTHOWDOESTHE#ONTAINERORYOUKNOWWHENTHE
CLIENTWALKEDAWAY(OWDOESTHE#ONTAINERKNOWWHEN
THECLIENTSBROWSERCRASHED(OWDOESTHE#ONTAINER
KNOWWHENITSSAFETODESTROYASESSION
,5($//<GRQ·WZDQWD
EXQFKRIVWDOHVHVVLRQVVLWWLQJ
DURXQGLQP\VHUYHUWDNLQJ
XSYDOXDEOHVSDFH
#4X3X98
:KDWDUHVWUDWHJLHV\RXDQGWKH&RQWDLQHUPLJKW
XVHWRPDQDJHWKHQXPEHURIVHVVLRQVDQGHOLPLQDWH
XQQHHGHGVHVVLRQV":KDWDUHVRPHSRVVLEOHZD\V
LQZKLFKWKH&RQWDLQHUFRXOGWHOOWKDWDVHVVLRQLVQR
ORQJHUQHHGHG"
7KLQNDERXWLWWKHQORRNDWWKH+WWS6HVVLRQ$3,DIHZ
SDJHVIURPQRZIRUFOXHV
6RPHGLVWULEXWHGDSSVXVHOHDVLQJDVDZD\IRUWKHVHUYHUWRNQRZZKHQ
DFOLHQWLVJRQH7KHFOLHQWJHWVDOHDVHIURPWKHVHUYHUDQGWKHQPXVW
UHQHZWKHOHDVHDWVSHFLILHGLQWHUYDOVWRWHOOWKHVHUYHUWKDWWKHFOLHQWLV
VWLOODOLYH,IWKHFOLHQW·VOHDVHH[SLUHVWKHVHUYHUNQRZVLWFDQGHVWUR\DQ\
UHVRXUFHVLWZDVKROGLQJIRUWKDWFOLHQW
(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
$
'LDQHVHOHFWV´'DUNµ
DQGKLWVWKHVXEPLW
EXWWRQ
7KH&RQWDLQHUVHQGVWKH
UHTXHVWWRDQHZWKUHDGRI
WKH%HHU$SSVHUYOHW
7KH&RQWDLQHUPDNHVDQHZVHV
VLRQ,'7KH´-6(66,21,'µ
FRRNLHLVVHQWEDFNWR'LDQHLQWKH
UHVSRQVHQRWVKRZQ
6HUYOHW$
:HE&RQWDLQHU
+
W
W
S
6
H
V
V
L
R
Q
$
'LDQHYDQLVKHV
P\VWHULRXVO\
7KH&RQWDLQHUGRHVZKDWHYHU
&RQWDLQHUVGRLQWKHLUVSDUHWLPH
DOWKRXJKWKHUHDUHSUREDEO\
SOHQW\RIRWKHUFOLHQWVWRVHUYLFH
7KHVHVVLRQVWDUWHGIRU'LDQHLVVWLOO
VLWWLQJWKHUHZDLWLQJ
DEDQGRQHG
,'
,'
6HUYOHW$
:HE&RQWDLQHU
+
W
W
S
6
H
6
V
H
V
V
L
R
Q
$
'LDQHGRHVQ·WUHWXUQ
0LQXWHVJRE\
7KH&RQWDLQHUFKHFNVWKHVWDWHRI
VHVVLRQDQGÀQGVWKDWQR
UHTXHVWVKDYHFRPHLQZLWKWKDW
VHVVLRQ,'IRUPLQXWHV
7KH&RQWDLQHUVD\V´PLQXWHV
LVMXVW
WRRORQJ
6KH·VQRWFRPLQJ
EDFNµDQGGHVWUR\VWKHSRRU
DEDQGRQHGVHVVLRQ
This is an
ex-Session
0W__M_IV\Q\\W_WZS
7EDLIKETHE#ONTAINERTORECOGNIZEWHENASESSIONHASBEEN
INACTIVEFORTOOLONGANDDESTROYTHESESSION/FCOURSEWE
MIGHTHAVETOlGHTTHE#ONTAINEROVERWHAThTOOLONGvREALLY
MEANS)SMINUTESTOOLONG!NHOUR!DAY-AYBETHERES
AWAYFORUSTOTELLTHE#ONTAINERWHAThTOOLONGvIS
end the session
DEDQGRQHGVHVVLRQV
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.
VHVVLRQPDQDJHPHQW
\RXDUHKHUH
<PM0\\X;M[[QWVQV\MZNIKM
!LLYOUCAREABOUTWHENYOUCALLGET3ESSIONISTHAT
YOUGETANINSTANCEOFACLASSTHATIMPLEMENTSTHE
(TTP3ESSIONINTERFACE)TSTHE#ONTAINERSJOBTO
CREATETHEIMPLEMENTATION
/NCEYOUHAVEASESSIONWHATCANYOUDOWITHIT
-OSTOFTHETIMEYOULLUSESESSIONSTOGETANDSETSESSION
SCOPEDATTRIBUTES
"UTTHERESMOREOFCOURSE3EEIFYOUCANlGUREOUT
SOMEOFTHEKEYMETHODSFORYOURSELFANSWERSAREON
THENEXTPAGESODONTTURNTHEPAGE
2EMHFWJHW$WWULEXWH6WULQJ
ORQJJHW&UHDWLRQ7LPH
6WULQJJHW,G
ORQJJHW/DVW$FFHVVHG7LPH
LQWJHW0D[,QDFWLYH,QWHUYDO
6HUYOHW&RQWH[WJHW6HUYOHW&RQWH[W
YRLGLQYDOLGDWH
ERROHDQLV1HZ
YRLGUHPRYH$WWULEXWH6WULQJ
YRLGVHW$WWULEXWH6WULQJ2EMHFW
YRLGVHW0D[,QDFWLYH,QWHUYDOLQW
DIHZPRUHPHWKRGV
LQWHUIDFH!!
MDYD[VHUYOHWKWWS+WWS6HVVLRQ
:KDWLWGRHV :KDW\RX·GXVHLWIRU
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
3Ma0\\X;M[[QWVUM\PWL[
9OUALREADYKNOWABOUTTHEMETHODSFORATTRIBUTES
GET!TTRIBUTESET!TTRIBUTEREMOVE!TTRIBUTE
BUTHEREAREAFEWKEYONESYOUMIGHTNEEDINYOUR
APPLICATIONANDTHATMIGHTBEONTHEEXAM
:KDWLWGRHV :KDW\RX·GXVHLWIRU
JHW&UHDWLRQ7LPH
JHW/DVW$FFHVVHG7LPH
VHW0D[,QDFWLYH,QWHUYDO
JHW0D[,QDFWLYH,QWHUYDO
5HWXUQVWKHWLPHWKH
VHVVLRQZDVILUVWFUHDWHG
7RILQGRXWKRZROGWKHVHVVLRQLV<RXPLJKWZDQWWRUHVWULFW
FHUWDLQVHVVLRQVWRDIL[HGOHQJWKRIWLPH)RUH[DPSOH\RX
PLJKWVD\´2QFH\RX·YHORJJHGLQ\RXKDYHH[DFWO\
PLQXWHVWRFRPSOHWHWKLVIRUPµ
5HWXUQVWKHODVWWLPHWKH
&RQWDLQHUJRWDUHTXHVW
ZLWKWKLVVHVVLRQ,'LQ
PLOOLVHFRQGV
7RILQGRXWZKHQDFOLHQWODVWDFFHVVHGWKLVVHVVLRQ<RX
PLJKWXVHLWWRGHFLGHWKDWLIWKHFOLHQW·VEHHQJRQHDORQJ
WLPH\RX·OOVHQGWKHPDQHPDLODVNLQJLIWKH\·UHFRPLQJ
EDFN2UPD\EH\RX·OOLQYDOLGDWHWKHVHVVLRQ
6SHFLILHVWKHPD[LPXP
WLPHLQVHFRQGVWKDW\RX
ZDQWWRDOORZEHWZHHQFOLHQW
UHTXHVWVIRUWKLVVHVVLRQ
7RFDXVHDVHVVLRQWREHGHVWUR\HGDIWHUDFHUWDLQDPRXQW
RIWLPHKDVSDVVHGZLWKRXWWKHFOLHQWPDNLQJDQ\UHTXHVWV
IRUWKLVVHVVLRQ7KLVLVRQHZD\WRUHGXFHWKHDPRXQWRI
VWDOHVHVVLRQVVLWWLQJLQ\RXUVHUYHU
(QGVWKHVHVVLRQ7KLV
LQFOXGHVXQELQGLQJDOO
VHVVLRQDWWULEXWHVFXUUHQWO\
VWRUHGLQWKLVVHVVLRQ0RUH
RQWKDWODWHULQWKLVFKDSWHU
7RNLOODVHVVLRQLIWKHFOLHQWKDVEHHQLQDFWLYHRULI\RX.12:
WKHVHVVLRQLVRYHUIRUH[DPSOHDIWHUWKHFOLHQWGRHVD
VKRSSLQJFKHFNRXWRUORJV7KHVHVVLRQLQVWDQFHLWVHOIPLJKW
EHUHF\FOHGE\WKH&RQWDLQHUEXWZHGRQ·WFDUH,QYDOLGDWH
PHDQVWKHVHVVLRQ,'QRORQJHUH[LVWVDQGWKHDWWULEXWHVDUH
UHPRYHGIURPWKHVHVVLRQREMHFW
LQYDOLGDWH
5HWXUQVWKHPD[LPXPWLPH
LQVHFRQGVWKDWLVDOORZHG
EHWZHHQFOLHQWUHTXHVWVIRU
WKLVVHVVLRQ
7RILQGRXWKRZORQJWKLVVHVVLRQFDQEHLQDFWLYHDQGVWLOOEH
DOLYH<RXFRXOGXVHWKLVWRMXGJHKRZPXFKPRUHWLPHDQ
LQDFWLYHFOLHQWKDVEHIRUHWKHVHVVLRQZLOOEHLQYDOLGDWHG
#4X3X98
1RZWKDW\RX¶YHVHHQWKHVHPHWKRGV
FDQ\RXSXWWRJHWKHUDVWUDWHJ\IRU
HOLPLQDWLQJDEDQGRQHGVHVVLRQV"
+WWS6HVVLRQPHWKRGV
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.
VHVVLRQPDQDJHPHQW
\RXDUHKHUH
;M\\QVO[M[[QWV\QUMW]\
'OODNEWSYOUDONTHAVETOKEEPTRACKOFTHISYOURSELF3EETHOSE
METHODSONTHEOPPOSITEPAGE9OUDONTHAVETOUSETHEMTOGET
RIDOFSTALEINACTIVESESSIONS4HE#ONTAINERCANDOITFORYOU
<RXFDQ·WEHVHULRXVGRHV
WKLVPHDQWKDW
,
KDYHWR
NHHSWUDFNRIVHVVLRQDFWLYLW\
DQGWKDW
,
KDYHWRGHVWUR\
WKHVWDOHVHVVLRQV"&DQ·WWKH
&RQWDLQHU
GRWKDW"
)TTIMESOUT
9OUCALLINVALIDATEONTHESESSIONOBJECT
4HEAPPLICATIONGOESDOWNCRASHESORISUNDEPLOYED
7KUHHZD\VDVHVVLRQFDQGLH
&RQÀJXULQJVHVVLRQWLPHRXWLQWKH''
#ONlGURINGATIMEOUTINTHE$$HASVIRTUALLYTHE
SAMEEFFECTASCALLINGSET-AX)NACTIVE)NTERVALON
EVERYSESSIONTHATSCREATED
ZHEDSS!
VHUYOHW!
VHUYOHW!
VHVVLRQFRQ¿J!
VHVVLRQWLPHRXW!VHVVLRQWLPHRXW!
VHVVLRQFRQ¿J!
ZHEDSS!
6HWWLQJVHVVLRQWLPHRXWIRUD
VSHFLÀF
VHVVLRQ
)FYOUWANTTOCHANGETHESESSIONTIMEOUTVALUEFOR
APARTICULARSESSIONINSTANCEWITHOUTAFFECTINGTHE
TIMEOUTLENGTHFORANYOTHERSESSIONSINTHEAPP
The Ò15Ó is in minutes. This says if
the client doesnÕt make any requests
on this session for 15 minutes, kill it.
*
VHVVLRQVHW0D[,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¶VDELJLQFRQVLVWHQF\WR
ZDWFKRXWIRU\RXVSHFLI\
WLPHRXWVLQWKH''XVLQJ
0,187(6EXWLI\RXVHWD
WLPHRXWSURJUDPPDWLFDOO\\RX
VSHFLI\6(&21'6
7LPHRXWVLQ
WKH''DUHLQ
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
SXEOLFYRLGGR*HW+WWS6HUYOHW5HTXHVWUHTXHVW+WWS6HUYOHW5HVSRQVHUHVSRQVH
WKURZV,2([FHSWLRQ^
`
&RGH0DJQHWV
ZHEDSS!
VHUYOHW!
VHUYOHW!
VHUYOHW!
VHVVLRQWLPHRXW!
ZHEDSS!
ZHEDSS!
VHVVLRQFRQ¿J!
VHVVLRQFRQ¿J!
FRQWH[WFRQ¿J!
FRQWH[WFRQ¿J!
WLPHRXW!
WLPHRXW!
VHVVLRQWLPHRXW!
+WWS6HVVLRQ
VHVVLRQ
UHTXHVWJHW6HVVLRQ
JHW6HUYOHW&RQWH[WJHW6HVVLRQ
VHVVLRQ
VHW0D[,QDFWLYH,QWHUYDO
UHTXHVW
VHW&UHDWLRQ7LPH
VHW7LPHRXW
!
VHW6HVVLRQ7LPHRXW
PD[LQDFWLYHLQWHUYDO!
PD[LQDFWLYHLQWHUYDO!
6SHFLI\LQERWKWKH''DQGSURJUDPPDWLFDOO\WKDWLIDVHV
VLRQGRHVQRWUHFHLYHDQ\UHTXHVWVIRUPLQXWHVLWVKRXOG
EHGHVWUR\HG:HSXWRQHPDJQHWLQWKHVHUYOHWIRU\RXWR
JHWVWDUWHGDQG\RXPLJKWQRWXVHDOOPDJQHWV
6HUYOHW
''
VHVVLRQWLPHRXWH[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.
VHVVLRQPDQDJHPHQW
\RXDUHKHUH
(DFKRIWKHWZROLVWLQJVUHSUHVHQWVFRGH
IURPDFRPSLOHG+WWS6HUYOHW<RXUMRELV
WRWKLQNOLNHWKH&RQWDLQHUDQGGHWHUPLQH
ZKDWZLOOKDSSHQZKHQHDFKRIWKHVH
VHUYOHWVDUHLQYRNHGWZLFHE\
WKHVDPHFOLHQW'HVFULEH
ZKDWKDSSHQVWKHILUVWDQG
VHFRQGWLPHWKHVDPHFOLHQW
DFFHVVHVWKHVHUYOHW
%(WKH&RQWDLQHU
SXEOLFYRLGGR*HW+WWS6HUYOHW5HTXHVWUHTXHVW+WWS6HUYOHW5HVSRQVHUHVSRQVH
WKURZV,2([FHSWLRQ^
UHVSRQVHVHW&RQWHQW7\SH³WH[WKWPO´
3ULQW:ULWHURXW UHVSRQVHJHW:ULWHU
+WWS6HVVLRQVHVVLRQ UHTXHVWJHW6HVVLRQ
VHVVLRQVHW$WWULEXWH³IRR´³´
VHVVLRQVHW$WWULEXWH³EDU´³´
VHVVLRQLQYDOLGDWH
6WULQJIRR 6WULQJVHVVLRQJHW$WWULEXWH³IRR´
RXWSULQWOQ³)RR³IRR
`
SXEOLFYRLGGR*HW+WWS6HUYOHW5HTXHVWUHTXHVW+WWS6HUYOHW5HVSRQVHUHVSRQVH
WKURZV,2([FHSWLRQ^
UHVSRQVHVHW&RQWHQW7\SH³WH[WKWPO´
3ULQW:ULWHURXW UHVSRQVHJHW:ULWHU
+WWS6HVVLRQVHVVLRQ UHTXHVWJHW6HVVLRQ
VHVVLRQVHW$WWULEXWH³IRR´³´
VHVVLRQVHW0D[,QDFWLYH,QWHUYDO
6WULQJIRR 6WULQJVHVVLRQJHW$WWULEXWH³IRR´
LIVHVVLRQLV1HZ^
RXWSULQWOQ³7KLVLVDQHZVHVVLRQ´
`HOVH^
RXWSULQWOQ³:HOFRPHEDFN´
`
RXWSULQWOQ³)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
SXEOLFYRLGGR*HW+WWS6HUYOHW5HTXHVWUHTXHVW+WWS6HUYOHW5HVSRQVHUHVSRQVH
WKURZV,2([FHSWLRQ^
`
Remember, the timeout
in the DD is speciÞ ed in
MINUTES.
&RGH0DJQHWV
$QVZHUV
ZHEDSS!
VHUYOHW!
VHUYOHW!
VHUYOHW!
VHVVLRQWLPHRXW!
ZHEDSS!
ZHEDSS!
VHVVLRQFRQ¿J!
VHVVLRQFRQ¿J!
FRQWH[WFRQ¿J!
FRQWH[WFRQ¿J!
WLPHRXW!
WLPHRXW!
VHVVLRQWLPHRXW!
+WWS6HVVLRQ
VHVVLRQ UHTXHVWJHW6HVVLRQ
JHW6HUYOHW&RQWH[WJHW6HVVLRQ
VHVVLRQ VHW0D[,QDFWLYH,QWHUYDO
UHTXHVW
VHW&UHDWLRQ7LPH
VHW7LPHRXW
!
VHW6HVVLRQ7LPHRXW
PD[LQDFWLYHLQWHUYDO!
PD[LQDFWLYHLQWHUYDO!
6SHFLI\LQERWKWKH''DQGSURJUDPPDWLFDOO\
WKDWLIDVHVVLRQGRHVQRWUHFHLYHDQ\UHTXHVWV
IRUPLQXWHVLWVKRXOGEHGHVWUR\HG
In code, the timeout is
speciÞ ed in SECONDS.
6HUYOHW
''
H[HUFLVHDQVZHUV
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.
VHVVLRQPDQDJHPHQW
\RXDUHKHUH
%(WKH&RQWDLQHU
SXEOLFYRLGGR*HW+WWS6HUYOHW5HTXHVWUHTXHVW+WWS6HUYOHW5HVSRQVHUHVSRQVH
WKURZV,2([FHSWLRQ^
UHVSRQVHVHW&RQWHQW7\SH³WH[WKWPO´
3ULQW:ULWHURXW UHVSRQVHJHW:ULWHU
+WWS6HVVLRQVHVVLRQ UHTXHVWJHW6HVVLRQ
VHVVLRQVHW$WWULEXWH³IRR´³´
VHVVLRQVHW$WWULEXWH³EDU´³´
VHVVLRQLQYDOLGDWH
6WULQJIRR 6WULQJVHVVLRQ
JHW$WWULEXWH³IRR´
RXWSULQWOQ³)RR³IRR
`
SXEOLFYRLGGR*HW+WWS6HUYOHW5HTXHVWUHTXHVW+WWS6HUYOHW5HVSRQVHUHVSRQVH
WKURZV,2([FHSWLRQ^
UHVSRQVHVHW&RQWHQW7\SH³WH[WKWPO´
3ULQW:ULWHURXW UHVSRQVHJHW:ULWHU
+WWS6HVVLRQVHVVLRQ UHTXHVWJHW6HVVLRQ
VHVVLRQVHW$WWULEXWH³IRR´³´
VHVVLRQVHW0D[,QDFWLYH,QWHUYDO
LI
VHVVLRQLV1HZ^
RXWSULQWOQ³7KLVLVDQHZVHVVLRQ´
`HOVH^
RXWSULQWOQ³:HOFRPHEDFN´
`
RXWSULQWOQ³)RR³VHVVLRQJHW$WWULEXWH³IRR´
`
5HVXOWDUXQWLPHH[FHSWLRQ,OOHJDO6WDWH([FHSWLRQLV
WKURZQEHFDXVH\RXFDQ¶WJHWDQDWWULEXWH$)7(5WKH
VHVVLRQEHFRPHVLQYDOLG
Uh-oh! ItÕs too late to call
getAttribute() on the session
because the session already IS
invalid!
here we invalidate the session
5HVXOWDUXQWLPHH[FHSWLRQ,OOHJDO6WDWH([FHSWLRQLVWKURZQ
EHFDXVH\RXFDQ¶WFDOOLV1HZRQWKHVHVVLRQ$)7(5WKHVHVVLRQ
EHFRPHVLQYDOLG6HWWLQJWKHPD[LPXPLQDFWLYHLQWHUYDOWR
PHDQVWKHVHVVLRQWLPHVRXWDQGLVLQYDOLGDWHGLPPHGLDWHO\
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
+IV1][MKWWSQM[NWZW\PMZ\PQVO[WZ
IZM\PMaWVTaNWZ[M[[QWV['
!LTHOUGHCOOKIESWEREORIGINALLYDESIGNEDTOHELPSUPPORT
SESSIONSTATEYOUCANUSECUSTOMCOOKIESFOROTHERTHINGS
2EMEMBERACOOKIEISNOTHINGMORETHANALITTLEPIECEOF
DATAANAMEVALUE3TRINGPAIREXCHANGEDBETWEENTHE
CLIENTANDSERVER4HESERVERSENDSTHECOOKIETOTHECLIENT
ANDTHECLIENTRETURNSTHECOOKIEWHENTHECLIENTMAKES
ANOTHERREQUEST
/NECOOLTHINGABOUTCOOKIESISTHATTHEUSERDOESNT
HAVETOGETINVOLVEDTHECOOKIEEXCHANGEISAUTOMATIC
ASSUMINGCOOKIESAREENABLEDONTHECLIENTOFCOURSE
"YDEFAULTACOOKIELIVESONLYASLONGASASESSIONONCETHE
CLIENTQUITSHISBROWSERTHECOOKIEDISAPPEARS4HATSHOW
THEh*3%33)/.)$vCOOKIEWORKS"UTYOUCANTELLACOOKIETO
STAYALIVEEVEN!&4%2THEBROWSERSHUTSDOWN
4HATWAYYOURWEBAPPCANSTILLGETTHECOOKIEINFORMATION
EVENTHOUGHTHESESSIONWITHTHATCLIENTISLONGGONE
)MAGINETHAT+IMWANTSTODISPLAYTHEUSERSNAMEEACH
TIMEHERETURNSTOTHEBEERSITE3OHESETSTHECOOKIETHE
lRSTTIMEHERECEIVESTHECLIENTSNAMEANDIFHEGETSTHE
COOKIEBACKWITHAREQUESTHEKNOWSNOTTOASKFORTHE
NAMEAGAIN!NDITDOESNTMATTERIFTHEUSERRESTARTEDHISBROWSER
ANDHASNTBEENONTHESITEFORAWEEK
+7732.
6HW&RRNLHXVHUQDPH 7RPDV+LUVFK
&RQWHQW7\SHWH[WKWPO
&RQWHQW/HQJWK
'DWH:HG1RY*07
6HUYHU$SDFKH&R\RWH
&RQQHFWLRQFORVH
KWPO!
KWPO!
3267
VHOHFWVHOHFW%HHU7DVWHGR+773
+RVWZZZZLFNHGO\VPDUWFRP
8VHU$JHQW0R]LOOD
&RRNLHXVHUQDPH 7RPDV+LUVFK
$FFHSWWH[W[PODSSOLFDWLRQ[PODSSOLFDWLRQ[KWPO[POWH[W
KWPOT WH[WSODLQT YLGHR[PQJLPDJHSQJLPDJH
MSHJLPDJHJLIT T
$FFHSW/DQJXDJHHQXVHQT
$FFHSW(QFRGLQJJ]LSGHӿDWH
<RXFDQXVHFRRNLHVWR
H[FKDQJHQDPHYDOXH
6WULQJSDLUVEHWZHHQWKH
VHUYHUDQGWKHFOLHQW
7KHVHUYHUVHQGVWKH
FRRNLHWRWKHFOLHQWDQG
WKHFOLHQWVHQGVLWEDFN
ZLWKHDFKVXEVHTXHQW
UHTXHVW
6HVVLRQFRRNLHVYDQLVK
ZKHQWKHFOLHQW·VEURZVHU
TXLWVEXW\RX&$1WHOO
DFRRNLHWRSHUVLVWRQ
WKHFOLHQWHYHQDIWHUWKH
EURZVHUVKXWVGRZQ
Server sends
this Þ rst.
Client sends
this back.
FXVWRPFRRNLHV
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.
VHVVLRQPDQDJHPHQW
\RXDUHKHUH
=[QVO+WWSQM[_Q\P\PM;MZ^TM\)81
9OUCANGETCOOKIERELATEDHEADERSOUTOFTHE(440
REQUESTANDRESPONSEBUTDONT%VERYTHINGYOU
NEEDTODOWITHCOOKIESHASBEENENCAPSULATEDIN
THE3ERVLET!0)INTHREECLASSES(TTP3ERVLET2EQUEST
(TTP3ERVLET2ESPONSEAND#OOKIE
&RRNLH6WULQJ6WULQJ
6WULQJJHW'RPDLQ
LQWJHW0D[$JH
6WULQJJHW1DPH
6WULQJJHW3DWK
ERROHDQJHW6HFXUH
6WULQJJHW9DOXH
YRLGVHW'RPDLQ6WULQJ
YRLGVHW0D[$JHLQW
YRLGVHW3DWK6WULQJ
YRLGVHW9DOXH6WULQJ
DIHZPRUHPHWKRGV
MDYD[VHUYOHWKWWS&RRNLH
&UHDWLQJDQHZ&RRNLH
&RRNLHFRRNLH QHZ&RRNLH³XVHUQDPH´QDPH
6HWWLQJKRZORQJDFRRNLHZLOOOLYHRQWKHFOLHQW
FRRNLHVHW0D[$JH
6HQGLQJWKHFRRNLHWRWKHFOLHQW
UHVSRQVHDGG&RRNLHFRRNLH
*HWWLQJWKHFRRNLHVIURPWKHFOLHQWUHTXHVW
&RRNLH>@FRRNLHV UHTXHVWJHW&RRNLHV
IRULQWL LFRRNLHVOHQJWKL^
&RRNLHFRRNLH FRRNLHV>L@
LIFRRNLHJHW1DPHHTXDOV³XVHUQDPH´^
6WULQJXVHU1DPH FRRNLHJHW9DOXH
RXWSULQWOQ³+HOOR³XVHU1DPH
EUHDN
`
`
JHW&RQWH[W3DWK
JHW&RRNLHV
JHW+HDGHU6WULQJ
JHW4XHU\6WULQJ
JHW6HVVLRQ
0$1<PRUHPHWKRGV
LQWHUIDFH!!
MDYD[VHUYOHWKWWS+WWS6HUYOHW5H
TXHVW
DGG&RRNLH
DGG+HDGHU
HQFRGH5HGLUHFW85/
VHQG(UURU
VHW6WDWXV
0$1<PRUHPHWKRGV
LQWHUIDFH!!
MDYD[VHUYOHWKWWS+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
;QUXTMK][\WUKWWSQMM`IUXTM
3OIMAGINETHAT+IMWANTSTOPUTUPAFORMTHATASKSTHEUSERTOSUBMITHIS
NAME4HEFORMCALLSASERVLETTHATGETSTHEUSERNAMEREQUESTPARAMETER
ANDUSESTHENAMEVALUETOSETACOOKIEINTHERESPONSE
4HENEXTTIMETHISUSERMAKESAREQUESTON!.9SERVLETINTHISWEBAPPTHE
COOKIECOMESBACKWITHTHEREQUESTASSUMINGTHECOOKIEISSTILLALIVEBASED
ONTHECOOKIESMAX!GEVALUE7HENASERVLETINTHEWEBAPPSEESTHIS
COOKIEITCANPUTTHEUSERSNAMEINTOTHEDYNAMICALLYGENERATEDRESPONSE
ANDTHEBUSINESSLOGICKNOWSNOTTOASKTHEUSERTOINPUTHISNAMEAGAIN
4HISCODEISASIMPLIlEDTESTVERSIONOFTHESCENARIOWEJUSTDESCRIBED
LPSRUWMDYD[VHUYOHW
LPSRUWMDYD[VHUYOHWKWWS
LPSRUWMDYDLR
SXEOLFFODVV&RRNLH7HVWH[WHQGV+WWS6HUYOHW^
SXEOLFYRLGGR3RVW+WWS6HUYOHW5HTXHVWUHTXHVW+WWS6HUYOHW5HVSRQVHUHVSRQVH
WKURZV,2([FHSWLRQ6HUYOHW([FHSWLRQ^
UHVSRQVHVHW&RQWHQW7\SH³WH[WKWPO´
6WULQJQDPH UHTXHVWJHW3DUDPHWHU³XVHUQDPH´
&RRNLHFRRNLH QHZ&RRNLH³XVHUQDPH´QDPH
FRRNLHVHW0D[$JH
UHVSRQVHDGG&RRNLHFRRNLH
5HTXHVW'LVSDWFKHUYLHZ UHTXHVWJHW5HTXHVW'LVSDWFKHU³FRRNLHUHVXOWMVS´
YLHZIRUZDUGUHTXHVWUHVSRQVH
`
`
KWPO!ERG\!
DKUHI ´FKHFNFRRNLHGR´!FOLFNKHUHD!
ERG\!KWPO!
6HUYOHWWKDWFUHDWHVDQG6(76WKHFRRNLH
-63WRUHQGHUWKHYLHZIURPWKLVVHUYOHW
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.
FRRNLHH[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.
VHVVLRQPDQDJHPHQW
\RXDUHKHUH
6HUYOHWWKDW*(76WKHFRRNLH
LPSRUWMDYD[VHUYOHW
LPSRUWMDYD[VHUYOHWKWWS
LPSRUWMDYDLR
SXEOLFFODVV&KHFN&RRNLHH[WHQGV+WWS6HUYOHW^
SXEOLFYRLGGR*HW+WWS6HUYOHW5HTXHVWUHTXHVW+WWS6HUYOHW5HVSRQVHUHVSRQVH
WKURZV,2([FHSWLRQ6HUYOHW([FHSWLRQ^
UHVSRQVHVHW&RQWHQW7\SH³WH[WKWPO´
3ULQW:ULWHURXW UHVSRQVHJHW:ULWHU
&RRNLH>@FRRNLHV UHTXHVWJHW&RRNLHV
IRULQWL LFRRNLHVOHQJWKL^
&RRNLHFRRNLH FRRNLHV>L@
LIFRRNLHJHW1DPHHTXDOV³XVHUQDPH´^
6WULQJXVHU1DPH FRRNLHJHW9DOXH
RXWSULQWOQ³+HOOR³XVHU1DPH
EUHDN
`
`
`
`
+][\WUKWWSQMM`IUXTMKWV\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.
<RXGRQ¶WKDYHWRNQRZ
$//WKHFRRNLHPHWKRGV
)RUWKHH[DP\RXGRQ¶WKDYHWR
PHPRUL]HHYHU\RQHRIWKHPHWKRGV
LQFODVV&RRNLHEXW\RXPXVW
NQRZWKHUHTXHVWDQGUHVSRQVH
PHWKRGVWRJHWDQGDGG&RRNLHV
<RXVKRXOGDOVRNQRZWKH&RRNLH
FRQVWUXFWRUDQGWKHJHW0D[$JH
DQGVHW0D[$JHPHWKRGV
:KHQ\RXDGGDKHDGHUWRDUHVSRQVH\RXSDVVWKHQDPH
DQGYDOXH6WULQJVDVDUJXPHQWV
UHVSRQVHDGG+HDGHU³IRR´³EDU´
%XWZKHQ\RXDGGD&RRNLHWRWKHUHVSRQVH\RXSDVVD
&RRNLHREMHFW<RXVHWWKH&RRNLHQDPHDQGYDOXHLQWKH
&RRNLHFRQVWUXFWRU
&RRNLHFRRNLH QHZ&RRNLH³QDPH´QDPH
UHVSRQVHDGG&RRNLHFRRNLH
$QGUHPHPEHUWRRWKDWWKHUH¶VERWKDVHW+HDGHUDQG
DQDGG+HDGHUPHWKRGDGG+HDGHUDGGVDQHZYDOXHWR
DQH[LVWLQJKHDGHULIWKHUHLVRQHEXWVHW+HDGHUUHSODFHV
WKHH[LVWLQJYDOXH%XWWKHUH¶V127DVHW&RRNLHPHWKRG
7KHUH¶VRQO\DQDGG&RRNLHPHWKRG
'RQ·WFRQIXVH&RRNLHV
ZLWKKHDGHUV
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.