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

Head First Servlets and JSP phần 2 ppsx

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


FKDSWHU

3267
%HHUY6HOHFW%HHUGR
+773
+RVWZZZZLFNHGO\VPDUWFRP
8VHU$JHQW0R]LOOD0DFLQWRVK8
33&0DF26;0DFK2HQ86UY
*HFNR1HWVFDSH
$FFHSWWH[W[PODSSOLFDWLRQ
[PODSSOLFDWLRQ[KWPO[POWH[W
KWPOT WH[WSODLQT YLGHR[
PQJLPDJHSQJLPDJHMSHJLPDJH
JLIT T 
'LDQHÀOOVRXWWKHIRUPDQGKLWVVXEPLW7KHEURZVHU
JHQHUDWHVWKHUHTXHVW85/
%HHUY6HOHFW%HHUGR

The web app
context root.
The logical resource name.
&RQWDLQHU
&OLHQW
7KH&RQWDLQHUVHDUFKHVWKH''
DQGÀQGVDVHUYOHWPDSSLQJ!
ZLWKDXUOSDWWHUQ!WKDW
PDWFKHV
6HOHFW%HHUGRZKHUH
WKHVODVKUHSUHVHQWVWKH
FRQWH[WURRWRIWKHZHEDSSDQG


6HOHFW%HHUGRLVWKH
ORJLFDO
QDPH
RIDUHVRXUFH

&RQWDLQHU

ZHEDSS!
VHUYOHW!
VHUYOHWQDPH!
&K%HHU
VHUYOHWQDPH!
VHUYOHWFODVV!
FRPH[DPSOHZHE%HHU6HOHFW
VHUYOHWFODVV!
VHUYOHW!

VHUYOHWPDSSLQJ!
VHUYOHWQDPH!
&K%HHU
VHUYOHWQDPH!
XUOSDWWHUQ!
6HOHFW%HHUGR
XUOSDWWHUQ!
VHUYOHWPDSSLQJ!
ZHEDSS!
&RQWDLQHU
7KH&RQWDLQHUVHHVWKDWWKHVHUYOHW
QDPH!IRUWKLVXUOSDWWHUQ!LV´&K
%HHUµ%XWWKDWLVQ·WWKHQDPHRIDQ

DFWXDOVHUYOHWFODVVÀOH´&K%HHUµLV
WKHQDPHRID
VHUYOHW
QRWDVHUYOHW
FODVV

7RWKH&RQWDLQHUDVHUYOHWLVVRPHWKLQJ
QDPHGLQWKH''XQGHUDVHUYOHW!WDJ
7KHQDPHRIWKHVHUYOHWLVVLPSO\WKH
QDPHXVHGLQWKH''VRWKDWRWKHU
SDUWVRIWKH''FDQPDSWRLW

5IXXQVO\PMTWOQKITVIUM\WI[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.
VHUYOHWPDSSLQJ
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.
KDQGVRQ09&
\RXDUHKHUH


ZHEDSS!
VHUYOHW!
VHUYOHWQDPH!
&K%HHU
VHUYOHWQDPH!
VHUYOHWFODVV!
FRPH[DPSOHZHE%HHU6HOHFW
VHUYOHWFODVV!
VHUYOHW!

VHUYOHWPDSSLQJ!
VHUYOHWQDPH!
&K%HHU
VHUYOHWQDPH!
XUOSDWWHUQ!
6HOHFW%HHUGR
XUOSDWWHUQ!
VHUYOHWPDSSLQJ!
ZHEDSS!
H!

E
!
7KH&RQWDLQHUORRNVLQVLGHWKH
VHUYOHW!WDJVIRUVRPHWKLQJZLWK
WKHVHUYOHWQDPH!´&K%HHUµ

7KH&RQWDLQHUXVHVWKH
VHUYOHWFODVV!LQWKHVHUYOHW!
WDJWRNQRZZKLFKVHUYOHWFODVV
LVUHVSRQVLEOHIRUKDQGOLQJWKLV
UHTXHVW,IWKHVHUYOHWKDV
QRWEHHQLQLWLDOL]HGWKHFODVV
LVORDGHGDQGWKHVHUYOHWLV
LQLWLDOL]HG

7KH&RQWDLQHUVWDUWVDQHZWKUHDGWR
KDQGOHWKHUHTXHVWDQGSDVVHVWKH
UHTXHVWWRWKHWKUHDGWRWKHVHUYOHW·V
VHUYLFHPHWKRG

VHUYOHW
7KH&RQWDLQHUVHQGVWKHUHVSRQVHWKURXJKWKH
:HE6HUYHURIFRXUVHEDFNWRWKHFOLHQW

&OLHQW
VHUYOHW
UHTXHVW

+7732.


KWPO!
KHDG!

KHDG!
ERG\!
LPJVUF !
ERG\!
KWPO!
UHVSRQVH

+7732.

KWPO!
KHDG!

KHDG!
ERG\!
LPJVUF !
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
<PMNQZ[\^MZ[QWVWN\PMKWV\ZWTTMZ[MZ^TM\
SDFNDJHFRPH[DPSOHZHE
LPSRUWMDYD[VHUYOHW
LPSRUWMDYD[VHUYOHWKWWS
LPSRUWMDYDLR
SXEOLFFODVV%HHU6HOHFWH[WHQGV+WWS6HUYOHW^
SXEOLFYRLGGR3RVW+WWS6HUYOHW5HTXHVWUHTXHVW
  +WWS6HUYOHW5HVSRQVHUHVSRQVH
 WKURZV,2([FHSWLRQ6HUYOHW([FHSWLRQ^
 UHVSRQVHVHW&RQWHQW7\SH³WH[WKWPO´
 3ULQW:ULWHURXW UHVSRQVHJHW:ULWHU
RXWSULQWOQ³%HHU6HOHFWLRQ$GYLFHEU!´
 6WULQJF UHTXHVWJHW3DUDPHWHU³FRORU´
RXWSULQWOQ³EU!*RWEHHUFRORU³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.
/URPLANISTOBUILDTHESERVLETINSTAGESTESTINGTHEVARIOUSCOMMUNICATION
LINKSASWEGO)NTHEENDREMEMBERTHESERVLETWILLACCEPTAPARAMETERFROM
THEREQUESTINVOKEAMETHODONTHEMODELSAVEINFORMATIONINAPLACETHE
*30CANlNDANDFORWARDTHEREQUESTTOTHE*30"UTFORTHISlRSTVERSIONOUR
GOALISJUSTTOMAKESURETHATTHE(4-,PAGECANPROPERLYINVOKETHESERVLET
ANDTHATTHESERVLETISRECEIVINGTHE(4-,PARAMETERCORRECTLY
HttpServlet extends GenericServlet,
which implements the Servlet interface
LQWHUIDFH!!
MDYD[VHUYOHW6HUYOHW
MDYD[VHUYOHW*HQHULF6HUYOHW
MDYD[VHUYOHWKWWS+WWS6HUYOHW
LQWHUIDFH!!
MDYD[VHUYOHWKWWS+WWS6HUYOHW5HTXHVW
LQWHUIDFH!!
MDYD[VHUYOHW6HUYOHW5HTXHVW
LQWHUIDFH!!
MDYD[VHUYOHWKWWS+WWS6HUYOHW5HVSRQVH
LQWHUIDFH!!
MDYD[VHUYOHW6HUYOHW5HVSRQVH
6HUYOHWFRGH
.H\$3,V

WeÕre not giving back advice
here, just displaying test
information.
VHUYOHWFRQWUROOHUYHUVLRQRQH
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.
KDQGVRQ09&
\RXDUHKHUH

/KWEVEBUILTDEPLOYEDANDTESTEDOUR(4-,ANDWEVEBUILTANDDEPLOYEDOUR$$
WELLWEPUTTHEWEBXMLINTOTHEDEPLOYMENTENVIRONMENTBUTTECHNICALLYTHE$$
WONTBEDEPLOYEDUNTILWERESTART4OMCAT.OWITSTIMETOCOMPILETHElRSTVERSIONOF
THESERVLETDEPLOYITANDTESTITVIATHE(4-,FORM.OWWELLRESTART4OMCATTOMAKE
SURETHATIThSEESvTHEWEBXMLANDSERVLETCLASS
+WUXQTQVOLMXTWaQVOIVL\M[\QVO\PMKWV\ZWTTMZ[MZ^TM\
&RPSLOLQJWKHVHUYOHW
&RPSLOHWKHVHUYOHWZLWKWKHGÀDJWRSXWWKHFODVVLQWKHGHYHORSPHQWHQYLURQPHQW
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\LQJWKHVHUYOHW
7RGHSOR\WKHVHUYOHWPDNHDFRS\RIWKHFODVV¿OHDQGPRYHLWWRWKH
%HHUY:(%,1)FODVVHVFRPH[DPSOHZHEGLUHFWRU\LQWKHGHSOR\PHQWVWUXFWXUH

7HVWLQJWKHVHUYOHW
5HVWDUWWRPFDW
/DXQFK\RXUEURZVHUDQGJRWR
KWWSORFDOKRVW%HHUYIRUPKWPO
6HOHFWDEHHUFRORUDQGKLW³6XEPLW´
,I\RXUVHUYOHWLVZRUNLQJ\RXVKRXOG
VHHWKHVHUYOHW¶VUHVSRQVHLQ\RXUEURZVHU
DVVRPHWKLQJOLNH
 %HHU6HOHFWLRQ$GYLFH
 *RWEHHUFRORUEURZQ
FG0\3URMHFWVEHHU9
MDYDFFODVVSDWK8VHUVEHUW$SSOLFDWLRQVWRPFDWFRPPRQOLE
VHUYOHWDSLMDUFODVVHVGFODVVHVVUFFRPH[DPSOHZHE%HHU6HOHFWMDYD
)LOH(GLW:LQGRZ+HOS8SGDWH%UDLQ
FGWRPFDW
ELQVKXWGRZQVK
ELQVWDUWXSVK
)LOH(GLW:LQGRZ+HOS6ODVKGRW0H
ZHEDSSV
%HHUY
:(%,1)
ZHE
FODVVHV
FRP
H[DPSOH

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

%HHU6HOHFWFODVV
WRPFDW
KWWSORFDOKRVW%HHUYIRUPKWPO
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
*]QTLQVOIVL\M[\QVO\PMUWLMTKTI[[

)N-6#THEMODELTENDSTOBETHEhBACKENDvOFTHEAPPLICATION)TSOFTENTHELEGACYSYSTEM
THATSNOWBEINGEXPOSEDTOTHEWEB)NMOSTCASESITSJUSTPLAINOLD*AVACODEWITHNO
KNOWLEDGEOFTHEFACTTHATITMIGHTBECALLEDBYSERVLETS4HEMODELSHOULDNTBETIEDDOWN
TOBEINGUSEDBYONLYASINGLEWEBAPPSOITSHOULDBEINITSOWNUTILITYPACKAGES
7KHVSHFVIRUWKHPRGHO
,WVSDFNDJHVKRXOGEHFRPH[DPSOHPRGHO
,WVGLUHFWRU\VWUXFWXUHVKRXOGEH:(%,1)FODVVHVFRPPRGHO
,WH[SRVHVRQHPHWKRGJHW%UDQGVWKDWWDNHVDSUHIHUUHGEHHUFRORUDVD
6WULQJDQGUHWXUQVDQ$UUD\/LVWRIUHFRPPHQGHGEHHUEUDQGVDOVRDV6WULQJV
%XLOGWKHWHVWFODVVIRUWKHPRGHO
&UHDWHWKHWHVWFODVVIRUWKHPRGHO\HVEHIRUH\RXEXLOGWKHPRGHOLWVHOI<RX¶UHRQ
\RXURZQKHUHZHGRQ¶WKDYHRQHLQWKLVWXWRULDO5HPHPEHUWKHPRGHOZLOOVWLOOEHLQWKH
GHYHORSPHQWHQYLURQPHQWZKHQ\RX¿UVWWHVWLW²LW¶VMXVWOLNHDQ\RWKHU-DYDFODVVDQG
\RXFDQWHVWLWZLWKRXW7RPFDW
%XLOGDQGWHVWWKHPRGHO
0RGHOVFDQEHH[WUHPHO\FRPSOLFDWHG7KH\RIWHQLQYROYHFRQQHFWLRQVWROHJDF\

GDWDEDVHVDQGFDOOVWRFRPSOH[EXVLQHVVORJLF+HUH¶VRXUVRSKLVWLFDWHGUXOH
EDVHGH[SHUWV\VWHPIRUWKHEHHUDGYLFH
SDFNDJHFRPH[DPSOHPRGHO
LPSRUWMDYDXWLO
SXEOLFFODVV%HHU([SHUW^
SXEOLF/LVWJHW%UDQGV6WULQJFRORU^
/LVWEUDQGV QHZ$UUD\/LVW
LIFRORUHTXDOV³DPEHU´^
EUDQGVDGG³-DFN$PEHU´
EUDQGVDGG³5HG0RRVH´
`
HOVH^
EUDQGVDGG³-DLO3DOH$OH´
EUDQGVDGG³*RXW6WRXW´
`
UHWXUQEUDQGV
`
`
Notice how weÕve captured complex,
expert knowledge of the beer paradigm
using advanced conditional expressions.
FGEHHU9
MDYDFFODVVSDWK8VHUVEHUW$SSOLFDWLRQVWRPFDWFRPPRQOLE
VHUYOHWDSLMDUFODVVHVGFODVVHVVUFFRPH[DPSOHPRGHO%HHU([SHUWMDYD
)LOH(GLW:LQGRZ+HOS6NDWHERDUG
DonÕt forget to change this to use
YOUR speciÞc path to the tomcat home.
WKHPRGHOFODVV
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.
KDQGVRQ09&
\RXDUHKHUH

-VPIVKQVO\PM[MZ^TM\\WKITT\PMUWLMT
[W\PI\_MKIVOM\:-)4IL^QKM
)NTHISVERSIONTWOSERVLETWELLENHANCETHEDO0OSTMETHODTO
CALLTHEMODELFORADVICEVERSIONTHREEWILLMAKETHEADVICECOME
FROMA*304HECODECHANGESARETRIVIALBUTTHEIMPORTANTPARTIS
UNDERSTANDINGTHEREDEPLOYMENTOFTHEENHANCEDWEBAPP9OUCAN
TRYTOWRITETHECODERECOMPILEANDDEPLOYONYOUROWNORYOU
CANTURNTHEPAGEANDFOLLOWALONG
(QKDQFHWKHVHUYOHWYHUVLRQWZR
)RUJHWDERXWVHUYOHWVIRUDPLQXWHOHW·VMXVWWKLQN-DYD:KDW
DUHWKHVWHSVZHKDYHWRWDNHWRDFFRPSOLVKWKHIROORZLQJ"
(QKDQFHWKHGR3RVWPHWKRGWRFDOOWKHPRGHO
&RPSLOHWKHVHUYOHW
'HSOR\DQGWHVWWKHXSGDWHGZHEDSS
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
SDFNDJHFRPH[DPSOHZHE
LPSRUWFRPH[DPSOHPRGHO
LPSRUWMDYD[VHUYOHW
LPSRUWMDYD[VHUYOHWKWWS
LPSRUWMDYDLR
LPSRUWMDYDXWLO
SXEOLFFODVV%HHU6HOHFWH[WHQGV+WWS6HUYOHW^
SXEOLFYRLGGR3RVW+WWS6HUYOHW5HTXHVWUHTXHVW
   +WWS6HUYOHW5HVSRQVHUHVSRQVH
WKURZV,2([FHSWLRQ6HUYOHW([FHSWLRQ^
 UHVSRQVHVHW&RQWHQW7\SH³WH[WKWPO´
 3ULQW:ULWHURXW UHVSRQVHJHW:ULWHU
RXWSULQWOQ³%HHU6HOHFWLRQ$GYLFHEU!´
 6WULQJF UHTXHVWJHW3DUDPHWHU³FRORU´


%HHU([SHUWEH QHZ%HHU([SHUW
/LVWUHVXOW EHJHW%UDQGVF
,WHUDWRULW UHVXOWLWHUDWRU
ZKLOHLWKDV1H[W^
RXWSULQW³EU!WU\³LWQH[W
`
`
`
;MZ^TM\^MZ[QWV\_WKWLM
2EMEMBERTHEMODELISJUSTPLAINOLD*AVASOWECALLITLIKEWEDCALLANY
OTHER*AVAMETHODINSTANTIATETHEMODELCLASSANDCALLITSMETHOD

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.
FDOOLQJWKHPRGHOIURPWKHVHUYOHWFRQWUROOHU
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.
KDQGVRQ09&
\RXDUHKHUH

3Ma[\MX[NWZ[MZ^TM\^MZ[QWV\_W
7EHAVETWOMAINTHINGSTODORECOMPILETHESERVLETAND
DEPLOYTHEMODELCLASS
:H¶OOXVHWKHVDPHFRPSLOHUFRPPDQGWKDWZHXVHG
ZKHQZHEXLOWWKH¿UVWYHUVLRQRIWKHVHUYOHW
&RPSLOLQJWKHVHUYOHW
'HSOR\LQJDQGWHVWLQJWKHZHEDSS
1RZLQDGGLWLRQWRWKHVHUYOHWZHDOVRKDYHWRGHSOR\WKHPRGHO

7KHNH\VWHSVDUH
0RYHDFRS\RIWKHVHUYOHWFODVV¿OHWR
%HHUY:(%,1)FODVVHVFRPH[DPSOHZHE
7KLVUHSODFHVWKHYHUVLRQRQHVHUYOHWFODVV¿OH
0RYHDFRS\RIWKHPRGHO¶VFODVV¿OHWR
%HHUY:(%,1)FODVVHVFRPH[DPSOHPRGHO
6KXWGRZQDQGUHVWDUWWRPFDW
7HVWWKHDSSYLDIRUPKWPO
WKH¿QDOEURZVHURXWSXWVKRXOGEH
VRPHWKLQJOLNH
 %HHU6HOHFWLRQ$GYLFH
 WU\-DFN$PEHU
 WU\5HG0RRVH
FGEHHU9
MDYDFFODVVSDWK8VHUVEHUW$SSOLFDWLRQVWRPFDWFRPPRQOLE
VHUYOHWDSLMDUFODVVHVGFODVVHVVUFFRPH[DPSOHZHE%HHU6HOHFWMDYD
)LOH(GLW:LQGRZ+HOS3OD\*R
ZHEDSSV
%HHUY
:(%,1)
ZHE
FODVVHV
FRP
H[DPSOH





%HHU6HOHFWFODVV

WRPFDW
PRGHO





%HHU([SHUWFODVV
FGWRPFDW
ELQVKXWGRZQVK
ELQVWDUWXSVK
)LOH(GLW:LQGRZ+HOS6HOO+LJK
KWWSORFDOKRVW%HHUYIRUPKWPO
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_\PMXIZ\QITTaKWUXTM\ML5>+

JMMZIL^QKM_MJIXXTQKI\QWV
:KDW·VZRUNLQJVRIDU
:KDWZH:$17
&O
LH
Q
W
7KHEURZVHUVHQGVWKH
UHTXHVWGDWDWRWKH&RQWDLQHU
7KH&RQWDLQHUILQGVWKH
FRUUHFWVHUYOHWEDVHGRQWKH
85/DQGSDVVHVWKHUHTXHVWWR
WKHVHUYOHW
7KHVHUYOHWFDOOVWKH
%HHU([SHUWIRUKHOS
7KHH[SHUWFODVVUHWXUQVDQ
DQVZHUZKLFKWKHVHUYOHWDGGV
WRWKHUHTXHVWREMHFW
7KHVHUYOHWIRUZDUGVWKH
UHTXHVWWRWKH-63
7KH-63JHWVWKHDQVZHU
IURPWKHUHTXHVWREMHFW
7KH-63JHQHUDWHVDSDJH
IRUWKH&RQWDLQHU
7KH&RQWDLQHUUHWXUQVWKH
SDJHWRWKHKDSS\XVHU





&RQWDLQHU




UHTXHVW
KWPO!
KHDG!
KHDG!
ERG\!

ERG\!
KWPO!
UHVXOWMVS


VHUYOHW

&OLHQW
:HE
EURZVHU
7KHEURZVHUVHQGVWKH
UHTXHVWGDWDWRWKH&RQWDLQHU
7KH&RQWDLQHUILQGVWKH
FRUUHFWVHUYOHWEDVHGRQWKH
85/DQGSDVVHVWKHUHTXHVWWR
WKHVHUYOHW
7KHVHUYOHWFDOOVWKH
%HHU([SHUWIRUKHOS
7KHVHUYOHWRXWSXWVWKH

UHVSRQVHZKLFKSULQWVWKH
DGYLFH
7KH&RQWDLQHUUHWXUQVWKH
SDJHWRWKHKDSS\XVHU


&RQWDLQHU
ORJLF
&RQWDLQHU


VHUYOHW


WKH09&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.
KDQGVRQ09&
\RXDUHKHUH

#SDJHLPSRUW ´MDYDXWLO´!
KWPO!
ERG\!
KDOLJQ ´FHQWHU´!%HHU5HFRPPHQGDWLRQV-63K!
S!


/LVWVW\OHV /LVWUHTXHVWJHW$WWULEXWH³VW\OHV´
,WHUDWRULW VW\OHVLWHUDWRU
ZKLOHLWKDV1H[W^
RXWSULQW³EU!WU\³LWQH[W
`
!
ERG\!
KWPO!
+ZMI\M\PM2;8¹^QM_º\PI\OQ^M[\PMIL^QKM
$ONTGETYOURHOPESUP9OUREGOINGTOHAVETOWAITFORAFEW
CHAPTERSBEFOREWEREALLYSTARTTALKINGABOUT*30S4HIS*30ISNT
ACTUALLYAPARTICULARLYGOODONEEITHERBECAUSEOFITSSCRIPTLETCODE
WHICHWELLTALKABOUTLATERINTHEBOOK&ORNOWITSHOULDBEPRETTY
EASYTOREADANDIFYOUWANTTOEXPERIMENTALITTLEGOFORIT!LTHOUGH
WECOULDTESTTHIS*30NOWFROMTHEBROWSERWELLWAITUNTILAFTERWE
MODIFYTHESERVLETVERSIONTHREETOSEEIFITWORKS
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·VWKH-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\LQJWKH-63
:HGRQ¶WFRPSLOHWKH-63WKH&RQWDLQHUGRHVWKDWDW¿UVWUHTXHVW
%XWZHGRKDYHWR
1DPHLW³UHVXOWMVS´
6DYHLWLQWKHGHYHORSPHQWHQYLURQPHQWLQZHE
0RYHDFRS\RILWWRWKHGHSOR\PHQWHQYLURQPHQWLQ%HHUY
ZHEDSSV
%HHUY
WRPFDW



!
UHVXOWMVS

KWPO!
ERG\!

ERG\!
KWPO!
IRUPKWPO
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º\PM2;8^MZ[QWV\PZMM
)NTHISSTEPWEREGOINGTOMODIFYTHESERVLETTOhCALLvTHE*30TOPRODUCETHEOUTPUT
VIEW4HE#ONTAINERPROVIDESAMECHANISMCALLEDhREQUESTDISPATCHINGvTHAT
ALLOWSONE#ONTAINERMANAGEDCOMPONENTTOCALLANOTHERANDTHATSWHATWELL
USETHESERVLETWILLGETTHEINFOFROMTHEMODELSAVEITINTHEREQUESTOBJECTTHEN
DISPATCHTHEREQUESTTOTHE*30
7KHLPSRUWDQWFKDQJHVZHPXVW
PDNHWRWKHVHUYOHW
$GGWKHPRGHOFRPSRQHQW¶VDQVZHUWRWKHUHTXHVWREMHFWVRWKDW
WKH-63FDQDFFHVVLW6WHS
$VNWKH&RQWDLQHUWRIRUZDUGWKHUHTXHVWWR³UHVXOWMVS´6WHS
&
O
LH
Q
W
7KHEURZVHUVHQGVWKH
UHTXHVWGDWDWRWKHFRQWDLQHU
7KH&RQWDLQHUILQGVWKH
FRUUHFWVHUYOHWEDVHGRQWKH
85/DQGSDVVHVWKHUHTXHVWWR
WKHVHUYOHW
7KHVHUYOHWFDOOVWKH
%HHU([SHUWIRUKHOS

7KHH[SHUWFODVVUHWXUQVDQ
DQVZHUZKLFKWKHVHUYOHWDGGV
WRWKHUHTXHVWREMHFW
7KHVHUYOHWGLVSDWFKHVWR
WKH-63
7KH-63JHWVWKHDQVZHU
IURPWKHUHTXHVWREMHFW
7KH-63JHQHUDWHVDSDJH
IRUWKH&RQWDLQHU
7KH&RQWDLQHUUHWXUQVWKH
SDJHWRWKHKDSS\XVHU




&RQWDLQHU




UHTXHVW
KWPO
!
K
HDG!


KHD
G
ERG

\
!



ERG\!
KWPO!
UHVXOWMVS



VHUYOHW



GLVSDWFKLQJDUHTXHVWWRD-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.
KDQGVRQ09&
\RXDUHKHUH

SDFNDJHFRPH[DPSOHZHE
LPSRUWFRPH[DPSOHPRGHO
LPSRUWMDYD[VHUYOHW
LPSRUWMDYD[VHUYOHWKWWS

LPSRUWMDYDLR
LPSRUWMDYDXWLO
SXEOLFFODVV%HHU6HOHFWH[WHQGV+WWS6HUYOHW^
SXEOLFYRLGGR3RVW+WWS6HUYOHW5HTXHVWUHTXHVW
   +WWS6HUYOHW5HVSRQVHUHVSRQVH
WKURZV,2([FHSWLRQ6HUYOHW([FHSWLRQ^

UHVSRQVHVHW&RQWHQW7\SH³WH[WKWPO´
 UHPRYHWKHROGWHVWRXWSXW
 3ULQW:ULWHURXW UHVSRQVHJHW:ULWHU
RXWSULQWOQ³%HHU6HOHFWLRQ$GYLFHEU!´

 6WULQJF UHTXHVWJHW3DUDPHWHU³FRORU´

RXWSULQWOQ³EU!*RWEHHUFRORU³F
%HHU([SHUWEH QHZ%HHU([SHUW
/LVWUHVXOW EHJHW%UDQGVF

UHTXHVWVHW$WWULEXWH³VW\OHV´UHVXOW
5HTXHVW'LVSDWFKHUYLHZ 
  UHTXHVWJHW5HTXHVW'LVSDWFKHU³UHVXOWMVS´
YLHZIRUZDUGUHTXHVWUHVSRQVH
`
`
+WLMNWZ[MZ^TM\^MZ[QWV\PZMM
(ERESHOWWEMODIlEDTHESERVLETTOADDTHEMODEL
COMPONENTSANSWERTOTHEREQUESTOBJECTSOTHE*30
CANRETRIEVEITANDHOWWEASKEDTHE#ONTAINERTO
DISPATCHTOTHE*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
+WUXQTMLMXTWaIVL\M[\\PMNQVITIXX
)NTHISCHAPTERWEVEBUILTANENTIREALBEITTINY-6#APPLICATION
USING(4-,SERVLETSAND*30S9OUCANADDTHISTOYOURRESUME
:H¶OOXVHWKHVDPHFRPSLOHUFRPPDQGWKDWZHXVHGHDUOLHU
&RPSLOLQJWKHVHUYOHW
'HSOR\LQJDQGWHVWLQJWKHZHEDSS
1RZLW¶VWLPHWRUHGSOR\WKHVHUYOHW
0RYHDFRS\RIWKHVHUYOHW¶VFODVV¿OHWR%HHUY:(%,1)FODVVHVFRPH[DPSOHZHE
DJDLQWKLVZLOOUHSODFHWKHSUHYLRXVYHUVLRQWZRFODVV¿OH

6KXWGRZQDQGUHVWDUWWRPFDW
7HVWWKHDSSYLDIRUPKWPO
FGEHHU9
MDYDFFODVVSDWK8VHUVEHUW$SSOLFDWLRQVWRPFDWFRPPRQOLE
VHUYOHWDSLMDUFODVVHVGFODVVHVVUFFRPH[DPSOHZHE%HHU6HOHFWMDYD
)LOH(GLW:LQGRZ+HOS5XQ,WV$7UDS
FGWRPFDW
ELQVKXWGRZQVK
ELQVWDUWXSVK
)LOH(GLW:LQGRZ+HOS6DYH<RXUVHOI
KWWSORFDOKRVW%HHUYIRUPKWPO
%HHU5HFRPPHQGDWLRQV-63
WU\-DFN·V3DOH$OH
WU\*RXW6WRXW
HereÕs what you should see!
FRPSLOHGHSOR\DQGWHVW
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.
KDQGVRQ09&
\RXDUHKHUH

2. VR QRZ KH FDQ GR DQ09&
DSSEXWKHVWLOOKDVQRFOXHKRZWRXVH
WKH-63H[SUHVVLRQODQJXDJHRU-67/
RUZULWHDFXVWRPWDJRUXVHDÀOWHUDQG,

FDXJKWKLPSOD\LQJD:HH]HU&'DQGLWZDV
$)7(5WKHJUHHQDOEXP+HVWLOOKDV62
PXFKWROHDUQ
<PMZMQ[[\QTT[WU]KP\WTMIZV
4HEPARTYSOVER9OUHADTHREEWHOLECHAPTERSTOCRUISEALONGWRITEALITTLE
CODEREVIEWTHEWHOLE(440REQUESTRESPONSETHING
"UTTHERESSTILLMOCKEXAMQUESTIONSWAITINGFORYOUINTHISBOOKAND
THEYSTARTWITHTHENEXTCHAPTER5NLESSYOUREALREADYFAMILIARWITHSERVLET
DEVELOPMENTANDDEPLOYMENTYOUREALLYSHOULDNTTURNTHEPAGEUNTILAFTER
YOUACTUALLYDOTHETUTORIALINTHISCHAPTER
.OTTHATWERETRYINGTOPRESSUREYOUORGUILTTRIPYOUORANYTHING
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.
WKLVLVDQHZFKDSWHU

6HUYOHWVOLYHWRVHUYLFHFOLHQWV$VHUYOHW¶VMRELVWRWDNHDFOLHQW¶V
UHTXHVWDQGVHQGEDFNDUHVSRQVH7KHUHTXHVWPLJKWEHVLPSOH³JHWPHWKH
:HOFRPHSDJH´2ULWPLJKWEHFRPSOH[³&RPSOHWHP\VKRSSLQJFDUWFKHFNRXW´
7KHUHTXHVWFDUULHVFUXFLDOGDWDDQG\RXUVHUYOHWFRGHKDVWRNQRZKRZWR¿ Q G 
LWDQGKRZWRXVHLW7KHUHVSRQVHFDUULHVWKHLQIRWKHEURZVHUQHHGVWRUHQGHU
DSDJHRUGRZQORDGE\WHVDQG\RXUVHUYOHWFRGHKDVWRNQRZKRZWRVHQGLW
2UQRW\RXUVHUYOHWFDQGHFLGHWRSDVVWKHUHTXHVWWRVRPHWKLQJHOVHDQRWKHU
SDJHVHUYOHWRU-63LQVWHDG
%HLQJD6HUYOHW



UHTXHVW$1'UHVSRQVH
+HXVHGD*(7
UHTXHVWWRXSGDWHWKH
GDWDEDVH7KHSXQLVKPHQWZLOO
EHPRVWVHYHUHQR´<RJD
ZLWK6X]\µFODVVHVIRU
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
)RUHDFKRIWKH+7730HWKRGVVXFKDV
*(73267+($'DQGVRRQGHVFULEH
WKHSXUSRVHRIWKHPHWKRGDQGWKHWHFKQLFDO
FKDUDFWHULVWLFVRIWKH+7730HWKRGSURWRFRO
OLVWWULJJHUVWKDWPLJKWFDXVHDFOLHQWXVXDOO\D
:HEEURZVHUWRXVHWKH0HWKRGDQGLGHQWLI\
WKH+WWS6HUYOHWPHWKRGWKDWFRUUHVSRQGVWRWKH
+7730HWKRG

7KH6HUYOHW7HFKQRORJ\0RGHO
RI¿FLDO6XQH[DPREMHFWLYHV
8VLQJWKH+WWS6HUYOHW5HTXHVWLQWHUIDFHZULWH
FRGHWRUHWULHYH+70/IRUPSDUDPHWHUVIURP

WKHUHTXHVWUHWULHYH+773UHTXHVWKHDGHU
LQIRUPDWLRQRUUHWULHYHFRRNLHVIURPWKH
UHTXHVW

8VLQJWKH+WWS6HUYOHW5HVSRQVHLQWHUIDFHZULWH
FRGHWRVHWDQ+773UHVSRQVHKHDGHUVHW
WKHFRQWHQWW\SHRIWKHUHVSRQVHDFTXLUHD
WH[WVWUHDPIRUWKHUHVSRQVHDFTXLUHDELQDU\
VWUHDPIRUWKHUHVSRQVHUHGLUHFWDQ+773
UHTXHVWWRDQRWKHU85/RUDGGFRRNLHVWRWKH
UHVSRQVH

'HVFULEHWKHSXUSRVHDQGHYHQWVHTXHQFHRI
WKHVHUYOHWOLIHF\FOHVHUYOHWFODVVORDGLQJ
VHUYOHWLQVWDQWLDWLRQFDOOWKHLQLW
PHWKRGFDOOWKHVHUYLFHPHWKRGDQG
FDOOWKHGHVWUR\PHWKRG

:HZRQ·WVD\PXFKDERXWWKHREMHFWLYHV
UHODWHGWRFRRNLHVXQWLOWKH6HVVLRQVFKDSWHU
!LLOFTHEOBJECTIVESINTHISSECTIONARECOVERED
COMPLETELYINTHISCHAPTERWITHTHEEXCEPTION
OFTHECOOKIESPARTOFOBJECTIVE!LOTOF
THECONTENTINTHISCHAPTERWASTOUCHEDON
INCHAPTERTWOBUTINCHAPTERTWOWESAID
h$ONTWORRYABOUTMEMORIZINGITv
)NTHISCHAPTERYOU$/HAVETOSLOWDOWN
REALLYSTUDYANDMEMORIZETHECONTENT.O
OTHERCHAPTERWILLCOVERTHESEOBJECTIVESIN
DETAILSOTHISISIT

$OTHEEXERCISESINTHECHAPTERREVIEWTHE
MATERIALTHENTAKEYOURlRSTMOCKEXAMAT
THEENDOFTHECHAPTER)FYOUDONTGETATLEAST
CORRECTGOBACKTHROUGHTHECHAPTERTO
lGUREOUTWHATYOUMISSED"%&/2%YOU
MOVEONTOCHAPTERlVE
3OMEOFTHEMOCKEXAMQUESTIONSTHATBELONG
WITHTHESEOBJECTIVESHAVEBEENMOVEDINTO
CHAPTERSANDBECAUSETHEQUESTIONS
REQUIRESADDITIONALKNOWLEDGEOFSOMEOFTHE
TOPICSWEDONTCOVERUNTILTHOSECHAPTERS4HAT
MEANSTHEREAREFEWERMOCKEXAMQUESTIONS
INTHISCHAPTERANDMOREINLATERCHAPTERSTO
AVOIDTESTINGYOUONTOPICSYOUHAVENTCOVERED
)MPORTANTNOTEWHILETHElRSTTHREECHAPTERS
COVEREDBACKGROUNDINFORMATIONFROMTHIS
PAGEFORWARDINTHEBOOKVIRTUALLYEVERYTHING
YOUREGOINGTOSEEISDIRECTLYRELATEDTOOR
EXPLICITLYPARTOFTHEEXAM
&RYHUDJH1RWHV
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
UHTXHVWDQGUHVSRQVH
\RXDUHKHUH


;MZ^TM\[IZMKWV\ZWTTMLJa\PM+WV\IQVMZ
)NCHAPTERTWOWELOOKEDATTHE#ONTAINERSOVERALLROLEINASERVLETS
LIFEITCREATESTHEREQUESTANDRESPONSEOBJECTSCREATESORALLOCATESANEW
THREADFORTHESERVLETANDCALLSTHESERVLETSSERVICEMETHODPASSINGTHE
REQUESTANDRESPONSEREFERENCESASARGUMENTS(ERESAQUICKREVIEW
&OLHQW
:HE
EURZVHU

8VHUFOLFNVDOLQNWKDWKDVD85/
WRDVHUYOHW
&OLHQW
:HE
EURZVHU

7KH&RQWDLQHU´VHHVµWKDWWKH
UHTXHVWLVIRUDVHUYOHWVRWKH
FRQWDLQHUFUHDWHVWZRREMHFWV
+WWS6HUYOHW5HVSRQVH
+WWS6HUYOHW5HTXHVW
VHUYOHW
&OLHQW
:HE
EURZVHU

7KH&RQWDLQHUILQGVWKHFRUUHFW
VHUYOHWEDVHGRQWKH85/LQWKH
UHTXHVWFUHDWHVRUDOORFDWHV
DWKUHDGIRUWKDWUHTXHVWDQG

FDOOVWKHVHUYOHW·VVHUYLFH
PHWKRGSDVVLQJWKHUHTXHVWDQG
UHVSRQVHREMHFWVDVDUJXPHQWV
FRQWDLQHU
thread
VHUYLFHUHTXHVWUHVSRQVH
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

7KHVHUYLFHPHWKRGILJXUHVRXW

ZKLFKVHUYOHWPHWKRGWRFDOOEDVHG
RQWKH+7730HWKRG*(73267
HWFVHQWE\WKHFOLHQW
7KHFOLHQWVHQWDQ+773*(7
UHTXHVWVRWKHVHUYLFHPHWKRG
FDOOVWKHVHUYOHW·VGR*HWPHWKRG
SDVVLQJWKHUHTXHVWDQGUHVSRQVH
REMHFWVDVDUJXPHQWV
FRQWDLQHU
GR*HWUHTXHVWUHVSRQVH
VHUYOHW
&OLHQW
:HE
EURZVHU

7KHVHUYOHWXVHVWKHUHVSRQVH
REMHFWWRZULWHRXWWKHUHVSRQVH
WRWKHFOLHQW7KHUHVSRQVHJRHV
EDFNWKURXJKWKH&RQWDLQHU
FRQWDLQHU

+7732.

KWPO!
KHDG!

KHDG!
ERG\!
LPJVUF !
ERG\!

KWPO!
UHVSRQVH
VHUYOHW
&OLHQW
:HE
EURZVHU

7KHVHUYLFHPHWKRGFRPSOHWHV
VRWKHWKUHDGHLWKHUGLHVRUUHWXUQV
WRD&RQWDLQHUPDQDJHGWKUHDG
SRRO7KHUHTXHVWDQGUHVSRQVH
REMHFWUHIHUHQFHVIDOORXWRIVFRSH
VRWKHVHREMHFWVDUHWRDVWUHDG\
IRUJDUEDJHFROOHFWLRQ
7KHFOLHQWJHWVWKHUHVSRQVH
FRQWDLQHU
UHTXHVW
UHTXHVW
UHVSRQVH
no thread

+7732.

KWPO!
KHDG!

KHDG!
ERG\!
LPJVUF !
ERG\!

KWPO!
6HUYOHWVDQGWKH&RQWDLQHU
<PM[\WZaKWV\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.
UHTXHVWDQGUHVSRQVH
\RXDUHKHUH

*]\\PMZM¼[UWZM\WI[MZ^TM\¼[TQNM
7ESTEPPEDINTOTHEMIDDLEOFTHESERVLETSLIFEBUTTHATSTILLLEAVES
QUESTIONSWHENWASTHESERVLETCLASSLOADED7HENDIDTHESERVLETS
CONSTRUCTORRUN(OWLONGDOESTHESERVLETOBJECTLIVE7HEN
SHOULDYOURSERVLETINITIALIZERESOURCES7HENSHOULDITCLEANUPITS
RESOURCES
4HESERVLETLIFECYCLEISSIMPLETHERESONLYONEMAINSTATEINITIALIZED
)FTHESERVLETISNTINITIALIZEDTHENITSEITHERBEINGINITIALIZEDRUNNING
ITSCONSTRUCTORORINITMETHODBEINGDESTROYEDRUNNINGITSDESTROY
METHODORITSIMPLYDOESNOTEXIST
doGet(),
doPost(), etc.









$6HUYOHWFODVV
/RDGFODVV
&RQWDLQHU
,QVWDQWLDWHVHUYOHWFRQVWUXFWRUUXQV
LQLW
VHUYLFH
GHVWUR\
KDQGOH
FOLHQW
UHTXHVWV
:HE&RQWDLQHU 6HUYOHW&ODVV 6HUYOHW2EMHFW
(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
GRHVQRWH[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\[\PMTQNMKaKTMUM\PWL[
6HUYOHWLQWHUIDFH
MDYD[VHUYOHW6HUYOHW
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.
VHUYLFH6HUYOHW5HTXHVW6HUYOHW5HVSRQVH
LQLW6HUYOHW&RQILJ
GHVWUR\
JHW6HUYOHW&RQILJ

JHW6HUYOHW,QIR
LQWHUIDFH!!
6HUYOHW
*HQHULF6HUYOHWFODVV
MDYD[VHUYOHW*HQHULF6HUYOHW
VHUYLFH6HUYOHW5HTXHVW6HUYOHW5HVSRQVH
LQLW6HUYOHW&RQILJ
LQLW
GHVWUR\
JHW6HUYOHW&RQILJ
JHW6HUYOHW,QIR
JHW,QLW3DUDPHWHU6WULQJ
JHW,QLW3DUDPHWHU1DPHV
JHW6HUYOHW&RQWH[W
ORJ6WULQJ
ORJ6WULQJ7KURZDEOH
*HQHULF6HUYOHW
+WWS6HUYOHWFODVV
MDYD[VHUYOHWKWWS+WWS6HUYOHW
VHUYLFH+WWS6HUYOHW5HTXHVW+WWS6HUYOHW5HVSRQVH
VHUYLFH6HUYOHW5HTXHVW6HUYOHW5HVSRQVH
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\6HUYOHWFODVV
FRPZLFNHGO\VPDUWIRR
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
WKH6HUYOHW$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.
UHTXHVWDQGUHVSRQVH
\RXDUHKHUH


<PM<PZMM*QO4QNMKaKTM5WUMV\[
:KHQLW·VFDOOHG
LQLW
7KH&RQWDLQHUFDOOVLQLWRQ
WKHVHUYOHWLQVWDQFHDIWHUWKH
VHUYOHWLQVWDQFHLVFUHDWHGEXW
EHIRUHWKHVHUYOHWFDQVHUYLFH
DQ\FOLHQWUHTXHVWV
:KDWLW·VIRU
*LYHV\RXDFKDQFHWR
LQLWLDOL]H\RXUVHUYOHWEHIRUH
KDQGOLQJDQ\FOLHQWUHTXHVWV
'R\RXRYHUULGHLW"
3RVVLEO\
,I\RXKDYHLQLWLDOL]DWLRQFRGH
OLNHJHWWLQJDGDWDEDVHFRQ
QHFWLRQRUUHJLVWHULQJ\RXUVHOI
ZLWKRWKHUREMHFWVWKHQ\RX·OO
RYHUULGHWKHLQLWPHWKRGLQ
\RXUVHUYOHWFODVV
:KHQLW·VFDOOHG
VHUYLFH
:KHQWKHILUVWFOLHQWUHTXHVW
FRPHVLQWKH&RQWDLQHUVWDUWV
DQHZWKUHDGRUDOORFDWHVD
WKUHDGIURPWKHSRRODQG
FDXVHVWKHVHUYOHW·VVHUYLFH
PHWKRGWREHLQYRNHG
:KDWLW·VIRU

7KLVPHWKRGORRNVDWWKH
UHTXHVWGHWHUPLQHVWKH+773
PHWKRG*(73267HWF
DQGLQYRNHVWKHPDWFKLQJ
GR*HWGR3RVWHWFRQWKH
VHUYOHW
'R\RXRYHUULGHLW"
1R9HU\XQOLNHO\
<RXVKRXOG127RYHUULGHWKH
VHUYLFHPHWKRG<RXUMRELV
WRRYHUULGHWKHGR*HWDQGRU
GR3RVWPHWKRGVDQGOHWWKH
VHUYLFHLPSOHPHQWDWLRQIURP
+7736HUYOHWZRUU\DERXW
FDOOLQJWKHULJKWRQH
:KHQLW·VFDOOHG
GR*HW
DQGRU
GR3RVW
7KHVHUYLFHPHWKRGLQYRNHV
GR*HWRUGR3RVWEDVHGRQ
WKH+773PHWKRG*(73267
HWFIURPWKHUHTXHVW
:H·UHLQFOXGLQJRQO\GR*HW
DQGGR3RVWKHUHEHFDXVH
WKRVHWZRDUHSUREDEO\WKHRQO\
RQHV\RX·OOHYHUXVH
:KDWLW·VIRU
7KLVLVZKHUH\RXUFRGH
EHJLQV7KLVLVWKHPHWKRG

WKDW·VUHVSRQVLEOHIRUZKDWHYHU
WKHKHFN\RXUZHEDSSLVVXS
SRVHGWREH'2,1*
<RXFDQFDOORWKHUPHWKRGVRQ
RWKHUREMHFWVRIFRXUVHEXWLW
DOOVWDUWVIURPKHUH
'R\RXRYHUULGHLW"
$/:$<6DWOHDVW21(RI
WKHPGR*HWRUGR3RVW
:KLFKHYHURQHV\RX
RYHUULGHWHOOVWKH&RQWDLQHU
ZKDW\RXVXSSRUW,I\RX
GRQ·WRYHUULGHGR3RVWIRU
H[DPSOHWKHQ\RX·UHWHOOLQJ
WKH&RQWDLQHUWKDWWKLVVHUYOHW
GRHVQRWVXSSRUW+7733267
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,JRWWKLVVRWKH&RQWDLQHU

FDOOVP\VHUYOHW·VLQLWPHWKRGEXWLI,GRQ·W
RYHUULGHLQLWWKHRQHIURP*HQHULF6HUYOHWUXQV
7KHQZKHQDUHTXHVWFRPHVLQWKH&RQWDLQHUVWDUWV
RUDOORFDWHVDWKUHDGDQGFDOOVWKHVHUYLFHPHWKRG
ZKLFK,
GRQ·W
RYHUULGHVRWKHVHUYLFHPHWKRGIURP
+WWS6HUYOHWUXQV7KH+WWS6HUYOHWVHUYLFH
PHWKRGWKHQFDOOV
P\
RYHUULGGHQGR*HWRU
GR3RVW6RHDFKWLPHP\GR*HWRUGR3RVW
UXQVLW·VLQDVHSDUDWHPHWKRG
LQLW
VHUYLFH
GR*HW
7KUHDG$ 7KUHDG%
4HE#ONTAINERCALLSINIT
ONTHESERVLETINSTANCE
AFTERTHESERVLETINSTANCE
ISCREATEDBUTBEFORETHE
SERVLETCANSERVICEANYCLIENT
REQUESTS
)FYOUHAVEINITIALIZATION
CODELIKEGETTINGADATABASE
CONNECTIONORREGISTERING
YOURSELFWITHOTHEROBJECTS
THENYOULLOVERRIDETHE
INITMETHODINYOUR
SERVLETCLASS/THERWISE

THEINITMETHODFROM
'ENERIC3ERVLETRUNS

7HENTHElRSTCLIENT
REQUESTCOMESINTHE
#ONTAINERSTARTSORlNDS
ATHREADANDCAUSESTHE
SERVLETSSERVICEMETHOD
TOBEINVOKED
9OUNORMALLYWILL./4
OVERRIDETHESERVICE
METHODSOTHEONEFROM
(TTP3ERVLETWILLRUN4HE
SERVICEMETHODlGURES
OUTWHICH(440METHOD
'%40/34ETCISIN
THEREQUESTANDINVOKES
THEMATCHINGDO'ETOR
DO0OSTMETHOD4HE
DO'ETANDDO0OST
INSIDE(TTP3ERVLETDONTDO
ANYTHINGSOYOUHAVETO
OVERRIDEONEORBOTH4HIS
THREADDIESORISPUTBACK
INA#ONTAINERMANAGED
POOLWHENSERVICE
COMPLETES
VHUYLFH
GR*HW
7KUHDG&

7HENTHESECONDANDALL
OTHERCLIENTREQUESTSCOME
INTHE#ONTAINERAGAIN
CREATESORlNDSAANOTHER
THREADANDCAUSESTHE
SERVLETSSERVICEMETHOD
TOBEINVOKED
3OTHESERVICEDO'ET
METHODSEQUENCEHAPPENS
EACHTIMETHERESACLIENT
REQUEST!TANYGIVEN
TIMEYOULLHAVEATLEASTAS
MANYRUNNABLETHREADSAS
THEREARECLIENTREQUESTS
LIMITEDBYTHERESOURCES
ORPOLICIESCONlGURATION
OFTHE#ONTAINER9OU
MIGHTFOREXAMPLEHAVE
A#ONTAINERTHATLETSYOU
SPECIFYTHEMAXIMUM
NUMBEROFSIMULTANEOUS
THREADSANDWHENTHE
NUMBEROFCLIENTREQUESTS
EXCEEDSTHATSOMECLIENTS
WILLJUSTHAVETOWAIT
6HUYOHWLQLWLDOL]DWLRQ
&OLHQWUHTXHVW
&OLHQWUHTXHVW
7KHVHUYLFHPHWKRGLVDOZD\V
FDOOHGLQLWVRZQVWDFN

VHUYOHWWKUHDGV
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.
UHTXHVWDQGUHVSRQVH
\RXDUHKHUH

6HUYOHW
&OLHQW$
:HE
EURZVHU
&RQWDLQHU
-IKPZMY]M[\Z]V[QVI[MXIZI\M\PZMIL
9OUMIGHTHEARPEOPLESAYTHINGSLIKEh%ACHINSTANCEOFTHESERVLETvBUTTHATSJUST
WRONG4HEREARENTMULTIPLEINSTANCESOFANYSERVLETCLASSEXCEPTINONESPECIALCASE
CALLED3INGLE4HREAD-ODELWHICHISINHERENTLYEVILBUTWERENOTTALKINGABOUT
THATSPECIALCASEYET
4HE#ONTAINERRUNSMULTIPLETHREADSTOPROCESSMULTIPLEREQUESTSTOASINGLE
SERVLET
!NDEVERYCLIENTREQUESTGENERATESANEWPAIROFREQUESTANDRESPONSEOBJECTS
WKUHDG$
UHTXHVW
UHVSRQVH
&OLHQW%
:HE
EURZVHU

WKUHDG%
UHTXHVW
UHVSRQVH
+773UHTXHVW
+773UHTXHVW
Each client gets a separate
thread for each request, and the
Container allocates new request
and response objects.
WKHUH DUH QR
'
XPE 4XHVWLRQV
4

4HISISCONFUSINGINTHE
PICTUREABOVEYOUSHOWTWODIFFER
ENTCLIENTSEACHWITHITSOWNTHREAD
7HATHAPPENSIFTHESAMECLIENT
MAKESMULTIPLEREQUESTS)SITONE
THREADPERCLIENTORONETHREADPER
REQUEST


$
/NETHREADPERREQUEST4HE
#ONTAINERDOESNTCAREWHOMAKES
THEREQUESTEVERYINCOMINGREQUEST
MEANSANEWTHREADSTACK
4


7HATIFTHE#ONTAINERUSES
CLUSTERINGANDDISTRIBUTESTHEAPP
ONMORETHANONE*6-

$
)MAGINETHEPICTUREABOVEIS
FORASINGLE*6-ANDEACH*6-HASTHE
SAMEPICTURE3OFORADISTRIBUTEDWEB
APPTHEREWOULDBEONEINSTANCEOF
APARTICULARSERVLETPER*6-BUTEACH
*6-WOULDSTILLHAVEONLYASINGLE
INSTANCEOFTHATSERVLET
4

)NOTICEDTHAT(TTP3ERVLET
ISINADIFFERENTPACKAGEFROM
'ENERIC3ERVLETHOWMANYSERVLET
PACKAGESARETHERE

$

%VERYTHINGRELATEDTOSERVLETS
BUTEXCLUDING*30STUFFISINEITHER
JAVAXSERVLETORJAVAXSERVLETHTTP
!NDITSEASYTOTELLTHEDIFFERENCE
THINGSTHATHAVETODOWITH(440IS
INTHEJAVAXSERVLETHTTPPACKAGEAND
THERESTGENERICSERVLETCLASSESAND
INTERFACESAREINJAVAXSERVLET7ELL
SEE*30RELATEDCHAPTERSLATERINTHE

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\PMJMOQVVQVO"TWILQVOIVLQVQ\QITQbQVO
4HESERVLETSTARTSLIFEWHENTHE#ONTAINERlNDSTHESERVLETCLASSlLE
4HISVIRTUALLYALWAYSHAPPENSWHENTHE#ONTAINERSTARTSUPFOR
EXAMPLEWHENYOURUN4OMCAT7HENTHE#ONTAINERSTARTSITLOOKS
FORDEPLOYEDWEBAPPSANDTHENSTARTSSEARCHINGFORSERVLETCLASSlLES
)NTHE$EPLOYMENTCHAPTERWELLGOINTOMOREDETAILSOFHOWWHY
ANDWHERETHE#ONTAINERLOOKSFORSERVLETS
&INDINGTHECLASSISTHElRSTSTEP
,OADINGTHECLASSISTHESECONDSTEPANDITHAPPENSEITHERON
#ONTAINERSTARTUPORlRSTCLIENTUSE9OUR#ONTAINERMIGHTGIVEYOUA
CHOICEABOUTCLASSLOADINGORITMIGHTLOADTHECLASSWHENEVERIT
WANTS2EGARDLESSOFWHETHERYOUR#ONTAINERGETSTHESERVLETREADY
EARLYORDOESITJUSTINTIMEWHENTHElRSTCLIENTNEEDSITASERVLETS
SERVICEMETHODWILLNOTRUNUNTILTHESERVLETISFULLYINITIALIZED
<RXUVHUYOHWLVDOZD\V
ORDGHGDQGLQLWLDOL]HG
%()25(LWFDQVHUYLFH
LWVILUVWFOLHQWUHTXHVW
LQLWDOZD\VFRPSOHWHVEHIRUHWKHÀUVWFDOOWRVHUYLFH
#4X3X98

:K\LVWKHUHDQLQLWPHWKRG",QRWKHU
ZRUGVZK\LVQ¶WWKHFRQVWUXFWRUHQRXJKIRU
LQLWLDOL]LQJDVHUYOHW"
:KDWNLQGRIFRGHZRXOG\RXSXWLQWKHLQLW
PHWKRG"
+LQWWKHLQLWPHWKRGWDNHVDQREMHFW
UHIHUHQFHDUJXPHQW:KDWGR\RXWKLQNWKH
DUJXPHQWWRWKHLQLWPHWKRGPLJKWEHDQG
KRZRUZK\ZRXOG\RXXVHLW"
VHUYOHWLQLWLDOL]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.
UHTXHVWDQGUHVSRQVH
\RXDUHKHUH

; M Z ^ T M \  1 V Q \ Q I T Q b I \ Q W V "
_PMVIVWJRMK\JMKWUM[I[MZ^TM\
!SERVLETMOVESFROMDOESNOTEXISTTOINITIALIZEDWHICH
REALLYMEANSREADYTOSERVICECLIENTREQUESTSBEGINNINGWITHA
CONSTRUCTOR"UTTHECONSTRUCTORMAKESONLYANOBJECTNOT
ASERVLET4OBEASERVLETTHEOBJECTNEEDSTOBEGRANTED
SERVLETNESS
7HENANOBJECTBECOMESASERVLETITGETSALLTHEUNIQUE
PRIVILEGESTHATCOMEWITHBEINGASERVLETLIKETHEABILITYTO
USEITS3ERVLET#ONTEXTREFERENCETOGETINFORMATIONFROMTHE

#ONTAINER
7HYDOWECAREABOUTINITIALIZATIONDETAILS
"ECAUSESOMEWHEREBETWEENTHECONSTRUCTORANDTHEINIT
METHODTHESERVLETISINA3CHROEDINGERSSERVLETSTATE9OU
MIGHTHAVESERVLETINITIALIZATIONCODELIKEGETTINGWEBAPP
CONlGURATIONINFOORLOOKINGUPAREFERENCETOANOTHERPART
OFTHEAPPLICATIONTHATWILLFAILIFYOURUNITTOOEARLYINTHE
SERVLETSLIFE)TSPRETTYSIMPLETHOUGHIFYOUREMEMBERTO
PUTNOTHINGINTHESERVLETSCONSTRUCTOR
4HERESNOTHINGTHATCANTWAITUNTILINIT
7KHSURXGHVWPRPHQWRIP\OLIHLV
ZKHQWKH*UDQG0DVWHU&RQWDLQHUPDNHV
PHD
VHUYOHW
E\PDNLQJD6HUYOHW&RQÀJIRUPHDQG
FDOOLQJP\LQLW%HIRUHWKDW,·PMXVWDQRUGLQDU\REMHFW
%XWDVDVHUYOHW,KDYHVSHFLDOSULYLOHJHVEHVLGHVWKH
VHFUHWKDQGVKDNHOLNHWKHDELOLW\WRORJHYHQWV
JHWUHIHUHQFHVWRRWKHUUHVRXUFHVDQGVWRUH
DWWULEXWHVIRURWKHUVHUYOHWV
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
GRHVQRWH[LVW
GHVWUR\
VHUYLFH

,I\RXUTXDQWXPPHFKDQLFVLVDOLWWOHUXVW\³\RXPLJKWZDQWWRGRD*RRJOHVHDUFK
RQ´6FKURHGLQJHU·V&DWµ:DUQLQJSHWORYHUVMXVWGRQ·WJRWKHUH:KHQZHUHIHU
WRD6FKURHGLQJHUVWDWHZHPHDQVRPHWKLQJWKDWLVQHLWKHUIXOO\GHDGRUIXOO\DOLYH
EXWLQVRPHUHDOO\ZHLUGSODFHLQEHWZHHQ
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.

×