FKDSWHU
<PZMM_Ia[NQT\MZ[IZMTQSM[MZ^TM\[
+IMSRIGHTlLTERSLIVEINTHE#ONTAINER)NMANYWAYS
THEYRESIMILARTOTHEIRCORESIDENTSSERVLETS(EREAREAFEW
WAYSINWHICHlLTERSARELIKESERVLETS
,IÀOWHUVDUHOLNH
VHUYOHWVWKHQ,·PJXHVVLQJ
WKH\PXVWEHLQYRNHGE\WKH
&RQWDLQHUMXVWOLNHVHUYOHWV7KH\
SUREDEO\KDYHWKHLURZQ
OLIHF\FOH
7KH&RQWDLQHUNQRZVWKHLU$3,
7KH&RQWDLQHUPDQDJHVWKHLUOLIHF\FOH
7KH\·UHGHFODUHGLQWKH''
&ILTERSHAVETHEIROWN!0)7HENA*AVACLASSIMPLEMENTS
THE&ILTERINTERFACEITSSTRIKINGADEALWITHTHE#ONTAINER
ANDITGOESFROMBEINGAPLAINOLDCLASSTOBEINGAN
OFlCIAL*%%&ILTER/THERMEMBERSOFTHElLTER!0)ALLOW
lLTERSTOGETACCESSTOTHE3ERVLET#ONTEXTANDTOBELINKED
TOOTHERlLTERS
*USTLIKESERVLETSlLTERSHAVEALIFECYCLE,IKESERVLETSTHEY
HAVEINITANDDESTROYMETHODS3IMILARTOASERVLETS
DO'ETDO0OSTMETHODlLTERSHAVEADO&ILTERMETHOD
!WEBAPPCANHAVELOTSOFlLTERSANDAGIVENREQUEST
CANCAUSEMORETHANONElLTERTOEXECUTE4HE$$ISTHE
PLACEWHEREYOUDECLAREWHICHlLTERSWILLRUNINRESPONSE
TOWHICHREQUESTSANDINWHICHORDER
¿OWHUVDUHOLNHVHUYOHWV
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.
¿OWHUVDQGZUDSSHUV
\RXDUHKHUH
*]QTLQVO\PMZMY]M[\\ZIKSQVONQT\MZ
/URTASKISTOENHANCETHE"EERAPPLICATIONSOTHATWHENEVER
SOMEONEREQUESTSANYOFTHERESOURCESASSOCIATEDWITHUPDATING
RECIPESWELLBEABLETOKEEPTRACKOFWHOMADETHEREQUEST
(ERESONEVERSIONOFWHATSUCHAlLTERMIGHTLOOKLIKE
SDFNDJHFRPH[DPSOHZHE
LPSRUWMDYDLR
LPSRUWMDYD[VHUYOHW
LPSRUWMDYD[VHUYOHWKWWS+WWS6HUYOHW5HTXHVW
SXEOLFFODVV%HHU5HTXHVW)LOWHULPSOHPHQWV)LOWHU^
SULYDWH)LOWHU&RQ¿JIF
SXEOLFYRLGLQLW)LOWHU&RQ¿JFRQ¿JWKURZV6HUYOHW([FHSWLRQ^
WKLVIF FRQ¿J
`
SXEOLFYRLGGR)LOWHU6HUYOHW5HTXHVWUHT
6HUYOHW5HVSRQVHUHVS
)LOWHU&KDLQFKDLQ
WKURZV6HUYOHW([FHSWLRQ,2([FHSWLRQ^
+WWS6HUYOHW5HTXHVWKWWS5HT +WWS6HUYOHW5HTXHVWUHT
6WULQJQDPH KWWS5HTJHW5HPRWH8VHU
LIQDPH QXOO^
IFJHW6HUYOHW&RQWH[WORJ³8VHU³QDPH³LVXSGDWLQJ´
`
FKDLQGR)LOWHUUHTUHVS
`
SXEOLFYRLGGHVWUR\^
GRFOHDQXSVWXII
`
`
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.
)LOWHUVKDYHQRLGHD
ZKR·VJRLQJWRFDOOWKHP
RUZKR·VQH[WLQOLQH
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¼[TQNMKaKTM
%VERYlLTERMUSTIMPLEMENTTHETHREEMETHODSIN
THE&ILTERINTERFACEINITDO&ILTERANDDESTROY
)LUVWWKHUH·VLQLW
,QWKHHQGWKHUH·VGHVWUR\
GR)LOWHU
GRHVWKHKHDY\OLIWLQJ
7HENTHE#ONTAINERDECIDESTOINSTANTIATEA
lLTERTHEINITMETHODISYOURCHANCETODO
ANYSETUPTASKSBEFORETHElLTERISCALLED4HE
MOSTCOMMONIMPLEMENTATIONWASSHOWNON
THEPREVIOUSPAGESAVINGAREFERENCETOTHE
&ILTER#ONlGOBJECTFORLATERUSEINTHElLTER
7HENTHE#ONTAINERDECIDESTOREMOVEAlLTER
INSTANCEITCALLSTHEDESTROYMETHODGIVING
YOUACHANCETODOANYCLEANUPYOUNEEDTODO
BEFORETHEINSTANCEISDESTROYED
4HEDO&ILTERMETHODISCALLEDEVERYTIMETHE
#ONTAINERDETERMINESTHATTHElLTERSHOULDBE
APPLIEDTOTHECURRENTREQUEST4HEDO&ILTER
METHODTAKESTHREEARGUMENTS
!3ERVLET2EQUEST
NOTAN(TTP3ERVLET2EQUEST
!3ERVLET2ESPONSE
NOTAN(TTP3ERVLET2ESPONSE
!&ILTER#HAIN
4HEDO&ILTERMETHODISYOURCHANCETO
IMPLEMENTYOURlLTERSFUNCTION)FYOURlLTER
ISSUPPOSEDTOLOGUSERNAMESTOAlLEDOIT
INDO&ILTER7ANTTOCOMPRESSTHERESPONSE
OUTPUT$OITINDO&ILTER
WKHUH DUH QR
'
XPE 4XHVWLRQV
4
7HATISA&ILTER#HAIN
$
!&ILTER#HAINISTHECOOLESTTHINGINALLOF
&ILTERDOM&ILTERSAREDESIGNEDTOBEMODULAR
BUILDINGBLOCKSYOUCANMIXTOGETHERINAVARIETY
OFWAYSTOMAKEACOMBINATIONOFTHINGSHAPPEN
ANDTHE&ILTER#HAINISABIGPARTOFWHATMAKESTHIS
POSSIBLE)TSTHETHINGTHATKNOWSWHATCOMESNEXT7E
ALREADYMENTIONEDTHATTHEFILTERSNOTTOMENTION
THESERVLETSHOULDNTKNOWANYTHINGABOUTTHE
OTHERFILTERSINVOLVEDINTHEREQUESTBUTSOMEONE
NEEDSTOKNOWTHEORDERANDTHATSOMEONEISTHE
&ILTER#HAINDRIVENBYTHEFILTERELEMENTSYOUSPECIFY
INTHE$$
"YTHEWAY&ILTER#HAINISINTHESAMEPACKAGEAS
&ILTERJAVAXSERVLET
4
)NOTICEDTHATINYOURDO&ILTERMETHOD
YOUMADETHISCALLCHAINDO&ILTER7HATSA
DO&ILTERDOINGINSIDEADO&ILTER9OURENOT
GONNAGETALLRECURSIVEONUSAREYOU
$
4HE&ILTER#HAININTERFACESDO&ILTERISALITTLE
BITDIFFERENTTHANTHE&ILTERINTERFACESDO&ILTER
(ERESTHEMAINDIFFERENCE
4HEDO&ILTERMETHODOFTHE&ILTER#HAINTAKESCARE
OFFIGURINGOUTWHOSEDO&ILTERMETHODTOINVOKE
NEXTORIFITSTHEENDOFTHECHAINWHICHSERVLETS
SERVICEMETHODBUTTHEDO&ILTERMETHODINA
&ILTERACTUALLYDOESTHEFILTERINGTHETHINGTHEFILTER
WASCREATEDTODO
4HISMEANSA&ILTER#HAINCANINVOKE%)4(%2AFILTEROR
ASERVLETDEPENDINGONWHETHERITSTHEENDOFTHE
CHAIN4HEENDOFTHECHAINISALWAYSEITHERASERVLET
ORA*30WHICHMEANSA*30SGENERATEDSERVLETOF
COURSEASSUMINGTHE#ONTAINERISABLETOMAPTHE
REQUEST52,TOASERVLETOR*30)FTHE#ONTAINERCANT
LOCATETHERIGHTRESOURCEFORTHEREQUESTTHEFILTERIS
NEVERINVOKED
¿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.
¿OWHUVDQGZUDSSHUV
\RXDUHKHUH
4HESERVLETSPECDOESNTDICTATEHOWTHECHAINDO&ILTERREQRESP
METHODISHANDLEDINSIDETHECONTAINER)NPRACTICETHOUGHYOUCAN
THINKOFTHEPROCESSOFlLTERSCHAININGTOEACHOTHERASIFTHEYWERE
SIMPLYMETHODCALLSONASINGLESTACK7EKNOWTHERESMOREGOINGON
BEHINDTHESCENESINTHE#ONTAINERBUTWEDONTCAREASLONGASWECAN
PREDICTHOWOURlLTERSWILLRUNANDACONCEPTUALIFNOTPHYSICALSTACK
LETSUSDOTHAT
<PQVSWNNQT\MZ[I[JMQVO¹[\IKSIJTMº
)KWVKMX\]ITKITT[\IKSM`IUXTM
)NTHISEXAMPLEAREQUESTFOR3ERVLET!WILLBElLTEREDBYTWOlLTERS
&ILTERTHEN&ILTER
6HUYOHW$
VHUYLFH
8SRQJHWWLQJ
WKHUHTXHVW
WKH&RQWDLQHU
FDOOV)LOWHU·V
GR)LOWHUPHWKRG
ZKLFKUXQVXQWLO
LWHQFRXQWHUVLWV
FKDLQGR)LOWHU
FDOO
7KH&RQWDLQHU
SXVKHV)LOWHU·V
GR)LOWHUPHWKRG
RQWKHWRSRIWKH
VWDFNZKHUHLW
H[HFXWHVXQWLOLW
UHDFKHVLWVFKDLQ
GR)LOWHUFDOO
7KH&RQWDLQHU
SXVKHV6HUYOHW$·V
VHUYLFHPHWKRG
RQWKHWRSRI
WKHVWDFNZKHUH
LWH[HFXWHVWR
FRPSOHWLRQDQGLV
WKHQSRSSHGRII
WKHVWDFN
7KH&RQWDLQHU
UHWXUQVFRQWUROWR
)LOWHUZKHUHLWV
GR)LOWHUPHWKRG
FRPSOHWHVDQGLV
WKHQSRSSHGRII
7KH&RQWDLQHU
UHWXUQVFRQWUROWR
)LOWHUZKHUHLWV
GR)LOWHUPHWKRG
FRPSOHWHVDQGLV
SRSSHGRII7KHQ
WKH&RQWDLQHU
FRPSOHWHVWKH
UHVSRQVH
\PM[\IKS
\PM[\IKS
\PM[\IKS
\PM[\IKS
\PM[\IKS
7KLV´FRQFHSWXDOVWDFNµ
LVMXVWDZD\WRWKLQN
DERXWILOWHUFKDLQ
LQYRFDWLRQV:HGRQ·W
NQRZRUFDUHKRZ
WKH&RQWDLQHUDFWXDOO\
LPSOHPHQWVWKLV³EXW
WKLQNLQJRILWWKLVZD\
OHWV\RXSUHGLFWKRZ
\RXUILOWHUFKDLQZLOO
EHKDYH
)LOWHU
GR)LOWHUUUF
)LOWHU
GR)LOWHUUUF
)LOWHU
GR)LOWHUUUF
)LOWHU
GR)LOWHUUUF
)LOWHU
GR)LOWHUUUF
)LOWHU
GR)LOWHUUUF
)LOWHU
GR)LOWHUUUF
)LOWHU
GR)LOWHUUUF
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
,MKTIZQVOIVLWZLMZQVONQT\MZ[
7HENYOUCONlGURElLTERSINTHE$$YOULLUSUALLYDOTHREETHINGS
$ECLAREYOURlLTER
-APYOURlLTERTOTHEWEBRESOURCESYOUWANTTOlLTER
!RRANGETHESEMAPPINGSTOCREATElLTERINVOCATIONSEQUENCES
ILOWHU!
ILOWHUQDPH!%HHU5HTXHVWILOWHUQDPH!
ILOWHUFODVV!FRPH[DPSOHZHE%HHU5HTXHVW)LOWHU
ILOWHUFODVV!
LQLWSDUDP!
SDUDPQDPH!/RJ)LOH1DPHSDUDPQDPH!
SDUDPYDOXH!8VHU/RJW[WSDUDPYDOXH!
LQLWSDUDP!
ILOWHU!
'HFODULQJDÀOWHU
5XOHVIRUÀOWHU!
'HFODULQJDÀOWHUPDSSLQJWRD
85/SDWWHUQ
ILOWHUPDSSLQJ!
ILOWHUQDPH!%HHU5HTXHVWILOWHUQDPH!
XUOSDWWHUQ!GRXUOSDWWHUQ!
ILOWHUPDSSLQJ!
ILOWHUPDSSLQJ!
¿OWHUQDPH!%HHU5HTXHVWILOWHUQDPH!
VHUYOHWQDPH!$GYLFH6HUYOHWVHUYOHWQDPH!
ILOWHUPDSSLQJ!
7KHILOWHUQDPH!LVPDQGDWRU\
7KHILOWHUFODVV!LVPDQGDWRU\
7KHLQLWSDUDP!LVRSWLRQDODQG
\RXFDQKDYHPDQ\
7KHILOWHUQDPH!LVPDQGDWRU\DQGLWLVXVHG
WROLQNWRWKHFRUUHFWILOWHU!HOHPHQW
(LWKHUWKHXUOSDWWHUQ!RUWKHWKH
VHUYOHWQDPH!HOHPHQWLVPDQGDWRU\
7KHXUOSDWWHUQ!HOHPHQWGHILQHVZKLFKZHE
DSSUHVRXUFHVZLOOXVHWKLVILOWHU
7KHVHUYOHWQDPH!HOHPHQWGHILQHVZKLFK
VLQJOHZHEDSSUHVRXUFHZLOOXVHWKLVILOWHU
5XOHVIRUÀOWHUPDSSLQJ!
FRQ¿JXULQJ¿OWHUV
'HFODULQJDÀOWHUPDSSLQJWRD
VHUYOHWQDPH
,03257$177KH&RQWDLQHU·VUXOHVIRURUGHULQJÀOWHUV
:KHQPRUHWKDQRQHILOWHULVPDSSHGWRDJLYHQUHVRXUFHWKH&RQWDLQHUXVHVWKHIROORZLQJUXOHV
$//ILOWHUVZLWKPDWFKLQJ85/SDWWHUQVDUHORFDWHGILUVW7KLVLV127WKHVDPHDVWKH85/PDSSLQJ
UXOHVWKH&RQWDLQHUXVHVWRFKRRVHWKH´ZLQQHUµZKHQDFOLHQWPDNHVDUHTXHVWIRUDUHVRXUFHEHFDXVH
$//ILOWHUVWKDWPDWFKZLOOEHSODFHGLQWKHFKDLQ)LOWHUVZLWKPDWFKLQJ85/SDWWHUQVDUHSODFHGLQWKH
FKDLQLQWKHRUGHULQZKLFKWKH\DUHGHFODUHGLQWKH''
2QFHDOOILOWHUVZLWKPDWFKLQJ85/VDUHSODFHGLQWKHFKDLQWKH&RQWDLQHUGRHVWKHVDPHWKLQJZLWK
ILOWHUVWKDWKDYHDPDWFKLQJVHUYOHWQDPH!LQWKH''
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.
¿OWHUVDQGZUDSSHUV
\RXDUHKHUH
4HINKABOUTIT)TSGREATTHATlLTERSCANBEAPPLIEDTOREQUESTS
THATCOMEDIRECTLYFROMTHECLIENT"UTWHATABOUTRESOURCES
REQUESTEDFROMAFORWARDORINCLUDEREQUESTDISPATCHAND
ORTHEERRORHANDLER3ERVLETSPECTOTHERESCUE
,VQ·W7+$7W\SLFDOWKH\JLYHXVDZD\
WRÀOWHUUHTXHVWVFRPLQJIURPD
FOLHQW
DQGWKH\MXVWIRUJHWDOODERXWUHTXHVWV
WKDW:(JHQHUDWHWKURXJK
IRUZDUGV
DQG
UHTXHVWGLVSDWFKHV
*HH]WKH\WUHDW
UHTXHVWGLVSDWFKLQJOLNHLW·VDVHFRQG
FODVVLQYRFDWLRQWHFKQLTXH"
6M_[.TI[P")[WN^MZ[QWVNQT\MZ[
KIVJMIXXTQML\W
ZMY]M[\LQ[XI\KPMZ[
¿OWHUPDSSLQJ!
¿OWHUQDPH!0RQLWRU)LOWHU¿OWHUQDPH!
XUOSDWWHUQ!GRXUOSDWWHUQ!
GLVSDWFKHU!5(48(67GLVSDWFKHU!
GLVSDWFKHU!,1&/8'(GLVSDWFKHU!
GLVSDWFKHU!)25:$5'GLVSDWFKHU!
GLVSDWFKHU!(5525GLVSDWFKHU!
¿OWHU!
'HFODULQJDÀOWHUPDSSLQJIRU
UHTXHVWGLVSDWFKHGZHEUHVRXUFHV
'HFODUDWLRQ5XOHV
7KHILOWHUQDPH!LVPDQGDWRU\
(LWKHUWKHXUOSDWWHUQ!RUVHUYOHWQDPH!
HOHPHQWLVPDQGDWRU\
<RXFDQKDYHIURPWRGLVSDWFKHU!HOHPHQWV
$5(48(67YDOXHDFWLYDWHVWKHILOWHUIRUFOLHQW
UHTXHVWV,IQRGLVSDWFKHU!HOHPHQWLVSUHVHQW
5(48(67LVWKHGHIDXOW
$Q,1&/8'(YDOXHDFWLYDWHVWKHILOWHUIRUUHTXHVW
GLVSDWFKLQJIURPDQLQFOXGHFDOO
$)25:$5'YDOXHDFWLYDWHVWKHILOWHUIRUUHTXHVW
GLVSDWFKLQJIURPDIRUZDUGFDOO
$Q(5525YDOXHDFWLYDWHVWKHILOWHUIRUUHVRXUFHV
FDOOHGE\WKHHUURUKDQGOHU
DQGRU
DQGRU
DQGRU
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
%DVHGRQWKHIROORZLQJ''IUDJPHQWZULWHGRZQ
WKHVHTXHQFHLQZKLFKWKH¿OWHUVZLOOEHH[HFXWHG
IRUHDFKUHTXHVWSDWK$VVXPH)LOWHUWKURXJK
)LOWHUKDYHEHHQSURSHUO\GHFODUHG$QVZHUV
DUHDWWKHHQGRIWKLVFKDSWHU
ILOWHUPDSSLQJ!
ILOWHUQDPH!)LOWHUILOWHUQDPH!
XUOSDWWHUQ!5HFLSHVXUOSDWWHUQ!
ILOWHUPDSSLQJ!
ILOWHUPDSSLQJ!
ILOWHUQDPH!)LOWHUILOWHUQDPH!
VHUYOHWQDPH!5HFLSHV+RSV/LVWGRVHUYOHWQDPH!
ILOWHUPDSSLQJ!
ILOWHUPDSSLQJ!
ILOWHUQDPH!)LOWHUILOWHUQDPH!
XUOSDWWHUQ!5HFLSHV$GGXUOSDWWHUQ!
ILOWHUPDSSLQJ!
ILOWHUPDSSLQJ!
¿OWHUQDPH!)LOWHUILOWHUQDPH!
VHUYOHWQDPH!5HFLSHV0RGLI\0RG5HFLSHVGRVHUYOHWQDPH!
ILOWHUPDSSLQJ!
ILOWHUPDSSLQJ!
ILOWHUQDPH!)LOWHUILOWHUQDPH!
XUOSDWWHUQ!XUOSDWWHUQ!
ILOWHUPDSSLQJ!
5HTXHVWSDWK)LOWHU6HTXHQFH
5HFLSHV+RSV5HSRUWGR
5HFLSHV+RSV/LVWGR
5HFLSHV0RGLI\0RG5HFLSHVGR
+RSV/LVWGR
5HFLSHV$GG$GG5HFLSHVGR
)LOWHUV
)LOWHUV
)LOWHUV
)LOWHUV
)LOWHUV
6KDUSHQ \RXU SHQFLO
¿OWHUFRQ¿JXUDWLRQH[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.
¿OWHUVDQGZUDSSHUV
\RXDUHKHUH
0\ERVVOLNHGP\ÀUVWÀOWHUVR
PXFKKHZDQWVPHWRZULWHDQRWKHU
RQH7KHFRPSDQ\·VSLSHWRWKH
,QWHUQHWLVJHWWLQJUHDOO\EXV\VR
QRZ
KHZDQWVXVWR
FRPSUHVV
DOO
RIRXUUHVSRQVHVWUHDPV
6HHPVOLNHDÀOWHU
ZRXOGEHWKHZD\WRJR
%XWVLQFHZH·UHGHDOLQJZLWK
UHVSRQVHV,·OOKDYHWRSXWWKH
FRPSUHVVLRQFRGH$)7(5WKH
FKDLQGR)LOWHUFDOO
+WUXZM[[QVOW]\X]\_Q\PIZM[XWV[M[QLMÅT\MZ
%ARLIERWESHOWEDAVERYSIMPLEREQUESTlLTER"UTNOWWELLLOOKATARESPONSE
lLTER2ESPONSElLTERSAREABITTRICKIERBUTTHEYCANBEINCREDIBLYUSEFUL4HEY
LETUSDOSOMETHINGTOTHERESPONSEOUTPUTAFTERTHESERVLETDOESITSTHING
BUTBEFORETHERESPONSEISSENTTOTHECLIENT3OINSTEADOFSTEPPINGINATTHE
BEGINNINGBEFORETHESERVLETGETSTHEREQUESTWESTEPINATTHEENDAFTERTHE
SERVLETGETSTHEREQUESTANDGENERATESARESPONSE
7ELLSORTOFTHINKABOUTIT&ILTERSAREALWAYSINVOKEDINTHECHAINBEFORETHE
SERVLET4HERESNOSUCHTHINGASAlLTERTHATISINVOKEDONLYAFTERTHESERVLET
"UTREMEMBERTHATSTACKPICTURE4HElLTERGETSANOTHERSHOTATTHISAFTERTHE
SERVLETCOMPLETESITSWORKANDISPOPPEDOFFTHEVIRTUALSTACK
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\]ZMWNIZM[XWV[MNQT\MZ
2ACHELISTALKINGABOUTTHEBASICSTRUCTUREOFWHATYOUPUTIN
ADO&ILTERMETHODlRSTYOUDOWORKRELATEDTOTHEREQUEST
THENYOUCALLCHAINDO&ILTERTHENlNALLYWHENTHESERVLETAND
ANYOTHERlLTERINTHECHAINAFTERYOURlLTERCOMPLETESAND
CONTROLISRETURNEDTOYOURORIGINALDO&ILTERMETHODYOUCAN
DOSOMETHINGTOTHERESPONSE
FODVV0\&RPSUHVVLRQ)LOWHULPSOHPHQWV)LOWHU^
LQLW
SXEOLFYRLGGR)LOWHUUHTXHVWUHVSRQVHFKDLQ^
WKLVLVZKHUHUHTXHVWKDQGOLQJZRXOGJR
FKDLQGR)LOWHUUHTXHVWUHVSRQVH
GRFRPSUHVVLRQORJLFKHUH
`
GHVWUR\
`
5DFKHO·VSVHXGRFRGHIRUWKHFRPSUHVVLRQÀ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)LOWHUUUF
0\&RPSUHVVLRQ)LOWHU
GR)LOWHUUUF
0\&RPSUHVVLRQ)LOWHU
GR)LOWHUUUF
7KH&RPSUHVVLRQ
ÀOWHU·VGR)LOWHU
PHWKRGUXQVDQG
LQYRNHVFKDLQGR)LOWHU
,W·VWRRHDUO\WRGR
DQ\FRPSUHVVLRQ³WKH
JRDOLVWRFRPSUHVVWKH
UHVSRQVHRXWSXWIURP
WKHVHUYOHW
7KH6HUYOHW·VVHUYLFH
PHWKRGJRHVRQWKH
WRSRIWKHVWDFNGRHV
VRPHZRUNJHQHUDWHV
DUHVSRQVHRXWSXWDQG
FRPSOHWHV
1RZWKDWWKH6HUYOHW·V
VHUYLFHPHWKRG
KDVSRSSHGRIIWKH
VWDFNWKHUHVWRIWKH
FRPSUHVVLRQÀOWHU·V
GR)LOWHUPHWKRGFDQ
UXQDQGLWKRSHVGRWKH
FRPSUHVVLRQRQZKDWHYHU
WKHVHUYOHWZURWHWRWKH
UHVSRQVHRXWSXW
7KHFRQFHSWXDOFDOOVWDFN
DUHVSRQVH¿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.
¿OWHUVDQGZUDSSHUV
\RXDUHKHUH
&RQWDLQHU
)LOWHU
7KHILOWHUSDVVHVWKHUHTXHVW
DQGUHVSRQVHWRWKHVHUYOHWDQG
ZDLWVSDWLHQWO\IRULWVFKDQFHWR
FRPSUHVVVWXII
D
7KHVHUYOHWGRHVLWVWKLQJ
FUHDWLQJRXWSXWEOLVVIXOO\XQDZDUH
WKDWWKLVYHU\VDPHRXWSXWZDV
VXSSRVHGWREHFRPSUHVVHG
E
7KHRXWSXWJRHVEDFN
WKURXJKWKH&RQWDLQHUDQG
F
,W·VVHQWEDFNWRWKHFOLHQW
+PPPWKLVFRXOGEHDSUREOHP
7KHILOWHUZDVKRSLQJWRKDYHD
FKDQFHWRGRVRPHWKLQJWRWKH
RXWSXWFRPSUHVVLWEHIRUHWKH
RXWSXWZHQWWRWKHFOLHQW
7KHFDOOWRFKDLQGR)LOWHUKDV
UHWXUQHGDQGWKHILOWHUZDVKRSLQJ
WRJUDEWKHRXWSXWDQGDQGVWDUW
FRPSUHVVLQJ
(;&(37LW·VWRRODWH7KHRXWSXWZDV
DOUHDG\VHQWWRWKHFOLHQW7KH&RQWDLQHU
GRHVQ·WEXIIHUWKHRXWSXWIRUWKHILOWHU
%\WKHWLPHWKHILOWHU·VRZQGR)LOWHU
PHWKRGLVDWWKHWRSRIWKHFRQFHSWXDO
VWDFNLW·VWRRODWHIRUWKHILOWHUWR
DIIHFWWKHRXWSXW
2XWSXW
6WUHDP
5HTXHVWDQG
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'
$OESCOMPRESSINGTHERESPONSEREALLYINVOLVENOTHINGMORETHAN
WAITINGFORTHESERVLETTOlNISHTHENCOMPRESSINGTHESERVLETS
RESPONSEOUTPUT!FTERALLTHElLTERSDO&ILTERMETHODHASA
REFERENCETOTHESAMERESPONSEOBJECTTHATWENTTOTHESERVLETSOIN
THEORYTHElLTERSHOULDHAVEACCESSTOTHERESPONSEOUTPUT
SXEOLFYRLGGR)LOWHUUHTXHVWUHVSRQVHFKDLQ^
WKLVLVZKHUHUHTXHVWKDQGOLQJZRXOGJR
FKDLQGR)LOWHUUHTXHVWUHVSRQVH
GRFRPSUHVVLRQORJLFKHUH
`
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
7KLVZRQ·WZRUN,FDQ·W
FRPSUHVVVRPHWKLQJRQWKHZD\
RXW
RIWKHVHUYOHWEHFDXVHLW·VWRRODWH
7KHRXWSXWJRHVVWUDLJKWIURPWKHVHUYOHW
EDFNWRWKHFOLHQW%XWWKHZKROHSRLQWLV
WRFRPSUHVVWKHRXWSXWVRKRZFDQ,
JHWFRQWURORIWKHRXWSXW%()25(LW
JRHVWRWKHFOLHQW"
<PMW]\X]\PI[TMN\\PMJ]QTLQVO
7KLQNDERXWWKLVIRUDPLQXWHWKHVHUYOHW
DFWXDOO\JHWVWKHRXWSXWVWUHDPRUZULWHU
IURPWKHUHVSRQVHREMHFW:KDWLILQVWHDG
RISDVVLQJWKH5($/UHVSRQVHREMHFWWRWKHVHUYOHW
\RXUÀOWHUVZDSSHGLQD
FXVWRP
UHVSRQVHREMHFW
ZLWKDQRXWSXWVWUHDPWKDW
\RX
FRQWURO"1RERG\
VDLGWKHÀOWHUKDVWRSDVVWKH5($/UHVSRQVH
ZKHQLWFDOOVFKDLQGR)LOWHU
FKDLQGR)LOWHU
&RQWDLQHU
GR)LOWHU
Original request and response
A DIFFERENT response
)LOWHU
6HUYOHW
¿OWHULQJWKH
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.
¿OWHUVDQGZUDSSHUV
\RXDUHKHUH
?MKIVQUXTMUMV\W]Z7?6ZM[XWV[M
4HE#ONTAINERALREADYIMPLEMENTSTHE(TTP3ERVLET2ESPONSEINTERFACETHATS
WHATYOUGETINTHEDO&ILTERANDSERVICEMETHODS"UTTOGETTHISCOMPRESSION
lLTERWORKINGWEHAVETOMAKEOUROWNCUSTOMIMPLEMENTATIONOFTHE
(TTP3ERVLET2ESPONSEINTERFACEANDPASSTHATTOTHESERVLETVIATHECHAINDO&ILTER
CALL!NDTHATCUSTOMIMPLEMENTATIONHASTOALSOINCLUDEACUSTOMOUTPUTSTREAMAS
WELLSINCETHATSTHEGOALTOCAPTURETHEOUTPUTAFTERTHESERVLETWRITESTOITBUT
BEFOREITGOESBACKTOTHECLIENT
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
&ILTERSPASS3ERVLET2EQUESTAND3ERVLET2ESPONSEOBJECTSTOTHENEXT
THINGINTHECHAIN./4(TTP3ERVLET2ESPONSE3OWHYAREYOUTALKINGABOUT
IMPLEMENTING(TTP3ERVLET2ESPONSE
$
&ILTERSWEREDESIGNEDTOBEGENERICANDSOOFFICIALLYYOURERIGHT)FWE
THOUGHTONEOFOURFILTERSMIGHTBEUSEDINANONWEBAPPWEDBEIMPLEMENTING
THENON(440INTERFACE3ERVLET2ESPONSEBUTTODAYTHECHANCESOFSOMEONE
DEVELOPINGNON(440SERVLETSISCLOSETOZEROSOWERENOTWORRIED!NDSINCE
3ERVLET2ESPONSEISTHESUPERTYPEOF(TTP3ERVLET2ESPONSETHERESNOPROBLEMPASSING
AN(TTP3ERVLET2ESPONSEWHEREA3ERVLET2ESPONSEISEXPECTED
)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
;PMLWM[V¼\SVW_IJW]\\PM[MZ^TM\?ZIXXMZKTI[[M[
+WWS6HUYOHW5HVSRQVHLVVXFK
DFRPSOLFDWHGLQWHUIDFHLI
RQO\WKHUHZHUHDZD\WRDYRLG
LPSOHPHQWLQJDOOWKRVHPHWKRGV
DQGGHOHJDWLQJFDOOVWRWKHUHDO
UHVSRQVH
#REATINGYOUROWNCUSTOM(TTP3ERVLET2ESPONSE
IMPLEMENTATIONWOULDBEAPAIN%SPECIALLYWHENALL
YOUWANTTOIMPLEMENTAREJUSTAFEWOFTHEMETHODS
!NDSINCE(TTP3ERVLET2ESPONSEISANINTERFACETHAT
EXTENDSANOTHERINTERFACETOIMPLEMENTYOUROWN
CUSTOMRESPONSEYOUDHAVETOIMPLEMENTEVERYTHING
INBOTH(TTP3ERVLET2ESPONSEANDITSSUPERINTERFACE
3ERVLET2ESPONSE
"UTFORTUNATELYSOMEONEAT3UNDIDTHATFORYOUBY
CREATINGASUPPORTCONVENIENCECLASSTHATIMPLEMENTSTHE
(TTP3ERVLET2ESPONSEINTERFACE!LLOFTHEMETHODSINTHAT
CLASSDELEGATETHECALLSTOTHEUNDERLYINGREALRESPONSE
CREATEDBYTHE#ONTAINER
DGG&RRNLH
DGG'DWH+HDGHU
DGG+HDGHU
HQFRGH5HGLUHFW85/
HQFRGH85/
VHQG(UURU
VHQG5HGLUHFW
VHW'DWH+HDGHU
VHW+HDGHU
VHW6WDWXV
PRUHPHWKRGV
LQWHUIDFH!!
+WWS6HUYOHW5HVSRQVH
6HUYOHW5HVSRQVHLQWHUIDFH
MDYD[VHUYOHW6HUYOHW5HVSRQVH
JHW%XIIHU6L]H
VHW&RQWHQW7\SH
JHW2XWSXW6WUHDP
JHW:ULWHU
0$1<PRUHPHWKRGV
LQWHUIDFH!!
6HUYOHW5HVSRQVH
+WWS6HUYOHW5HVSRQVHLQWHUIDFH
MDYD[VHUYOHWKWWS+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.
¿OWHUVDQGZUDSSHUV
\RXDUHKHUH
#REATINGASPECIALIZEDVERSIONOFAREQUESTORRESPONSEISSUCHA
COMMONAPPROACHWHENCREATINGlLTERSTHAT3UNHASCREATED
FOURhCONVENIENCEvCLASSESTOMAKETHEJOBEASIER
6HUYOHW5HTXHVW:UDSSHU
+WWS6HUYOHW5HTXHVW:UDSSHU
6HUYOHW5HVSRQVH:UDSSHU
+WWS6HUYOHW5HVSRQVH:UDSSHU
:KHQHYHU\RXZDQWWR
FUHDWHDFXVWRPUHTXHVW
RUUHVSRQVHREMHFWMXVW
VXEFODVVRQHRIWKH
FRQYHQLHQFHUHTXHVW
RUUHVSRQVH´ZUDSSHUµ
FODVVHV
$ZUDSSHUZUDSVWKH5($/
UHTXHVWRUUHVSRQVHREMHFW
DQGGHOHJDWHVSDVVHV
WKURXJKFDOOVWRWKHUHDO
WKLQJZKLOHVWLOOOHWWLQJ
\RXGRWKHH[WUDWKLQJV
\RXQHHGIRU\RXUFXVWRP
UHTXHVWRUUHVSRQVH
? Z I X X M Z[ZWKS
4HEWRAPPERCLASSESINTHESERVLET!0)AREAWESOMETHEY
IMPLEMENTALLTHEMETHODSNEEDEDFORTHETHINGYOURE
TRYINGTOWRAPDELEGATINGALLCALLSTOTHEUNDERLYINGREQUEST
ORRESPONSEOBJECT!LLYOUNEEDTODOISEXTENDONEOFTHE
WRAPPERSANDOVERRIDEJUSTTHEMETHODSYOUNEEDTODOYOUR
CUSTOMWORK
9OUVESEENSUPPORTCLASSESINTHE*3%!0)OFCOURSEWITH
THINGSLIKETHE,ISTENERADAPTERCLASSESFOR'5)S!NDYOUVE
SEENTHEMINTHE*30!0)WITHTHECUSTOMTAGSUPPORTCLASSES
"UTWHILETHOSESUPPORTCLASSESANDTHESEREQUESTANDRESPONSE
WRAPPERSAREALLCONVENIENCECLASSESTHEWRAPPERSAREALITTLE
DIFFERENTBECAUSETHEYWELLWRAPANOBJECTOFTHETYPETHEY
IMPLEMENT)NOTHERWORDSTHEYDONTJUSTPROVIDEANINTERFACE
IMPLEMENTATIONTHEYACTUALLYHOLDAREFERENCETOANOBJECTOF
THESAMEINTERFACETYPETOWHICHTHEYDELEGATEMETHODCALLS
"YTHEWAYTHISHASNOTHINGWHATSOEVERTODOWITHTHE*3%
hPRIMITIVEWRAPPERvCLASSESLIKE)NTEGER"OOLEAN$OUBLEETC
WrappER (your custom
response object)
WrappEE (the original
Container-created
response object)
,I\RX¶UHIDPLOLDUZLWKUHJXODUROGQRQ-((GHVLJQSDWWHUQV
WKHQ\RXSUREDEO\UHFRJQL]HWKLVZUDSSHUFODVVHVDVDQH[DPSOH
RIXVLQJD'HFRUDWRUSDWWHUQDOWKRXJKLWLVDOVRVRPHWLPHVFDOOHG
:UDSSHUSDWWHUQ7KH'HFRUDWRU:UDSSHUGHFRUDWHVZUDSV
RQHNLQGRIDQREMHFWZLWKDQ³HQKDQFHG´LPSOHPHQWDWLRQ$QG
E\³HQKDQFHG´ZHPHDQ³DGGVQHZFDSDELOLWLHV´ZKLOHVWLOOGRLQJ
HYHU\WKLQJWKHRULJLQDOZUDSSHGWKLQJGLG
,W¶VOLNHVD\LQJ³,¶PMXVWD%(77(5YHUVLRQRIWKHWKLQJ,¶PZUDS
SLQJ²,GRHYHU\WKLQJLWGRHVDQGPRUH´2QHFKDUDFWHULVWLFRID
'HFRUDWRU:UDSSHULVWKDWLWGHOHJDWHVPHWKRGLQYRFDWLRQVWRWKH
WKLQJLWZUDSVUDWKHUWKDQEHLQJDFRPSOHWHUHSODFHPHQW
$OWKRXJKQRWH[SOLFLWO\OLVWHGLQWKH
RIÀFLDOREMHFWLYHV\RX0,*+7VHH
´'HFRUDWRUµRQWKHH[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:UDSSHUH[WHQGV+WWS6HUYOHW5HVSRQVH:UDSSHU^
RYHUULGHDQ\PHWKRGV\RXZDQWWRFXVWRPL]H
`
FODVV0\&RPSUHVVLRQ)LOWHULPSOHPHQWV)LOWHU^
SXEOLFYRLGLQLW)LOWHU&RQ¿JFIJ^`
SXEOLFYRLGGR)LOWHUUHTXHVWUHVSRQVHFKDLQ^
&RPSUHVVLRQ5HVSRQVH:UDSSHUZUDSSHG5HVS
QHZ&RPSUHVVLRQ5HVSRQVH:UDSSHUUHVSRQVH
FKDLQGR)LOWHUUHTXHVWZUDSSHG5HVS
GRFRPSUHVVLRQORJLFKHUH
`
SXEOLFYRLGGHVWUR\^`
`
`
)LLQVOI[QUXTM?ZIXXMZ\W\PMLM[QOV
,ETSENHANCE2ACHELSlRSTPSEUDOCODEBYADDINGAWRAPPER
&RPSUHVVLRQÀOWHUGHVLJQYHUVLRQSVHXGRFRGH
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
7KHILOWHUSDVVHVWKHUHTXHVW
REMHFWDQGDFXVWRPUHVSRQVH
REMHFWWRWKHVHUYOHW
6LQFHZHGLGQ·WRYHUULGHDQ\
PHWKRGVLQWKH:UDSSHUWKHRXWSXW
VWUHDPLVQ·WDIIHFWHG\HW
2XWSXW
6WUHDP
5HT 5HT
5HVS
5HVS
:UDSSHU
DUHVSRQVH
¿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.
¿OWHUVDQGZUDSSHUV
\RXDUHKHUH
&RQWDLQHU
)LOWHU
6HUYOHW
7KHILOWHUSDVVHVWKHUHTXHVW
REMHFWDQGDFXVWRPUHVSRQVH
REMHFWWRWKHVHUYOHW7KH
FXVWRPUHVSRQVHKDVDVSHFLDO
JHW2XWSXW6WUHDPPHWKRG
:KHQWKHVHUYOHWDVNVIRUDQ
LWGRHVQ·W.12:WKDWLWZLOOJHWD
´VSHFLDOµRXWSXWVWUHDP
:5$33('
2
87387
675($0
5HT 5HT
5HVS
5HVS
:UDSSHU
FODVV&RPSUHVVLRQ5HVSRQVH:UDSSHUH[WHQGV+WWS6HUYOHW5HVSRQVH:UDSSHU^
SXEOLF6HUYOHW2XWSXW6WUHDPJHW2XWSXW6WUHDPWKURZV^
VHUYOHW*]LS26 QHZ*]LS626UHVSJHW2XWSXW6WUHDP
UHWXUQVHUYOHW*]LS26
`
PD\EHRYHUULGHRWKHUPHWKRGV
`
FODVV0\&RPSUHVVLRQ)LOWHULPSOHPHQWV)LOWHU^
SXEOLFYRLGLQLW)LOWHU&RQ¿JFIJ^`
SXEOLFYRLGGR)LOWHUUHTXHVWUHVSRQVHFKDLQ^
&RPSUHVVLRQ5HVSRQVH:UDSSHUZUDSSHG5HVS
QHZ&RPSUHVVLRQ5HVSRQVH:UDSSHUUHVSRQVH
FKDLQGR)LOWHUUHTXHVWZUDSSHG5HVS
GRFRPSUHVVLRQORJLFKHUH
`
SXEOLFYRLGGHVWUR\^`
`
)LLIVW]\X]\[\ZMIU?ZIXXMZ
,ETSADDASECOND7RAPPER
&RPSUHVVLRQÀOWHUGHVLJQYHUVLRQSVHXGRFRGH
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
<PMZMITKWUXZM[[QWVNQT\MZKWLM
SDFNDJHFRPH[DPSOHZHE
LPSRUWMDYD[VHUYOHW
LPSRUWMDYD[VHUYOHWKWWS
LPSRUWMDYDLR
LPSRUWMDYDXWLO]LS*=,32XWSXW6WUHDP
SXEOLFFODVV&RPSUHVVLRQ)LOWHULPSOHPHQWV)LOWHU^
SULYDWH6HUYOHW&RQWH[WFW[
SULYDWH)LOWHU&RQ¿JFIJ
SXEOLFYRLGLQLW)LOWHU&RQ¿JFIJ
WKURZV6HUYOHW([FHSWLRQ^
WKLVFIJ FIJ
FW[ FIJJHW6HUYOHW&RQWH[W
FW[ORJFIJJHW)LOWHU1DPH³LQLWLDOL]HG´
`
SXEOLFYRLGGR)LOWHU6HUYOHW5HTXHVWUHT
6HUYOHW5HVSRQVHUHVS
)LOWHU&KDLQIF
WKURZV,2([FHSWLRQ6HUYOHW([FHSWLRQ^
+WWS6HUYOHW5HTXHVWUHTXHVW +WWS6HUYOHW5HTXHVWUHT
+WWS6HUYOHW5HVSRQVHUHVSRQVH +WWS6HUYOHW5HVSRQVHUHVS
6WULQJYDOLGBHQFRGLQJV UHTXHVWJHW+HDGHU³$FFHSW(QFRGLQJ´
LIYDOLGBHQFRGLQJVLQGH[2I³J]LS´!^
&RPSUHVVLRQ5HVSRQVH:UDSSHUZUDSSHG5HVS
QHZ&RPSUHVVLRQ5HVSRQVH:UDSSHUUHVSRQVH
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.
4IMETOCODE7EENDTHISCHAPTERBYLOOKINGATTHECODE
FORBOTHTHECOMPRESSIONlLTERANDTHEWRAPPERITUSES
7EREEXPANDINGFROMTHEPREVIOUSDISCUSSIONANDWHILE
THEREISSOMENEWSTUFFHEREITSMOSTLYJUSTPLAIN*AVACODE
4HISFILTERPROVIDESAMECHANISMTOCOMPRESSTHERESPONSE
BODYCONTENT4HISTYPEOFlLTERWOULDCOMMONLYBE
APPLIEDTOANYTEXTCONTENTSUCHAS(4-,BUTNOTTOMOST
MEDIAFORMATSSUCHAS0.'OR-0%'BECAUSETHEYARE
ALREADYCOMPRESSED
UHVSRQVHFRPSUHVVLRQ¿OWHU
<RXGRQ¶WQHHGWRVWXG\
WKLVFRGHIRUWKHH[DP
7KHUHVWRIWKLVH[DPSOHLVD
GHPRQVWUDWLRQRIDUHVSRQVH¿OWHULQDFWLRQ
MXVWVRWKDW\RXFDQVHHVRPHWKLQJDOLWWOH
PRUHUHDOZRUOG<RXGRQ¶WQHHGWROHDUQRU
XQGHUVWDQGWKLVSDUWLFXODUH[DPSOHIRUWKH
H[DPVRFRQVLGHUWKHUHVWRIWKLVFKDSWHU
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.
¿OWHUVDQGZUDSSHUV
\RXDUHKHUH
ZUDSSHG5HVSVHW+HDGHU³&RQWHQW(QFRGLQJ´³J]LS´
IFGR)LOWHUUHTXHVWZUDSSHG5HVS
*=,32XWSXW6WUHDPJ]RV ZUDSSHG5HVSJHW*=,32XWSXW6WUHDP
J]RV¿QLVK
FW[ORJFIJJHW)LOWHU1DPH³¿QLVKHGWKHUHTXHVW´
`HOVH^
FW[ORJFIJJHW)LOWHU1DPH³QRHQFRGLQJSHUIRUPHG´
`
`
SXEOLFYRLGGHVWUR\^
QXOOLQJRXWP\LQVWDQFHYDULDEOHV
FIJ QXOO
FW[ QXOO
`
`
+WUXZM[[QWVNQT\MZKWLMKWV\
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.
6RIDUVR
JRRG+RZKDUGFDQD
OLWWOHWKLQJOLNHDZUDSSHUEH"
)DPRXVODVWZRUGV
'HEXJJLQJ7LS
4OTESTTHISlLTERCOMMENTOUTTHIS
LINEOFCODE9OUSHOULDSEEILLEGIBLE
COMPRESSEDDATAINYOURBROWSER
¹7NN\PMXI\Pº
&RPSUHVVLRQPHHWV+773
(OWDOESTHESERVERKNOWITCANSENDCOMPRESSEDDATA(OW
DOESTHEBROWSERKNOWWHENITSGETTINGCOMPRESSEDDATA)T
TURNSOUTTHAT(440IShCOMPRESSIONAWAREvHERESHOWIT
WORKS
/NEOFTHEHEADERSTHATTHEBROWSERSENDSh!CCEPT
%NCODINGGZIPvTELLSTHESERVERABOUTTHEBROWSERS
CAPABILITIESFORDEALINGWITHDIFFERENTTYPESOFCONTENT
)FTHESERVERSEESTHATTHEBROWSERCANDEALWITH
COMPRESSEDDATAITWILLPERFORMTHECOMPRESSIONAND
ADDAHEADERh#ONTENT%NCODINGGZIPvTOTHERESPONSE
7HENTHEBROWSERRECEIVESTHERESPONSETHEh#ONTENT
%NCODINGGZIPvHEADERTELLSTHEBROWSERTODECOMPRESS
THEDATABEFOREITISDISPLAYED
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_ZIXXMZKWLM
7ELOOKEDATTHE#OMPRESSIONlLTERNOWLETSTAKEALOOKATTHE
WRAPPERITUSES4HISISONEOFTHEMOSTCOMPLICATEDTOPICSINALLOF
SERVLETDOMSODONTPANICIFYOUDONTGROKITTHElRSTTIME
4HISRESPONSEWRAPPERDECORATESTHEORIGINALRESPONSEOBJECTBY
ADDINGACOMPRESSIONDECORATORONTHEORIGINALSERVLETOUTPUT
STREAM
SDFNDJHFRPH[DPSOHZHE
6HUYOHWLPSRUWV
LPSRUWMDYD[VHUYOHWKWWS
LPSRUWMDYD[VHUYOHW
,2LPSRUWV
LPSRUWMDYDLR
LPSRUWMDYDXWLO]LS*=,32XWSXW6WUHDP
FODVV&RPSUHVVLRQ5HVSRQVH:UDSSHUH[WHQGV+WWS6HUYOHW5HVSRQVH:UDSSHU^
SULYDWH*=,36HUYOHW2XWSXW6WUHDPVHUYOHW*]LS26 QXOO
SULYDWH3ULQW:ULWHUSZ QXOO
&RPSUHVVLRQ5HVSRQVH:UDSSHU+WWS6HUYOHW5HVSRQVHUHVS^
VXSHUUHVS
`
SXEOLFYRLGVHW&RQWHQW/HQJWKLQWOHQ^`
SXEOLF*=,32XWSXW6WUHDPJHW*=,32XWSXW6WUHDP^
UHWXUQWKLVVHUYOHW*]LS26LQWHUQDO*]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.
UHVSRQVHFRPSUHVVLRQZUDSSHU
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.
¿OWHUVDQGZUDSSHUV
\RXDUHKHUH
+WUXZM[[QWV_ZIXXMZKWLMKWV\
SULYDWH2EMHFWVWUHDP8VHG QXOO
SXEOLF6HUYOHW2XWSXW6WUHDPJHW2XWSXW6WUHDPWKURZV,2([FHSWLRQ^
LIVWUHDP8VHG QXOOVWUHDP8VHG SZ^
WKURZQHZ,OOHJDO6WDWH([FHSWLRQ
`
LIVHUYOHW*]LS26 QXOO^
VHUYOHW*]LS26
QHZ*=,36HUYOHW2XWSXW6WUHDPJHW5HVSRQVH
JHW2XWSXW6WUHDP
VWUHDP8VHG VHUYOHW*]LS26
`
UHWXUQVHUYOHW*]LS26
`
SXEOLF3ULQW:ULWHUJHW:ULWHUWKURZV,2([FHSWLRQ^
LIVWUHDP8VHG QXOOVWUHDP8VHG VHUYOHW*]LS26^
WKURZQHZ,OOHJDO6WDWH([FHSWLRQ
`
LISZ QXOO^
VHUYOHW*]LS26
QHZ*=,36HUYOHW2XWSXW6WUHDPJHW5HVSRQVH
JHW2XWSXW6WUHDP
2XWSXW6WUHDP:ULWHURVZ
QHZ2XWSXW6WUHDP:ULWHUVHUYOHW*]LS26
JHW5HVSRQVHJHW&KDUDFWHU(QFRGLQJ
SZ QHZ3ULQW:ULWHURVZ
VWUHDP8VHG SZ
`
UHWXUQSZ
`
`
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*=,36HUYOHW2XWSXW6WUHDPH[WHQGV6HUYOHW2XWSXW6WUHDP^
*=,32XWSXW6WUHDPLQWHUQDO*]LS26
'HFRUDWRUFRQVWUXFWRU
*=,36HUYOHW2XWSXW6WUHDP6HUYOHW2XWSXW6WUHDPVRVWKURZV,2([FHSWLRQ^
WKLVLQWHUQDO*]LS26 QHZ*=,32XWSXW6WUHDPVRV
`
SXEOLFYRLGZULWHLQWSDUDPWKURZVMDYDLR,2([FHSWLRQ^
LQWHUQDO*]LS26ZULWHSDUDP
`
`
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
4HISHELPERCLASSISA$ECORATORONTHE3ERVLET/UTPUT3TREAMABSTRACT
CLASSWHICHDELEGATESTHEREALWORKOFCOMPRESSINGTHEGENERATED
CONTENTUSINGASTANDARD':)0OUTPUTSTREAM
4HEREISONLYONEABSTRACTMETHODINTHE3ERVLET/UTPUT3TREAMTHAT
THIS$ECORATORMUSTIMPLEMENTWRITEINT4HISISWHEREALLOFTHE
DELEGATIONMAGICOCCURS
+WUXZM[[QWV_ZIXXMZPMTXMZKTI[[KWLM
UHVSRQVHRXWSXWGHFRUDWRU
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.
¿OWHUVDQGZUDSSHUV
\RXDUHKHUH
:ULWHGRZQWKHVHTXHQFHLQZKLFKWKH¿OWHUV
ZLOOEHH[HFXWHGIRUHDFKUHTXHVWSDWK$VVXPH
)LOWHU)LOWHUKDYHEHHQSURSHUO\GHFODUHG
ILOWHUPDSSLQJ!
ILOWHUQDPH!)LOWHUILOWHUQDPH!
XUOSDWWHUQ!5HFLSHVXUOSDWWHUQ!
ILOWHUPDSSLQJ!
ILOWHUPDSSLQJ!
ILOWHUQDPH!)LOWHUILOWHUQDPH!
VHUYOHWQDPH!5HFLSHV+RSV/LVWGRVHUYOHWQDPH!
ILOWHUPDSSLQJ!
ILOWHUPDSSLQJ!
ILOWHUQDPH!)LOWHUILOWHUQDPH!
XUOSDWWHUQ!5HFLSHV$GGXUOSDWWHUQ!
ILOWHUPDSSLQJ!
ILOWHUPDSSLQJ!
ILOWHUQDPH!)LOWHUILOWHUQDPH!
VHUYOHWQDPH!5HFLSHV0RGLI\0RG5HFLSHVGRVHUYOHWQDPH!
ILOWHUPDSSLQJ!
ILOWHUPDSSLQJ!
ILOWHUQDPH!)LOWHUILOWHUQDPH!
XUOSDWWHUQ!XUOSDWWHUQ!
ILOWHUPDSSLQJ!
5HTXHVWSDWK)LOWHU6HTXHQFH
5HFLSHV+RSV5HSRUWGR
5HFLSHV+RSV/LVWGR
5HFLSHV0RGLI\0RG5HFLSHVGR
+RSV/LVWGR
5HFLSHV$GG$GG5HFLSHVGR
)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
7HICHARETRUEABOUTDECLARINGlLTERSINTHE$$
#HOOSEALLTHATAPPLY
R!5NLIKESERVLETSlLTERS#! /4DECLAREINITIALIZATIONPARAMETERS
R"&ILTERCHAINORDERISALWAYSDETERMINEDBYTHEORDERTHEELEMENTS
APPEARINTHE$$
R#!CLASSTHATEXTENDSAN!0)REQUESTORRESPONSEWRAPPERCLASSMUST
BEDECLAREDINTHE$$
R$!CLASSTHATEXTENDSAN!0)REQUESTORRESPONSEWRAPPERCLASSIS
USINGTHE)NTERCEPTING&ILTERPATTERN
R%&ILTERCHAINORDERISAFFECTEDBYWHETHERlLTERMAPPINGSARE
DECLAREDVIAXUOSDWWHUQ!ORVIAVHUYOHWQDPH!
0RFN([DP&KDSWHU
7HICHARETRUEABOUTlLTERS#HOOSEALLTHATAPPLY
R!!lLTERCANACTONONLYTHEREQUESTORRESPONSEOBJECT
NOTBOTH
R"4HEGHVWUR\METHODISALWAYSACONTAINERCALLBACK
METHOD
R#4HEGR)LOWHUMETHODISALWAYSACONTAINERCALLBACK
METHOD
R$4HEONLYWAYAlLTERCANBEINVOKEDISTHROUGHA
DECLARATIONINTHE$$
R%4HENEXTlLTERINAlLTERCHAINCANBESPECIlEDEITHER
BYTHEPREVIOUSlLTERORINTHE$$
PRFNH[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.
¿OWHUVDQGZUDSSHUV
\RXDUHKHUH
'IVENTHISMETHODINANOTHERWISEPROPERLYDElNED)LOWHUIMPLEMENTATION
SXEOLFYRLGGR)LOWHU6HUYOHW5HTXHVWUHT
6HUYOHW5HVSRQVHUHVSRQVH
)LOWHU&KDLQFKDLQ
WKURZV,2([FHSWLRQ6HUYOHW([FHSWLRQ^
+WWS6HUYOHW5HTXHVWUHTXHVW +WWS6HUYOHW5HTXHVWUHT
+WWS6HVVLRQVHVVLRQ UHTXHVWJHW6HVVLRQ
2EMHFWXVHU VHVVLRQJHW$WWULEXWH³XVHU´
LIXVHU QXOO^
8VHU5HTXHVWXUHT QHZ8VHU5HTXHVWUHTXHVWXVHU
FKDLQGR)LOWHUXUHTUHVSRQVH
`HOVH^
5HTXHVW'LVSDWFKHUUG UHTXHVWJHW5HTXHVW'LVSDWFKHU³ORJLQMVS´
UGIRUZDUGUHTXHVWUHVSRQVH
`
`
7HICHISTRUE
R!!NEXCEPTIONWILLALWAYSBETHROWNIFLINEEXECUTES
R",INEISINVALIDBECAUSEUHTXHVWMUSTBEPASSED
ASTHElRSTARGUMENT
R#4HISLINEFKDLQGR)LOWHUUHTXHVWUHVSRQVH
MUSTBEINSERTEDSOMEWHEREINTHEHOVHBLOCK
R$4HISMETHODDOESNOTPROPERLYIMPLEMENT
)LOWHUGR)LOWHUBECAUSETHEMETHOD
SIGNATUREISINCORRECT
R%.ONEOFTHEABOVE
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
'IVENAPARTIALDEPLOYMENTDESCRIPTOR
¿OWHU!
¿OWHUQDPH!0\)LOWHU¿OWHUQDPH!
¿OWHUFODVV!FRPH[DPSOH0\)LOWHU¿OWHUFODVV!
¿OWHU!
¿OWHUPDSSLQJ!
¿OWHUQDPH!0\)LOWHU¿OWHUQDPH!
XUOSDWWHUQ!P\XUOSDWWHUQ!
¿OWHUPDSSLQJ!
VHUYOHW!
VHUYOHWQDPH!0\6HUYOHWVHUYOHWQDPH!
VHUYOHWFODVV!FRPH[DPSOH0\6HUYOHWVHUYOHWFODVV!
VHUYOHW!
VHUYOHWPDSSLQJ!
VHUYOHWQDPH!0\6HUYOHWVHUYOHWQDPH!
XUOSDWWHUQ!P\XUOSDWWHUQ!
VHUYOHWPDSSLQJ!
7HICHISTRUE#HOOSEALLTHATAPPLY
R!4HElLEISINVALIDBECAUSETHE52,PATTERNP\
ISMAPPEDTOBOTHASERVLETANDAlLTER
R"4HElLEISINVALIDBECAUSENEITHERTHESERVLETNAME
NORTHElLTERNAMEISALLOWEDTOCONTAINSPACES
R#4HElLTER0\)LOWHUWILLBEINVOKEDAFTERTHE
0\6HUYOHWSERVLETFOREACHREQUESTTHATMATCHES
THEPATTERNP\
R$4HElLTER0\)LOWHUWILLBEINVOKEDBEFORETHE
0\6HUYOHWSERVLETFOREACHREQUESTTHATMATCHES
THEPATTERNP\
R%4HElLEISINVALIDBECAUSETHE¿OWHU!ELEMENTMUST
CONTAINAVHUYOHWQDPH!ELEMENTTHATDElNES
WHICHSERVLETTHElLTERSHOULDBEAPPLIEDTO
PRFNH[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.