FKDSWHU
3267
%HHUY6HOHFW%HHUGR
+773
+RVWZZZZLFNHGO\VPDUWFRP
8VHU$JHQW0R]LOOD0DFLQWRVK8
33&0DF26;0DFK2HQ86UY
*HFNR1HWVFDSH
$FFHSWWH[W[PODSSOLFDWLRQ
[PODSSOLFDWLRQ[KWPO[POWH[W
KWPOT WH[WSODLQT YLGHR[
PQJLPDJHSQJLPDJHMSHJLPDJH
JLIT T
'LDQHÀOOVRXWWKHIRUPDQGKLWVVXEPLW7KHEURZVHU
JHQHUDWHVWKHUHTXHVW85/
%HHUY6HOHFW%HHUGR
The web app
context root.
The logical resource name.
&RQWDLQHU
&OLHQW
7KH&RQWDLQHUVHDUFKHVWKH''
DQGÀQGVDVHUYOHWPDSSLQJ!
ZLWKDXUOSDWWHUQ!WKDW
PDWFKHV
6HOHFW%HHUGRZKHUH
WKHVODVKUHSUHVHQWVWKH
FRQWH[WURRWRIWKHZHEDSSDQG
6HOHFW%HHUGRLVWKH
ORJLFDO
QDPH
RIDUHVRXUFH
&RQWDLQHU
ZHEDSS!
VHUYOHW!
VHUYOHWQDPH!
&K%HHU
VHUYOHWQDPH!
VHUYOHWFODVV!
FRPH[DPSOHZHE%HHU6HOHFW
VHUYOHWFODVV!
VHUYOHW!
VHUYOHWPDSSLQJ!
VHUYOHWQDPH!
&K%HHU
VHUYOHWQDPH!
XUOSDWWHUQ!
6HOHFW%HHUGR
XUOSDWWHUQ!
VHUYOHWPDSSLQJ!
ZHEDSS!
&RQWDLQHU
7KH&RQWDLQHUVHHVWKDWWKHVHUYOHW
QDPH!IRUWKLVXUOSDWWHUQ!LV´&K
%HHUµ%XWWKDWLVQ·WWKHQDPHRIDQ
DFWXDOVHUYOHWFODVVÀOH´&K%HHUµLV
WKHQDPHRID
VHUYOHW
QRWDVHUYOHW
FODVV
7RWKH&RQWDLQHUDVHUYOHWLVVRPHWKLQJ
QDPHGLQWKH''XQGHUDVHUYOHW!WDJ
7KHQDPHRIWKHVHUYOHWLVVLPSO\WKH
QDPHXVHGLQWKH''VRWKDWRWKHU
SDUWVRIWKH''FDQPDSWRLW
5IXXQVO\PMTWOQKITVIUM\WI[MZ^TM\KTI[[NQTM
In the HTML, the Ò/Beer-v1/Ó isnÕt
part of the path. In the HTML, it
just says:
<form method=ÓPOSTÓ
action=ÓSelectBeer.doÓ>
But the browser prepends Ò/Beer-v1/Ó
on to the request, because thatÕs where
the client request is coming from. In
other words, the ÒSelectBeer.doÓ in
the HTML is relative to the URL of
the page its on. In this case, relative to
the root of the web app, Ò/Beer-v1Ó.
The host
server
root.
VHUYOHWPDSSLQJ
Chapter 3. Mini MVC Tutorial
Chapter 3. Mini MVC Tutorial
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.
KDQGVRQ09&
\RXDUHKHUH
ZHEDSS!
VHUYOHW!
VHUYOHWQDPH!
&K%HHU
VHUYOHWQDPH!
VHUYOHWFODVV!
FRPH[DPSOHZHE%HHU6HOHFW
VHUYOHWFODVV!
VHUYOHW!
VHUYOHWPDSSLQJ!
VHUYOHWQDPH!
&K%HHU
VHUYOHWQDPH!
XUOSDWWHUQ!
6HOHFW%HHUGR
XUOSDWWHUQ!
VHUYOHWPDSSLQJ!
ZHEDSS!
H!
E
!
7KH&RQWDLQHUORRNVLQVLGHWKH
VHUYOHW!WDJVIRUVRPHWKLQJZLWK
WKHVHUYOHWQDPH!´&K%HHUµ
7KH&RQWDLQHUXVHVWKH
VHUYOHWFODVV!LQWKHVHUYOHW!
WDJWRNQRZZKLFKVHUYOHWFODVV
LVUHVSRQVLEOHIRUKDQGOLQJWKLV
UHTXHVW,IWKHVHUYOHWKDV
QRWEHHQLQLWLDOL]HGWKHFODVV
LVORDGHGDQGWKHVHUYOHWLV
LQLWLDOL]HG
7KH&RQWDLQHUVWDUWVDQHZWKUHDGWR
KDQGOHWKHUHTXHVWDQGSDVVHVWKH
UHTXHVWWRWKHWKUHDGWRWKHVHUYOHW·V
VHUYLFHPHWKRG
VHUYOHW
7KH&RQWDLQHUVHQGVWKHUHVSRQVHWKURXJKWKH
:HE6HUYHURIFRXUVHEDFNWRWKHFOLHQW
&OLHQW
VHUYOHW
UHTXHVW
+7732.
KWPO!
KHDG!
KHDG!
ERG\!
LPJVUF !
ERG\!
KWPO!
UHVSRQVH
+7732.
KWPO!
KHDG!
KHDG!
ERG\!
LPJVUF !
ERG\!
KWPO!
&RQWDLQHU
&RQWDLQHU
&RQWDLQHU
&RQWDLQHU
QDP
U
Chapter 3. Mini MVC Tutorial
Chapter 3. Mini MVC Tutorial
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
<PMNQZ[\^MZ[QWVWN\PMKWV\ZWTTMZ[MZ^TM\
SDFNDJHFRPH[DPSOHZHE
LPSRUWMDYD[VHUYOHW
LPSRUWMDYD[VHUYOHWKWWS
LPSRUWMDYDLR
SXEOLFFODVV%HHU6HOHFWH[WHQGV+WWS6HUYOHW^
SXEOLFYRLGGR3RVW+WWS6HUYOHW5HTXHVWUHTXHVW
+WWS6HUYOHW5HVSRQVHUHVSRQVH
WKURZV,2([FHSWLRQ6HUYOHW([FHSWLRQ^
UHVSRQVHVHW&RQWHQW7\SH³WH[WKWPO´
3ULQW:ULWHURXW UHVSRQVHJHW:ULWHU
RXWSULQWOQ³%HHU6HOHFWLRQ$GYLFHEU!´
6WULQJF UHTXHVWJHW3DUDPHWHU³FRORU´
RXWSULQWOQ³EU!*RWEHHUFRORU³F
`
`
Be sure you match the
development and deployment
structures we created earlier.
WeÕll use doPost to
handle the HTTP
request, because
the HTML form
says:
method=POST
This method comes from the
ServletResponse interface.
This method comes from the
ServletRequest interface.
Notice that the argument
matches the value of the
ÒnameÓ attribute in the
HTMLÕs <select> tag.
/URPLANISTOBUILDTHESERVLETINSTAGESTESTINGTHEVARIOUSCOMMUNICATION
LINKSASWEGO)NTHEENDREMEMBERTHESERVLETWILLACCEPTAPARAMETERFROM
THEREQUESTINVOKEAMETHODONTHEMODELSAVEINFORMATIONINAPLACETHE
*30CANlNDANDFORWARDTHEREQUESTTOTHE*30"UTFORTHISlRSTVERSIONOUR
GOALISJUSTTOMAKESURETHATTHE(4-,PAGECANPROPERLYINVOKETHESERVLET
ANDTHATTHESERVLETISRECEIVINGTHE(4-,PARAMETERCORRECTLY
HttpServlet extends GenericServlet,
which implements the Servlet interface
LQWHUIDFH!!
MDYD[VHUYOHW6HUYOHW
MDYD[VHUYOHW*HQHULF6HUYOHW
MDYD[VHUYOHWKWWS+WWS6HUYOHW
LQWHUIDFH!!
MDYD[VHUYOHWKWWS+WWS6HUYOHW5HTXHVW
LQWHUIDFH!!
MDYD[VHUYOHW6HUYOHW5HTXHVW
LQWHUIDFH!!
MDYD[VHUYOHWKWWS+WWS6HUYOHW5HVSRQVH
LQWHUIDFH!!
MDYD[VHUYOHW6HUYOHW5HVSRQVH
6HUYOHWFRGH
.H\$3,V
WeÕre not giving back advice
here, just displaying test
information.
VHUYOHWFRQWUROOHUYHUVLRQRQH
Chapter 3. Mini MVC Tutorial
Chapter 3. Mini MVC Tutorial
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.
KDQGVRQ09&
\RXDUHKHUH
/KWEVEBUILTDEPLOYEDANDTESTEDOUR(4-,ANDWEVEBUILTANDDEPLOYEDOUR$$
WELLWEPUTTHEWEBXMLINTOTHEDEPLOYMENTENVIRONMENTBUTTECHNICALLYTHE$$
WONTBEDEPLOYEDUNTILWERESTART4OMCAT.OWITSTIMETOCOMPILETHElRSTVERSIONOF
THESERVLETDEPLOYITANDTESTITVIATHE(4-,FORM.OWWELLRESTART4OMCATTOMAKE
SURETHATIThSEESvTHEWEBXMLANDSERVLETCLASS
+WUXQTQVOLMXTWaQVOIVL\M[\QVO\PMKWV\ZWTTMZ[MZ^TM\
&RPSLOLQJWKHVHUYOHW
&RPSLOHWKHVHUYOHWZLWKWKHGÀDJWRSXWWKHFODVVLQWKHGHYHORSPHQWHQYLURQPHQW
Adjust this to match your own directory path to your system!
Everything after Òtomcat/Ó will be the same.
Use the -d option to tell the compiler to put the .class Þ le
into the classes directory within the correct package structure.
Your .class Þ le will end up in /beerV1/classes/com/example/web/.
'HSOR\LQJWKHVHUYOHW
7RGHSOR\WKHVHUYOHWPDNHDFRS\RIWKHFODVV¿OHDQGPRYHLWWRWKH
%HHUY:(%,1)FODVVHVFRPH[DPSOHZHEGLUHFWRU\LQWKHGHSOR\PHQWVWUXFWXUH
7HVWLQJWKHVHUYOHW
5HVWDUWWRPFDW
/DXQFK\RXUEURZVHUDQGJRWR
KWWSORFDOKRVW%HHUYIRUPKWPO
6HOHFWDEHHUFRORUDQGKLW³6XEPLW´
,I\RXUVHUYOHWLVZRUNLQJ\RXVKRXOG
VHHWKHVHUYOHW¶VUHVSRQVHLQ\RXUEURZVHU
DVVRPHWKLQJOLNH
%HHU6HOHFWLRQ$GYLFH
*RWEHHUFRORUEURZQ
FG0\3URMHFWVEHHU9
MDYDFFODVVSDWK8VHUVEHUW$SSOLFDWLRQVWRPFDWFRPPRQOLE
VHUYOHWDSLMDUFODVVHVGFODVVHVVUFFRPH[DPSOHZHE%HHU6HOHFWMDYD
)LOH(GLW:LQGRZ+HOS8SGDWH%UDLQ
FGWRPFDW
ELQVKXWGRZQVK
ELQVWDUWXSVK
)LOH(GLW:LQGRZ+HOS6ODVKGRW0H
ZHEDSSV
%HHUY
:(%,1)
ZHE
FODVVHV
FRP
H[DPSOH
%HHU6HOHFWFODVV
WRPFDW
KWWSORFDOKRVW%HHUYIRUPKWPO
Chapter 3. Mini MVC Tutorial
Chapter 3. Mini MVC Tutorial
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
*]QTLQVOIVL\M[\QVO\PMUWLMTKTI[[
)N-6#THEMODELTENDSTOBETHEhBACKENDvOFTHEAPPLICATION)TSOFTENTHELEGACYSYSTEM
THATSNOWBEINGEXPOSEDTOTHEWEB)NMOSTCASESITSJUSTPLAINOLD*AVACODEWITHNO
KNOWLEDGEOFTHEFACTTHATITMIGHTBECALLEDBYSERVLETS4HEMODELSHOULDNTBETIEDDOWN
TOBEINGUSEDBYONLYASINGLEWEBAPPSOITSHOULDBEINITSOWNUTILITYPACKAGES
7KHVSHFVIRUWKHPRGHO
,WVSDFNDJHVKRXOGEHFRPH[DPSOHPRGHO
,WVGLUHFWRU\VWUXFWXUHVKRXOGEH:(%,1)FODVVHVFRPPRGHO
,WH[SRVHVRQHPHWKRGJHW%UDQGVWKDWWDNHVDSUHIHUUHGEHHUFRORUDVD
6WULQJDQGUHWXUQVDQ$UUD\/LVWRIUHFRPPHQGHGEHHUEUDQGVDOVRDV6WULQJV
%XLOGWKHWHVWFODVVIRUWKHPRGHO
&UHDWHWKHWHVWFODVVIRUWKHPRGHO\HVEHIRUH\RXEXLOGWKHPRGHOLWVHOI<RX¶UHRQ
\RXURZQKHUHZHGRQ¶WKDYHRQHLQWKLVWXWRULDO5HPHPEHUWKHPRGHOZLOOVWLOOEHLQWKH
GHYHORSPHQWHQYLURQPHQWZKHQ\RX¿UVWWHVWLW²LW¶VMXVWOLNHDQ\RWKHU-DYDFODVVDQG
\RXFDQWHVWLWZLWKRXW7RPFDW
%XLOGDQGWHVWWKHPRGHO
0RGHOVFDQEHH[WUHPHO\FRPSOLFDWHG7KH\RIWHQLQYROYHFRQQHFWLRQVWROHJDF\
GDWDEDVHVDQGFDOOVWRFRPSOH[EXVLQHVVORJLF+HUH¶VRXUVRSKLVWLFDWHGUXOH
EDVHGH[SHUWV\VWHPIRUWKHEHHUDGYLFH
SDFNDJHFRPH[DPSOHPRGHO
LPSRUWMDYDXWLO
SXEOLFFODVV%HHU([SHUW^
SXEOLF/LVWJHW%UDQGV6WULQJFRORU^
/LVWEUDQGV QHZ$UUD\/LVW
LIFRORUHTXDOV³DPEHU´^
EUDQGVDGG³-DFN$PEHU´
EUDQGVDGG³5HG0RRVH´
`
HOVH^
EUDQGVDGG³-DLO3DOH$OH´
EUDQGVDGG³*RXW6WRXW´
`
UHWXUQEUDQGV
`
`
Notice how weÕve captured complex,
expert knowledge of the beer paradigm
using advanced conditional expressions.
FGEHHU9
MDYDFFODVVSDWK8VHUVEHUW$SSOLFDWLRQVWRPFDWFRPPRQOLE
VHUYOHWDSLMDUFODVVHVGFODVVHVVUFFRPH[DPSOHPRGHO%HHU([SHUWMDYD
)LOH(GLW:LQGRZ+HOS6NDWHERDUG
DonÕt forget to change this to use
YOUR speciÞc path to the tomcat home.
WKHPRGHOFODVV
Chapter 3. Mini MVC Tutorial
Chapter 3. Mini MVC Tutorial
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.
KDQGVRQ09&
\RXDUHKHUH
-VPIVKQVO\PM[MZ^TM\\WKITT\PMUWLMT
[W\PI\_MKIVOM\:-)4IL^QKM
)NTHISVERSIONTWOSERVLETWELLENHANCETHEDO0OSTMETHODTO
CALLTHEMODELFORADVICEVERSIONTHREEWILLMAKETHEADVICECOME
FROMA*304HECODECHANGESARETRIVIALBUTTHEIMPORTANTPARTIS
UNDERSTANDINGTHEREDEPLOYMENTOFTHEENHANCEDWEBAPP9OUCAN
TRYTOWRITETHECODERECOMPILEANDDEPLOYONYOUROWNORYOU
CANTURNTHEPAGEANDFOLLOWALONG
(QKDQFHWKHVHUYOHWYHUVLRQWZR
)RUJHWDERXWVHUYOHWVIRUDPLQXWHOHW·VMXVWWKLQN-DYD:KDW
DUHWKHVWHSVZHKDYHWRWDNHWRDFFRPSOLVKWKHIROORZLQJ"
(QKDQFHWKHGR3RVWPHWKRGWRFDOOWKHPRGHO
&RPSLOHWKHVHUYOHW
'HSOR\DQGWHVWWKHXSGDWHGZHEDSS
6KDUSHQ \RXU SHQFLO
public class BeerSelect extends HttpServlet {
Chapter 3. Mini MVC Tutorial
Chapter 3. Mini MVC Tutorial
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
SDFNDJHFRPH[DPSOHZHE
LPSRUWFRPH[DPSOHPRGHO
LPSRUWMDYD[VHUYOHW
LPSRUWMDYD[VHUYOHWKWWS
LPSRUWMDYDLR
LPSRUWMDYDXWLO
SXEOLFFODVV%HHU6HOHFWH[WHQGV+WWS6HUYOHW^
SXEOLFYRLGGR3RVW+WWS6HUYOHW5HTXHVWUHTXHVW
+WWS6HUYOHW5HVSRQVHUHVSRQVH
WKURZV,2([FHSWLRQ6HUYOHW([FHSWLRQ^
UHVSRQVHVHW&RQWHQW7\SH³WH[WKWPO´
3ULQW:ULWHURXW UHVSRQVHJHW:ULWHU
RXWSULQWOQ³%HHU6HOHFWLRQ$GYLFHEU!´
6WULQJF UHTXHVWJHW3DUDPHWHU³FRORU´
%HHU([SHUWEH QHZ%HHU([SHUW
/LVWUHVXOW EHJHW%UDQGVF
,WHUDWRULW UHVXOWLWHUDWRU
ZKLOHLWKDV1H[W^
RXWSULQW³EU!WU\³LWQH[W
`
`
`
;MZ^TM\^MZ[QWV\_WKWLM
2EMEMBERTHEMODELISJUSTPLAINOLD*AVASOWECALLITLIKEWEDCALLANY
OTHER*AVAMETHODINSTANTIATETHEMODELCLASSANDCALLITSMETHOD
Instantiate the BeerExpert
class and call getBrands().
Print out the advice (beer brand
items in the ArrayList returned
from the model). In the Þnal (third)
version, the advice will be printed
from a JSP instead of the servlet.
DonÕt forget the import for the
package that BeerExpert is in.
WeÕre modifying the original servlet,
not making a new class.
FDOOLQJWKHPRGHOIURPWKHVHUYOHWFRQWUROOHU
Chapter 3. Mini MVC Tutorial
Chapter 3. Mini MVC Tutorial
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.
KDQGVRQ09&
\RXDUHKHUH
3Ma[\MX[NWZ[MZ^TM\^MZ[QWV\_W
7EHAVETWOMAINTHINGSTODORECOMPILETHESERVLETAND
DEPLOYTHEMODELCLASS
:H¶OOXVHWKHVDPHFRPSLOHUFRPPDQGWKDWZHXVHG
ZKHQZHEXLOWWKH¿UVWYHUVLRQRIWKHVHUYOHW
&RPSLOLQJWKHVHUYOHW
'HSOR\LQJDQGWHVWLQJWKHZHEDSS
1RZLQDGGLWLRQWRWKHVHUYOHWZHDOVRKDYHWRGHSOR\WKHPRGHO
7KHNH\VWHSVDUH
0RYHDFRS\RIWKHVHUYOHWFODVV¿OHWR
%HHUY:(%,1)FODVVHVFRPH[DPSOHZHE
7KLVUHSODFHVWKHYHUVLRQRQHVHUYOHWFODVV¿OH
0RYHDFRS\RIWKHPRGHO¶VFODVV¿OHWR
%HHUY:(%,1)FODVVHVFRPH[DPSOHPRGHO
6KXWGRZQDQGUHVWDUWWRPFDW
7HVWWKHDSSYLDIRUPKWPO
WKH¿QDOEURZVHURXWSXWVKRXOGEH
VRPHWKLQJOLNH
%HHU6HOHFWLRQ$GYLFH
WU\-DFN$PEHU
WU\5HG0RRVH
FGEHHU9
MDYDFFODVVSDWK8VHUVEHUW$SSOLFDWLRQVWRPFDWFRPPRQOLE
VHUYOHWDSLMDUFODVVHVGFODVVHVVUFFRPH[DPSOHZHE%HHU6HOHFWMDYD
)LOH(GLW:LQGRZ+HOS3OD\*R
ZHEDSSV
%HHUY
:(%,1)
ZHE
FODVVHV
FRP
H[DPSOH
%HHU6HOHFWFODVV
WRPFDW
PRGHO
%HHU([SHUWFODVV
FGWRPFDW
ELQVKXWGRZQVK
ELQVWDUWXSVK
)LOH(GLW:LQGRZ+HOS6HOO+LJK
KWWSORFDOKRVW%HHUYIRUPKWPO
Chapter 3. Mini MVC Tutorial
Chapter 3. Mini MVC Tutorial
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
%HHU([SHUW
FRP
S
RQHQ
W
%HHU([SHUW
FRPSRQHQW
:M^QM_\PMXIZ\QITTaKWUXTM\ML5>+
JMMZIL^QKM_MJIXXTQKI\QWV
:KDW·VZRUNLQJVRIDU
:KDWZH:$17
&O
LH
Q
W
7KHEURZVHUVHQGVWKH
UHTXHVWGDWDWRWKH&RQWDLQHU
7KH&RQWDLQHUILQGVWKH
FRUUHFWVHUYOHWEDVHGRQWKH
85/DQGSDVVHVWKHUHTXHVWWR
WKHVHUYOHW
7KHVHUYOHWFDOOVWKH
%HHU([SHUWIRUKHOS
7KHH[SHUWFODVVUHWXUQVDQ
DQVZHUZKLFKWKHVHUYOHWDGGV
WRWKHUHTXHVWREMHFW
7KHVHUYOHWIRUZDUGVWKH
UHTXHVWWRWKH-63
7KH-63JHWVWKHDQVZHU
IURPWKHUHTXHVWREMHFW
7KH-63JHQHUDWHVDSDJH
IRUWKH&RQWDLQHU
7KH&RQWDLQHUUHWXUQVWKH
SDJHWRWKHKDSS\XVHU
&RQWDLQHU
UHTXHVW
KWPO!
KHDG!
KHDG!
ERG\!
ERG\!
KWPO!
UHVXOWMVS
VHUYOHW
&OLHQW
:HE
EURZVHU
7KHEURZVHUVHQGVWKH
UHTXHVWGDWDWRWKH&RQWDLQHU
7KH&RQWDLQHUILQGVWKH
FRUUHFWVHUYOHWEDVHGRQWKH
85/DQGSDVVHVWKHUHTXHVWWR
WKHVHUYOHW
7KHVHUYOHWFDOOVWKH
%HHU([SHUWIRUKHOS
7KHVHUYOHWRXWSXWVWKH
UHVSRQVHZKLFKSULQWVWKH
DGYLFH
7KH&RQWDLQHUUHWXUQVWKH
SDJHWRWKHKDSS\XVHU
&RQWDLQHU
ORJLF
&RQWDLQHU
VHUYOHW
WKH09&DSS
Chapter 3. Mini MVC Tutorial
Chapter 3. Mini MVC Tutorial
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.
KDQGVRQ09&
\RXDUHKHUH
#SDJHLPSRUW ´MDYDXWLO´!
KWPO!
ERG\!
KDOLJQ ´FHQWHU´!%HHU5HFRPPHQGDWLRQV-63K!
S!
/LVWVW\OHV /LVWUHTXHVWJHW$WWULEXWH³VW\OHV´
,WHUDWRULW VW\OHVLWHUDWRU
ZKLOHLWKDV1H[W^
RXWSULQW³EU!WU\³LWQH[W
`
!
ERG\!
KWPO!
+ZMI\M\PM2;8¹^QM_º\PI\OQ^M[\PMIL^QKM
$ONTGETYOURHOPESUP9OUREGOINGTOHAVETOWAITFORAFEW
CHAPTERSBEFOREWEREALLYSTARTTALKINGABOUT*30S4HIS*30ISNT
ACTUALLYAPARTICULARLYGOODONEEITHERBECAUSEOFITSSCRIPTLETCODE
WHICHWELLTALKABOUTLATERINTHEBOOK&ORNOWITSHOULDBEPRETTY
EASYTOREADANDIFYOUWANTTOEXPERIMENTALITTLEGOFORIT!LTHOUGH
WECOULDTESTTHIS*30NOWFROMTHEBROWSERWELLWAITUNTILAFTERWE
MODIFYTHESERVLETVERSIONTHREETOSEEIFITWORKS
This is a Òpage directiveÓ
(weÕre thinking itÕs pretty
obvious what this one does).
Some standard Java sitting
inside <% %> tags (this is
known as scriptlet code).
Some standard HTML (which is known as
Òtemplate textÓ in the JSP world).
+HUH·VWKH-63
Here weÕre getting an attribute
from the request object. A
little later in the book, weÕll
explain everything about
attributes and how we managed
to get the request object
'HSOR\LQJWKH-63
:HGRQ¶WFRPSLOHWKH-63WKH&RQWDLQHUGRHVWKDWDW¿UVWUHTXHVW
%XWZHGRKDYHWR
1DPHLW³UHVXOWMVS´
6DYHLWLQWKHGHYHORSPHQWHQYLURQPHQWLQZHE
0RYHDFRS\RILWWRWKHGHSOR\PHQWHQYLURQPHQWLQ%HHUY
ZHEDSSV
%HHUY
WRPFDW
!
UHVXOWMVS
KWPO!
ERG\!
ERG\!
KWPO!
IRUPKWPO
Chapter 3. Mini MVC Tutorial
Chapter 3. Mini MVC Tutorial
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
%HHU([SHUW
F
RPSRQHQ
W
-VPIVKQVO\PM[MZ^TM\\W¹KITTº\PM2;8^MZ[QWV\PZMM
)NTHISSTEPWEREGOINGTOMODIFYTHESERVLETTOhCALLvTHE*30TOPRODUCETHEOUTPUT
VIEW4HE#ONTAINERPROVIDESAMECHANISMCALLEDhREQUESTDISPATCHINGvTHAT
ALLOWSONE#ONTAINERMANAGEDCOMPONENTTOCALLANOTHERANDTHATSWHATWELL
USETHESERVLETWILLGETTHEINFOFROMTHEMODELSAVEITINTHEREQUESTOBJECTTHEN
DISPATCHTHEREQUESTTOTHE*30
7KHLPSRUWDQWFKDQJHVZHPXVW
PDNHWRWKHVHUYOHW
$GGWKHPRGHOFRPSRQHQW¶VDQVZHUWRWKHUHTXHVWREMHFWVRWKDW
WKH-63FDQDFFHVVLW6WHS
$VNWKH&RQWDLQHUWRIRUZDUGWKHUHTXHVWWR³UHVXOWMVS´6WHS
&
O
LH
Q
W
7KHEURZVHUVHQGVWKH
UHTXHVWGDWDWRWKHFRQWDLQHU
7KH&RQWDLQHUILQGVWKH
FRUUHFWVHUYOHWEDVHGRQWKH
85/DQGSDVVHVWKHUHTXHVWWR
WKHVHUYOHW
7KHVHUYOHWFDOOVWKH
%HHU([SHUWIRUKHOS
7KHH[SHUWFODVVUHWXUQVDQ
DQVZHUZKLFKWKHVHUYOHWDGGV
WRWKHUHTXHVWREMHFW
7KHVHUYOHWGLVSDWFKHVWR
WKH-63
7KH-63JHWVWKHDQVZHU
IURPWKHUHTXHVWREMHFW
7KH-63JHQHUDWHVDSDJH
IRUWKH&RQWDLQHU
7KH&RQWDLQHUUHWXUQVWKH
SDJHWRWKHKDSS\XVHU
&RQWDLQHU
UHTXHVW
KWPO
!
K
HDG!
KHD
G
ERG
\
!
ERG\!
KWPO!
UHVXOWMVS
VHUYOHW
GLVSDWFKLQJDUHTXHVWWRD-63
Chapter 3. Mini MVC Tutorial
Chapter 3. Mini MVC Tutorial
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.
KDQGVRQ09&
\RXDUHKHUH
SDFNDJHFRPH[DPSOHZHE
LPSRUWFRPH[DPSOHPRGHO
LPSRUWMDYD[VHUYOHW
LPSRUWMDYD[VHUYOHWKWWS
LPSRUWMDYDLR
LPSRUWMDYDXWLO
SXEOLFFODVV%HHU6HOHFWH[WHQGV+WWS6HUYOHW^
SXEOLFYRLGGR3RVW+WWS6HUYOHW5HTXHVWUHTXHVW
+WWS6HUYOHW5HVSRQVHUHVSRQVH
WKURZV,2([FHSWLRQ6HUYOHW([FHSWLRQ^
UHVSRQVHVHW&RQWHQW7\SH³WH[WKWPO´
UHPRYHWKHROGWHVWRXWSXW
3ULQW:ULWHURXW UHVSRQVHJHW:ULWHU
RXWSULQWOQ³%HHU6HOHFWLRQ$GYLFHEU!´
6WULQJF UHTXHVWJHW3DUDPHWHU³FRORU´
RXWSULQWOQ³EU!*RWEHHUFRORU³F
%HHU([SHUWEH QHZ%HHU([SHUW
/LVWUHVXOW EHJHW%UDQGVF
UHTXHVWVHW$WWULEXWH³VW\OHV´UHVXOW
5HTXHVW'LVSDWFKHUYLHZ
UHTXHVWJHW5HTXHVW'LVSDWFKHU³UHVXOWMVS´
YLHZIRUZDUGUHTXHVWUHVSRQVH
`
`
+WLMNWZ[MZ^TM\^MZ[QWV\PZMM
(ERESHOWWEMODIlEDTHESERVLETTOADDTHEMODEL
COMPONENTSANSWERTOTHEREQUESTOBJECTSOTHE*30
CANRETRIEVEITANDHOWWEASKEDTHE#ONTAINERTO
DISPATCHTOTHE*30
Use the request dispatcher to ask
the Container to crank up the JSP,
sending it the request and response.
Now that the JSP is going to
produce the output, we should
remove the test output from the
servlet. We commented it out so
that you could still see it here.
Add an attribute to the request
object for the JSP to use. Notice
the JSP is looking for ÒstylesÓ.
Instantiate a request
dispatcher for the JSP.
Chapter 3. Mini MVC Tutorial
Chapter 3. Mini MVC Tutorial
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
+WUXQTMLMXTWaIVL\M[\\PMNQVITIXX
)NTHISCHAPTERWEVEBUILTANENTIREALBEITTINY-6#APPLICATION
USING(4-,SERVLETSAND*30S9OUCANADDTHISTOYOURRESUME
:H¶OOXVHWKHVDPHFRPSLOHUFRPPDQGWKDWZHXVHGHDUOLHU
&RPSLOLQJWKHVHUYOHW
'HSOR\LQJDQGWHVWLQJWKHZHEDSS
1RZLW¶VWLPHWRUHGSOR\WKHVHUYOHW
0RYHDFRS\RIWKHVHUYOHW¶VFODVV¿OHWR%HHUY:(%,1)FODVVHVFRPH[DPSOHZHE
DJDLQWKLVZLOOUHSODFHWKHSUHYLRXVYHUVLRQWZRFODVV¿OH
6KXWGRZQDQGUHVWDUWWRPFDW
7HVWWKHDSSYLDIRUPKWPO
FGEHHU9
MDYDFFODVVSDWK8VHUVEHUW$SSOLFDWLRQVWRPFDWFRPPRQOLE
VHUYOHWDSLMDUFODVVHVGFODVVHVVUFFRPH[DPSOHZHE%HHU6HOHFWMDYD
)LOH(GLW:LQGRZ+HOS5XQ,WV$7UDS
FGWRPFDW
ELQVKXWGRZQVK
ELQVWDUWXSVK
)LOH(GLW:LQGRZ+HOS6DYH<RXUVHOI
KWWSORFDOKRVW%HHUYIRUPKWPO
%HHU5HFRPPHQGDWLRQV-63
WU\-DFN·V3DOH$OH
WU\*RXW6WRXW
HereÕs what you should see!
FRPSLOHGHSOR\DQGWHVW
Chapter 3. Mini MVC Tutorial
Chapter 3. Mini MVC Tutorial
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.
KDQGVRQ09&
\RXDUHKHUH
2. VR QRZ KH FDQ GR DQ09&
DSSEXWKHVWLOOKDVQRFOXHKRZWRXVH
WKH-63H[SUHVVLRQODQJXDJHRU-67/
RUZULWHDFXVWRPWDJRUXVHDÀOWHUDQG,
FDXJKWKLPSOD\LQJD:HH]HU&'DQGLWZDV
$)7(5WKHJUHHQDOEXP+HVWLOOKDV62
PXFKWROHDUQ
<PMZMQ[[\QTT[WU]KP\WTMIZV
4HEPARTYSOVER9OUHADTHREEWHOLECHAPTERSTOCRUISEALONGWRITEALITTLE
CODEREVIEWTHEWHOLE(440REQUESTRESPONSETHING
"UTTHERESSTILLMOCKEXAMQUESTIONSWAITINGFORYOUINTHISBOOKAND
THEYSTARTWITHTHENEXTCHAPTER5NLESSYOUREALREADYFAMILIARWITHSERVLET
DEVELOPMENTANDDEPLOYMENTYOUREALLYSHOULDNTTURNTHEPAGEUNTILAFTER
YOUACTUALLYDOTHETUTORIALINTHISCHAPTER
.OTTHATWERETRYINGTOPRESSUREYOUORGUILTTRIPYOUORANYTHING
Chapter 3. Mini MVC Tutorial
Chapter 3. Mini MVC Tutorial
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.
WKLVLVDQHZFKDSWHU
6HUYOHWVOLYHWRVHUYLFHFOLHQWV$VHUYOHW¶VMRELVWRWDNHDFOLHQW¶V
UHTXHVWDQGVHQGEDFNDUHVSRQVH7KHUHTXHVWPLJKWEHVLPSOH³JHWPHWKH
:HOFRPHSDJH´2ULWPLJKWEHFRPSOH[³&RPSOHWHP\VKRSSLQJFDUWFKHFNRXW´
7KHUHTXHVWFDUULHVFUXFLDOGDWDDQG\RXUVHUYOHWFRGHKDVWRNQRZKRZWR¿ Q G
LWDQGKRZWRXVHLW7KHUHVSRQVHFDUULHVWKHLQIRWKHEURZVHUQHHGVWRUHQGHU
DSDJHRUGRZQORDGE\WHVDQG\RXUVHUYOHWFRGHKDVWRNQRZKRZWRVHQGLW
2UQRW\RXUVHUYOHWFDQGHFLGHWRSDVVWKHUHTXHVWWRVRPHWKLQJHOVHDQRWKHU
SDJHVHUYOHWRU-63LQVWHDG
%HLQJD6HUYOHW
UHTXHVW$1'UHVSRQVH
+HXVHGD*(7
UHTXHVWWRXSGDWHWKH
GDWDEDVH7KHSXQLVKPHQWZLOO
EHPRVWVHYHUHQR´<RJD
ZLWK6X]\µFODVVHVIRU
GD\V
Chapter 4. Being a Servlet
Chapter 4. Being a Servlet
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
)RUHDFKRIWKH+7730HWKRGVVXFKDV
*(73267+($'DQGVRRQGHVFULEH
WKHSXUSRVHRIWKHPHWKRGDQGWKHWHFKQLFDO
FKDUDFWHULVWLFVRIWKH+7730HWKRGSURWRFRO
OLVWWULJJHUVWKDWPLJKWFDXVHDFOLHQWXVXDOO\D
:HEEURZVHUWRXVHWKH0HWKRGDQGLGHQWLI\
WKH+WWS6HUYOHWPHWKRGWKDWFRUUHVSRQGVWRWKH
+7730HWKRG
7KH6HUYOHW7HFKQRORJ\0RGHO
RI¿FLDO6XQH[DPREMHFWLYHV
8VLQJWKH+WWS6HUYOHW5HTXHVWLQWHUIDFHZULWH
FRGHWRUHWULHYH+70/IRUPSDUDPHWHUVIURP
WKHUHTXHVWUHWULHYH+773UHTXHVWKHDGHU
LQIRUPDWLRQRUUHWULHYHFRRNLHVIURPWKH
UHTXHVW
8VLQJWKH+WWS6HUYOHW5HVSRQVHLQWHUIDFHZULWH
FRGHWRVHWDQ+773UHVSRQVHKHDGHUVHW
WKHFRQWHQWW\SHRIWKHUHVSRQVHDFTXLUHD
WH[WVWUHDPIRUWKHUHVSRQVHDFTXLUHDELQDU\
VWUHDPIRUWKHUHVSRQVHUHGLUHFWDQ+773
UHTXHVWWRDQRWKHU85/RUDGGFRRNLHVWRWKH
UHVSRQVH
'HVFULEHWKHSXUSRVHDQGHYHQWVHTXHQFHRI
WKHVHUYOHWOLIHF\FOHVHUYOHWFODVVORDGLQJ
VHUYOHWLQVWDQWLDWLRQFDOOWKHLQLW
PHWKRGFDOOWKHVHUYLFHPHWKRGDQG
FDOOWKHGHVWUR\PHWKRG
:HZRQ·WVD\PXFKDERXWWKHREMHFWLYHV
UHODWHGWRFRRNLHVXQWLOWKH6HVVLRQVFKDSWHU
!LLOFTHEOBJECTIVESINTHISSECTIONARECOVERED
COMPLETELYINTHISCHAPTERWITHTHEEXCEPTION
OFTHECOOKIESPARTOFOBJECTIVE!LOTOF
THECONTENTINTHISCHAPTERWASTOUCHEDON
INCHAPTERTWOBUTINCHAPTERTWOWESAID
h$ONTWORRYABOUTMEMORIZINGITv
)NTHISCHAPTERYOU$/HAVETOSLOWDOWN
REALLYSTUDYANDMEMORIZETHECONTENT.O
OTHERCHAPTERWILLCOVERTHESEOBJECTIVESIN
DETAILSOTHISISIT
$OTHEEXERCISESINTHECHAPTERREVIEWTHE
MATERIALTHENTAKEYOURlRSTMOCKEXAMAT
THEENDOFTHECHAPTER)FYOUDONTGETATLEAST
CORRECTGOBACKTHROUGHTHECHAPTERTO
lGUREOUTWHATYOUMISSED"%&/2%YOU
MOVEONTOCHAPTERlVE
3OMEOFTHEMOCKEXAMQUESTIONSTHATBELONG
WITHTHESEOBJECTIVESHAVEBEENMOVEDINTO
CHAPTERSANDBECAUSETHEQUESTIONS
REQUIRESADDITIONALKNOWLEDGEOFSOMEOFTHE
TOPICSWEDONTCOVERUNTILTHOSECHAPTERS4HAT
MEANSTHEREAREFEWERMOCKEXAMQUESTIONS
INTHISCHAPTERANDMOREINLATERCHAPTERSTO
AVOIDTESTINGYOUONTOPICSYOUHAVENTCOVERED
)MPORTANTNOTEWHILETHElRSTTHREECHAPTERS
COVEREDBACKGROUNDINFORMATIONFROMTHIS
PAGEFORWARDINTHEBOOKVIRTUALLYEVERYTHING
YOUREGOINGTOSEEISDIRECTLYRELATEDTOOR
EXPLICITLYPARTOFTHEEXAM
&RYHUDJH1RWHV
Chapter 4. Being a Servlet
Chapter 4. Being a Servlet
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.
Copyright Safari Books Online #747221
UHTXHVWDQGUHVSRQVH
\RXDUHKHUH
;MZ^TM\[IZMKWV\ZWTTMLJa\PM+WV\IQVMZ
)NCHAPTERTWOWELOOKEDATTHE#ONTAINERSOVERALLROLEINASERVLETS
LIFEITCREATESTHEREQUESTANDRESPONSEOBJECTSCREATESORALLOCATESANEW
THREADFORTHESERVLETANDCALLSTHESERVLETSSERVICEMETHODPASSINGTHE
REQUESTANDRESPONSEREFERENCESASARGUMENTS(ERESAQUICKREVIEW
&OLHQW
:HE
EURZVHU
8VHUFOLFNVDOLQNWKDWKDVD85/
WRDVHUYOHW
&OLHQW
:HE
EURZVHU
7KH&RQWDLQHU´VHHVµWKDWWKH
UHTXHVWLVIRUDVHUYOHWVRWKH
FRQWDLQHUFUHDWHVWZRREMHFWV
+WWS6HUYOHW5HVSRQVH
+WWS6HUYOHW5HTXHVW
VHUYOHW
&OLHQW
:HE
EURZVHU
7KH&RQWDLQHUILQGVWKHFRUUHFW
VHUYOHWEDVHGRQWKH85/LQWKH
UHTXHVWFUHDWHVRUDOORFDWHV
DWKUHDGIRUWKDWUHTXHVWDQG
FDOOVWKHVHUYOHW·VVHUYLFH
PHWKRGSDVVLQJWKHUHTXHVWDQG
UHVSRQVHREMHFWVDVDUJXPHQWV
FRQWDLQHU
thread
VHUYLFHUHTXHVWUHVSRQVH
VHUYOHW
FRQWDLQHU
UHTXHVW
UHVSRQVH
VHUYOHW
FRQWDLQHU
*(7
Chapter 4. Being a Servlet
Chapter 4. Being a Servlet
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
VHUYOHW
&OLHQW
:HE
EURZVHU
7KHVHUYLFHPHWKRGILJXUHVRXW
ZKLFKVHUYOHWPHWKRGWRFDOOEDVHG
RQWKH+7730HWKRG*(73267
HWFVHQWE\WKHFOLHQW
7KHFOLHQWVHQWDQ+773*(7
UHTXHVWVRWKHVHUYLFHPHWKRG
FDOOVWKHVHUYOHW·VGR*HWPHWKRG
SDVVLQJWKHUHTXHVWDQGUHVSRQVH
REMHFWVDVDUJXPHQWV
FRQWDLQHU
GR*HWUHTXHVWUHVSRQVH
VHUYOHW
&OLHQW
:HE
EURZVHU
7KHVHUYOHWXVHVWKHUHVSRQVH
REMHFWWRZULWHRXWWKHUHVSRQVH
WRWKHFOLHQW7KHUHVSRQVHJRHV
EDFNWKURXJKWKH&RQWDLQHU
FRQWDLQHU
+7732.
KWPO!
KHDG!
KHDG!
ERG\!
LPJVUF !
ERG\!
KWPO!
UHVSRQVH
VHUYOHW
&OLHQW
:HE
EURZVHU
7KHVHUYLFHPHWKRGFRPSOHWHV
VRWKHWKUHDGHLWKHUGLHVRUUHWXUQV
WRD&RQWDLQHUPDQDJHGWKUHDG
SRRO7KHUHTXHVWDQGUHVSRQVH
REMHFWUHIHUHQFHVIDOORXWRIVFRSH
VRWKHVHREMHFWVDUHWRDVWUHDG\
IRUJDUEDJHFROOHFWLRQ
7KHFOLHQWJHWVWKHUHVSRQVH
FRQWDLQHU
UHTXHVW
UHTXHVW
UHVSRQVH
no thread
+7732.
KWPO!
KHDG!
KHDG!
ERG\!
LPJVUF !
ERG\!
KWPO!
6HUYOHWVDQGWKH&RQWDLQHU
<PM[\WZaKWV\QV]M[
Chapter 4. Being a Servlet
Chapter 4. Being a Servlet
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.
UHTXHVWDQGUHVSRQVH
\RXDUHKHUH
*]\\PMZM¼[UWZM\WI[MZ^TM\¼[TQNM
7ESTEPPEDINTOTHEMIDDLEOFTHESERVLETSLIFEBUTTHATSTILLLEAVES
QUESTIONSWHENWASTHESERVLETCLASSLOADED7HENDIDTHESERVLETS
CONSTRUCTORRUN(OWLONGDOESTHESERVLETOBJECTLIVE7HEN
SHOULDYOURSERVLETINITIALIZERESOURCES7HENSHOULDITCLEANUPITS
RESOURCES
4HESERVLETLIFECYCLEISSIMPLETHERESONLYONEMAINSTATEINITIALIZED
)FTHESERVLETISNTINITIALIZEDTHENITSEITHERBEINGINITIALIZEDRUNNING
ITSCONSTRUCTORORINITMETHODBEINGDESTROYEDRUNNINGITSDESTROY
METHODORITSIMPLYDOESNOTEXIST
doGet(),
doPost(), etc.
$6HUYOHWFODVV
/RDGFODVV
&RQWDLQHU
,QVWDQWLDWHVHUYOHWFRQVWUXFWRUUXQV
LQLW
VHUYLFH
GHVWUR\
KDQGOH
FOLHQW
UHTXHVWV
:HE&RQWDLQHU 6HUYOHW&ODVV 6HUYOHW2EMHFW
(Each request runs in a
separate thread.)
Your servlet class no-arg constructor runs
(you should NOT write a constructor; just
use the compiler-supplied default).
Called only ONCE in the servletÕs
life, and must complete before
Container can call service().
Container calls to give the servlet
a chance to clean up before the
servlet is killed (i.e., made ready for
garbage collection). Like init(), itÕs
called only once.
This is where the servlet
spends most of its life.
FRQVWUXFWRU
LQLW
LQLWLDOL]HG
GRHVQRWH[LVW
GHVWUR\
VHUYLFH
LQLWLDOL]HG
LQLWLDOL]HG
Chapter 4. Being a Servlet
Chapter 4. Being a Servlet
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]Z[MZ^TM\QVPMZQ\[\PMTQNMKaKTMUM\PWL[
6HUYOHWLQWHUIDFH
MDYD[VHUYOHW6HUYOHW
GenericServlet is an abstract class that
implements most of the basic servlet
methods youÕll need, including those from
the Servlet interface. You will probably
NEVER extend this class yourself. Most
of your servletÕs Òservlet behaviorÓ comes
from this class.
VHUYLFH6HUYOHW5HTXHVW6HUYOHW5HVSRQVH
LQLW6HUYOHW&RQILJ
GHVWUR\
JHW6HUYOHW&RQILJ
JHW6HUYOHW,QIR
LQWHUIDFH!!
6HUYOHW
*HQHULF6HUYOHWFODVV
MDYD[VHUYOHW*HQHULF6HUYOHW
VHUYLFH6HUYOHW5HTXHVW6HUYOHW5HVSRQVH
LQLW6HUYOHW&RQILJ
LQLW
GHVWUR\
JHW6HUYOHW&RQILJ
JHW6HUYOHW,QIR
JHW,QLW3DUDPHWHU6WULQJ
JHW,QLW3DUDPHWHU1DPHV
JHW6HUYOHW&RQWH[W
ORJ6WULQJ
ORJ6WULQJ7KURZDEOH
*HQHULF6HUYOHW
+WWS6HUYOHWFODVV
MDYD[VHUYOHWKWWS+WWS6HUYOHW
VHUYLFH+WWS6HUYOHW5HTXHVW+WWS6HUYOHW5HVSRQVH
VHUYLFH6HUYOHW5HTXHVW6HUYOHW5HVSRQVH
GR*HW+WWS6HUYOHW5HTXHVW+WWS6HUYOHW5HVSRQVH
GR3RVW+WWS6HUYOHW5HTXHVW+WWS6HUYOHW5HVSRQVH
GR+HDG+WWS6HUYOHW5HTXHVW+WWS6HUYOHW5HVSRQVH
GR2SWLRQV+WWS6HUYOHW5HTXHVW+WWS6HUYOHW5HVSRQVH
GR3XW+WWS6HUYOHW5HTXHVW+WWS6HUYOHW5HVSRQVH
GR7UDFH+WWS6HUYOHW5HTXHVW+WWS6HUYOHW5HVSRQVH
GR'HOHWH+WWS6HUYOHW5HTXHVW+WWS6HUYOHW5HVSRQVH
JHW/DVW0RGLILHG+WWS6HUYOHW5HTXHVW
+WWS6HUYOHW
0\6HUYOHWFODVV
FRPZLFNHGO\VPDUWIRR
HttpServlet (also an abstract class) implements
the service() method to reß ect the HTTPness
of the servlet the service() method doesnÕt
take just ANY old servlet request and response,
but an HTTP-speciÞ c request and response.
The Servlet interface says
that all servlets have these
Þ ve methods (the three in
bold are lifecycle methods).
GR3RVW+WWS6HUYOHW5HTXHVW+WWS6HUYOHW5HVSRQVH
P\%L]0HWKRG
0\6HUYOHW
Most of your servletness is handled by superclass methods.
All you do is override the HTTP methods you need.
NOTE: do NOT try to
memorize all of these
now! Just get a feel for
how the API works
WKH6HUYOHW$3,
Chapter 4. Being a Servlet
Chapter 4. Being a Servlet
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.
UHTXHVWDQGUHVSRQVH
\RXDUHKHUH
<PM<PZMM*QO4QNMKaKTM5WUMV\[
:KHQLW·VFDOOHG
LQLW
7KH&RQWDLQHUFDOOVLQLWRQ
WKHVHUYOHWLQVWDQFHDIWHUWKH
VHUYOHWLQVWDQFHLVFUHDWHGEXW
EHIRUHWKHVHUYOHWFDQVHUYLFH
DQ\FOLHQWUHTXHVWV
:KDWLW·VIRU
*LYHV\RXDFKDQFHWR
LQLWLDOL]H\RXUVHUYOHWEHIRUH
KDQGOLQJDQ\FOLHQWUHTXHVWV
'R\RXRYHUULGHLW"
3RVVLEO\
,I\RXKDYHLQLWLDOL]DWLRQFRGH
OLNHJHWWLQJDGDWDEDVHFRQ
QHFWLRQRUUHJLVWHULQJ\RXUVHOI
ZLWKRWKHUREMHFWVWKHQ\RX·OO
RYHUULGHWKHLQLWPHWKRGLQ
\RXUVHUYOHWFODVV
:KHQLW·VFDOOHG
VHUYLFH
:KHQWKHILUVWFOLHQWUHTXHVW
FRPHVLQWKH&RQWDLQHUVWDUWV
DQHZWKUHDGRUDOORFDWHVD
WKUHDGIURPWKHSRRODQG
FDXVHVWKHVHUYOHW·VVHUYLFH
PHWKRGWREHLQYRNHG
:KDWLW·VIRU
7KLVPHWKRGORRNVDWWKH
UHTXHVWGHWHUPLQHVWKH+773
PHWKRG*(73267HWF
DQGLQYRNHVWKHPDWFKLQJ
GR*HWGR3RVWHWFRQWKH
VHUYOHW
'R\RXRYHUULGHLW"
1R9HU\XQOLNHO\
<RXVKRXOG127RYHUULGHWKH
VHUYLFHPHWKRG<RXUMRELV
WRRYHUULGHWKHGR*HWDQGRU
GR3RVWPHWKRGVDQGOHWWKH
VHUYLFHLPSOHPHQWDWLRQIURP
+7736HUYOHWZRUU\DERXW
FDOOLQJWKHULJKWRQH
:KHQLW·VFDOOHG
GR*HW
DQGRU
GR3RVW
7KHVHUYLFHPHWKRGLQYRNHV
GR*HWRUGR3RVWEDVHGRQ
WKH+773PHWKRG*(73267
HWFIURPWKHUHTXHVW
:H·UHLQFOXGLQJRQO\GR*HW
DQGGR3RVWKHUHEHFDXVH
WKRVHWZRDUHSUREDEO\WKHRQO\
RQHV\RX·OOHYHUXVH
:KDWLW·VIRU
7KLVLVZKHUH\RXUFRGH
EHJLQV7KLVLVWKHPHWKRG
WKDW·VUHVSRQVLEOHIRUZKDWHYHU
WKHKHFN\RXUZHEDSSLVVXS
SRVHGWREH'2,1*
<RXFDQFDOORWKHUPHWKRGVRQ
RWKHUREMHFWVRIFRXUVHEXWLW
DOOVWDUWVIURPKHUH
'R\RXRYHUULGHLW"
$/:$<6DWOHDVW21(RI
WKHPGR*HWRUGR3RVW
:KLFKHYHURQHV\RX
RYHUULGHWHOOVWKH&RQWDLQHU
ZKDW\RXVXSSRUW,I\RX
GRQ·WRYHUULGHGR3RVWIRU
H[DPSOHWKHQ\RX·UHWHOOLQJ
WKH&RQWDLQHUWKDWWKLVVHUYOHW
GRHVQRWVXSSRUW+7733267
UHTXHVWV
Chapter 4. Being a Servlet
Chapter 4. Being a Servlet
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
,WKLQN,JRWWKLVVRWKH&RQWDLQHU
FDOOVP\VHUYOHW·VLQLWPHWKRGEXWLI,GRQ·W
RYHUULGHLQLWWKHRQHIURP*HQHULF6HUYOHWUXQV
7KHQZKHQDUHTXHVWFRPHVLQWKH&RQWDLQHUVWDUWV
RUDOORFDWHVDWKUHDGDQGFDOOVWKHVHUYLFHPHWKRG
ZKLFK,
GRQ·W
RYHUULGHVRWKHVHUYLFHPHWKRGIURP
+WWS6HUYOHWUXQV7KH+WWS6HUYOHWVHUYLFH
PHWKRGWKHQFDOOV
P\
RYHUULGGHQGR*HWRU
GR3RVW6RHDFKWLPHP\GR*HWRUGR3RVW
UXQVLW·VLQDVHSDUDWHPHWKRG
LQLW
VHUYLFH
GR*HW
7KUHDG$ 7KUHDG%
4HE#ONTAINERCALLSINIT
ONTHESERVLETINSTANCE
AFTERTHESERVLETINSTANCE
ISCREATEDBUTBEFORETHE
SERVLETCANSERVICEANYCLIENT
REQUESTS
)FYOUHAVEINITIALIZATION
CODELIKEGETTINGADATABASE
CONNECTIONORREGISTERING
YOURSELFWITHOTHEROBJECTS
THENYOULLOVERRIDETHE
INITMETHODINYOUR
SERVLETCLASS/THERWISE
THEINITMETHODFROM
'ENERIC3ERVLETRUNS
7HENTHElRSTCLIENT
REQUESTCOMESINTHE
#ONTAINERSTARTSORlNDS
ATHREADANDCAUSESTHE
SERVLETSSERVICEMETHOD
TOBEINVOKED
9OUNORMALLYWILL./4
OVERRIDETHESERVICE
METHODSOTHEONEFROM
(TTP3ERVLETWILLRUN4HE
SERVICEMETHODlGURES
OUTWHICH(440METHOD
'%40/34ETCISIN
THEREQUESTANDINVOKES
THEMATCHINGDO'ETOR
DO0OSTMETHOD4HE
DO'ETANDDO0OST
INSIDE(TTP3ERVLETDONTDO
ANYTHINGSOYOUHAVETO
OVERRIDEONEORBOTH4HIS
THREADDIESORISPUTBACK
INA#ONTAINERMANAGED
POOLWHENSERVICE
COMPLETES
VHUYLFH
GR*HW
7KUHDG&
7HENTHESECONDANDALL
OTHERCLIENTREQUESTSCOME
INTHE#ONTAINERAGAIN
CREATESORlNDSAANOTHER
THREADANDCAUSESTHE
SERVLETSSERVICEMETHOD
TOBEINVOKED
3OTHESERVICEDO'ET
METHODSEQUENCEHAPPENS
EACHTIMETHERESACLIENT
REQUEST!TANYGIVEN
TIMEYOULLHAVEATLEASTAS
MANYRUNNABLETHREADSAS
THEREARECLIENTREQUESTS
LIMITEDBYTHERESOURCES
ORPOLICIESCONlGURATION
OFTHE#ONTAINER9OU
MIGHTFOREXAMPLEHAVE
A#ONTAINERTHATLETSYOU
SPECIFYTHEMAXIMUM
NUMBEROFSIMULTANEOUS
THREADSANDWHENTHE
NUMBEROFCLIENTREQUESTS
EXCEEDSTHATSOMECLIENTS
WILLJUSTHAVETOWAIT
6HUYOHWLQLWLDOL]DWLRQ
&OLHQWUHTXHVW
&OLHQWUHTXHVW
7KHVHUYLFHPHWKRGLVDOZD\V
FDOOHGLQLWVRZQVWDFN
VHUYOHWWKUHDGV
Chapter 4. Being a Servlet
Chapter 4. Being a Servlet
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.
UHTXHVWDQGUHVSRQVH
\RXDUHKHUH
6HUYOHW
&OLHQW$
:HE
EURZVHU
&RQWDLQHU
-IKPZMY]M[\Z]V[QVI[MXIZI\M\PZMIL
9OUMIGHTHEARPEOPLESAYTHINGSLIKEh%ACHINSTANCEOFTHESERVLETvBUTTHATSJUST
WRONG4HEREARENTMULTIPLEINSTANCESOFANYSERVLETCLASSEXCEPTINONESPECIALCASE
CALLED3INGLE4HREAD-ODELWHICHISINHERENTLYEVILBUTWERENOTTALKINGABOUT
THATSPECIALCASEYET
4HE#ONTAINERRUNSMULTIPLETHREADSTOPROCESSMULTIPLEREQUESTSTOASINGLE
SERVLET
!NDEVERYCLIENTREQUESTGENERATESANEWPAIROFREQUESTANDRESPONSEOBJECTS
WKUHDG$
UHTXHVW
UHVSRQVH
&OLHQW%
:HE
EURZVHU
WKUHDG%
UHTXHVW
UHVSRQVH
+773UHTXHVW
+773UHTXHVW
Each client gets a separate
thread for each request, and the
Container allocates new request
and response objects.
WKHUH DUH QR
'
XPE 4XHVWLRQV
4
4HISISCONFUSINGINTHE
PICTUREABOVEYOUSHOWTWODIFFER
ENTCLIENTSEACHWITHITSOWNTHREAD
7HATHAPPENSIFTHESAMECLIENT
MAKESMULTIPLEREQUESTS)SITONE
THREADPERCLIENTORONETHREADPER
REQUEST
$
/NETHREADPERREQUEST4HE
#ONTAINERDOESNTCAREWHOMAKES
THEREQUESTEVERYINCOMINGREQUEST
MEANSANEWTHREADSTACK
4
7HATIFTHE#ONTAINERUSES
CLUSTERINGANDDISTRIBUTESTHEAPP
ONMORETHANONE*6-
$
)MAGINETHEPICTUREABOVEIS
FORASINGLE*6-ANDEACH*6-HASTHE
SAMEPICTURE3OFORADISTRIBUTEDWEB
APPTHEREWOULDBEONEINSTANCEOF
APARTICULARSERVLETPER*6-BUTEACH
*6-WOULDSTILLHAVEONLYASINGLE
INSTANCEOFTHATSERVLET
4
)NOTICEDTHAT(TTP3ERVLET
ISINADIFFERENTPACKAGEFROM
'ENERIC3ERVLETHOWMANYSERVLET
PACKAGESARETHERE
$
%VERYTHINGRELATEDTOSERVLETS
BUTEXCLUDING*30STUFFISINEITHER
JAVAXSERVLETORJAVAXSERVLETHTTP
!NDITSEASYTOTELLTHEDIFFERENCE
THINGSTHATHAVETODOWITH(440IS
INTHEJAVAXSERVLETHTTPPACKAGEAND
THERESTGENERICSERVLETCLASSESAND
INTERFACESAREINJAVAXSERVLET7ELL
SEE*30RELATEDCHAPTERSLATERINTHE
BOOK
Chapter 4. Being a Servlet
Chapter 4. Being a Servlet
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
1V\PMJMOQVVQVO"TWILQVOIVLQVQ\QITQbQVO
4HESERVLETSTARTSLIFEWHENTHE#ONTAINERlNDSTHESERVLETCLASSlLE
4HISVIRTUALLYALWAYSHAPPENSWHENTHE#ONTAINERSTARTSUPFOR
EXAMPLEWHENYOURUN4OMCAT7HENTHE#ONTAINERSTARTSITLOOKS
FORDEPLOYEDWEBAPPSANDTHENSTARTSSEARCHINGFORSERVLETCLASSlLES
)NTHE$EPLOYMENTCHAPTERWELLGOINTOMOREDETAILSOFHOWWHY
ANDWHERETHE#ONTAINERLOOKSFORSERVLETS
&INDINGTHECLASSISTHElRSTSTEP
,OADINGTHECLASSISTHESECONDSTEPANDITHAPPENSEITHERON
#ONTAINERSTARTUPORlRSTCLIENTUSE9OUR#ONTAINERMIGHTGIVEYOUA
CHOICEABOUTCLASSLOADINGORITMIGHTLOADTHECLASSWHENEVERIT
WANTS2EGARDLESSOFWHETHERYOUR#ONTAINERGETSTHESERVLETREADY
EARLYORDOESITJUSTINTIMEWHENTHElRSTCLIENTNEEDSITASERVLETS
SERVICEMETHODWILLNOTRUNUNTILTHESERVLETISFULLYINITIALIZED
<RXUVHUYOHWLVDOZD\V
ORDGHGDQGLQLWLDOL]HG
%()25(LWFDQVHUYLFH
LWVILUVWFOLHQWUHTXHVW
LQLWDOZD\VFRPSOHWHVEHIRUHWKHÀUVWFDOOWRVHUYLFH
#4X3X98
:K\LVWKHUHDQLQLWPHWKRG",QRWKHU
ZRUGVZK\LVQ¶WWKHFRQVWUXFWRUHQRXJKIRU
LQLWLDOL]LQJDVHUYOHW"
:KDWNLQGRIFRGHZRXOG\RXSXWLQWKHLQLW
PHWKRG"
+LQWWKHLQLWPHWKRGWDNHVDQREMHFW
UHIHUHQFHDUJXPHQW:KDWGR\RXWKLQNWKH
DUJXPHQWWRWKHLQLWPHWKRGPLJKWEHDQG
KRZRUZK\ZRXOG\RXXVHLW"
VHUYOHWLQLWLDOL]DWLRQ
Chapter 4. Being a Servlet
Chapter 4. Being a Servlet
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.
UHTXHVWDQGUHVSRQVH
\RXDUHKHUH
; M Z ^ T M \ 1 V Q \ Q I T Q b I \ Q W V "
_PMVIVWJRMK\JMKWUM[I[MZ^TM\
!SERVLETMOVESFROMDOESNOTEXISTTOINITIALIZEDWHICH
REALLYMEANSREADYTOSERVICECLIENTREQUESTSBEGINNINGWITHA
CONSTRUCTOR"UTTHECONSTRUCTORMAKESONLYANOBJECTNOT
ASERVLET4OBEASERVLETTHEOBJECTNEEDSTOBEGRANTED
SERVLETNESS
7HENANOBJECTBECOMESASERVLETITGETSALLTHEUNIQUE
PRIVILEGESTHATCOMEWITHBEINGASERVLETLIKETHEABILITYTO
USEITS3ERVLET#ONTEXTREFERENCETOGETINFORMATIONFROMTHE
#ONTAINER
7HYDOWECAREABOUTINITIALIZATIONDETAILS
"ECAUSESOMEWHEREBETWEENTHECONSTRUCTORANDTHEINIT
METHODTHESERVLETISINA3CHROEDINGERSSERVLETSTATE9OU
MIGHTHAVESERVLETINITIALIZATIONCODELIKEGETTINGWEBAPP
CONlGURATIONINFOORLOOKINGUPAREFERENCETOANOTHERPART
OFTHEAPPLICATIONTHATWILLFAILIFYOURUNITTOOEARLYINTHE
SERVLETSLIFE)TSPRETTYSIMPLETHOUGHIFYOUREMEMBERTO
PUTNOTHINGINTHESERVLETSCONSTRUCTOR
4HERESNOTHINGTHATCANTWAITUNTILINIT
7KHSURXGHVWPRPHQWRIP\OLIHLV
ZKHQWKH*UDQG0DVWHU&RQWDLQHUPDNHV
PHD
VHUYOHW
E\PDNLQJD6HUYOHW&RQÀJIRUPHDQG
FDOOLQJP\LQLW%HIRUHWKDW,·PMXVWDQRUGLQDU\REMHFW
%XWDVDVHUYOHW,KDYHVSHFLDOSULYLOHJHVEHVLGHVWKH
VHFUHWKDQGVKDNHOLNHWKHDELOLW\WRORJHYHQWV
JHWUHIHUHQFHVWRRWKHUUHVRXUFHVDQGVWRUH
DWWULEXWHVIRURWKHUVHUYOHWV
The init() runs only once in a servletÕs life,
so donÕt blow it! And donÕt try to do
things too soon the constructor is too
early to do servlet-speciÞ c things.
FRQVWUXFWRU
LQLW
LQLWLDOL]HG
GRHVQRWH[LVW
GHVWUR\
VHUYLFH
,I\RXUTXDQWXPPHFKDQLFVLVDOLWWOHUXVW\³\RXPLJKWZDQWWRGRD*RRJOHVHDUFK
RQ´6FKURHGLQJHU·V&DWµ:DUQLQJSHWORYHUVMXVWGRQ·WJRWKHUH:KHQZHUHIHU
WRD6FKURHGLQJHUVWDWHZHPHDQVRPHWKLQJWKDWLVQHLWKHUIXOO\GHDGRUIXOO\DOLYH
EXWLQVRPHUHDOO\ZHLUGSODFHLQEHWZHHQ
Chapter 4. Being a Servlet
Chapter 4. Being a Servlet
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.