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

Head First Servlets and JSP phần 10 pps

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.37 MB, 83 trang )


FKDSWHU
<PZMM_Ia[NQT\MZ[IZMTQSM[MZ^TM\[
+IMSRIGHTlLTERSLIVEINTHE#ONTAINER)NMANYWAYS
THEYRESIMILARTOTHEIRCORESIDENTSSERVLETS(EREAREAFEW
WAYSINWHICHlLTERSARELIKESERVLETS
 ,IÀOWHUVDUHOLNH
VHUYOHWVWKHQ,·PJXHVVLQJ
WKH\PXVWEHLQYRNHGE\WKH
&RQWDLQHUMXVWOLNHVHUYOHWV7KH\
SUREDEO\KDYHWKHLURZQ
OLIHF\FOH
7KH&RQWDLQHUNQRZVWKHLU$3,
7KH&RQWDLQHUPDQDJHVWKHLUOLIHF\FOH
7KH\·UHGHFODUHGLQWKH''
&ILTERSHAVETHEIROWN!0)7HENA*AVACLASSIMPLEMENTS
THE&ILTERINTERFACEITSSTRIKINGADEALWITHTHE#ONTAINER
ANDITGOESFROMBEINGAPLAINOLDCLASSTOBEINGAN
OFlCIAL*%%&ILTER/THERMEMBERSOFTHElLTER!0)ALLOW
lLTERSTOGETACCESSTOTHE3ERVLET#ONTEXTANDTOBELINKED
TOOTHERlLTERS
*USTLIKESERVLETSlLTERSHAVEALIFECYCLE,IKESERVLETSTHEY
HAVEINITANDDESTROYMETHODS3IMILARTOASERVLETS
DO'ETDO0OSTMETHODlLTERSHAVEADO&ILTERMETHOD
!WEBAPPCANHAVELOTSOFlLTERSANDAGIVENREQUEST
CANCAUSEMORETHANONElLTERTOEXECUTE4HE$$ISTHE
PLACEWHEREYOUDECLAREWHICHlLTERSWILLRUNINRESPONSE
TOWHICHREQUESTSANDINWHICHORDER
¿OWHUVDUHOLNHVHUYOHWV
Chapter 13. The Power of Filters
Chapter 13. The Power of Filters


Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:
O'Reilly
Prepared for Augusto Jaramillo Forcada, Safari ID:
Print Publication Date: 8/1/2004 User number: 729515 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.
¿OWHUVDQGZUDSSHUV
\RXDUHKHUH

*]QTLQVO\PMZMY]M[\\ZIKSQVONQT\MZ
/URTASKISTOENHANCETHE"EERAPPLICATIONSOTHATWHENEVER
SOMEONEREQUESTSANYOFTHERESOURCESASSOCIATEDWITHUPDATING
RECIPESWELLBEABLETOKEEPTRACKOFWHOMADETHEREQUEST
(ERESONEVERSIONOFWHATSUCHAlLTERMIGHTLOOKLIKE
SDFNDJHFRPH[DPSOHZHE
LPSRUWMDYDLR
LPSRUWMDYD[VHUYOHW
LPSRUWMDYD[VHUYOHWKWWS+WWS6HUYOHW5HTXHVW
SXEOLFFODVV%HHU5HTXHVW)LOWHULPSOHPHQWV)LOWHU^
SULYDWH)LOWHU&RQ¿JIF
SXEOLFYRLGLQLW)LOWHU&RQ¿JFRQ¿JWKURZV6HUYOHW([FHSWLRQ^
WKLVIF FRQ¿J
`
SXEOLFYRLGGR)LOWHU6HUYOHW5HTXHVWUHT
   6HUYOHW5HVSRQVHUHVS
   )LOWHU&KDLQFKDLQ
  WKURZV6HUYOHW([FHSWLRQ,2([FHSWLRQ^
+WWS6HUYOHW5HTXHVWKWWS5HT +WWS6HUYOHW5HTXHVWUHT
6WULQJQDPH KWWS5HTJHW5HPRWH8VHU

LIQDPH QXOO^
 IFJHW6HUYOHW&RQWH[WORJ³8VHU³QDPH³LVXSGDWLQJ´
`
FKDLQGR)LOWHUUHTUHVS
`

SXEOLFYRLGGHVWUR\^
GRFOHDQXSVWXII
`
`
You must implement destroy()
but usually itÕs empty.
Every Þ lter MUST implement
the Filter interface.
You must implement init(), usually you
just save the conÞ g object.
doFilter() is where you do the real
work Notice that the method doesnÕt
take HTTP request and response
objects just regular ServletRequest and
ServletResponse objects.
But weÕre pretty sure
that we can cast the
request and response to
their HTTP subtypes.
This is how the next Þ lter or servlet
in line gets called - lots more on this
in the next couple of pages.
)LOWHUVKDYHQRLGHD
ZKR·VJRLQJWRFDOOWKHP

RUZKR·VQH[WLQOLQH
Filter and FilterChain
are in javax.servlet
Chapter 13. The Power of Filters
Chapter 13. The Power of Filters
Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:
O'Reilly
Prepared for Augusto Jaramillo Forcada, Safari ID:
Print Publication Date: 8/1/2004 User number: 729515 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
)NQT\MZ¼[TQNMKaKTM
%VERYlLTERMUSTIMPLEMENTTHETHREEMETHODSIN
THE&ILTERINTERFACEINITDO&ILTERANDDESTROY
)LUVWWKHUH·VLQLW
,QWKHHQGWKHUH·VGHVWUR\
GR)LOWHU
GRHVWKHKHDY\OLIWLQJ
7HENTHE#ONTAINERDECIDESTOINSTANTIATEA
lLTERTHEINITMETHODISYOURCHANCETODO
ANYSETUPTASKSBEFORETHElLTERISCALLED4HE
MOSTCOMMONIMPLEMENTATIONWASSHOWNON
THEPREVIOUSPAGESAVINGAREFERENCETOTHE
&ILTER#ONlGOBJECTFORLATERUSEINTHElLTER
7HENTHE#ONTAINERDECIDESTOREMOVEAlLTER
INSTANCEITCALLSTHEDESTROYMETHODGIVING
YOUACHANCETODOANYCLEANUPYOUNEEDTODO

BEFORETHEINSTANCEISDESTROYED
4HEDO&ILTERMETHODISCALLEDEVERYTIMETHE
#ONTAINERDETERMINESTHATTHElLTERSHOULDBE
APPLIEDTOTHECURRENTREQUEST4HEDO&ILTER
METHODTAKESTHREEARGUMENTS
!3ERVLET2EQUEST
NOTAN(TTP3ERVLET2EQUEST
!3ERVLET2ESPONSE
NOTAN(TTP3ERVLET2ESPONSE
!&ILTER#HAIN
4HEDO&ILTERMETHODISYOURCHANCETO
IMPLEMENTYOURlLTERSFUNCTION)FYOURlLTER
ISSUPPOSEDTOLOGUSERNAMESTOAlLEDOIT
INDO&ILTER7ANTTOCOMPRESSTHERESPONSE
OUTPUT$OITINDO&ILTER
WKHUH DUH QR
'
XPE 4XHVWLRQV
4

7HATISA&ILTER#HAIN
$
!&ILTER#HAINISTHECOOLESTTHINGINALLOF
&ILTERDOM&ILTERSAREDESIGNEDTOBEMODULAR
BUILDINGBLOCKSYOUCANMIXTOGETHERINAVARIETY
OFWAYSTOMAKEACOMBINATIONOFTHINGSHAPPEN
ANDTHE&ILTER#HAINISABIGPARTOFWHATMAKESTHIS
POSSIBLE)TSTHETHINGTHATKNOWSWHATCOMESNEXT7E
ALREADYMENTIONEDTHATTHEFILTERSNOTTOMENTION
THESERVLETSHOULDNTKNOWANYTHINGABOUTTHE

OTHERFILTERSINVOLVEDINTHEREQUESTBUTSOMEONE
NEEDSTOKNOWTHEORDERANDTHATSOMEONEISTHE
&ILTER#HAINDRIVENBYTHEFILTERELEMENTSYOUSPECIFY
INTHE$$
"YTHEWAY&ILTER#HAINISINTHESAMEPACKAGEAS
&ILTERJAVAXSERVLET
4

)NOTICEDTHATINYOURDO&ILTERMETHOD
YOUMADETHISCALLCHAINDO&ILTER7HATSA
DO&ILTERDOINGINSIDEADO&ILTER9OURENOT
GONNAGETALLRECURSIVEONUSAREYOU
$

4HE&ILTER#HAININTERFACESDO&ILTERISALITTLE
BITDIFFERENTTHANTHE&ILTERINTERFACESDO&ILTER
(ERESTHEMAINDIFFERENCE
4HEDO&ILTERMETHODOFTHE&ILTER#HAINTAKESCARE
OFFIGURINGOUTWHOSEDO&ILTERMETHODTOINVOKE
NEXTORIFITSTHEENDOFTHECHAINWHICHSERVLETS
SERVICEMETHODBUTTHEDO&ILTERMETHODINA
&ILTERACTUALLYDOESTHEFILTERINGTHETHINGTHEFILTER
WASCREATEDTODO
4HISMEANSA&ILTER#HAINCANINVOKE%)4(%2AFILTEROR
ASERVLETDEPENDINGONWHETHERITSTHEENDOFTHE
CHAIN4HEENDOFTHECHAINISALWAYSEITHERASERVLET
ORA*30WHICHMEANSA*30SGENERATEDSERVLETOF
COURSEASSUMINGTHE#ONTAINERISABLETOMAPTHE
REQUEST52,TOASERVLETOR*30)FTHE#ONTAINERCANT
LOCATETHERIGHTRESOURCEFORTHEREQUESTTHEFILTERIS

NEVERINVOKED
¿OWHU
OLIHF\FOH
Chapter 13. The Power of Filters
Chapter 13. The Power of Filters
Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:
O'Reilly
Prepared for Augusto Jaramillo Forcada, Safari ID:
Print Publication Date: 8/1/2004 User number: 729515 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.
¿OWHUVDQGZUDSSHUV
\RXDUHKHUH


4HESERVLETSPECDOESNTDICTATEHOWTHECHAINDO&ILTERREQRESP
METHODISHANDLEDINSIDETHECONTAINER)NPRACTICETHOUGHYOUCAN
THINKOFTHEPROCESSOFlLTERSCHAININGTOEACHOTHERASIFTHEYWERE
SIMPLYMETHODCALLSONASINGLESTACK7EKNOWTHERESMOREGOINGON
BEHINDTHESCENESINTHE#ONTAINERBUTWEDONTCAREASLONGASWECAN
PREDICTHOWOURlLTERSWILLRUNANDACONCEPTUALIFNOTPHYSICALSTACK
LETSUSDOTHAT
<PQVSWNNQT\MZ[I[JMQVO¹[\IKSIJTMº
)KWVKMX\]ITKITT[\IKSM`IUXTM
)NTHISEXAMPLEAREQUESTFOR3ERVLET!WILLBElLTEREDBYTWOlLTERS
&ILTERTHEN&ILTER
6HUYOHW$
VHUYLFH







8SRQJHWWLQJ
WKHUHTXHVW
WKH&RQWDLQHU
FDOOV)LOWHU·V
GR)LOWHUPHWKRG
ZKLFKUXQVXQWLO
LWHQFRXQWHUVLWV
FKDLQGR)LOWHU
FDOO
7KH&RQWDLQHU
SXVKHV)LOWHU·V
GR)LOWHUPHWKRG
RQWKHWRSRIWKH
VWDFNZKHUHLW
H[HFXWHVXQWLOLW
UHDFKHVLWVFKDLQ
GR)LOWHUFDOO
7KH&RQWDLQHU
SXVKHV6HUYOHW$·V
VHUYLFHPHWKRG
RQWKHWRSRI
WKHVWDFNZKHUH
LWH[HFXWHVWR
FRPSOHWLRQDQGLV
WKHQSRSSHGRII

WKHVWDFN
7KH&RQWDLQHU
UHWXUQVFRQWUROWR
)LOWHUZKHUHLWV
GR)LOWHUPHWKRG
FRPSOHWHVDQGLV
WKHQSRSSHGRII
7KH&RQWDLQHU
UHWXUQVFRQWUROWR
)LOWHUZKHUHLWV
GR)LOWHUPHWKRG
FRPSOHWHVDQGLV
SRSSHGRII7KHQ
WKH&RQWDLQHU
FRPSOHWHVWKH
UHVSRQVH
\PM[\IKS
\PM[\IKS
\PM[\IKS
\PM[\IKS
\PM[\IKS
7KLV´FRQFHSWXDOVWDFNµ
LVMXVWDZD\WRWKLQN
DERXWILOWHUFKDLQ
LQYRFDWLRQV:HGRQ·W
NQRZRUFDUHKRZ
WKH&RQWDLQHUDFWXDOO\
LPSOHPHQWVWKLV³EXW
WKLQNLQJRILWWKLVZD\
OHWV\RXSUHGLFWKRZ

\RXUILOWHUFKDLQZLOO
EHKDYH
)LOWHU
GR)LOWHUUUF
)LOWHU
GR)LOWHUUUF
)LOWHU
GR)LOWHUUUF
)LOWHU
GR)LOWHUUUF
)LOWHU
GR)LOWHUUUF
)LOWHU
GR)LOWHUUUF
)LOWHU
GR)LOWHUUUF
)LOWHU
GR)LOWHUUUF
Chapter 13. The Power of Filters
Chapter 13. The Power of Filters
Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:
O'Reilly
Prepared for Augusto Jaramillo Forcada, Safari ID:
Print Publication Date: 8/1/2004 User number: 729515 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
,MKTIZQVOIVLWZLMZQVONQT\MZ[

7HENYOUCONlGURElLTERSINTHE$$YOULLUSUALLYDOTHREETHINGS
$ECLAREYOURlLTER
 -APYOURlLTERTOTHEWEBRESOURCESYOUWANTTOlLTER
 !RRANGETHESEMAPPINGSTOCREATElLTERINVOCATIONSEQUENCES
ILOWHU!
ILOWHUQDPH!%HHU5HTXHVWILOWHUQDPH!
ILOWHUFODVV!FRPH[DPSOHZHE%HHU5HTXHVW)LOWHU
ILOWHUFODVV!
LQLWSDUDP!
SDUDPQDPH!/RJ)LOH1DPHSDUDPQDPH!
SDUDPYDOXH!8VHU/RJW[WSDUDPYDOXH!
LQLWSDUDP!
ILOWHU!
'HFODULQJDÀOWHU
5XOHVIRUÀOWHU!
'HFODULQJDÀOWHUPDSSLQJWRD
85/SDWWHUQ
ILOWHUPDSSLQJ!
ILOWHUQDPH!%HHU5HTXHVWILOWHUQDPH!
XUOSDWWHUQ!GRXUOSDWWHUQ!
ILOWHUPDSSLQJ!
ILOWHUPDSSLQJ!
¿OWHUQDPH!%HHU5HTXHVWILOWHUQDPH!
VHUYOHWQDPH!$GYLFH6HUYOHWVHUYOHWQDPH!
ILOWHUPDSSLQJ!
7KHILOWHUQDPH!LVPDQGDWRU\
7KHILOWHUFODVV!LVPDQGDWRU\
7KHLQLWSDUDP!LVRSWLRQDODQG
\RXFDQKDYHPDQ\
7KHILOWHUQDPH!LVPDQGDWRU\DQGLWLVXVHG

WROLQNWRWKHFRUUHFWILOWHU!HOHPHQW
(LWKHUWKHXUOSDWWHUQ!RUWKHWKH
VHUYOHWQDPH!HOHPHQWLVPDQGDWRU\
7KHXUOSDWWHUQ!HOHPHQWGHILQHVZKLFKZHE
DSSUHVRXUFHVZLOOXVHWKLVILOWHU
7KHVHUYOHWQDPH!HOHPHQWGHILQHVZKLFK
VLQJOHZHEDSSUHVRXUFHZLOOXVHWKLVILOWHU
5XOHVIRUÀOWHUPDSSLQJ!
FRQ¿JXULQJ¿OWHUV
'HFODULQJDÀOWHUPDSSLQJWRD
VHUYOHWQDPH
,03257$177KH&RQWDLQHU·VUXOHVIRURUGHULQJÀOWHUV
:KHQPRUHWKDQRQHILOWHULVPDSSHGWRDJLYHQUHVRXUFHWKH&RQWDLQHUXVHVWKHIROORZLQJUXOHV
$//ILOWHUVZLWKPDWFKLQJ85/SDWWHUQVDUHORFDWHGILUVW7KLVLV127WKHVDPHDVWKH85/PDSSLQJ
UXOHVWKH&RQWDLQHUXVHVWRFKRRVHWKH´ZLQQHUµZKHQDFOLHQWPDNHVDUHTXHVWIRUDUHVRXUFHEHFDXVH
$//ILOWHUVWKDWPDWFKZLOOEHSODFHGLQWKHFKDLQ)LOWHUVZLWKPDWFKLQJ85/SDWWHUQVDUHSODFHGLQWKH
FKDLQLQWKHRUGHULQZKLFKWKH\DUHGHFODUHGLQWKH''
2QFHDOOILOWHUVZLWKPDWFKLQJ85/VDUHSODFHGLQWKHFKDLQWKH&RQWDLQHUGRHVWKHVDPHWKLQJZLWK
ILOWHUVWKDWKDYHDPDWFKLQJVHUYOHWQDPH!LQWKH''
Chapter 13. The Power of Filters
Chapter 13. The Power of Filters
Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:
O'Reilly
Prepared for Augusto Jaramillo Forcada, Safari ID:
Print Publication Date: 8/1/2004 User number: 729515 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.
¿OWHUVDQGZUDSSHUV
\RXDUHKHUH


4HINKABOUTIT)TSGREATTHATlLTERSCANBEAPPLIEDTOREQUESTS
THATCOMEDIRECTLYFROMTHECLIENT"UTWHATABOUTRESOURCES
REQUESTEDFROMAFORWARDORINCLUDEREQUESTDISPATCHAND
ORTHEERRORHANDLER3ERVLETSPECTOTHERESCUE
,VQ·W7+$7W\SLFDOWKH\JLYHXVDZD\
WRÀOWHUUHTXHVWVFRPLQJIURPD
FOLHQW

DQGWKH\MXVWIRUJHWDOODERXWUHTXHVWV
WKDW:(JHQHUDWHWKURXJK
IRUZDUGV
DQG
UHTXHVWGLVSDWFKHV
*HH]WKH\WUHDW
UHTXHVWGLVSDWFKLQJOLNHLW·VDVHFRQG
FODVVLQYRFDWLRQWHFKQLTXH"
6M_[.TI[P")[WN^MZ[QWVNQT\MZ[
KIVJMIXXTQML\W
ZMY]M[\LQ[XI\KPMZ[
¿OWHUPDSSLQJ!
¿OWHUQDPH!0RQLWRU)LOWHU¿OWHUQDPH!
XUOSDWWHUQ!GRXUOSDWWHUQ!
GLVSDWFKHU!5(48(67GLVSDWFKHU!
GLVSDWFKHU!,1&/8'(GLVSDWFKHU!
GLVSDWFKHU!)25:$5'GLVSDWFKHU!

GLVSDWFKHU!(5525GLVSDWFKHU!
¿OWHU!
'HFODULQJDÀOWHUPDSSLQJIRU

UHTXHVWGLVSDWFKHGZHEUHVRXUFHV
'HFODUDWLRQ5XOHV

7KHILOWHUQDPH!LVPDQGDWRU\
(LWKHUWKHXUOSDWWHUQ!RUVHUYOHWQDPH!
HOHPHQWLVPDQGDWRU\
<RXFDQKDYHIURPWRGLVSDWFKHU!HOHPHQWV
$5(48(67YDOXHDFWLYDWHVWKHILOWHUIRUFOLHQW
UHTXHVWV,IQRGLVSDWFKHU!HOHPHQWLVSUHVHQW
5(48(67LVWKHGHIDXOW
$Q,1&/8'(YDOXHDFWLYDWHVWKHILOWHUIRUUHTXHVW
GLVSDWFKLQJIURPDQLQFOXGHFDOO
$)25:$5'YDOXHDFWLYDWHVWKHILOWHUIRUUHTXHVW
GLVSDWFKLQJIURPDIRUZDUGFDOO
$Q(5525YDOXHDFWLYDWHVWKHILOWHUIRUUHVRXUFHV
FDOOHGE\WKHHUURUKDQGOHU
DQGRU
DQGRU
DQGRU
Chapter 13. The Power of Filters
Chapter 13. The Power of Filters
Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:
O'Reilly
Prepared for Augusto Jaramillo Forcada, Safari ID:
Print Publication Date: 8/1/2004 User number: 729515 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

%DVHGRQWKHIROORZLQJ''IUDJPHQWZULWHGRZQ
WKHVHTXHQFHLQZKLFKWKH¿OWHUVZLOOEHH[HFXWHG
IRUHDFKUHTXHVWSDWK$VVXPH)LOWHUWKURXJK
)LOWHUKDYHEHHQSURSHUO\GHFODUHG$QVZHUV
DUHDWWKHHQGRIWKLVFKDSWHU
ILOWHUPDSSLQJ!
ILOWHUQDPH!)LOWHUILOWHUQDPH!
XUOSDWWHUQ!5HFLSHVXUOSDWWHUQ!
ILOWHUPDSSLQJ!
ILOWHUPDSSLQJ!
ILOWHUQDPH!)LOWHUILOWHUQDPH!
VHUYOHWQDPH!5HFLSHV+RSV/LVWGRVHUYOHWQDPH!
ILOWHUPDSSLQJ!
ILOWHUPDSSLQJ!
ILOWHUQDPH!)LOWHUILOWHUQDPH!
XUOSDWWHUQ!5HFLSHV$GGXUOSDWWHUQ!
ILOWHUPDSSLQJ!
ILOWHUPDSSLQJ!
¿OWHUQDPH!)LOWHUILOWHUQDPH!
VHUYOHWQDPH!5HFLSHV0RGLI\0RG5HFLSHVGRVHUYOHWQDPH!
ILOWHUPDSSLQJ!
ILOWHUPDSSLQJ!
ILOWHUQDPH!)LOWHUILOWHUQDPH!
XUOSDWWHUQ!XUOSDWWHUQ!
ILOWHUPDSSLQJ!
5HTXHVWSDWK)LOWHU6HTXHQFH
5HFLSHV+RSV5HSRUWGR
5HFLSHV+RSV/LVWGR
5HFLSHV0RGLI\0RG5HFLSHVGR
+RSV/LVWGR

5HFLSHV$GG$GG5HFLSHVGR
)LOWHUV
)LOWHUV
)LOWHUV
)LOWHUV
)LOWHUV
6KDUSHQ \RXU SHQFLO
¿OWHUFRQ¿JXUDWLRQH[HUFLVH
Chapter 13. The Power of Filters
Chapter 13. The Power of Filters
Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:
O'Reilly
Prepared for Augusto Jaramillo Forcada, Safari ID:
Print Publication Date: 8/1/2004 User number: 729515 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.
¿OWHUVDQGZUDSSHUV
\RXDUHKHUH

0\ERVVOLNHGP\ÀUVWÀOWHUVR
PXFKKHZDQWVPHWRZULWHDQRWKHU
RQH7KHFRPSDQ\·VSLSHWRWKH
,QWHUQHWLVJHWWLQJUHDOO\EXV\VR
QRZ
KHZDQWVXVWR
FRPSUHVV
DOO
RIRXUUHVSRQVHVWUHDPV
6HHPVOLNHDÀOWHU

ZRXOGEHWKHZD\WRJR
%XWVLQFHZH·UHGHDOLQJZLWK
UHVSRQVHV,·OOKDYHWRSXWWKH
FRPSUHVVLRQFRGH$)7(5WKH
FKDLQGR)LOWHUFDOO
+WUXZM[[QVOW]\X]\_Q\PIZM[XWV[M[QLMÅT\MZ
%ARLIERWESHOWEDAVERYSIMPLEREQUESTlLTER"UTNOWWELLLOOKATARESPONSE
lLTER2ESPONSElLTERSAREABITTRICKIERBUTTHEYCANBEINCREDIBLYUSEFUL4HEY
LETUSDOSOMETHINGTOTHERESPONSEOUTPUTAFTERTHESERVLETDOESITSTHING
BUTBEFORETHERESPONSEISSENTTOTHECLIENT3OINSTEADOFSTEPPINGINATTHE
BEGINNINGBEFORETHESERVLETGETSTHEREQUESTWESTEPINATTHEENDAFTERTHE
SERVLETGETSTHEREQUESTANDGENERATESARESPONSE
7ELLSORTOFTHINKABOUTIT&ILTERSAREALWAYSINVOKEDINTHECHAINBEFORETHE
SERVLET4HERESNOSUCHTHINGASAlLTERTHATISINVOKEDONLYAFTERTHESERVLET
"UTREMEMBERTHATSTACKPICTURE4HElLTERGETSANOTHERSHOTATTHISAFTERTHE
SERVLETCOMPLETESITSWORKANDISPOPPEDOFFTHEVIRTUALSTACK
Chapter 13. The Power of Filters
Chapter 13. The Power of Filters
Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:
O'Reilly
Prepared for Augusto Jaramillo Forcada, Safari ID:
Print Publication Date: 8/1/2004 User number: 729515 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
)ZKPQ\MK\]ZMWNIZM[XWV[MNQT\MZ
2ACHELISTALKINGABOUTTHEBASICSTRUCTUREOFWHATYOUPUTIN
ADO&ILTERMETHODlRSTYOUDOWORKRELATEDTOTHEREQUEST

THENYOUCALLCHAINDO&ILTERTHENlNALLYWHENTHESERVLETAND
ANYOTHERlLTERINTHECHAINAFTERYOURlLTERCOMPLETESAND
CONTROLISRETURNEDTOYOURORIGINALDO&ILTERMETHODYOUCAN
DOSOMETHINGTOTHERESPONSE
FODVV0\&RPSUHVVLRQ)LOWHULPSOHPHQWV)LOWHU^
LQLW
SXEOLFYRLGGR)LOWHUUHTXHVWUHVSRQVHFKDLQ^
WKLVLVZKHUHUHTXHVWKDQGOLQJZRXOGJR
FKDLQGR)LOWHUUHTXHVWUHVSRQVH
GRFRPSUHVVLRQORJLFKHUH
`
GHVWUR\
`
5DFKHO·VSVHXGRFRGHIRUWKHFRPSUHVVLRQÀOWHU
The servlet does its
work at this point.
Now that the servlet is done, we
can get to work on compressing the
response the servlet generated
6HUYOHW$
VHUYLFH
0\&RPSUHVVLRQ)LOWHU
GR)LOWHUUUF
0\&RPSUHVVLRQ)LOWHU
GR)LOWHUUUF
0\&RPSUHVVLRQ)LOWHU
GR)LOWHUUUF
7KH&RPSUHVVLRQ
ÀOWHU·VGR)LOWHU
PHWKRGUXQVDQG

