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

Head First Servlets and JSP phần 3 docx

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.07 MB, 74 trang )

DWWULEXWHVDQGOLVWHQHUV
\RXDUHKHUH

6LQFHWKH&RQWDLQHU
UHDGVWKHVHUYOHWLQLW
SDUDPHWHUVRQO\
RQFH
\RX
VWLOO

FDQ·WFKDQJH\RXUHPDLODGGUHVV
GXULQJWKHOLIHRIWKHVHUYOHW
6RWKLVLVDGXPE
VROXWLRQ
,W·VVWLOOZD\EHWWHUWKDQ
SXWWLQJLWLQP\VHUYOHWVRXUFH
FRGH$OO,KDYHWRGRLVFKDQJH
WKH[PODQGKLWWKH´UHGHSOR\µ
EXWWRQDQGWKHQHZDGGUHVVZLOO
EHLQWKH6HUYOHW&RQÀJ
4

3OUMWHERESTHAT
hREDEPLOYvBUTTONON4OMCAT
$

7ITH4OMCATTHEREISNTA
ONEBUTTONREALLYSIMPLEADMINTOOL
FORDEPLOYMENTANDREDEPLOYMENT
ALTHOUGHTHEREISANADMINTOOLTHAT
SHIPSWITH4OMCAT"UTTHINKABOUT


ITWHATSTHEWORSTYOUHAVETODOTO
CHANGETHESERVLETSINITPARAMETERS
9OUMAKEAQUICKCHANGETOTHEWEB
XMLFILESHUTDOWN4OMCATBIN
SHUTDOWNSHTHENRESTART4OMCAT
BINSTARTUPSH/NRESTART4OMCAT
LOOKSINITSWEBAPPSDIRECTORYAND
DEPLOYSEVERYTHINGITFINDSTHERE
4

3UREITSEASYTOTELL4OMCAT
TOSHUTDOWNANDSTARTUPBUT
WHATABOUTTHEWEBAPPSTHATARE
RUNNING4HEYALLHAVETOGODOWN
$

4ECHNICALLYYES4AKINGYOUR
WEBAPPSDOWNSOTHATYOUCAN
REDEPLOYONESERVLETISALITTLEHARSH
ESPECIALLYIFYOUHAVEALOTOFTRAFFIC
ONYOURWEBSITE"UTTHATSWHY
MOSTOFTHEPRODUCTIONQUALITY7EB
#ONTAINERSLETYOUDOAHOTREDEPLOY
WHICHMEANSTHATYOUDONTHAVETO
RESTARTYOURSERVERORTAKEANYOTHER
WEBAPPSDOWN)NFACT4OMCATDOES
INCLUDEAMANAGERTOOLTHATWILLLET
YOUDEPLOYUNDEPLOYANDREDEPLOY
ENTIREWEBAPPSWITHOUTRESTARTING
4OMCAT)NAPRODUCTIONENVIRONMENT

THATSWHATYOUDUSE"UTFORTESTING
ITSEASIERTOJUSTRESTART4OMCAT)NFO
ONTHEMANAGEMENTTOOLISAT
HTTPJAKARTAAPACHEORGTOMCAT
TOMCATDOCMANAGERHOWTOHTML
"UTINTHEREALWORLDEVENAHOT
REDEPLOYISA"IG$EALANDTAKING
EVENASINGLEAPPDOWNJUSTBECAUSE
THEINITPARAMETERVALUECHANGED
CANBEABADIDEA)FTHEVALUESOF
YOURINITPARAMETERSAREGOINGTO
CHANGEFREQUENTLYYOUREBETTEROFF
HAVINGYOURSERVLETMETHODSGETTHE
VALUESFROMAFILEORDATABASEBUT
THISAPPROACHWILLMEANALOTMORE
OVERHEADEACHTIMEYOURSERVLETCODE
RUNSINSTEADOFONLYONCEDURING
INITIALIZATION
WKHUH DUH QR
'
XPE 4XHVWLRQV
Chapter 5. Being a Web App
Chapter 5. Being a Web App
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

<M[\QVOaW]Z;MZ^TM\+WVNQO
3ERVLET#ONlGSMAINJOBISTOGIVEYOUINITPARAMETERS)TCAN
ALSOGIVEYOUA3ERVLET#ONTEXTBUTWELLUSUALLYGETACONTEXTINA
DIFFERENTWAYANDTHEGET3ERVLET.AMEMETHODISRARELYUSEFUL
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LQLWSDUDPHWHUVEU!´