LQYRNHVFKDLQGR)LOWHU
,W·VWRRHDUO\WRGR
DQ\FRPSUHVVLRQ³WKH
JRDOLVWRFRPSUHVVWKH
UHVSRQVHRXWSXWIURP
WKHVHUYOHW
7KH6HUYOHW·VVHUYLFH
PHWKRGJRHVRQWKH
WRSRIWKHVWDFNGRHV
VRPHZRUNJHQHUDWHV
DUHVSRQVHRXWSXWDQG
FRPSOHWHV
1RZWKDWWKH6HUYOHW·V
VHUYLFHPHWKRG
KDVSRSSHGRIIWKH
VWDFNWKHUHVWRIWKH
FRPSUHVVLRQÀOWHU·V
GR)LOWHUPHWKRGFDQ
UXQDQGLWKRSHVGRWKH
FRPSUHVVLRQRQZKDWHYHU
WKHVHUYOHWZURWHWRWKH
UHVSRQVHRXWSXW
7KHFRQFHSWXDOFDOOVWDFN
DUHVSRQVH¿OWHU
Chapter 13. The Power of Filters
Chapter 13. The Power of Filters
Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:
O'Reilly
Prepared for Augusto Jaramillo Forcada, Safari ID:
Print Publication Date: 8/1/2004 User number: 729515 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.
¿OWHUVDQGZUDSSHUV
\RXDUHKHUH

&RQWDLQHU
)LOWHU


7KHILOWHUSDVVHVWKHUHTXHVW
DQGUHVSRQVHWRWKHVHUYOHWDQG
ZDLWVSDWLHQWO\IRULWVFKDQFHWR
FRPSUHVVVWXII
D
7KHVHUYOHWGRHVLWVWKLQJ
FUHDWLQJRXWSXWEOLVVIXOO\XQDZDUH
WKDWWKLVYHU\VDPHRXWSXWZDV
VXSSRVHGWREHFRPSUHVVHG
E
7KHRXWSXWJRHVEDFN
WKURXJKWKH&RQWDLQHUDQG
F
,W·VVHQWEDFNWRWKHFOLHQW
+PPPWKLVFRXOGEHDSUREOHP
7KHILOWHUZDVKRSLQJWRKDYHD
FKDQFHWRGRVRPHWKLQJWRWKH
RXWSXWFRPSUHVVLWEHIRUHWKH
RXWSXWZHQWWRWKHFOLHQW


7KHFDOOWRFKDLQGR)LOWHUKDV
UHWXUQHGDQGWKHILOWHUZDVKRSLQJ
WRJUDEWKHRXWSXWDQGDQGVWDUW
FRPSUHVVLQJ
(;&(37LW·VWRRODWH7KHRXWSXWZDV
DOUHDG\VHQWWRWKHFOLHQW7KH&RQWDLQHU
GRHVQ·WEXIIHUWKHRXWSXWIRUWKHILOWHU
%\WKHWLPHWKHILOWHU·VRZQGR)LOWHU
PHWKRGLVDWWKHWRSRIWKHFRQFHSWXDO
VWDFNLW·VWRRODWHIRUWKHILOWHUWR
DIIHFWWKHRXWSXW
2XWSXW
6WUHDP
5HTXHVWDQG
5HVSRQVH

5HVSRQVH
6HUYOHW
E
D
F
&OLHQW
:HE
EURZVHU
Uh-oh. This
is a problem
the output
doesnÕt wait
for the Þ lter!
*]\Q[Q\ZMITTa\PI\[QUXTM'

$OESCOMPRESSINGTHERESPONSEREALLYINVOLVENOTHINGMORETHAN
WAITINGFORTHESERVLETTOlNISHTHENCOMPRESSINGTHESERVLETS
RESPONSEOUTPUT!FTERALLTHElLTERSDO&ILTERMETHODHASA
REFERENCETOTHESAMERESPONSEOBJECTTHATWENTTOTHESERVLETSOIN
THEORYTHElLTERSHOULDHAVEACCESSTOTHERESPONSEOUTPUT
SXEOLFYRLGGR)LOWHUUHTXHVWUHVSRQVHFKDLQ^
WKLVLVZKHUHUHTXHVWKDQGOLQJZRXOGJR
FKDLQGR)LOWHUUHTXHVWUHVSRQVH
GRFRPSUHVVLRQORJLFKHUH
`



Chapter 13. The Power of Filters
Chapter 13. The Power of Filters
Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:
O'Reilly
Prepared for Augusto Jaramillo Forcada, Safari ID:
Print Publication Date: 8/1/2004 User number: 729515 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
7KLVZRQ·WZRUN,FDQ·W
FRPSUHVVVRPHWKLQJRQWKHZD\
RXW
RIWKHVHUYOHWEHFDXVHLW·VWRRODWH
7KHRXWSXWJRHVVWUDLJKWIURPWKHVHUYOHW
EDFNWRWKHFOLHQW%XWWKHZKROHSRLQWLV

WRFRPSUHVVWKHRXWSXWVRKRZFDQ,
JHWFRQWURORIWKHRXWSXW%()25(LW
JRHVWRWKHFOLHQW"
<PMW]\X]\PI[TMN\\PMJ]QTLQVO
7KLQNDERXWWKLVIRUDPLQXWHWKHVHUYOHW
DFWXDOO\JHWVWKHRXWSXWVWUHDPRUZULWHU
IURPWKHUHVSRQVHREMHFW:KDWLILQVWHDG
RISDVVLQJWKH5($/UHVSRQVHREMHFWWRWKHVHUYOHW
\RXUÀOWHUVZDSSHGLQD
FXVWRP
UHVSRQVHREMHFW
ZLWKDQRXWSXWVWUHDPWKDW
\RX
FRQWURO"1RERG\
VDLGWKHÀOWHUKDVWRSDVVWKH5($/UHVSRQVH
ZKHQLWFDOOVFKDLQGR)LOWHU
FKDLQGR)LOWHU
&RQWDLQHU
GR)LOWHU
Original request and response
A DIFFERENT response
)LOWHU
6HUYOHW
¿OWHULQJWKH
RXWSXW
Chapter 13. The Power of Filters
Chapter 13. The Power of Filters
Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:
O'Reilly
Prepared for Augusto Jaramillo Forcada, Safari ID:

Print Publication Date: 8/1/2004 User number: 729515 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.
¿OWHUVDQGZUDSSHUV
\RXDUHKHUH

?MKIVQUXTMUMV\W]Z7?6ZM[XWV[M
4HE#ONTAINERALREADYIMPLEMENTSTHE(TTP3ERVLET2ESPONSEINTERFACETHATS
WHATYOUGETINTHEDO&ILTERANDSERVICEMETHODS"UTTOGETTHISCOMPRESSION
lLTERWORKINGWEHAVETOMAKEOUROWNCUSTOMIMPLEMENTATIONOFTHE
(TTP3ERVLET2ESPONSEINTERFACEANDPASSTHATTOTHESERVLETVIATHECHAINDO&ILTER
CALL!NDTHATCUSTOMIMPLEMENTATIONHASTOALSOINCLUDEACUSTOMOUTPUTSTREAMAS
WELLSINCETHATSTHEGOALTOCAPTURETHEOUTPUTAFTERTHESERVLETWRITESTOITBUT
BEFOREITGOESBACKTOTHECLIENT
6HUYOHW
UHDO
2XWSXW
6WUHDP
UHDO
5HVSRQVH
FXVWRP

0\5HVSRQVH
VHUYLFH
JHW26
FXVWRP

2XWSXW
6WUHDP

The ÒMyResponseÓ object
delegates (passes-through),
most of the calls it receives,
to the ÒrealÓ response object.
The ÒMyResponseÓ object also has a custom
output stream that compresses the data
written by the servlet, and then sends the
compressed data to the original output
stream (that goes back to the client).
The Þ lter passes a custom ÒMyResponseÓ,
which implements HttpServletResponse
(instead of the original REAL response
the Container passed to the Þ lter).
ZULWH
4

&ILTERSPASS3ERVLET2EQUESTAND3ERVLET2ESPONSEOBJECTSTOTHENEXT
THINGINTHECHAIN./4(TTP3ERVLET2ESPONSE3OWHYAREYOUTALKINGABOUT
IMPLEMENTING(TTP3ERVLET2ESPONSE
$
&ILTERSWEREDESIGNEDTOBEGENERICANDSOOFFICIALLYYOURERIGHT)FWE
THOUGHTONEOFOURFILTERSMIGHTBEUSEDINANONWEBAPPWEDBEIMPLEMENTING
THENON(440INTERFACE3ERVLET2ESPONSEBUTTODAYTHECHANCESOFSOMEONE
DEVELOPINGNON(440SERVLETSISCLOSETOZEROSOWERENOTWORRIED!NDSINCE
3ERVLET2ESPONSEISTHESUPERTYPEOF(TTP3ERVLET2ESPONSETHERESNOPROBLEMPASSING
AN(TTP3ERVLET2ESPONSEWHEREA3ERVLET2ESPONSEISEXPECTED
)LOWHU
Chapter 13. The Power of Filters
Chapter 13. The Power of Filters
Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:

O'Reilly
Prepared for Augusto Jaramillo Forcada, Safari ID:
Print Publication Date: 8/1/2004 User number: 729515 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LWM[V¼\SVW_IJW]\\PM[MZ^TM\?ZIXXMZKTI[[M[
+WWS6HUYOHW5HVSRQVHLVVXFK
DFRPSOLFDWHGLQWHUIDFHLI
RQO\WKHUHZHUHDZD\WRDYRLG
LPSOHPHQWLQJDOOWKRVHPHWKRGV
DQGGHOHJDWLQJFDOOVWRWKHUHDO
UHVSRQVH
#REATINGYOUROWNCUSTOM(TTP3ERVLET2ESPONSE
IMPLEMENTATIONWOULDBEAPAIN%SPECIALLYWHENALL
YOUWANTTOIMPLEMENTAREJUSTAFEWOFTHEMETHODS
!NDSINCE(TTP3ERVLET2ESPONSEISANINTERFACETHAT
EXTENDSANOTHERINTERFACETOIMPLEMENTYOUROWN
CUSTOMRESPONSEYOUDHAVETOIMPLEMENTEVERYTHING
INBOTH(TTP3ERVLET2ESPONSEANDITSSUPERINTERFACE
3ERVLET2ESPONSE
"UTFORTUNATELYSOMEONEAT3UNDIDTHATFORYOUBY
CREATINGASUPPORTCONVENIENCECLASSTHATIMPLEMENTSTHE
(TTP3ERVLET2ESPONSEINTERFACE!LLOFTHEMETHODSINTHAT
CLASSDELEGATETHECALLSTOTHEUNDERLYINGREALRESPONSE
CREATEDBYTHE#ONTAINER
DGG&RRNLH
DGG'DWH+HDGHU

DGG+HDGHU
HQFRGH5HGLUHFW85/
HQFRGH85/
VHQG(UURU
VHQG5HGLUHFW
VHW'DWH+HDGHU
VHW+HDGHU
VHW6WDWXV
PRUHPHWKRGV
LQWHUIDFH!!
+WWS6HUYOHW5HVSRQVH
6HUYOHW5HVSRQVHLQWHUIDFH
MDYD[VHUYOHW6HUYOHW5HVSRQVH
JHW%XIIHU6L]H
VHW&RQWHQW7\SH
JHW2XWSXW6WUHDP
JHW:ULWHU
0$1<PRUHPHWKRGV
LQWHUIDFH!!
6HUYOHW5HVSRQVH
+WWS6HUYOHW5HVSRQVHLQWHUIDFH
MDYD[VHUYOHWKWWS+WWS6HUYOHW5HVSRQVH
Remember, to implement
HttpServletResponse you have to
implement EVERYTHING from
both it and its superinterface
ServletResponse.
LPSOHPHQWLQJ+WWS6HUYOHW5HVSRQVH
Chapter 13. The Power of Filters
Chapter 13. The Power of Filters

Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:
O'Reilly
Prepared for Augusto Jaramillo Forcada, Safari ID:
Print Publication Date: 8/1/2004 User number: 729515 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.
¿OWHUVDQGZUDSSHUV
\RXDUHKHUH

#REATINGASPECIALIZEDVERSIONOFAREQUESTORRESPONSEISSUCHA
COMMONAPPROACHWHENCREATINGlLTERSTHAT3UNHASCREATED
FOURhCONVENIENCEvCLASSESTOMAKETHEJOBEASIER
6HUYOHW5HTXHVW:UDSSHU
+WWS6HUYOHW5HTXHVW:UDSSHU
6HUYOHW5HVSRQVH:UDSSHU
+WWS6HUYOHW5HVSRQVH:UDSSHU
:KHQHYHU\RXZDQWWR
FUHDWHDFXVWRPUHTXHVW
RUUHVSRQVHREMHFWMXVW
VXEFODVVRQHRIWKH
FRQYHQLHQFHUHTXHVW
RUUHVSRQVH´ZUDSSHUµ
FODVVHV
$ZUDSSHUZUDSVWKH5($/
UHTXHVWRUUHVSRQVHREMHFW
DQGGHOHJDWHVSDVVHV
WKURXJKFDOOVWRWKHUHDO
WKLQJZKLOHVWLOOOHWWLQJ
\RXGRWKHH[WUDWKLQJV

\RXQHHGIRU\RXUFXVWRP
UHTXHVWRUUHVSRQVH
? Z I X X M Z[ZWKS
4HEWRAPPERCLASSESINTHESERVLET!0)AREAWESOMETHEY
IMPLEMENTALLTHEMETHODSNEEDEDFORTHETHINGYOURE
TRYINGTOWRAPDELEGATINGALLCALLSTOTHEUNDERLYINGREQUEST
ORRESPONSEOBJECT!LLYOUNEEDTODOISEXTENDONEOFTHE
WRAPPERSANDOVERRIDEJUSTTHEMETHODSYOUNEEDTODOYOUR
CUSTOMWORK
9OUVESEENSUPPORTCLASSESINTHE*3%!0)OFCOURSEWITH
THINGSLIKETHE,ISTENERADAPTERCLASSESFOR'5)S!NDYOUVE
SEENTHEMINTHE*30!0)WITHTHECUSTOMTAGSUPPORTCLASSES
"UTWHILETHOSESUPPORTCLASSESANDTHESEREQUESTANDRESPONSE
WRAPPERSAREALLCONVENIENCECLASSESTHEWRAPPERSAREALITTLE
DIFFERENTBECAUSETHEYWELLWRAPANOBJECTOFTHETYPETHEY
IMPLEMENT)NOTHERWORDSTHEYDONTJUSTPROVIDEANINTERFACE
IMPLEMENTATIONTHEYACTUALLYHOLDAREFERENCETOANOBJECTOF
THESAMEINTERFACETYPETOWHICHTHEYDELEGATEMETHODCALLS
"YTHEWAYTHISHASNOTHINGWHATSOEVERTODOWITHTHE*3%
hPRIMITIVEWRAPPERvCLASSESLIKE)NTEGER"OOLEAN$OUBLEETC
WrappER (your custom
response object)
WrappEE (the original
Container-created
response object)

,I\RX¶UHIDPLOLDUZLWKUHJXODUROGQRQ-((GHVLJQSDWWHUQV
WKHQ\RXSUREDEO\UHFRJQL]HWKLVZUDSSHUFODVVHVDVDQH[DPSOH
RIXVLQJD'HFRUDWRUSDWWHUQDOWKRXJKLWLVDOVRVRPHWLPHVFDOOHG
:UDSSHUSDWWHUQ7KH'HFRUDWRU:UDSSHUGHFRUDWHVZUDSV

RQHNLQGRIDQREMHFWZLWKDQ³HQKDQFHG´LPSOHPHQWDWLRQ$QG
E\³HQKDQFHG´ZHPHDQ³DGGVQHZFDSDELOLWLHV´ZKLOHVWLOOGRLQJ
HYHU\WKLQJWKHRULJLQDOZUDSSHGWKLQJGLG
,W¶VOLNHVD\LQJ³,¶PMXVWD%(77(5YHUVLRQRIWKHWKLQJ,¶PZUDS
SLQJ²,GRHYHU\WKLQJLWGRHVDQGPRUH´2QHFKDUDFWHULVWLFRID
'HFRUDWRU:UDSSHULVWKDWLWGHOHJDWHVPHWKRGLQYRFDWLRQVWRWKH
WKLQJLWZUDSVUDWKHUWKDQEHLQJDFRPSOHWHUHSODFHPHQW
$OWKRXJKQRWH[SOLFLWO\OLVWHGLQWKH
RIÀFLDOREMHFWLYHV\RX0,*+7VHH
´'HFRUDWRUµRQWKHH[DP
Chapter 13. The Power of Filters
Chapter 13. The Power of Filters
Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:
O'Reilly
Prepared for Augusto Jaramillo Forcada, Safari ID:
Print Publication Date: 8/1/2004 User number: 729515 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
FODVV&RPSUHVVLRQ5HVSRQVH:UDSSHUH[WHQGV+WWS6HUYOHW5HVSRQVH:UDSSHU^
RYHUULGHDQ\PHWKRGV\RXZDQWWRFXVWRPL]H
`
FODVV0\&RPSUHVVLRQ)LOWHULPSOHPHQWV)LOWHU^
SXEOLFYRLGLQLW)LOWHU&RQ¿JFIJ^`
SXEOLFYRLGGR)LOWHUUHTXHVWUHVSRQVHFKDLQ^
&RPSUHVVLRQ5HVSRQVH:UDSSHUZUDSSHG5HVS
 QHZ&RPSUHVVLRQ5HVSRQVH:UDSSHUUHVSRQVH
FKDLQGR)LOWHUUHTXHVWZUDSSHG5HVS

GRFRPSUHVVLRQORJLFKHUH
`
SXEOLFYRLGGHVWUR\^`
`
`
)LLQVOI[QUXTM?ZIXXMZ\W\PMLM[QOV
,ETSENHANCE2ACHELSlRSTPSEUDOCODEBYADDINGAWRAPPER
&RPSUHVVLRQÀOWHUGHVLJQYHUVLRQSVHXGRFRGH
LetÕs subclass this
wrapper class for our
own evil purposes
The act of ÒwrappingÓ the response
with our custom Wrapper class.
WeÕll be doing some real
overriding in a few pages!
Now we send this along down the Þ lter
chain. None of the components down the
chain will ever know that the response
object they got was a custom job.
&RQWDLQHU
)LOWHU
6HUYOHW



7KHILOWHUSDVVHVWKHUHTXHVW
REMHFWDQGDFXVWRPUHVSRQVH
REMHFWWRWKHVHUYOHW

6LQFHZHGLGQ·WRYHUULGHDQ\

PHWKRGVLQWKH:UDSSHUWKHRXWSXW
VWUHDPLVQ·WDIIHFWHG\HW
2XWSXW
6WUHDP
5HT 5HT
5HVS
5HVS
:UDSSHU
DUHVSRQVH
¿OWHU
Chapter 13. The Power of Filters
Chapter 13. The Power of Filters
Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:
O'Reilly
Prepared for Augusto Jaramillo Forcada, Safari ID:
Print Publication Date: 8/1/2004 User number: 729515 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.
¿OWHUVDQGZUDSSHUV
\RXDUHKHUH

&RQWDLQHU
)LOWHU
6HUYOHW



7KHILOWHUSDVVHVWKHUHTXHVW
REMHFWDQGDFXVWRPUHVSRQVH

REMHFWWRWKHVHUYOHW7KH
FXVWRPUHVSRQVHKDVDVSHFLDO
JHW2XWSXW6WUHDPPHWKRG

:KHQWKHVHUYOHWDVNVIRUDQ
LWGRHVQ·W.12:WKDWLWZLOOJHWD
´VSHFLDOµRXWSXWVWUHDP
:5$33('
2
87387
675($0
5HT 5HT
5HVS
5HVS
:UDSSHU
FODVV&RPSUHVVLRQ5HVSRQVH:UDSSHUH[WHQGV+WWS6HUYOHW5HVSRQVH:UDSSHU^
SXEOLF6HUYOHW2XWSXW6WUHDPJHW2XWSXW6WUHDPWKURZV^

VHUYOHW*]LS26 QHZ*]LS626UHVSJHW2XWSXW6WUHDP
UHWXUQVHUYOHW*]LS26
`
PD\EHRYHUULGHRWKHUPHWKRGV
`
FODVV0\&RPSUHVVLRQ)LOWHULPSOHPHQWV)LOWHU^
SXEOLFYRLGLQLW)LOWHU&RQ¿JFIJ^`
SXEOLFYRLGGR)LOWHUUHTXHVWUHVSRQVHFKDLQ^
&RPSUHVVLRQ5HVSRQVH:UDSSHUZUDSSHG5HVS
 QHZ&RPSUHVVLRQ5HVSRQVH:UDSSHUUHVSRQVH