(QXPHUDWLRQH JHW6HUYOHW&RQ¿JJHW,QLW3DUDPHWHU1DPHV
ZKLOHHKDV0RUH(OHPHQWV^
 RXWSULQWOQ³EU!SDUDPQDPH ³HQH[W(OHPHQW³EU!´
`
RXWSULQWOQ³PDLQHPDLOLV³JHW6HUYOHW&RQ¿JJHW,QLW3DUDPHWHU³PDLQ(PDLO´
RXWSULQWOQ³EU!´
RXWSULQWOQ³DGPLQHPDLOLV³JHW6HUYOHW&RQ¿JJHW,QLW3DUDPHWHU³DGPLQ(PDLO´
`
`
,QWKH''ZHE[POÀOH
ZHEDSS[POQV ´KWWSMDYDVXQFRP[POQVMHH´
[POQV[VL ´KWWSZZZZRUJ;0/6FKHPDLQVWDQFH´
[VLVFKHPD/RFDWLRQ ´KWWSMDYDVXQFRP[POQVMHHZHEDSSBB[VG´
YHUVLRQ ´´!
VHUYOHW!
VHUYOHWQDPH!%HHU3DUDP7HVWVVHUYOHWQDPH!
VHUYOHWFODVV!FRPH[DPSOH7HVW,QLW3DUDPVVHUYOHWFODVV!
LQLWSDUDP!
SDUDPQDPH!DGPLQ(PDLOSDUDPQDPH!
SDUDPYDOXH!OLNHZHFDUH#ZLFNHGO\VPDUWFRPSDUDPYDOXH!

LQLWSDUDP!
LQLWSDUDP!
SDUDPQDPH!PDLQ(PDLOSDUDPQDPH!
SDUDPYDOXH!EORRSHU#ZLFNHGO\VPDUWFRPSDUDPYDOXH!
LQLWSDUDP!
VHUYOHW!
VHUYOHWPDSSLQJ!
VHUYOHWQDPH!%HHU3DUDP7HVWVVHUYOHWQDPH!
XUOSDWWHUQ!7HVWHUGRXUOSDWWHUQ!
VHUYOHWPDSSLQJ!
ZHEDSS!
JHW,QLW3DUDPHWHU6WULQJ
(QXPHUDWLRQJHW,QLW3DUDPHWHU1DPHV
JHW6HUYOHW&RQWH[W
JHW6HUYOHW1DPH
LQWHUIDFH!!
6HUYOHW&RQILJ
Most people never
use this method.
,QDVHUYOHWFODVV
MDYD[VHUYOHW6HUYOHW&RQILJ
XVLQJ6HUYOHW&RQ¿J
SDFNDJHFRPH[DPSOH
LPSRUWMDYD[VHUYOHW
LPSRUWMDYD[VHUYOHWKWWS
LPSRUWMDYDLR
SXEOLFFODVV7HVW,QLW3DUDPVH[WHQGV+WWS6HUYOHW^
Chapter 5. Being a Web App
Chapter 5. Being a Web App
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.
DWWULEXWHVDQGOLVWHQHUV
\RXDUHKHUH

8KRK,MXVWUHDOL]HG
WKDWLQP\UHDODSS,·PXVLQJ
-63WRUHQGHUWKHSDJH6R
FDQD-63´VHHµDVHUYOHW·V
LQLWSDUDPHWHUV"
0W_KIVI2;8OM\[MZ^TM\
QVQ\XIZIUM\MZ['
!3ERVLET#ONlGISFORSERVLETCONlGURATIONITDOESNTSAY
*30#ONlG3OIFYOUWANTOTHERPARTSOFYOURAPPLICATION
TOUSETHESAMEINFOYOUPUTINTHESERVLETSINIT
PARAMETERSINTHE$$YOUNEEDSOMETHINGMORE
?PI\IJW]\\PM_Ia_MLQLQ\_Q\P\PMJMMZ
IXX'?MXI[[ML\PMUWLMTQVNW\W\PM2;8
][QVOIZMY]M[\I\\ZQJ]\M
7ECOULDDOITTHISWAY4HEREQUESTOBJECTLETSYOUSET
ATTRIBUTESTHINKOFTHEMASANAMEVALUEPAIRWHERETHE
VALUECANBEANYOBJECTTHATANYOTHERSERVLETOR*30THAT
GETSTHEREQUESTCANUSE4HATMEANSANYSERVLETOR*30TO
WHICHTHEREQUESTISFORWARDEDUSINGA2EQUEST$ISPATCHER
7ELLLOOKAT2EQUEST$ISPATCHERINDETAILATTHEENDOF
THISCHAPTERBUTFORNOWALLWECAREABOUTISGETTINGTHE
DATAINTHISCASETHEEMAILADDRESSTOTHEPIECESOFTHE
WEBAPPTHATNEEDITRATHERTHANJUSTONESERVLET

LQVLGHWKHGR3RVWPHWKRG
6WULQJFRORU UHTXHVWJHW3DUDPHWHU³FRORU´
%HHU([SHUWEH QHZ%HHU([SHUW
/LVWUHVXOW EHJHW%UDQGVFRORU
UHTXHVWVHW$WWULEXWH³VW\OHV´UHVXOW
Remember? We got the clientÕs
color choice from the request.
Then we instantiated and
used the MODEL to get the
info we need for the VIEW.
Then we set an ÒattributeÓ
in the request, and the JSP
we forward the request to
was able to get it.
Chapter 5. Being a Web App
Chapter 5. Being a Web App
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
;M\\QVOIZMY]M[\
I\\ZQJ]\M
_WZS[J]\WVTaNWZ\PM2;8\W
_PQKPaW]NWZ_IZLML\PMZMY]M[\
7ITHTHEBEERAPPITMADESENSETOSTORETHEMODELINFO
FORTHECLIENTSREQUESTINTHEREQUESTOBJECTBECAUSETHENEXT
STEPWASTOFORWARDTHEREQUESTTOTHE*30RESPONSIBLEFOR

CREATINGTHEVIEW3INCETHAT*30NEEDEDTHEMODELDATA
ANDTHEDATAWASRELEVANTTOONLYTHATPARTICULARREQUEST
EVERYTHINGWASlNE
"UTTHATDOESNTHELPUSWITHTHEEMAILADDRESSBECAUSEWE
MIGHTNEEDTOUSEITFROMALLOVERTHEAPPLICATION4HERE
ISAWAYTOHAVEASERVLETREADTHEINITPARAMETERSANDTHEN
STORETHEMINAPLACEOTHERPARTSOFTHEAPPCOULDUSEBUT
THENWEDHAVETOKNOWWHICHSERVLETWOULDALWAYSRUNlRST
WHENTHEAPPISDEPLOYEDANDANYCHANGESTOTHEWEBAPP
COULDBREAKTHEWHOLETHING.OTHATWONTDOEITHER
%XW,UHDOO\ZDQW$//WKHSDUWV
RIP\ZHEDSSWRKDYHDFFHVVWRWKH
HPDLODGGUHVV:LWKLQLWSDUDPHWHUV
,KDYHWRFRQÀJXUHWKHPLQWKH''IRU
HYHU\

VHUYOHWDQGWKHQKDYHDOOWKHVHUYOHWVPDNH
WKHPDYDLODEOHIRUWKH-63V+RZERULQJ
LVWKDW"1RWPDLQWDLQDEOHHLWKHU,
QHHGVRPHWKLQJPRUH
JOREDO

,ZRQGHULI
WKHUH·VVRPHWKLQJOLNH
LQLWSDUDPHWHUVIRUWKH
DSSOLFDWLRQ
"
LQLWSDUDPHWHUOLPLWDWLRQV
Chapter 5. Being a Web App
Chapter 5. Being a Web App

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.
DWWULEXWHVDQGOLVWHQHUV
\RXDUHKHUH

+WV\M`\QVQ\XIZIUM\MZ[\W\PMZM[K]M
#ONTEXTINITPARAMETERSWORKJUSTLIKESERVLETINITPARAMETERSEXCEPT
CONTEXTPARAMETERSAREAVAILABLETOTHEENTIREWEBAPPNOTJUST
ASINGLESERVLET3OTHATMEANSANYSERVLETAND*30INTHEAPP
AUTOMATICALLYHASACCESSTOTHECONTEXTINITPARAMETERSSOWEDONT
HAVETOWORRYABOUTCONlGURINGTHE$$FOREVERYSERVLETAND
WHENTHEVALUECHANGESYOUONLYHAVETOCHANGEITONEPLACE
,QWKH''ZHE[POÀOH
VHUYOHW!
VHUYOHWQDPH!%HHU3DUDP7HVWVVHUYOHWQDPH!
VHUYOHWFODVV!7HVW,QLW3DUDPVVHUYOHWFODVV!
VHUYOHW!
FRQWH[WSDUDP!
SDUDPQDPH!DGPLQ(PDLOSDUDPQDPH!
SDUDPYDOXH!FOLHQWKHDGHUURU#ZLFNHGO\VPDUWFRPSDUDPYDOXH!
FRQWH[WSDUDP!
You give it a param-name and param-value just like with
servlet init parameters, except this time itÕs in the
<context-param> element instead of <init-param>.
,QWKHVHUYOHWFRGH
RXWSULQWOQJHW6HUYOHW&RQWH[WJHW,QLW3DUDPHWHU³DGPLQ(PDLO´
Every servlet inherits a getServletContext() method

(and JSPs have special access to a context as well).
The getServletContext() method
returns, surprisingly, a ServletContext
object. And one of its methods is
getInitParameter().
6HUYOHW&RQWH[WFRQWH[W JHW6HUYOHW&RQWH[W
RXWSULQWOQFRQWH[WJHW,QLW3DUDPHWHU³DGPLQ(PDLO´
25
Here we broke out the code into TWO stepsÑ
getting the ServletContext reference, and calling
its getInitParameter() method.
We took the <init-param> element
out of the <servlet> element.
IMPORTANT!! The <context-param> is
for the WHOLE app, so its not nested
inside an individual <servlet> element!! Put
<context-param> inside the <web-app>
but OUTSIDE any <servlet> declaration.
Chapter 5. Being a Web App
Chapter 5. Being a Web App
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
:MUMUJMZ\PMLQNNMZMVKMJM\_MMV[MZ^TM\QVQ\
XIZIUM\MZ[IVLKWV\M`\QVQ\XIZIUM\MZ[
(ERESAREVIEWOFTHEKEYDIFFERENCESBETWEENCONTEXTINITPARAMETERSANDSERVLET

INITPARAMETERS0AYSPECIALATTENTIONTOTHEFACTTHATTHEYREBOTHREFERREDTOAS
INITPARAMETERSEVENTHOUGHONLYSERVLETINITPARAMETERSHAVETHEWORDhINITvIN
THE$$CONlGURATION
&RQWH[WLQLWSDUDPHWHUV 6HUYOHWLQLWSDUDPHWHUV
'HSOR\PHQW
'HVFULSWRU
ZHEDSS!

FRQWH[WSDUDP!
SDUDPQDPH!IRRSDUDPQDPH!
SDUDPYDOXH!EDUSDUDPYDOXH!

FRQWH[WSDUDP!
RWKHUVWXIILQFOXGLQJ
VHUYOHWGHFODUDWLRQV!
ZHEDSS!
:LWKLQWKHZHEDSS!HOHPHQWEXW127
ZLWKLQDVSHFLILFVHUYOHW!HOHPHQW
VHUYOHW!
VHUYOHWQDPH!
%HHU3DUDP7HVWV
VHUYOHWQDPH!
VHUYOHWFODVV!
7HVW,QLW3DUDPV
VHUYOHWFODVV!
LQLWSDUDP!
SDUDPQDPH!IRRSDUDPQDPH!
SDUDPYDOXH!EDUSDUDPYDOXH!

LQLWSDUDP!


RWKHUVWXII!
VHUYOHW!
:LWKLQWKHVHUYOHW!HOHPHQWIRUHDFK
VSHFLILFVHUYOHW
JHW6HUYOHW&RQWH[WJHW,QLW3DUDPHWHU³IRR´ JHW6HUYOHW&RQ¿JJHW,QLW3DUDPHWHU³IRR´
6HUYOHW&RGH
$YDLODELOLW\
7RDQ\VHUYOHWVDQG-63VWKDWDUHSDUW
RIWKLVZHEDSS
7RRQO\WKHVHUYOHWIRUZKLFKWKHLQLWSDUDP!ZDV
FRQILJXUHG
$OWKRXJKWKHVHUYOHWFDQFKRRVHWRPDNHLWPRUH
ZLGHO\DYDLODEOHE\VWRULQJLWLQDQDWWULEXWH
FRQWH[WYVVHUYOHWLQLWSDUDPHWHUV
Notice it doesnÕt say ÒinitÓ
anywhere in the DD for context
init parameters, the way it does
for servlet init parameters.
ItÕs the same method name!
Chapter 5. Being a Web App
Chapter 5. Being a Web App
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.
DWWULEXWHVDQGOLVWHQHUV
\RXDUHKHUH



:DWFKLW
<RXUHDOO\KDYHWRNHHSWKHVHVWUDLJKWRQ
WKHH[DPDQGLW¶VWULFN\<RX0867NQRZ
WKDWERWK6HUYOHW&RQ¿JDQG6HUYOHW&RQWH[W
KDYHLQLWSDUDPHWHUVDQGERWKKDYHWKH
VDPHJHWWHUPHWKRG²JHW,QLW3DUDPHWHU
%87\RXDOVRKDYHWRNQRZWKDWFRQWH[W
LQLWSDUDPHWHUVDUHVHWZLWKFRQWH[WSDUDP!
QRWLQVLGHDVHUYOHW!HOHPHQWZKLOHVHUYOHW
LQLWSDUDPHWHUVXVHLQLWSDUDP!LQVLGHWKH
LQGLYLGXDOVHUYOHW!GHFODUDWLRQVLQWKH''
'RQ·WFRQIXVH
6HUYOHW
&RQÀJ

SDUDPHWHUVZLWK
6HUYOHW
&RQWH[W

SDUDPHWHUV
; M Z ^ T M \
+WVNQO
Q[WVMXMZ[MZ^TM\
; M Z ^ T M \
+WV\M`\
Q[WVMXMZ_MJIXX
4HERESONLYONE3ERVLET#ONTEXTFORANENTIREWEBAPPANDALLTHE
PARTSOFTHEWEBAPPSHAREIT"UTEACHSERVLETINTHEAPPHASITSOWN
3ERVLET#ONlG4HE#ONTAINERMAKESA3ERVLET#ONTEXTWHENAWEB

APPISDEPLOYEDANDMAKESTHECONTEXTAVAILABLETOEACH3ERVLETAND
*30WHICHBECOMESASERVLETINTHEWEBAPP
 &RQWDLQHUUHDGVWKH''DQG
FUHDWHVDQDPHYDOXH6WULQJSDLU
IRUHDFKFRQWH[WSDUDP!
 &RQWDLQHUFUHDWHVDQHZLQVWDQFH
RI6HUYOHW&RQWH[W
 &RQWDLQHUJLYHVWKH
6HUYOHW&RQWH[WDUHIHUHQFHWR
HDFKQDPHYDOXHSDLURIWKH
FRQWH[WLQLWSDUDPHWHUV
 (YHU\VHUYOHWDQG-63GHSOR\HG
DVSDUWRIDVLQJOHZHEDSS
KDVDFFHVVWRWKDWVDPH
6HUYOHW&RQWH[W
:HEDSSLQLWLDOL]DWLRQ
app-wide context
init params inside
6HUYOHW$
6
H
U
Y
O
H
W
&
R
Q
I

L
J
6HUYOHW% 6HUYOHW&
6
H
U
Y
O
H
W
&
R
Q
I
L
J
6
H
U
Y
O
H
W
&
R
Q
I
L
J
6

H
U
Y
O
H
W
&
R
Q
W
H
[
W
KWPO!
ERG\!
MVSVHW3URSHUW\
QDPH ´IRR´
SURSHUW\ ´EDU´!
ERG\!
KWPO!
-63
init params for
Servlet C inside
init params for
Servlet B inside
init params for
Servlet A inside

:DWFKLW
,I\RXUDSSOLFDWLRQLVGLVWULEXWHGDFURVV

PXOWLSOHVHUYHUVSUREDEO\LQDFOXVWHUHG
HQYLURQPHQW\RXUZHEDSSUHDOO\&28/'
KDYHPRUHWKDQRQH6HUYOHW&RQWH[W$
6HUYOHW&RQWH[WLVRQHSHUDSSEXWRQO\LI
WKHDSSLVLQDVLQJOH-90
,QDGLVWULEXWHGHQYLURQPHQW\RX¶OOKDYHRQH
6HUYOHW&RQWH[WSHU-901RZFKDQFHVDUH
WKLVZRQ¶WFUHDWHSUREOHPVEXWLI\RXKDYHD
GLVWULEXWHGZHEDSS\RXEHWWHUFRQVLGHUWKH
FRQVHTXHQFHVRIKDYLQJGLIIHUHQWFRQWH[WV
IRUHDFK-90
,IWKHDSSLV
GLVWULEXWHGWKHUH·V
RQH6HUYOHW&RQWH[W
SHU-90
6
H
U
Y
O
H
W
&
R
Q
I
L
J
Yes, JSPs are turned into
Þ rst-class servlets, so

they also get their own
ServletConÞ g.
Chapter 5. Being a Web App
Chapter 5. Being a Web App
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

7HATSWITHTHEINCONSISTENTNAMINGSCHEME
(OWCOMETHE$$ELEMENTSARECONTEXTPARAMAND
INITPARAMBUTINTHESERVLETCODE"/4(USETHE
GET)NIT0ARAMETERMETHOD
$

4HEYDIDNTASKUSTOHELPTHEMCOMEUPWITHTHE
NAMES)FTHEYHADOFCOURSEWEDHAVESAIDITSHOULDBE
GET)NIT0ARAMETERANDGET#ONTEXT0ARAMETERTOMATCH
THE8-,ELEMENTSINTHE$$/RTHEYCOULDHAVEUSED
DIFFERENT8-,ELEMENTSPERHAPSSERVLETINITPARAM
ANDCONTEXTINITPARAM"UTNOTHATWOULDHAVESUCKED
ALLTHEFUNOUTOFTRYINGTOKEEPTHEMSTRAIGHT
4

7HYWOULD)EVERUSEINITPARAMANYWAY
7OULDNT)ALWAYSWANTTOUSECONTEXTPARAMSO

THATOTHERPARTSOFMYAPPCOULDREUSETHEVALUESAND
)WONTHAVETODUPLICATE8-,CODEFOREVERYSERVLET
DECLARATION
$

)TALLDEPENDSONWHICHPARTOFYOURAPPIS
SUPPOSEDTOSEETHEVALUE9OURAPPLICATIONLOGICMIGHT
REQUIREYOUTOUSEAVALUETHATYOUWANTTORESTRICTTO
ONLYANINDIVIDUALSERVLET"UTTYPICALLYDEVELOPERSFIND
APPWIDECONTEXTINITPARAMETERSALOTMOREHELPFULTHAN
SERVLETSPECIFICSERVLETINITPARAMETERS0ERHAPSTHEMOST
COMMONUSEOFACONTEXTPARAMETERISSTORINGDATABASE
LOOKUPNAMES9OUDWANTALLPARTSOFYOURAPPTOHAVE
ACCESSTOTHECORRECTNAMEANDWHENITCHANGESYOUWANT
TOCHANGEITINONLYONEPLACE
4

7HATHAPPENSIF)GIVEACONTEXTINITPARAMETER
THESAMENAMEASASERVLETINITPARAMETERINTHESAME
WEBAPP
$

4HEMOLECULARSIZEDBLACKHOLEMIRACULOUSLY
CREATEDINARESEARCHFACILITYIN.EW*ERSEYWILLSLIPFROMITS
CONTAINMENTlELDPLUMMETTOTHEEARTHSCOREANDDESTROY
THEPLANET
/RMAYBENOTHINGBECAUSETHERESNONAMESPACECONmICT
SINCEYOUGETTHEPARAMETERSTHROUGHTWODIFFERENTOBJECTS
3ERVLET#ONTEXTOR3ERVLET#ONlG
4


)FYOUMODIFYTHE8-,TOCHANGETHEVALUEOFAN
INITPARAMETEREITHERSERVLETORCONTEXTWHENDOESTHE
SERVLETORTHERESTOFTHEWEBAPPSEETHECHANGE
$

/.,9WHENTHEWEBAPPISREDEPLOYED
2EMEMBERWETALKEDABOUTTHISBEFORETHESERVLETIS
INITIALIZEDONLYONCEATTHEBEGINNINGOFITSLIFEANDTHATS
WHENITSGIVENITS3ERVLET#ONFIGAND3ERVLET#ONTEXT4HE
#ONTAINERREADSTHEVALUESFROMTHE$$WHENITCREATES
THOSETWOOBJECTSANDSETSTHEVALUES
4

#ANT)GETAROUNDTHISBYSETTINGTHEVALUESAT
RUNTIME3URELYTHERESAN!0)THATLLLETMECHANGE
THOSEVALUESDYNAMICALLY
$

.OTHERESNOT,OOKIN3ERVLET#ONTEXTOR
3ERVLET#ONFIGANDYOULLFINDAGETTERGET)NIT0ARAMETER
BUTYOUWONTFINDASETTER4HERESNOSET)NIT0ARAMETER
4
4HATSLAME
$

4HESEAREINITPARAMETERS)NITFROMTHE,ATINWORD
INITIALIZATION)FYOUTHINKOFTHEMPURELYASDEPLOYTIME
CONSTANTSYOULLHAVETHERIGHTPERSPECTIVE)NFACTTHATS
SOIMPORTANTWEREGOINGTOSAYITAGAININABOLDERWAY

7KLQNRILQLWSDUDPHWHUVDV
GHSOR\WLPHFRQVWDQWV
<RXFDQ
JHW
WKHPDWUXQWLPH
EXW\RXFDQ·W
VHW
WKHP7KHUH·V
QR
VHW
,QLW3DUDPHWHU
VHUYOHWDQGFRQWH[WLQLWSDUDPHWHUV
WKHUH DUH QR
'
XPE 4XHVWLRQV
Chapter 5. Being a Web App
Chapter 5. Being a Web App
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.
DWWULEXWHVDQGOLVWHQHUV
\RXDUHKHUH


6RPHSHRSOHXVHWKHSKUDVH³LQLWSDUDPHWHU´WRPHDQ³VHUYOHW
LQLWSDUDPHWHU´DQGWKH\XVH³FRQWH[WSDUDPHWHU´RUHYHQ³DS
SOLFDWLRQSDUDPHWHU´WRPHDQ³FRQWH[WLQLWSDUDPHWHU´6RHYHQ
WKRXJK%27+DUHLQLWLDOL]DWLRQSDUDPHWHUVDQGERWKFRPHIURP

WKHJHW,QLW3DUDPHWHUPHWKRGUHPHPEHUWKDWRQO\6(59/(7LQLW
SDUDPHWHUVDUHOLVWHGLQWKH''DVLQLWSDUDPHWHUVVRWKHSKUDVH
³LQLWSDUDPHWHU´PHDQV³VHUYOHWLQLWSDUDPHWHU´E\GHIDXOW

:HNQRZWKDWDVDGHYHORSHU\RX¶OOEHNLQGHUWRRWKHUVDQG
DOZD\VVD\H[SOLFLWO\ZKHWKHUDQLQLWSDUDPHWHULVDVHUYOHWLQLW
SDUDPHWHURUDFRQWH[WLQLWSDUDPHWHU
,I\RXVHH´LQLWSDUDPHWHUµZLWKRXW
NQRZLQJLILWPHDQV
VHUYOHW
RU
FRQWH[W
LQLWSDUDPHWHUDVVXPH
VHUYOHW
FRQWH[WSDUDP!
FRQWH[WSDUDP!
VHUYOHW!
VHUYOHW!
ZHEDSS!
ZHEDSS!
SDUDPQDPH!
VHUYOHWQDPH!
SDUDPQDPH!
VHUYOHWFODVV!
VHUYOHWFODVV!
SDUDPYDOXH!
SDUDPYDOXH!
IRR
FRPZLFNHGO\VPDUW%HHU7HVWHU
EDU

%HHU7HVWVHUYOHWQDPH!
2EARRANGETHEMAGNETSTOFORMA$$THATDECLARESA
PARAMETERTHATMATCHESTHESERVLETCODE
9OUWONTUSEALLOFTHEMAGNETS
.OTEWHENYOUSEEWEBAPPREMEMBERTHAT
THISISOURSHORTCUTTOSAVESPACEONTHEPAGE9OU
CANTDEPLOYAWEBXMLFILEUNLESSTHEWEBAPP
TAGHASALLTHEATTRIBUTESITNEEDS
([HUFLVH
&RGH0DJQHWV
JHW6HUYOHW&RQWH[WJHW,QLW3DUDPHWHU³IRR´
LQLWSDUDP!
LQLWSDUDP!
VHUYOHWSDUDP!
VHUYOHWSDUDP!
Chapter 5. Being a Web App
Chapter 5. Being a Web App
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
;W_PI\
MT[M
KIVaW]LW_Q\P
aW]Z;MZ^TM\+WV\M`\'
!3ERVLET#ONTEXTISA*30ORSERVLETSCONNECTION
TOBOTHTHE#ONTAINERANDTHEOTHERPARTSOFTHE

WEBAPP(EREARESOMEOFTHE3ERVLET#ONTEXT
METHODS7EPUTTHEONESYOUSHOULDKNOWFOR
THEEXAMINBOLD
Get init parameters and
get/set attributes.
Get info about the
server/container.
WeÕll talk about
RequestDispatcher later in
the chapter.
JHW,QLW3DUDPHWHU6WULQJ
JHW,QLW3DUDPHWHU1DPHV
JHW$WWULEXWH6WULQJ
JHW$WWULEXWH1DPHV
VHW$WWULEXWH6WULQJ
UHPRYH$WWULEXWH6WULQJ
JHW0DMRU9HUVLRQ
JHW6HUYHU,QIR
JHW5HDO3DWK6WULQJ
JHW5HVRXUFH$V6WUHDP6WULQJ
JHW5HTXHVW'LVSDWFKHU6WULQJ
ORJ6WULQJ
PRUHPHWKRGV
LQWHUIDFH!!
6HUYOHW&RQWH[W
Write to the serverÕs log
Þ le (vendor-speciÞ c) or
System.out.
WeÕll talk about parameters vs.
attributes in a few pages.

MDYD[VHUYOHW6HUYOHW&RQWH[W
WKH6HUYOHW&RQWH[W
6
H
U
Y
O
H
W
&
R
Q
W
H
[
W
6HUYOHW
<RXFRPSOHWHPH
%HIRUH,FDPHLQWR
\RXUOLIH\RXZHUH
MXVWDQRWKHUORVHUREMHFW
LQVWHDGRIDUHDOVHUYOHW
Chapter 5. Being a Web App
Chapter 5. Being a Web App
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.
DWWULEXWHVDQGOLVWHQHUV

\RXDUHKHUH

4

(OWDOALLTHEPARTSOFAWEBAPPGETACCESSTO
THEIROWN3ERVLET#ONTEXT

$
&ORSERVLETSYOUALREADYKNOWCALLYOURINHERITED
GET3ERVLET#ONTEXTMETHOD
&OR*30SITSALITTLEDIFFERENT*30SHAVESOMETHINGCALLED
hIMPLICITOBJECTSvAND3ERVLET#ONTEXTISONEOFTHEM9OULL
SEEEXACTLYHOWA*30USESA3ERVLET#ONTEXTWHENWEGET
TOTHE*30CHAPTERS
4

3OYOUGETBUILTINLOGGINGTHROUGHYOUR
CONTEXT4HATSOUNDS6%29HELPFUL

$

5MNO.OTUNLESSYOUHAVEAREALLYSMALLSIMPLE
WEBAPP4HEREAREMUCHBETTERWAYSTODOLOGGING4HE
MOSTPOPULARROBUSTLOGGINGMECHANISMIS,OGJYOU
CANFINDITONTHE!PACHESITEAT
KWWSMDNDUWDDSDFKHRUJORJM
9OUCANALSOUSETHELOGGING!0)FROMJAVAUTILLOGGING
ADDEDTO*3%INVERSION
)TSFINETOUSETHE3ERVLET#ONTEXTLOGMETHODFORSIMPLE
EXPERIMENTSBUTINAREALPRODUCTIONENVIRONMENTYOU

WILLALMOSTCERTAINLYWANTTOCHOOSESOMETHINGELSE
4HERESAGOODREFERENCEONWEBAPPLOGGINGWITHAND
WITHOUT,OGJINTHE*AVA3ERVLET*30#OOKBOOKFROM
/2EILLY
,OGGINGISNOTPARTOFTHEEXAMOBJECTIVESBUTITS
IMPORTANT&ORTUNATELYYOULLFINDTHE!0)SEASYTOUSE

$VHUYOHW¶V6HUYOHW&RQ¿JREMHFWDOZD\VKROGVDUHIHUHQFHWRWKH
6HUYOHW&RQWH[WIRUWKDWVHUYOHW6RGRQ¶WEHIRROHGLI\RXVHHVHUYOHWFRGH
RQWKHH[DPWKDWVD\V
JHW6HUYOHW&RQ¿JJHW6HUYOHW&RQWH[W
JHW,QLW3DUDPHWHU
1RWRQO\LVWKDWOHJDOEXWLWGRHVWKHVDPHWKLQJDV
WKLVJHW6HUYOHW&RQWH[WJHW,QLW3DUDPHWHU
,QDVHUYOHWWKHRQO\WLPH\RXZRXOG1(('WRJRWKURXJK\RXU
6HUYOHW&RQ¿JWRJHW\RXU6HUYOHW&RQWH[WLVLI\RX¶UHLQD6HUYOHW
FODVVWKDWGRHVQ¶WH[WHQG+WWS6HUYOHWRU*HQHULF6HUYOHWWKH
JHW6HUYOHW&RQWH[WPHWKRG\RXLQKHULWFRPHVIURP*HQHULF6HUYOHW
%XWWKHFKDQFHRI$1<21(XVLQJDQRQ+773VHUYOHWLV
ZHOODV\PSWRWLFDOO\DSSURDFKLQJ]HUR6RMXVWFDOO\RXURZQ
JHW6HUYOHW&RQWH[WPHWKRGEXWGRQ¶WEHGD]HGRUFRQIXVHGLI\RXVHH
FRGHWKDWXVHVWKH6HUYOHW&RQ¿JWRJHWWKHFRQWH[W
%XWZKDWLIWKHFRGHLVLQVLGHVRPHFODVVWKDWLV127DVHUYOHWDKHOSHU
XWLOLW\FODVVIRUH[DPSOH"6RPHRQHPLJKWKDYHSDVVHGD6HUYOHW&RQ¿J
WRWKDWFODVVDQGWKHFODVVFRGHZRXOGKDYHWRXVHJHW6HUYOHW&RQWH[W
WRJHWDUHIHUHQFHWRWKH6HUYOHW&RQWH[WREMHFW
<RXFDQJHWD6HUYOHW&RQWH[WLQWZR
GLIIHUHQWZD\V
Chapter 5. Being a Web App
Chapter 5. Being a Web App

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
+DWHWRVSRLO\RXU
6HUYOHW&RQWH[WSDUW\EXWXP
WKRVHLQLWSDUDPHWHUVFDQ·WEH
DQ\WKLQJH[FHSW675,1*67KDW·VLW
:KDWLI,ZDQWWRLQLWLDOL]HP\DSS
ZLWKDGDWDEDVH'DWD6RXUFHWKDWDOO
WKHVHUYOHWVFDQXVH"
?PI\QNaW]_IV\IVIXX
QVQ\XIZIUM\MZ\PI\¼[I
LI\IJI[M,I\I;W]ZKM'
#ONTEXTPARAMETERSCANTBEANYTHINGEXCEPT
3TRINGS!FTERALLYOUCANTVERYWELLSTUFFA$OG
OBJECTINTOAN8-,DEPLOYMENTDESCRIPTOR
!CTUALLYYOUCOULDREPRESENTASERIALIZED
OBJECTIN8-,BUTTHERESNOFACILITYFORTHISIN
THE3ERVLETSPECTODAYMAYBEINTHEFUTURE
7HATIFYOUREALLYWANTALLTHEPARTSOFYOUR
WEBAPPTOHAVEACCESSTOASHAREDDATABASE
CONNECTION9OUCANCERTAINLYPUTTHE
$ATA3OURCELOOKUPNAMEINACONTEXTINIT
PARAMETERANDTHATSPROBABLYTHEMOST
COMMONUSEOFCONTEXTPARAMETERSTODAY
"UTTHENWHODOESTHEWORKOFTURNINGTHE3TRING

PARAMETERINTOANACTUAL$ATA3OURCEREFERENCE
THATALLPARTSOFTHEWEBAPPCANSHARE
9OUCANTREALLYPUTTHATCODEINASERVLET
BECAUSEWHICHSERVLETWOULDYOUCHOOSETO
BE4HE/NE4O,OOKUP4HE$ATA3OURCE!ND
3TORE)T)N!N!TTRIBUTE$OYOUREALLYWANTTO
TRYTOGUARANTEETHATONESERVLETINPARTICULAR
WILLALWAYSRUNlRST4HINKABOUTIT
#4X3X98
+RZFRXOG\RXVROYHWKLVSUREOHP"
+RZFRXOG\RXLQLWLDOL]HDZHEDSSZLWKDQ
REMHFW"$VVXPHWKDW\RXQHHGWKH6WULQJ
FRQWH[WLQLWSDUDPHWHULQRUGHUWRFUHDWHWKDW
REMHFWWKLQNDERXWWKHGDWDEDVHH[DPSOH
FRQWH[WSDUDPHWHUOLPLWDWLRQV
Chapter 5. Being a Web App
Chapter 5. Being a Web App
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.
DWWULEXWHVDQGOLVWHQHUV
\RXDUHKHUH

?PI\[PMZMITTa_IV\[Q[I
TQ[\MVMZ

2KLIRQO\WKHUHZHUHDZD\
WRKDYHVRPHWKLQJOLNHD

PDLQ
PHWKRG
IRUP\ZKROHZHEDSS6RPH
FRGHWKDWDOZD\VUXQVEHIRUH$1<
VHUYOHWVRU-63V
3HEWANTSTOLISTENFORACONTEXTINITIALIZATIONEVENT
SOTHATSHECANGETTHECONTEXTINITPARAMETERSAND
RUNSOMECODEBEFORETHERESTOFTHEAPPCANSERVICEA
CLIENT
3HENEEDSSOMETHINGTHATCANBESITTINGTHERE
WAITINGTOBENOTIlEDTHATTHEAPPISSTARTINGUP
"UTWHICHPARTOFTHEAPPCOULDDOTHEWORK9OU
DONTWANTTOPICKASERVLETTHATSNOTASERVLETSJOB
4HERESNOPROBLEMINAPLAINOLDSTANDALONE*AVA
APPBECAUSEYOUVEGOTMAIN"UTWITHASERVLET
WHATDOYOUDO
9OUNEEDSOMETHINGELSE.OTASERVLETOR*30BUTSOME
OTHERKINDOF*AVAOBJECTWHOSESOLEPURPOSEINLIFE
ISTOINITIALIZETHEAPPANDPOSSIBLYTOUNINITIALIZEIT
TOOCLEANINGUPRESOURCESWHENITLEARNSOFTHEAPPS
DEMISE
Chapter 5. Being a Web App
Chapter 5. Being a Web App
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

;PM_IV\[I;MZ^TM\+WV\M`\4Q[\MVMZ
7ECANMAKEASEPARATECLASSNOTASERVLETOR*30THATCAN
LISTENFORTHETWOKEYEVENTSINA3ERVLET#ONTEXTSLIFE
INITIALIZATIONCREATIONANDDESTRUCTION4HATSEPARATECLASS
IMPLEMENTSJAVAXSERVLET3ERVLET#ONTEXT,ISTENER

 *HWQRWLILHGZKHQWKHFRQWH[WLVLQLWLDOL]HGDSSLVEHLQJ
GHSOR\HG
 *HWWKHFRQWH[WLQLWSDUDPHWHUVIURPWKH6HUYOHW&RQWH[W
 8VHWKHLQLWSDUDPHWHUORRNXSQDPHWRPDNHDGDWDEDVH
 FRQQHFWLRQ
 6WRUHWKHGDWDEDVHFRQQHFWLRQDVDQDWWULEXWHVRWKDWDOO
 SDUWVRIWKHZHEDSSFDQDFFHVVLW

 *HWQRWLILHGZKHQWKHFRQWH[WLVGHVWUR\HGWKHDSSLV
XQGHSOR\HGRUJRHVGRZQ
 &ORVHWKHGDWDEDVHFRQQHFWLRQ
:HQHHGDVHSDUDWHREMHFWWKDWFDQ
FRQWH[W,QLWLDOL]HG6HUYOHW&RQWH[W(YHQW
FRQWH[W'HVWUR\HG6HUYOHW&RQWH[W(YHQW
LQWHUIDFH!!
6HUYOHW&RQWH[W/LVWHQHU
LPSRUWMDYD[VHUYOHW
SXEOLFFODVV0\6HUYOHW&RQWH[W/LVWHQHULPSOHPHQWV
6HUYOHW&RQWH[W/LVWHQHU^
SXEOLFYRLG
FRQWH[W,QLWLDOL]HG6HUYOHW&RQWH[W(YHQWHYHQW^
FRGHWRLQLWLDOL]HWKHGDWDEDVHFRQQHFWLRQ
DQGVWRUHLWDVDFRQWH[WDWWULEXWH
`

SXEOLFYRLG
FRQWH[W'HVWUR\HG6HUYOHW&RQWH[W(YHQWHYHQW^
FRGHWRFORVHWKHGDWDEDVHFRQQHFWLRQ
`
`
A context listener
is simple: implement
ServletContextListener.
These are the two notiÞ cations
you get. Both give you a
ServletContextEvent.
$6HUYOHW&RQWH[W/LVWHQHUFODVV
ServletContextListener is in
javax.servlet package.
MDYD[VHUYOHW6HUYOHW&RQWH[W/LVWHQHU
FRQWH[WOLVWHQHUV
Chapter 5. Being a Web App
Chapter 5. Being a Web App
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.
DWWULEXWHVDQGOLVWHQHUV
\RXDUHKHUH

2.,KDYHDOLVWHQHUFODVV
1RZ

ZKDWGR,GR":KHUHGR,SXWWKH

FODVV":KRLQVWDQWLDWHVLW"+RZGR,
UHJLVWHUIRUWKHHYHQWV"+RZGRHV
WKHOLVWHQHUVHWWKHDWWULEXWHLQWKH
ULJKW6HUYOHW&RQWH[W"
#4X3X98
:KDWGR\RXWKLQNWKHPHFKDQLVP
PLJKWEHIRUPDNLQJDOLVWHQHUEH
SDUWRIDVSHFL¿FZHEDSS"
+LQWKRZGR\RXWHOOWKH&RQWDLQHU
DERXWWKHRWKHUSDUWVRI\RXUZHE
DSS":KHUHPLJKWWKH&RQWDLQHU
GLVFRYHU\RXUOLVWHQHU"
Chapter 5. Being a Web App
Chapter 5. Being a Web App
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
<]\WZQIT"I[QUXTM;MZ^TM\+WV\M`\4Q[\MVMZ
.OWWELLWALKTHROUGHTHESTEPSOFMAKINGANDRUNNINGA
3ERVLET#ONTEXT,ISTENER4HISISJUSTASIMPLETESTCLASSSOTHATYOU
CANSEEHOWALLTHEPIECESWORKTOGETHERWERENOTUSINGTHE
DATABASECONNECTIONEXAMPLEBECAUSEYOUDHAVETOSETUPA
DATABASETOMAKEITWORK"UTTHESTEPSARETHESAMEREGARDLESSOF
THECODEYOUPUTINYOURLISTENERCALLBACKMETHODS
)NTHISEXAMPLEWELLTURNA3TRINGINITPARAMETERINTOANACTUAL
OBJECTA$OG4HELISTENERSJOBISTOGETTHECONTEXTINITPARAMETER

FORTHEDOGSBREED"EAGLE0OODLEETCTHENUSETHAT3TRINGTO
CONSTRUCTA$OGOBJECT4HELISTENERTHENSTICKSTHE$OGOBJECTINTO
A3ERVLET#ONTEXTATTRIBUTESOTHATTHESERVLETCANRETRIEVEIT
4HEPOINTISTHATTHESERVLETNOWHASACCESSTOASHAREDAPPLICATION
OBJECTINTHISCASEA$OGANDDOESNTHAVETOREADTHECONTEXT
PARAMETERS7HETHERTHESHAREDOBJECTISA$OGORADATABASE
CONNECTIONDOESNTMATTER4HEKEYISTOUSETHEINITPARAMETERSTO
CREATEASINGLEOBJECTTHATALLPARTSOFTHEAPPWILLSHARE

 7KHOLVWHQHUREMHFWDVNVWKH6HUYOHW&RQWH[W(YHQW
REMHFWIRUDUHIHUHQFHWRWKHDSS·V6HUYOHW&RQWH[W

 7KHOLVWHQHUXVHVWKHUHIHUHQFHWRWKH6HUYOHW&RQWH[W
WRJHWWKHFRQWH[WLQLWSDUDPHWHUIRU´EUHHGµZKLFKLVD
6WULQJUHSUHVHQWLQJDGRJEUHHG

 7KHOLVWHQHUXVHVWKDWGRJEUHHG6WULQJWRFRQVWUXFWD
'RJREMHFW

 7KHOLVWHQHUXVHVWKHUHIHUHQFHWRWKH6HUYOHW&RQWH[W
WRVHWWKH'RJDWWULEXWHLQWKH6HUYOHW&RQWH[W

 7KHWHVWHUVHUYOHWLQWKLVZHEDSSJHWVWKH'RJ
REMHFWIURPWKH6HUYOHW&RQWH[WDQGFDOOVWKH'RJ·V
JHW%UHHGPHWKRG
2XU'RJH[DPSOH
In this example, weÕll put a
Dog into a ServletContext.
XVLQJD6HUYOHW&RQWH[W/LVWHQHU
Chapter 5. Being a Web App

Chapter 5. Being a Web App
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.
DWWULEXWHVDQGOLVWHQHUV
\RXDUHKHUH

5ISQVOIVL][QVOIKWV\M`\TQ[\MVMZ
-AYBEYOURESTILLWONDERINGHOWTHE#ONTAINERDISCOVERS
ANDUSESTHELISTENER9OUCONlGUREALISTENERTHESAMEWAY
YOUTELLTHE#ONTAINERABOUTTHERESTOFYOURWEBAPPTHROUGHTHE
WEBXML$EPLOYMENT$ESCRIPTOR
7ROLVWHQIRU
6HUYOHW&RQWH[WHYHQWV
ZULWHDOLVWHQHUFODVV
WKDWLPSOHPHQWV
6HUYOHW&RQWH[W/LVWHQHU
SXWLWLQ\RXU:(%,1)
FODVVHVGLUHFWRU\DQGWHOO
WKH&RQWDLQHUE\SXWWLQJD
OLVWHQHU!HOHPHQWLQWKH
'HSOR\PHQW'HVFULSWRU
OLVWHQHU!
OLVWHQHUFODVV!
FRPH[DPSOH0\6HUYOHW&RQWH[W/LVWHQHU
OLVWHQHUFODVV!
OLVWHQHU!


&UHDWHDOLVWHQHUFODVV
FRQWH[W,QLWLDOL]HG6HUYOHW&RQWH[W(YHQW
FRQWH[W'HVWUR\HG6HUYOHW&RQWH[W(YHQW
LQWHUIDFH!!
6HUYOHW&RQWH[W/LVWHQHU
FRQWH[W,QLWLDOL]HG6HUYOHW&RQWH[W(YHQW
FRQWH[W'HVWUR\HG6HUYOHW&RQWH[W(YHQW
0\
6HUYOHW&RQWH[W/LVWHQHU

3XWWKHFODVVLQ:(%,1)FODVVHV

3XWDOLVWHQHU!HOHPHQWLQWKH
ZHE[PO'HSOR\PHQW'HVFULSWRU
:(%,1)
FODVVHV
(This isnÕt the ONLY place it can go
WEB-INF/classes is one of several
places the Container can look for
classes. WeÕll cover the others in the
Deployment chapter.)
Question for you which part of
the DD does the <listener> element
go into? Does it go into a <servlet>
element, or just under <web-app>?
Think about it.
Chapter 5. Being a Web App
Chapter 5. Being a Web App
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
?MVMML\PZMMKTI[[M[IVLWVM,,
&OROURCONTEXTLISTENERTESTEXAMPLEWENEEDTO
WRITETHECLASSESANDTHEWEBXMLlLE
&OREASEOFTESTINGWELLPUTALLOFTHECLASSES
INTHESAMEPACKAGECOMEXAMPLE

7KH6HUYOHW&RQWH[W/LVWHQHU
4HISCLASSIMPLEMENTS3ERVLET#ONTEXT,ISTENER
GETSTHECONTEXTINITPARAMETERSCREATESTHE$OG
ANDSETSTHE$OGASCONTEXTATTRIBUTE

7KHDWWULEXWHFODVV
4HE$OGCLASSISJUSTAPLAINOLD*AVACLASS
)TSJOBISTOBETHEATTRIBUTEVALUETHATTHE
3ERVLET#ONTEXT,ISTENERINSTANTIATESANDSETSIN
THE3ERVLET#ONTEXTFORTHESERVLETTORETRIEVE

7KH6HUYOHW
4HISCLASSEXTENDS(TTP3ERVLET)TSJOBISTOVERIFY
THATTHELISTENERWORKEDBYGETTINGTHE$OG
ATTRIBUTEFROMTHECONTEXTINVOKINGGET"REED
ONTHE$OGANDPRINTINGTHERESULTTOTHE
RESPONSESOWELLSEEITINTHEBROWSER
0\6HUYOHW&RQWH[W/LVWHQHUMDYD
'RJMDYD

/LVWHQHU7HVWHUMDYD
'RJ6WULQJ
JHW%UHHG
'RJ
LQWHUIDFH!!
6HUYOHW&RQWH[W/LVWHQHU
FRQWH[W,QLWLDOL]HG6HUYOHW&RQWH[W(YHQW
FRQWH[W'HVWUR\HG6HUYOHW&RQWH[W(YHQW
0\6HUYOHW&RQWH[W/LVWHQHU
+WWS6HUYOHW
*HQHULF6HUYOHW
LQWHUIDFH!!
6HUYOHW
GR*HW+WWS6HUYOHW5HTXHVW+WWS6HUYOHW5HVSRQVH
/LVWHQHU7HVWHU
6HUYOHW&RQWH[W/LVWHQHUWXWRULDO
Chapter 5. Being a Web App
Chapter 5. Being a Web App
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.
DWWULEXWHVDQGOLVWHQHUV
\RXDUHKHUH

?ZQ\QVO\PMTQ[\MVMZKTI[[
)TWORKSJUSTLIKEOTHERTYPESOFLISTENERSYOUMIGHT
BEFAMILIARWITHSUCHAS3WING'5)EVENTHANDLERS
2EMEMBERALLWENEEDTODOISGETTHECONTEXTINIT

PARAMETERSTOlNDOUTTHEDOGBREEDMAKETHE$OG
OBJECTANDPUTTHE$OGINTOTHECONTEXTASANATTRIBUTE
SDFNDJHFRPH[DPSOH
LPSRUWMDYD[VHUYOHW
SXEOLFFODVV0\6HUYOHW&RQWH[W/LVWHQHULPSOHPHQWV
6HUYOHW&RQWH[W/LVWHQHU^
SXEOLFYRLG
FRQWH[W,QLWLDOL]HG6HUYOHW&RQWH[W(YHQWHYHQW^
6HUYOHW&RQWH[WVF HYHQWJHW6HUYOHW&RQWH[W
6WULQJGRJ%UHHG VFJHW,QLW3DUDPHWHU³EUHHG´
'RJG QHZ'RJGRJ%UHHG
VFVHW$WWULEXWH³GRJ´G
`
SXEOLFYRLG
FRQWH[W'HVWUR\HG6HUYOHW&RQWH[W(YHQWHYHQW^
QRWKLQJWRGRKHUH
`
`
Implement javax.servlet.ServletContextListener.
Ask the event for the ServletContext.
Use the context to get
the init parameter.
Make a new Dog.
Use the context to set an attribute (a
name/object pair) that is the Dog. Now
other parts of the app will be able to get
the value of the attribute (the Dog).
We donÕt need anything here. The Dog
doesnÕt need to be cleaned up when the
context goes away, it means the whole

app is going down, including the Dog.
LQWHUIDFH!!
6HUYOHW&RQWH[W/LVWHQHU
FRQWH[W,QLWLDOL]HG6HUYOHW&RQWH[W(YHQW
FRQWH[W'HVWUR\HG6HUYOHW&RQWH[W(YHQW
0\6HUYOHW&RQWH[W/LVWHQHU
Chapter 5. Being a Web App
Chapter 5. Being a Web App
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
?ZQ\QVO\PMI\\ZQJ]\MKTI[[,WO
/HYEAHWENEEDA$OGCLASSTHECLASSREPRESENTING
THEOBJECTWEREGOINGTOSTOREINTHE3ERVLET#ONTEXT
AFTERREADINGTHECONTEXTINITPARAMETERS
SDFNDJHFRPH[DPSOH
SXEOLFFODVV'RJ^
SULYDWH6WULQJEUHHG
SXEOLF'RJ6WULQJEUHHG^
WKLVEUHHG EUHHG
`
SXEOLF6WULQJJHW%UHHG^
UHWXUQEUHHG
`
`
Nothing special here.

Just a plain old Java class.
4

)THOUGHT)READSOMEWHERETHATSERVLETATTRIBUTES
HADTOBE3ERIALIZABLE
$
)NTERESTINGQUESTION4HEREARESEVERALDIFFERENT
ATTRIBUTETYPESANDWHETHERTHEATTRIBUTESHOULDBE
3ERIALIZABLEONLYMATTERSWITH3ESSIONATTRIBUTES!NDTHE
SCENARIOINWHICHITMATTERSISONLYIFTHEAPPLICATIONIS
DISTRIBUTEDACROSSMORETHANONE*6-7ELLTALKALLABOUTTHAT
INTHE3ESSIONSCHAPTER
4HERESNOTECHNICALNEEDTOHAVEANYATTRIBUTESINCLUDING
3ESSIONATTRIBUTESBE3ERIALIZABLEALTHOUGHYOUMIGHT
CONSIDERMAKINGALLOFYOURATTRIBUTES3ERIALIZABLEBYDEFAULT
UNLESSYOUHAVEAREALLYGOODREASON./4TO
4HINKABOUTITAREYOUREALLYCERTAINTHATNOBODYWILLEVER
WANTTOUSEOBJECTSOFTHATTYPEASARGUMENTSORRETURNVALUES
ASPARTOFAREMOTEMETHODCALL#ANYOUREALLYGUARANTEETHAT
ANYONEWHOUSESTHISCLASS$OGINTHISCASEWILLNEVERRUNIN
ADISTRIBUTEDENVIRONMENT
3OALTHOUGHYOUARENTREQUIREDTOMAKEANYATTRIBUTES
3ERIALIZABLEYOUPROBABLYSHOULDIFYOUCAN
(WeÕll use the context init
parameter as the argument for
the Dog constructor.)
Our servlet will get the Dog from the
context (the Dog that the listener sets
as an attribute), call the DogÕs getBreed()
method, and print out the breed in the

response so we can see it in the browser.
WKHDWWULEXWHFODVV
'RJ6WULQJ
JHW%UHHG
'RJ
Chapter 5. Being a Web App
Chapter 5. Being a Web App
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.
DWWULEXWHVDQGOLVWHQHUV
\RXDUHKHUH

?ZQ\QVO\PM[MZ^TM\KTI[[
4HISISTHECLASSTHATTESTSTHE
3ERVLET#ONTEXT,ISTENER)FEVERYTHINGIS
WORKINGRIGHTBYTHETIMETHE3ERVLETS
DO'ETMETHODRUNSFORTHElRSTTIMETHE
$OGWILLBEWAITINGASANATTRIBUTEINTHE
3ERVLET#ONTEXT
SDFNDJHFRPH[DPSOH
LPSRUWMDYD[VHUYOHW
LPSRUWMDYD[VHUYOHWKWWS
LPSRUWMDYDLR
SXEOLFFODVV/LVWHQHU7HVWHU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
RXWSULQWOQ³WHVWFRQWH[WDWWULEXWHVVHWE\OLVWHQHUEU!´

RXWSULQWOQ³EU!´


'RJGRJ 'RJJHW6HUYOHW&RQWH[WJHW$WWULEXWH³GRJ´

RXWSULQWOQ³'RJ¶VEUHHGLV³
GRJJHW%UHHG
`
`
Nothing special so far
just a regular servlet.
Now we get the Dog from
the ServletContext. If
the listener worked, the
Dog will be there BEFORE
this service method is
called for the Þ rst time.
If things didnÕt work, THIS is where
weÕll Þ nd out weÕll get a big fat
NullPointerException if we try to call
getBreed() and thereÕs no Dog.
donÕt forget the cast!!

%XWJHW,QLW3DUDPHWHUUHWXUQVD6WULQJ6R\RX
PXVWFDVWWKHUHWXUQRIJHW$WWULEXWHEXWWKH
UHWXUQRIJHW,QLW3DUDPHWHUFDQEHDVVLJQHG

GLUHFWO\WRD6WULQJ6RGRQ¶WEHIRROHGE\EDG
H[DPFRGHWKDWGRHVQ¶WXVHDFDVW
'RJG FW[JHW$WWULEXWH³GRJ´
$VVXPHFW[LVD6HUYOHW&RQWH[W
JHW$WWULEXWHUHWXUQV
W\SH2EMHFW<RXQHHG
WRFDVWWKHUHWXUQ
+WWS6HUYOHW
GR*HW+WWS6HUYOHW5HTXHVW+WWS6HUYOHW5HVSRQVH
/LVWHQHU7HVWHU
Bad!!
Chapter 5. Being a Web App
Chapter 5. Being a Web App
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
?ZQ\QVO\PM,MXTWaUMV\,M[KZQX\WZ
.OWWETELLTHE#ONTAINERTHATWEHAVEALISTENERFOR
THISAPPUSINGTHELISTENERELEMENT4HISELEMENTIS
SIMPLEITNEEDSONLYTHECLASSNAME4HATSIT
ZHEDSS[POQV ´KWWSMDYDVXQFRP[POQVMHH´
[POQV[VL ´KWWSZZZZRUJ;0/6FKHPDLQVWDQFH´
[VLVFKHPD/RFDWLRQ ´KWWSMDYDVXQFRP[POQVMHHZHEDSSBB[VG´
YHUVLRQ ´´!
VHUYOHW!
VHUYOHWQDPH!/LVWHQHU7HVWHUVHUYOHWQDPH!

VHUYOHWFODVV!FRPH[DPSOH/LVWHQHU7HVWHUVHUYOHWFODVV!
VHUYOHW!

VHUYOHWPDSSLQJ!
VHUYOHWQDPH!/LVWHQHU7HVWHUVHUYOHWQDPH!
XUOSDWWHUQ!/LVWHQ7HVWGRXUOSDWWHUQ!
VHUYOHWPDSSLQJ!
FRQWH[WSDUDP!
SDUDPQDPH!EUHHGSDUDPQDPH!
SDUDPYDOXH!*UHDW'DQHSDUDPYDOXH!
FRQWH[WSDUDP!
OLVWHQHU!
OLVWHQHUFODVV!
FRPH[DPSOH0\6HUYOHW&RQWH[W/LVWHQHU
OLVWHQHUFODVV!
OLVWHQHU!

ZHEDSS!
We need a context init parameter
for the app. The listener needs this
to construct the Dog.
Register this class as a listener. IMPORTANT:
the <listener> element does NOT go
inside a <servlet> element. That wouldnÕt
work because a context listener is for a
ServletContext (which means application-
wide) event. The whole point is to initialize
the app BEFORE any servlets are initialized.
This is the web.xml Þ le
inside the WEB-INF

directory for this web app.
"[POYHU
VLRQ ´´
HQFRGLQJ
´87)´"!
'2&7<3(
ZHE[PO
FRQ¿JXULQJDOLVWHQHULQWKH''
Chapter 5. Being a Web App
Chapter 5. Being a Web App
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.
DWWULEXWHVDQGOLVWHQHUV
\RXDUHKHUH

WKHUH DUH QR
'
XPE 4XHVWLRQV
4

(OLDONHOWAREYOUTELLINGTHE#ONTAINER
THATTHISISALISTENERFOR3ERVLET#ONTEXTEVENTS4HERE
DOESNTSEEMTOBEAN8-,ELEMENTFORLISTENERTYPE
ORANYTHINGTHATSAYSWHATTYPEOFEVENTSTHISLISTENER
ISFOR"UT)NOTICEDYOUHAVEh3ERVLET#ONTEXT,ISTENERv
ASPARTOFTHECLASSNAMEISTHATHOWTHE#ONTAINER
KNOWS"YTHENAMINGCONVENTION

$
.O4HERESNONAMINGCONVENTION7EJUSTDIDIT
THATWAYTOMAKEITPAINFULLYCLEARWHATKINDOFACLASSWE
WROTE4HE#ONTAINERFIGURESITOUTSIMPLYBYINSPECTING
THECLASSANDNOTICINGTHELISTENERINTERFACEORINTERFACES
ALISTENERCANIMPLEMENTMORETHANONELISTENERINTER
FACE
4

$OESTHATMEANTHEREAREOTHERTYPESOFLISTEN
ERSINTHESERVLET!0)
$
9ESTHEREARESEVERALOTHERTYPESOFLISTENERSTHAT
WELLTALKABOUTINAMINUTE
Chapter 5. Being a Web App
Chapter 5. Being a Web App
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
+WUXQTMIVLLMXTWa
,ETSGETITALLWORKING4HESTEPSARE

7KH\¶UHDOOLQWKHVDPHSDFNDJH
&RPSLOHWKHWKUHHFODVVHV

&UHDWHDQHZZHEDSSLQ7RPFDW

N &UHDWHDGLUHFWRU\QDPHGOLVWHQHU7HVWDQGSODFHLW
LQVLGHWKH7RPFDWZHEDSSVGLUHFWRU\
N &UHDWHDGLUHFWRU\QDPHG:(%,1)DQGSODFHLW
LQVLGHWKHOLVWHQHU7HVWGLUHFWRU\
N 3XW\RXUZHE[PO¿OHLQWKH:(%,1)GLUHFWRU\
N 0DNHDFODVVHVGLUHFWRU\LQVLGH:(%,1)
N 0DNHDGLUHFWRU\VWUXFWXUHLQVLGHFODVVHVWKDW
PDWFKHV\RXUSDFNDJHVWUXFWXUHDGLUHFWRU\FDOOHG
FRPWKDWFRQWDLQVH[DPSOH

&RS\\RXUWKUHHFRPSLOHGÀOHVLQWR\RXUZHE
DSSGLUHFWRU\VWUXFWXUHLQ7RPFDW
OLVWHQHU7HVW:(%,1)FODVVHVFRPH[DPSOH'RJFODVV
OLVWHQHU7HVW:(%,1)FODVVHVFRPH[DPSOH/LVWHQHU7HVWHUFODVV
OLVWHQHU7HVW:(%,1)FODVVHVFRPH[DPSOH0\6HUYOHW&RQWH[W/LVWHQHUFODVV
:(%,1)
FODVVHV
OLVWHQHU7HVW
FRP
H[DPSOH





'RJFODVV






0\6HUYOHW&RQWH[W/LVWHQHUFODVV





/LVWHQHU7HVWHUFODVV
"[POYHU
VLRQ ´´
HQFRGLQJ
´87)´"!
'2&7<3(
ZHE[PO
The root of this web app.
This directory must be inside
TomcatÕs ÒwebappsÓ directory.
ZHEDSSV
WRPFDW
Remember: ALL your web apps
go in here (each with its own
directory structure).

3XW\RXUZHE[PO'HSOR\PHQW'HVFULSWRULQWR
WKH:(%,1)GLUHFWRU\IRUWKLVZHEDSS
OLVWHQHU7HVW:(%,1)ZHE[PO

'HSOR\WKHDSSE\VKXWWLQJGRZQDQG
UHVWDUWLQJ7RPFDW
FRPSLOLQJDQGGHSOR\LQJWKHOLVWHQHUWHVW

Chapter 5. Being a Web App
Chapter 5. Being a Web App
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.
DWWULEXWHVDQGOLVWHQHUV
\RXDUHKHUH

<ZaQ\W]\
"RINGUPYOURBROWSERANDLETSHITTHESERVLETDIRECTLY7EDIDNT
BOTHERMAKINGAN(4-,PAGESOWELLACCESSTHESERVLETBYTYPING
INTHE52,FROMTHESERVLETMAPPINGINTHE$$,ISTEN4ESTDO
KWWSORFDOKRVWOLVWHQHU7HVW/LVWHQ7HVWGR
WHVWFRQWH[WDWWULEXWHVVHWE\OLVWHQHU
'RJ·VEUHHGLV*UHDW'DQH
<ZW]JTM[PWW\QVO
)FYOUGETA.ULL0OINTER%XCEPTIONYOUDIDNTGETA$OGBACK
FROMGET!TTRIBUTE#HECKTHE3TRINGNAMEUSEDINSET!TTRIBUTE
ANDMAKESUREITMATCHESTHE3TRINGNAMEYOUREUSINGIN
GET!TTRIBUTE
2ECHECKYOURWEBXMLANDMAKESURETHELISTENERISREGISTERED
4RYLOOKINGATTHESERVERLOGSANDSEEIFYOUCANlNDOUTIFTHE
LISTENERISACTUALLYBEINGCALLED
4OMAKEITASCONFUSINGASPOSSIBLEWEGAVEEVERYTHINGASUBTLY
DIFFERENTNAME7EWANTTOMAKESUREYOUREPAYINGATTENTIONTO
HOWTHESENAMESAREUSEDANDWHENYOUNAMEEVERYTHINGTHE
SAMEITSTOUGHTOTELLHOWTHENAMESAFFECTYOURAPP
3ERVLETCLASSNAME,ISTENER4ESTERCLASS

7EBAPPDIRECTORYNAMELISTENER4EST
52,PATTERNMAPPEDTOTHISTHESERVLET,ISTEN4ESTDO
Be careful about whether itÕs
Listener or Listen, Tester or Test.
It must have worked! The servlet
called a method on the Dog attribute
that was set by the listener.
Chapter 5. Being a Web App
Chapter 5. Being a Web App
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.

×