FKDLQGR)LOWHUUHTXHVWZUDSSHG5HVS
GRFRPSUHVVLRQORJLFKHUH

`
SXEOLFYRLGGHVWUR\^`
`
)LLIVW]\X]\[\ZMIU?ZIXXMZ
,ETSADDASECOND7RAPPER
&RPSUHVVLRQÀOWHUGHVLJQYHUVLRQSVHXGRFRGH
Override this method to return
a custom output stream.
ÒWrappingÓ the
ServletOutputStream
with our custom
ServletOutputStream
Wrapper class. For
now letÕs assume Gzip
ServletOutputStream
extends
ServletOutputStream.
Return a ÒspecialÓ
ServletOutputStream to
whoever asks for one.
Chapter 13. The Power of Filters
Chapter 13. The Power of Filters
Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:
O'Reilly
Prepared for Augusto Jaramillo Forcada, Safari ID:
Print Publication Date: 8/1/2004 User number: 729515 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ZMITKWUXZM[[QWVNQT\MZKWLM
SDFNDJHFRPH[DPSOHZHE
LPSRUWMDYD[VHUYOHW
LPSRUWMDYD[VHUYOHWKWWS
LPSRUWMDYDLR
LPSRUWMDYDXWLO]LS*=,32XWSXW6WUHDP
SXEOLFFODVV&RPSUHVVLRQ)LOWHULPSOHPHQWV)LOWHU^
SULYDWH6HUYOHW&RQWH[WFW[
SULYDWH)LOWHU&RQ¿JFIJ
SXEOLFYRLGLQLW)LOWHU&RQ¿JFIJ
 WKURZV6HUYOHW([FHSWLRQ^
WKLVFIJ FIJ
FW[ FIJJHW6HUYOHW&RQWH[W
FW[ORJFIJJHW)LOWHU1DPH³LQLWLDOL]HG´
`
SXEOLFYRLGGR)LOWHU6HUYOHW5HTXHVWUHT
  6HUYOHW5HVSRQVHUHVS
  )LOWHU&KDLQIF
 WKURZV,2([FHSWLRQ6HUYOHW([FHSWLRQ^
+WWS6HUYOHW5HTXHVWUHTXHVW +WWS6HUYOHW5HTXHVWUHT
+WWS6HUYOHW5HVSRQVHUHVSRQVH +WWS6HUYOHW5HVSRQVHUHVS

6WULQJYDOLGBHQFRGLQJV UHTXHVWJHW+HDGHU³$FFHSW(QFRGLQJ´
LIYDOLGBHQFRGLQJVLQGH[2I³J]LS´!^

&RPSUHVVLRQ5HVSRQVH:UDSSHUZUDSSHG5HVS
 QHZ&RPSUHVVLRQ5HVSRQVH:UDSSHUUHVSRQVH
The init method saves the conÞ g object
and a quick reference to the servlet

context object (for logging purposes).
The heart of this Þ lter wraps the response
object with a Decorator that wraps the output
stream with a compression I/O stream.
Compression of the output stream is performed
if and only if the client includes an Accept-
Encoding header (speciÞ cally, for gzip).
Does the client accept
GZIP compression?
If so, wrap the response object
with a compression wrapper.
4IMETOCODE7EENDTHISCHAPTERBYLOOKINGATTHECODE
FORBOTHTHECOMPRESSIONlLTERANDTHEWRAPPERITUSES
7EREEXPANDINGFROMTHEPREVIOUSDISCUSSIONANDWHILE
THEREISSOMENEWSTUFFHEREITSMOSTLYJUSTPLAIN*AVACODE
4HISFILTERPROVIDESAMECHANISMTOCOMPRESSTHERESPONSE
BODYCONTENT4HISTYPEOFlLTERWOULDCOMMONLYBE
APPLIEDTOANYTEXTCONTENTSUCHAS(4-,BUTNOTTOMOST
MEDIAFORMATSSUCHAS0.'OR-0%'BECAUSETHEYARE
ALREADYCOMPRESSED
UHVSRQVHFRPSUHVVLRQ¿OWHU
<RXGRQ¶WQHHGWRVWXG\
WKLVFRGHIRUWKHH[DP
7KHUHVWRIWKLVH[DPSOHLVD
GHPRQVWUDWLRQRIDUHVSRQVH¿OWHULQDFWLRQ
MXVWVRWKDW\RXFDQVHHVRPHWKLQJDOLWWOH
PRUHUHDOZRUOG<RXGRQ¶WQHHGWROHDUQRU
XQGHUVWDQGWKLVSDUWLFXODUH[DPSOHIRUWKH
H[DPVRFRQVLGHUWKHUHVWRIWKLVFKDSWHU
FRPSOHWHO\RSWLRQDO

Chapter 13. The Power of Filters
Chapter 13. The Power of Filters
Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:
O'Reilly
Prepared for Augusto Jaramillo Forcada, Safari ID:
Print Publication Date: 8/1/2004 User number: 729515 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.
¿OWHUVDQGZUDSSHUV
\RXDUHKHUH

ZUDSSHG5HVSVHW+HDGHU³&RQWHQW(QFRGLQJ´³J]LS´

IFGR)LOWHUUHTXHVWZUDSSHG5HVS
*=,32XWSXW6WUHDPJ]RV ZUDSSHG5HVSJHW*=,32XWSXW6WUHDP
J]RV¿QLVK

FW[ORJFIJJHW)LOWHU1DPH³¿QLVKHGWKHUHTXHVW´
`HOVH^
FW[ORJFIJJHW)LOWHU1DPH³QRHQFRGLQJSHUIRUPHG´
`
`
SXEOLFYRLGGHVWUR\^
QXOOLQJRXWP\LQVWDQFHYDULDEOHV
FIJ QXOO
FW[ QXOO
`
`
+WUXZM[[QWVNQT\MZKWLMKWV\

A GZIP compression stream
must be ÒÞ nishedÓ, which
also ß ushes the GZIP stream
buffer, and sends all of its
data to the original response
stream.
The container handles the
rest of the work.
Declare that the response
content is being GZIP encoded.
Chain to the next component.
 6RIDUVR
JRRG+RZKDUGFDQD
OLWWOHWKLQJOLNHDZUDSSHUEH"
)DPRXVODVWZRUGV
'HEXJJLQJ7LS
4OTESTTHISlLTERCOMMENTOUTTHIS
LINEOFCODE9OUSHOULDSEEILLEGIBLE
COMPRESSEDDATAINYOURBROWSER
¹7NN\PMXI\Pº
&RPSUHVVLRQPHHWV+773
(OWDOESTHESERVERKNOWITCANSENDCOMPRESSEDDATA(OW
DOESTHEBROWSERKNOWWHENITSGETTINGCOMPRESSEDDATA)T
TURNSOUTTHAT(440IShCOMPRESSIONAWAREvHERESHOWIT
WORKS
 /NEOFTHEHEADERSTHATTHEBROWSERSENDSh!CCEPT
%NCODINGGZIPvTELLSTHESERVERABOUTTHEBROWSERS
CAPABILITIESFORDEALINGWITHDIFFERENTTYPESOFCONTENT
 )FTHESERVERSEESTHATTHEBROWSERCANDEALWITH
COMPRESSEDDATAITWILLPERFORMTHECOMPRESSIONAND

ADDAHEADERh#ONTENT%NCODINGGZIPvTOTHERESPONSE
 7HENTHEBROWSERRECEIVESTHERESPONSETHEh#ONTENT
%NCODINGGZIPvHEADERTELLSTHEBROWSERTODECOMPRESS
THEDATABEFOREITISDISPLAYED
Chapter 13. The Power of Filters
Chapter 13. The Power of Filters
Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:
O'Reilly
Prepared for Augusto Jaramillo Forcada, Safari ID:
Print Publication Date: 8/1/2004 User number: 729515 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
+WUXZM[[QWV_ZIXXMZKWLM
7ELOOKEDATTHE#OMPRESSIONlLTERNOWLETSTAKEALOOKATTHE
WRAPPERITUSES4HISISONEOFTHEMOSTCOMPLICATEDTOPICSINALLOF
SERVLETDOMSODONTPANICIFYOUDONTGROKITTHElRSTTIME
4HISRESPONSEWRAPPERDECORATESTHEORIGINALRESPONSEOBJECTBY
ADDINGACOMPRESSIONDECORATORONTHEORIGINALSERVLETOUTPUT
STREAM
SDFNDJHFRPH[DPSOHZHE
6HUYOHWLPSRUWV
LPSRUWMDYD[VHUYOHWKWWS
LPSRUWMDYD[VHUYOHW
,2LPSRUWV
LPSRUWMDYDLR
LPSRUWMDYDXWLO]LS*=,32XWSXW6WUHDP
FODVV&RPSUHVVLRQ5HVSRQVH:UDSSHUH[WHQGV+WWS6HUYOHW5HVSRQVH:UDSSHU^

SULYDWH*=,36HUYOHW2XWSXW6WUHDPVHUYOHW*]LS26 QXOO
SULYDWH3ULQW:ULWHUSZ QXOO
&RPSUHVVLRQ5HVSRQVH:UDSSHU+WWS6HUYOHW5HVSRQVHUHVS^
VXSHUUHVS
`
SXEOLFYRLGVHW&RQWHQW/HQJWKLQWOHQ^`

SXEOLF*=,32XWSXW6WUHDPJHW*=,32XWSXW6WUHDP^
UHWXUQWKLVVHUYOHW*]LS26LQWHUQDO*]LS26
`
The compressed output stream
for the servlet response.
The PrintWriter object to the
compressed output stream.
The super constructor performs the
Decorator responsibility of storing a
reference to the object being decorated,
in this case the HTTP response object.
Ignore this methodÑthe out-
put will be compressed.
This decorator method, used by the Þ lter,
gives the compression Þ lter a handle on the
GZIP output stream so that the Þ lter can
ÒÞ nishÓ and ß ush the GZIP stream.
UHVSRQVHFRPSUHVVLRQZUDSSHU
Chapter 13. The Power of Filters
Chapter 13. The Power of Filters
Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:
O'Reilly
Prepared for Augusto Jaramillo Forcada, Safari ID:

Print Publication Date: 8/1/2004 User number: 729515 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.
¿OWHUVDQGZUDSSHUV
\RXDUHKHUH

+WUXZM[[QWV_ZIXXMZKWLMKWV\
SULYDWH2EMHFWVWUHDP8VHG QXOO
SXEOLF6HUYOHW2XWSXW6WUHDPJHW2XWSXW6WUHDPWKURZV,2([FHSWLRQ^
LIVWUHDP8VHG QXOOVWUHDP8VHG SZ^
WKURZQHZ,OOHJDO6WDWH([FHSWLRQ
`

LIVHUYOHW*]LS26 QXOO^
VHUYOHW*]LS26
  QHZ*=,36HUYOHW2XWSXW6WUHDPJHW5HVSRQVH
JHW2XWSXW6WUHDP
VWUHDP8VHG VHUYOHW*]LS26
`
UHWXUQVHUYOHW*]LS26
`
SXEOLF3ULQW:ULWHUJHW:ULWHUWKURZV,2([FHSWLRQ^

LIVWUHDP8VHG QXOOVWUHDP8VHG VHUYOHW*]LS26^
WKURZQHZ,OOHJDO6WDWH([FHSWLRQ
`

LISZ QXOO^


VHUYOHW*]LS26
  QHZ*=,36HUYOHW2XWSXW6WUHDPJHW5HVSRQVH
JHW2XWSXW6WUHDP
2XWSXW6WUHDP:ULWHURVZ
  QHZ2XWSXW6WUHDP:ULWHUVHUYOHW*]LS26
JHW5HVSRQVHJHW&KDUDFWHU(QFRGLQJ

SZ QHZ3ULQW:ULWHURVZ
VWUHDP8VHG SZ
`
UHWXUQSZ
`
`
Provide access to a decorated
servlet output stream.
Allow the servlet to access a servlet output
stream, only if the servlet has not already
accessed the print writer.
Wrap the original servlet output
stream with our compression
servlet output stream.
To make a print writer, we have
to Þ rst wrap the servlet output
stream and then wrap the
compression servlet output stream
in two additional output stream
decorators: OutputStreamWriter
which converts characters into
bytes, and then a PrintWriter on
top of the OutputStreamWriter

object.
Provide access to a decorated
print writer.
Allow the servlet to access a print writer,
only if the servlet has not already accessed
the servlet output stream.
Chapter 13. The Power of Filters
Chapter 13. The Power of Filters
Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:
O'Reilly
Prepared for Augusto Jaramillo Forcada, Safari ID:
Print Publication Date: 8/1/2004 User number: 729515 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
FODVV*=,36HUYOHW2XWSXW6WUHDPH[WHQGV6HUYOHW2XWSXW6WUHDP^
*=,32XWSXW6WUHDPLQWHUQDO*]LS26
'HFRUDWRUFRQVWUXFWRU
*=,36HUYOHW2XWSXW6WUHDP6HUYOHW2XWSXW6WUHDPVRVWKURZV,2([FHSWLRQ^
WKLVLQWHUQDO*]LS26 QHZ*=,32XWSXW6WUHDPVRV
`
SXEOLFYRLGZULWHLQWSDUDPWKURZVMDYDLR,2([FHSWLRQ^
LQWHUQDO*]LS26ZULWHSDUDP
`
`
This method implements the compression decoration by delegating
the write() call to the GZIP compression stream, which is wrapping
the original ServletOutputStream, (which in turn is ultimately

wrapping the TCP network output stream to the client).
Keep a reference to the raw GZIP stream. This
instance variable is package-private to allow the
compression response wrapper access to this variable
4HISHELPERCLASSISA$ECORATORONTHE3ERVLET/UTPUT3TREAMABSTRACT
CLASSWHICHDELEGATESTHEREALWORKOFCOMPRESSINGTHEGENERATED
CONTENTUSINGASTANDARD':)0OUTPUTSTREAM
4HEREISONLYONEABSTRACTMETHODINTHE3ERVLET/UTPUT3TREAMTHAT
THIS$ECORATORMUSTIMPLEMENTWRITEINT4HISISWHEREALLOFTHE
DELEGATIONMAGICOCCURS
+WUXZM[[QWV_ZIXXMZPMTXMZKTI[[KWLM
UHVSRQVHRXWSXWGHFRUDWRU
Chapter 13. The Power of Filters
Chapter 13. The Power of Filters
Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:
O'Reilly
Prepared for Augusto Jaramillo Forcada, Safari ID:
Print Publication Date: 8/1/2004 User number: 729515 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.
¿OWHUVDQGZUDSSHUV
\RXDUHKHUH

:ULWHGRZQWKHVHTXHQFHLQZKLFKWKH¿OWHUV
ZLOOEHH[HFXWHGIRUHDFKUHTXHVWSDWK$VVXPH
)LOWHU)LOWHUKDYHEHHQSURSHUO\GHFODUHG
ILOWHUPDSSLQJ!
ILOWHUQDPH!)LOWHUILOWHUQDPH!
XUOSDWWHUQ!5HFLSHVXUOSDWWHUQ!

ILOWHUPDSSLQJ!
ILOWHUPDSSLQJ!
ILOWHUQDPH!)LOWHUILOWHUQDPH!
VHUYOHWQDPH!5HFLSHV+RSV/LVWGRVHUYOHWQDPH!
ILOWHUPDSSLQJ!
ILOWHUPDSSLQJ!
ILOWHUQDPH!)LOWHUILOWHUQDPH!
XUOSDWWHUQ!5HFLSHV$GGXUOSDWWHUQ!
ILOWHUPDSSLQJ!
ILOWHUPDSSLQJ!
ILOWHUQDPH!)LOWHUILOWHUQDPH!
VHUYOHWQDPH!5HFLSHV0RGLI\0RG5HFLSHVGRVHUYOHWQDPH!
ILOWHUPDSSLQJ!
ILOWHUPDSSLQJ!
ILOWHUQDPH!)LOWHUILOWHUQDPH!
XUOSDWWHUQ!XUOSDWWHUQ!
ILOWHUPDSSLQJ!
5HTXHVWSDWK)LOWHU6HTXHQFH
5HFLSHV+RSV5HSRUWGR
5HFLSHV+RSV/LVWGR
5HFLSHV0RGLI\0RG5HFLSHVGR
+RSV/LVWGR
5HFLSHV$GG$GG5HFLSHVGR
)LOWHUV
)LOWHUV
)LOWHUV
)LOWHUV
)LOWHUV






6KDUSHQ \RXU SHQFLO
$16:(56
Chapter 13. The Power of Filters
Chapter 13. The Power of Filters
Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:
O'Reilly
Prepared for Augusto Jaramillo Forcada, Safari ID:
Print Publication Date: 8/1/2004 User number: 729515 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
7HICHARETRUEABOUTDECLARINGlLTERSINTHE$$
#HOOSEALLTHATAPPLY
R!5NLIKESERVLETSlLTERS#! /4DECLAREINITIALIZATIONPARAMETERS
R"&ILTERCHAINORDERISALWAYSDETERMINEDBYTHEORDERTHEELEMENTS
APPEARINTHE$$
R#!CLASSTHATEXTENDSAN!0)REQUESTORRESPONSEWRAPPERCLASSMUST
BEDECLAREDINTHE$$
R$!CLASSTHATEXTENDSAN!0)REQUESTORRESPONSEWRAPPERCLASSIS
USINGTHE)NTERCEPTING&ILTERPATTERN
R%&ILTERCHAINORDERISAFFECTEDBYWHETHERlLTERMAPPINGSARE
DECLAREDVIAXUOSDWWHUQ!ORVIAVHUYOHWQDPH!
0RFN([DP&KDSWHU
7HICHARETRUEABOUTlLTERS#HOOSEALLTHATAPPLY
R!!lLTERCANACTONONLYTHEREQUESTORRESPONSEOBJECT

NOTBOTH
R"4HEGHVWUR\METHODISALWAYSACONTAINERCALLBACK
METHOD
R#4HEGR)LOWHUMETHODISALWAYSACONTAINERCALLBACK
METHOD
R$4HEONLYWAYAlLTERCANBEINVOKEDISTHROUGHA
DECLARATIONINTHE$$
R%4HENEXTlLTERINAlLTERCHAINCANBESPECIlEDEITHER
BYTHEPREVIOUSlLTERORINTHE$$


PRFNH[DP
Chapter 13. The Power of Filters
Chapter 13. The Power of Filters
Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:
O'Reilly
Prepared for Augusto Jaramillo Forcada, Safari ID:
Print Publication Date: 8/1/2004 User number: 729515 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.
¿OWHUVDQGZUDSSHUV
\RXDUHKHUH

'IVENTHISMETHODINANOTHERWISEPROPERLYDElNED)LOWHUIMPLEMENTATION
SXEOLFYRLGGR)LOWHU6HUYOHW5HTXHVWUHT
6HUYOHW5HVSRQVHUHVSRQVH
)LOWHU&KDLQFKDLQ
WKURZV,2([FHSWLRQ6HUYOHW([FHSWLRQ^
+WWS6HUYOHW5HTXHVWUHTXHVW +WWS6HUYOHW5HTXHVWUHT

+WWS6HVVLRQVHVVLRQ UHTXHVWJHW6HVVLRQ
2EMHFWXVHU VHVVLRQJHW$WWULEXWH³XVHU´
LIXVHU QXOO^
8VHU5HTXHVWXUHT QHZ8VHU5HTXHVWUHTXHVWXVHU
FKDLQGR)LOWHUXUHTUHVSRQVH
`HOVH^
5HTXHVW'LVSDWFKHUUG UHTXHVWJHW5HTXHVW'LVSDWFKHU³ORJLQMVS´
UGIRUZDUGUHTXHVWUHVSRQVH
`
`
7HICHISTRUE
R!!NEXCEPTIONWILLALWAYSBETHROWNIFLINEEXECUTES
R",INEISINVALIDBECAUSEUHTXHVWMUSTBEPASSED
ASTHElRSTARGUMENT
R#4HISLINEFKDLQGR)LOWHUUHTXHVWUHVSRQVH
MUSTBEINSERTEDSOMEWHEREINTHEHOVHBLOCK
R$4HISMETHODDOESNOTPROPERLYIMPLEMENT
)LOWHUGR)LOWHUBECAUSETHEMETHOD
SIGNATUREISINCORRECT
R%.ONEOFTHEABOVE

Chapter 13. The Power of Filters
Chapter 13. The Power of Filters
Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:
O'Reilly
Prepared for Augusto Jaramillo Forcada, Safari ID:
Print Publication Date: 8/1/2004 User number: 729515 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
'IVENAPARTIALDEPLOYMENTDESCRIPTOR
¿OWHU!
¿OWHUQDPH!0\)LOWHU¿OWHUQDPH!
¿OWHUFODVV!FRPH[DPSOH0\)LOWHU¿OWHUFODVV!
¿OWHU!
¿OWHUPDSSLQJ!
¿OWHUQDPH!0\)LOWHU¿OWHUQDPH!
XUOSDWWHUQ!P\XUOSDWWHUQ!
¿OWHUPDSSLQJ!
VHUYOHW!
VHUYOHWQDPH!0\6HUYOHWVHUYOHWQDPH!
VHUYOHWFODVV!FRPH[DPSOH0\6HUYOHWVHUYOHWFODVV!
VHUYOHW!
VHUYOHWPDSSLQJ!
VHUYOHWQDPH!0\6HUYOHWVHUYOHWQDPH!
XUOSDWWHUQ!P\XUOSDWWHUQ!
VHUYOHWPDSSLQJ!
7HICHISTRUE#HOOSEALLTHATAPPLY
R!4HElLEISINVALIDBECAUSETHE52,PATTERNP\
ISMAPPEDTOBOTHASERVLETANDAlLTER
R"4HElLEISINVALIDBECAUSENEITHERTHESERVLETNAME
NORTHElLTERNAMEISALLOWEDTOCONTAINSPACES
R#4HElLTER0\)LOWHUWILLBEINVOKEDAFTERTHE
0\6HUYOHWSERVLETFOREACHREQUESTTHATMATCHES
THEPATTERNP\
R$4HElLTER0\)LOWHUWILLBEINVOKEDBEFORETHE
0\6HUYOHWSERVLETFOREACHREQUESTTHATMATCHES
THEPATTERNP\

R%4HElLEISINVALIDBECAUSETHE¿OWHU!ELEMENTMUST
CONTAINAVHUYOHWQDPH!ELEMENTTHATDElNES
WHICHSERVLETTHElLTERSHOULDBEAPPLIEDTO

PRFNH[DP
Chapter 13. The Power of Filters
Chapter 13. The Power of Filters
Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:
O'Reilly
Prepared for Augusto Jaramillo Forcada, Safari ID:
Print Publication Date: 8/1/2004 User number: 729515 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.

×