Head first servlets and jsp part 002

Page 1

Chapter 8. Script-free pages

VFULSWOHVV -63V

H 7KH DWWULEXWH QDPHV DU GH GLIIHUHQW IRU WKH LQFOX GH ! GLUHFWLYH DQG MVS LQFOX

WWULEXWHV IRU WKH WZR LQFOXGH 0HPRUL]H WKLV /RRN DW WKH D UHQW" PHFKDQLVPV ZKDWÂśV GLIIH

DGHU MVS´ ! # LQFOXGH ¿ OH ´+H DGHU MVS´ ! MVS LQFOXGH SDJH ´+H

WLRQ LV ¿ OH EXW WKH VWDQGDUG DF <HS 7KH GLUHFWLYH DWWULEXWH X UHPHPEHU WKH LQFOXGH DWWULEXWH LV SDJH 7R KHOS \R DQV ´IRR MVS´! LV XVHG RQO\ DW WU GLUHFWLYH LQFOXGH ¿ OH LYHV $QG ZKHQ WUDQVODWLQJ ODWLRQ WLPH DV ZLWK DOO GLUHFW OHV² MVS WR MDYD DQG RXW ¿ O\ DE V RQ FDUH LQHU WKH &RQWD MDYD WR FODVV V ´IRR MVS´! VWDQGDUG DFWLRQ D %XW WKH MVS LQFOXGH SDJH H[HFXWHG DW UHTXHVW WLPH ZLWK DOO VWDQGDUG DFWLRQV LV ERXW SDJHV WR EH H[HFXWHG ZKHQ WKH &RQWDLQHU FDUHV D

4

#AN THE INCLUDED *30 HAVE ITS OWN DYNAMIC CONTENT )N YOUR EXAMPLES THE (EADER JSP MIGHT AS WELL HAVE BEEN A STATIC (EADER HTML PAGE

$

)T S A *30 SO YES IT CAN BE DYNAMIC BUT YOU RE RIGHTˆ IN OUR EXAMPLE WE COULD HAVE MADE THE HEADER A STATIC (4-, PAGE AND IT WOULD HAVE WORKED IN EXACTLY THE SAME WAY 4HERE ARE A FEW LIMITATIONS THOUGH AN INCLUDED PAGE #!../4 CHANGE THE RESPONSE STATUS CODE OR SET HEADERS WHICH MEANS IT CAN T CALL SAY ADD#OOKIES 9OU WON T GET AN ERROR IF THE INCLUDED *30 TRIES TO DO THINGS IT CAN TˆYOU JUST WON T GET WHAT YOU ASKED FOR

4

"UT IF THE INCLUDED THING IS DYNAMIC AND YOU RE USING THE STATIC INCLUDE DIRECTIVE DOES THAT MEAN THAT THE DYNAMIC STUFF IS EVALUATED ONLY ONCE

$

,ET S SAY YOU INCLUDE A *30 THAT HAS AN %, EXPRESSION THAT CALLS THE ROLL)T FUNCTION THAT GENERATES A RANDOM NUMBER 2EMEMBER WITH THE INCLUDE DIRECTIVE THAT %, EXPRESSION IS SIMPLY COPIED INTO THE INCLUD).' *30 3O EACH TIME THAT PAGE IS ACCESSED THE %, EXPRESSION RUNS AND A NEW RANDOM NUMBER IS GENERATED "URN THIS IN WITH THE INCLUDE DIRECTIVE THE SOURCE OF THE INCLUDED THING BECOMES 0!24 OF THE PAGE WITH THE INCLUDE DIRECTIVE

7KH LQFOXGH GLUHFWLYH LV SRVLWLRQ VHQVLWLYH

$QG LWœV WKH 21/< GLUHFWLYH Z KRVH SRVLWLRQ LQ WKH -63 DFWXDOO\ PDWWHUV :LW K D SDJH GLUHFWLYH IRU H[DPSOH \RX FDQ SXW LW DQ\ ZKHUH LQ WKH SDJH DOWKRXJK E\ FRQYHQWLRQ PRVW SHRSOH SXW SDJH GLUHFWLYHV DW WKH WRS %XW WKH LQFOXGH GLUHFWLYH WHOOV WKH &RQWDLQHU H[DFWO\ :+(5( WR LQVHUW WKH VRXUFH IURP WKH LQFOXGHG ¿ OH )RU H[DPSOH LI \RXœUH LQFOXGLQJ ERWK D KHDGHU DQG D IRRWHU LW PL JKW ORRN VRPHWKLQJ OLNH WKLV KWPO! ERG\! # LQFOXGH ¿ OH ´+HDGHU K WPO´ ! EU! HP!:H FDQ KHOS HP! E U! EU! &RQWDFW XV DW ^LQLW3DUDP P DLQ(PDLO` EU! # LQFOXGH ¿ OH ´)RRWHU K WPO´ ! ERG\! KWPO!

This has to be the bottom of your JSP (bat tags), if thatÕs efore the closing the stuff from where you want appear. RememberFooter.html to , everything from the JSP plus is combined inttho e two included Þles THE ORDER M one big page, and ATTERS! And, yes, the <jsp:include> is of course ALSO position-sensitive, but thatÕs more obvious than with the page directive. \RX DUH KHUH

Chapter 8. Script-free pages Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher: O'Reilly Prepared for Stephen Goss, Safari ID: stephengoss@gmx.net Print Publication Date: 8/1/2004 User number: 747221 Copyright 2007, Safari Books Online, LLC. This PDF is exclusively for your use in accordance with the Safari Terms of Service. No part of it may be reproduced or transmitted in any form by any means without the prior written permission for reprints and excerpts from the publisher. Redistribution or other use that violates the fair use priviledge under U.S. copyright laws (see 17 USC107) or that otherwise violates the Safari Terms of Service is strictly prohibited.


Chapter 8. Script-free pages

UHXVDEOH FRPSRQHQWV

+(//2 'LG \RX DFWXDOO\ /22. DW WKH JHQHUDWHG VHUYOHW FRGH IRU WKH LQFOXGH GLUHFWLYH" <RX·YH JRW QHVWHG +70/ DQG %2'< WDJV 7KDW·V ZURQJ DQG VWXSLG

=P WP ;PM¼[ ZQOP\ 4HINK ABOUT WHAT WE DID 7E MADE A PAGE FOR THE HEADER h(EADER JSPv )T WAS A NICE *30 ALL ON ITS OWN COMPLETE WITH ITS OPENING AND CLOSING (4-, AND "/$9 TAGS 4HEN WE MADE THE h#ONTACT JSPv AND IT TOO HAD NICE OPENING AND CLOSING TAGS 7ELL DIDN T WE SAY THAT EVERYTHING IN THE INCLUDED l LE IS PASTED VIRTUALLY INTO THE PAGE WITH THE INCLUDE 4HAT MEANS EVERYTHING 4HE CODE BELOW FROM THE GENERATED SERVLET WILL ./4 WORK IN ALL BROWSERS )T WORKED IN OURS BECAUSE WE GOT LUCKY RXW ZULWH ³ KWPO! ERG\!?U´ RXW ZULWH ³?U KWPO!?U ERG\!?U LPJ VUF ?´LPDJHV :HE 6HUYLFHV MSJ?´ ! EU!U HP! VWURQJ!:H NQRZ KRZ WR PDNH 62$3 VXFN OHVV VWURQJ! HP! EU!?U?U ERG\!?U KWPO!?U´ Yikes!! RXW ZULWH ³?U EU!?U?U?U HP!:H FDQ KHOS HP! EU! EU!?U?U&RQWDFW XV DW ³ RXW ZULWH MDYD ODQJ 6WULQJ RUJ DSDFKH MDVSHU UXQWLPH 3DJH&RQWH[W,PSO SURSULHWDU\(YDOXDWH ³ ^LQLW3DUDP PDLQ(PDLO`´ MDYD ODQJ 6WULQJ FODVV 3DJH&RQWH[W BMVS[BSDJHBFRQWH[W QXOO IDOVH

RXW ZULWH ³?U?U?U ERG\! KWPO!´

+70/ DQG QG FORVLQJ D J LQ Q V H H S F R W SLH 'R 127 SX U UHXVDEOH NV ZLWKLQ \RX SODWH FKXQ P %2'< WDJV WH \ RXU OD\RXW H K \ W WH J UL LQ Z P G X VV 'HVLJQ DQ DUV HWF D HUV QDY E (5 SDJH + 7 2 OLNH KHDG H P R OXGHG LQ V ZLOO EH LQF

FKDSWHU

Chapter 8. Script-free pages Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher: O'Reilly Prepared for Stephen Goss, Safari ID: stephengoss@gmx.net Print Publication Date: 8/1/2004 User number: 747221 Copyright 2007, Safari Books Online, LLC. This PDF is exclusively for your use in accordance with the Safari Terms of Service. No part of it may be reproduced or transmitted in any form by any means without the prior written permission for reprints and excerpts from the publisher. Redistribution or other use that violates the fair use priviledge under U.S. copyright laws (see 17 USC107) or that otherwise violates the Safari Terms of Service is strictly prohibited.


Chapter 8. Script-free pages

VFULSWOHVV -63V 'RQ¡W H[SHFW 0( WR VWULS RXW \RXU UHGXQGDQW RSHQLQJ DQG FORVLQJ WDJV

<PM _Ia _M ;07=4, PI^M LWVM Q\ (ERE WE TOOK THE OPENING AND CLOSING TAGS OUT OF THE INCLUDED l LES 4HIS DOES MEAN THAT THE INCLUDED l LES CAN NO LONGER GENERATE VALID (4-, PAGES ON THEIR OWN THEY NOW DEPEND ON BEING INCLUDED IN SOMETHING BIGGER 3OMETHING WITH HTML BODY AND BODY HTML TAGS "UT THAT S THE POINTˆYOU RE DESIGNING THESE REUSABLE CHUNKS SO THAT YOU CAN COMPOSE COMPLETE LAYOUTS FROM SMALLER PIECES WITHOUT DUPLICATING THE CODE BY HAND 4HESE REUSABLE CHUNKS AREN T MEANT TO LIVE ON THEIR OWN

7KH +HDGHU Ă€ OH ´+HDGHU MVSIÂľ

ention for JSP The .jspf extension is a convknow n as ÒfragmentsÓ). segments (they used to be

LPJ VUF ´LPDJHV :HE 6HUYLFHV MSJ´ ! EU! HP! VWURQJ!:H NQRZ KRZ WR PDNH 62$3 VXFN OHVV VWURQJ! HP! EU!

&RQWDFW MVS KWPO! ERG\!

# LQFOXGH ¿ OH ´+HDGHU MVS´ ! EU! HP!:H FDQ KHOS HP! EU! EU! &RQWDFW XV DW ^LQLW3DUDP PDLQ(PDLO`

# LQFOXGH ¿ OH ´)RRWHU KWPO´ !

Notice we took out all the HTML and BODY tags from the included Ăžles.

ERG\! KWPO!

7KH )RRWHU Ă€ OH ´)RRWHU MVSÂľ

D KUHI ´LQGH[ KWPO´!KRPH SDJH D!

KWWS ORFDOKRVW WHVWV &RQWDFW MVS

:H NQRZ KRZ WR PDNH 62$3 VXFN OHVV :H FDQ KHOS

Note: this idea of stripping out the opening and closing tags applies to BOTH include mechanismsÑ <jsp:include> and the include directive.

&RQWDFW XV DW OLNHZHFDUH#ZLFNHGO\VPDUW FRP KRPH SDJH

\RX DUH KHUH

Chapter 8. Script-free pages Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher: O'Reilly Prepared for Stephen Goss, Safari ID: stephengoss@gmx.net Print Publication Date: 8/1/2004 User number: 747221 Copyright 2007, Safari Books Online, LLC. This PDF is exclusively for your use in accordance with the Safari Terms of Service. No part of it may be reproduced or transmitted in any form by any means without the prior written permission for reprints and excerpts from the publisher. Redistribution or other use that violates the fair use priviledge under U.S. copyright laws (see 17 USC107) or that otherwise violates the Safari Terms of Service is strictly prohibited.


Chapter 8. Script-free pages

XVLQJ MVS SDUDP !

+][\WUQbQVO \PM QVKT]LML KWV\MV\ _Q\P $R[X"XIZIU& /+ SO YOU VE GOT A HEADER THAT S SUPPOSED TO APPEAR THE SAME WAY ON EVERY PAGE "UT WHAT IF YOU WANT TO CUSTOMIZE PART OF THE HEADER 7HAT IF YOU WANT SAY A CONTEXT SENSITIVE SUBTITLE THAT S PART OF THE HEADER BUT THAT CHANGES DEPENDING ON THE PAGE 9OU HAVE A COUPLE OPTIONS 4HE DUMB WAY PUT THE SUBTITLE INFORMATION INTO THE MAIN PAGE AS SAY THE lRST THING IN YOUR PAGE AFTER THE INCLUDE FOR THE HEADER 4HE SMARTER WAY PASS THE SUBTITLE INFORMATION AS A NEW REQUEST PARAMETER TO THE INCLUDED PAGE 7HY THAT S COOL IF THE SUBTITLE INFORMATION IS SUPPOSED TO BE PART OF THE HEADER BUT IT S A PART THAT CHANGES YOU STILL WANT THE HEADER PART OF THE TEMPLATE TO MAKE THE DECISION ABOUT HOW THAT SUBTITLE SHOULD APPEAR IN THE lNAL PAGE )N OTHER WORDS LET THE PERSON WHO DESIGNED THE HEADER DECIDE HOW THE SUBTITLE SHOULD BE RENDERED -63 WKDW GRHV WKH LQFOXGH

ing slash! Look... no clos

KWPO! ERG\!

MVS LQFOXGH SDJH ´+HDGHU MVSI´ ! MVS SDUDP QDPH ´VXE7LWOH´ YDOXH ´:H WDNH WKH VWLQJ RXW RI 62$3 ´ ! MVS LQFOXGH! EU! HP!:HE 6HUYLFHV 6XSSRUW *URXS HP! EU! EU! &RQWDFW XV DW ^LQLW3DUDP PDLQ(PDLO` ERG\! KWPO!

<jsp:include> you add (or recan have a BODY, so th that the incl place) request paramet at uded thing ca ers n use.

7KH LQFOXGHG KHDGHU WKDW 86(6 WKH QHZ SDUDP ´+HDGHU MVSI¾

LPJ VUF ´LPDJHV :HE 6HUYLFHV MSJ´ ! EU! HP! VWURQJ! ^SDUDP VXE7LWOH` VWURQJ! HP! EU!

To the included Þle, the param set with <jsp:para is just like any OT m> using EL to get it.HER request parameter. Here weÕre

Note: this idea of params doesnÕt make any sense with the include directive (which is not dynamic), so it applies ONLY to the <jsp:include> standard action.

FKDSWHU

Chapter 8. Script-free pages Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher: O'Reilly Prepared for Stephen Goss, Safari ID: stephengoss@gmx.net Print Publication Date: 8/1/2004 User number: 747221 Copyright 2007, Safari Books Online, LLC. This PDF is exclusively for your use in accordance with the Safari Terms of Service. No part of it may be reproduced or transmitted in any form by any means without the prior written permission for reprints and excerpts from the publisher. Redistribution or other use that violates the fair use priviledge under U.S. copyright laws (see 17 USC107) or that otherwise violates the Safari Terms of Service is strictly prohibited.


Chapter 8. Script-free pages

VFULSWOHVV -63V

7KLV JRW PH WKLQNLQJ LI , FDQ LQFOXGH RQH -63 LQ DQRWKHU ZKDW LI , ZDQWHG WR IRUZDUG IURP RQH -63 WR DQRWKHU" ,I WKH FOLHQW JHWV WR P\ SDJH DQG KDVQ·W ORJJHG LQ , ZDQW WR VHQG KLP WR D GLIIHUHQW SDJH

<PM $R[X"NWZ _IZL& [\IVLIZL IK\QWV 9OU #!. FORWARD FROM ONE *30 TO ANOTHER /R FROM ONE *30 TO A SERVLET /R FROM ONE *30 TO ANY OTHER RESOURCE IN YOUR WEB APP /F COURSE YOU DON T USUALLY WANT TO DO THIS IN PRODUCTION BECAUSE IF YOU RE USING -6# THE 6IEW IS SUPPOSED TO BE THE 6IEW !ND THE 6IEW HAS NO BUSINESS DOING CONTROL LOGIC )N OTHER WORDS IT SHOULDN T BE THE 6IEW S JOB TO lGURE OUT IF THE GUY IS LOGGED IN OR NOTˆSOMEONE ELSE SHOULD HAVE MADE THAT DECISION THE #ONTROLLER BEFORE DECIDING TO FORWARD TO THE 6IEW "UT LET S SUSPEND ALL THAT GOOD -6# JUDGEMENT FOR THE TIME BEING AND SEE HOW WE COULD DO IT IF WE WERE TO FORWARD FROM A *30 PAGE TO SOMETHING ELSE 7HY BOTHER IF YOU LL NEVER DO IT 7ELL YOU MIGHT ONE DAY STUMBLE ON A PROBLEM WHERE JSP FORWARD IS A USEFUL SOLUTION -ORE IMPORTANTLY LIKE A LOT OF WHAT S IN THE BOOK AND THE EXAM THE USE OF JSP FORWARD IS OUT THERE ,URKING IN GAZILLIONS OF *30S THAT YOU MIGHT ONE DAY lND YOURSELF MAINTAINING OR IDEALLY REFACTORING

\RX DUH KHUH

Chapter 8. Script-free pages Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher: O'Reilly Prepared for Stephen Goss, Safari ID: stephengoss@gmx.net Print Publication Date: 8/1/2004 User number: 747221 Copyright 2007, Safari Books Online, LLC. This PDF is exclusively for your use in accordance with the Safari Terms of Service. No part of it may be reproduced or transmitted in any form by any means without the prior written permission for reprints and excerpts from the publisher. Redistribution or other use that violates the fair use priviledge under U.S. copyright laws (see 17 USC107) or that otherwise violates the Safari Terms of Service is strictly prohibited.


Chapter 8. Script-free pages

XVLQJ MVS IRUZDUG !

) KWVLQ\QWVIT NWZ _IZL 3O IMAGINE YOU RE A *30 AND YOU ASSUME YOU RE BEING CALLED FROM A REQUEST THAT INCLUDES A USER.AME PARAMETER 3INCE YOU RE COUNTING ON THAT PARAMETER YOU WANT TO lRST CHECK THAT THE USER.AME PARAMETER ISN T NULL )F IT S NOT NO PROBLEMˆlNISH THE RESPONSE "UT IF THE USER.AME PARAMETER IS NULL YOU WANT TO STOP RIGHT HERE AND TURN THE WHOLE REQUEST OVER TO SOMETHING ELSEˆLIKE A DIFFERENT *30 THAT WILL ASK FOR THE USER.AME &OR NOW WE KNOW WE CAN DO IT WITH SCRIPTING -63 ZLWK D FRQGLWLRQDO IRUZDUG +HOOR MVS

KWPO! ERG\! :HOFRPH WR RXU SDJH

Test for the request

LI UHTXHVW JHW3DUDPHWHU ³XVHU1DPH´

parameter

QXOO ^ !

MVS IRUZDUG SDJH ´+DQGOH,W MVS´ ! If the parame ` ! request (just likteer was null, forward the to the page spec using a RequestDispatcher) iĂžed in the at +HOOR ^SDUDP XVHU1DPH`

tribute.

ERG\! KWPO!

If we made it this far, the userName must have been valid! NOTHING in this page will appear in the response if the request is forwarded.

-63 WR ZKLFK WKH UHTXHVW LV IRUZDUGHG +DQGOH,W MVS

KWPO! ERG\! :HœUH VRUU\ \RX QHHG WR ORJ LQ DJDLQ IRUP DFWLRQ ´+HOOR MVS´ PHWKRG ´JHW´! 1DPH LQSXW QDPH ´XVHU1DPH´ W\SH ´WH[W´! LQSXW QDPH ´6XEPLW´ W\SH ´VXEPLW´! IRUP!

This is just a plain old page that gets the request parameter input from the user and then requests the JSP we were just on... Hello.jsp.

ERG\! KWPO!

FKDSWHU

Chapter 8. Script-free pages Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher: O'Reilly Prepared for Stephen Goss, Safari ID: stephengoss@gmx.net Print Publication Date: 8/1/2004 User number: 747221 Copyright 2007, Safari Books Online, LLC. This PDF is exclusively for your use in accordance with the Safari Terms of Service. No part of it may be reproduced or transmitted in any form by any means without the prior written permission for reprints and excerpts from the publisher. Redistribution or other use that violates the fair use priviledge under U.S. copyright laws (see 17 USC107) or that otherwise violates the Safari Terms of Service is strictly prohibited.


Chapter 8. Script-free pages

VFULSWOHVV -63V

0W_ Q\ Z]V[ 4HE lRST TIME YOU REQUEST THE (ELLO JSP THE *30 DOES THE CONDITIONAL TEST DISCOVERS THERE S NO VALUE FOR USER.AME AND FORWARDS TO THE (ANDLE)T JSP !SSUMING THE USER TYPES A NAME INTO THE NAME INPUT lELD THE SECOND REQUEST WON T DO THE FORWARD SINCE THE USER.AME REQUEST PARAMETER HAS A NON NULL VALUE

)LUVW UHTXHVW IRU +HOOR MVS KWWS ORFDOKRVW WHVWV +HOOR MVS

:H·UH VRUU\ \RX QHHG WR ORJ LQ DJDLQ

1DPH

:DLW D PLQXWH ZKDW KDSSHQHG WR WKH ZRUGV ´:HOFRPH WR RXU SDJH µ" 7KH\·UH LQ WKH +HOOR MVS EHIRUH WKH IRUZDUG KDSSHQV VR ZK\ GRQ·W WKH\ VKRZ XS RQ WKH ÀUVW UHTXHVW"

-RKDQQHV

6HFRQG UHTXHVW IRU +HOOR MVS

KWWS ORFDOKRVW WHVWV +HOOR MVS

:HOFRPH WR RXU SDJH +HOOR -RKDQQHV

+RZ FRPH WKH ´:HOFRPH WR RXU SDJH µ WH[W GLGQ·W SULQW RXW WKH ILUVW WLPH"

\RX DUH KHUH

Chapter 8. Script-free pages Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher: O'Reilly Prepared for Stephen Goss, Safari ID: stephengoss@gmx.net Print Publication Date: 8/1/2004 User number: 747221 Copyright 2007, Safari Books Online, LLC. This PDF is exclusively for your use in accordance with the Safari Terms of Service. No part of it may be reproduced or transmitted in any form by any means without the prior written permission for reprints and excerpts from the publisher. Redistribution or other use that violates the fair use priviledge under U.S. copyright laws (see 17 USC107) or that otherwise violates the Safari Terms of Service is strictly prohibited.


Chapter 8. Script-free pages

MVS IRUZDUG ! VWDQGDUG DFWLRQ

?Q\P $R[X"NWZ _IZL& \PM J]NNMZ Q[ KTMIZML *-.7:- \PM NWZ _IZL 7HEN A FORWARD HAPPENS THE RESOURCE TO WHICH THE REQUEST IS FORWARDED STARTS WITH A CLEAR RESPONSE BUFFER )N OTHER WORDS ANYTHING WRITTEN TO THE RESPONSE BEFORE THE FORWARD HAPPENS IS THROWN OUT

WKHUH DUH QR

'XPE 4XHVWLRQV

4

4HIS MAKES SENSE IF THE PAGE IS BUFFERED BECAUSE WHAT YOU WRITE IS SENT TO THE BUFFER AND THE #ONTAINER JUST CLEARS THE BUFFER "UT WHAT IF YOU COMMIT THE RESPONSE "%&/2% YOU DO THE FORWARD ,IKE WHAT HAPPENS IF YOU WRITE SOMETHING AND THEN CALL mUSH ON THE OUT OBJECT

127+,1* \RX ZULWH EHIRUH WKH IRUZDUG ZLOO DSSHDU LI WKH IRUZDUG KDSSHQV

$

/+ WE KNOW YOU RE JUST ASKING THIS OUT OF INTELLECTUAL CURIOSITY SINCE IT WOULD BE A PHENOMENALLY STUPID AND POINTLESS THING TO DO "UT YOU KNOW THAT "UT YOU ALSO KNOW THAT WEIRD THINGS CAN STILL BE ON THE EXAM SINCE YOUR TOO LAZY TO LEARN IT CO WORKER MIGHT JUST PUT SOMETHING THIS CRAZY INTO HIS CODE IN WHICH CASE YOU BETTER GET USED TO IT 9OU CAN PROBABLY THINK THROUGH THE ANSWER THOUGH )F YOU WRITE SOME THING LIKE KWPO! ERG\! :HOFRPH WR RXU SDJH

RXW ÀXVK ! LI UHTXHVW JHW3DUDPHWHU ³XVHU1DPH´ QXOO ^ ! MVS IRUZDUG SDJH ´+DQGOH,W MVS´ ! ` ! +HOOR ^SDUDP XVHU1DPH` ERG\! KWPO! 4HE #ONTAINER DUTIFULLY COMMITS SENDS h7ELCOME TO OUR PAGE v AS THE RESPONSE AND THEN THE #ONTAINER SEES THE FORWARD 5H OH 4OO LATE !ND AN )LLEGAL3TATE%XCEPTION HAPPENS %XCEPT NOBODY WILL SEE THE EXCEPTION 4HE CLIENT JUST SEES h7ELCOME TO OUR PAGE v AND NOTHING ELSE 4HE FORWARD THROWS AN EXCEPTION BUT IT S TOO LATE FOR THE #ONTAINER TO TAKE BACK THE RESPONSE SO THE CLIENT SEES WHAT WAS FLUSHED AND THAT S IT 4HE FORWARD DOESN T HAPPEN THE REST OF THE CURRENT PAGE DOESN T HAPPEN %ND OF STORY FOR THAT PAGE 3O NEVER DO A FLUSH AND FORWARD

FKDSWHU

Chapter 8. Script-free pages Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher: O'Reilly Prepared for Stephen Goss, Safari ID: stephengoss@gmx.net Print Publication Date: 8/1/2004 User number: 747221 Copyright 2007, Safari Books Online, LLC. This PDF is exclusively for your use in accordance with the Safari Terms of Service. No part of it may be reproduced or transmitted in any form by any means without the prior written permission for reprints and excerpts from the publisher. Redistribution or other use that violates the fair use priviledge under U.S. copyright laws (see 17 USC107) or that otherwise violates the Safari Terms of Service is strictly prohibited.


Chapter 8. Script-free pages

VFULSWOHVV -63V

, GRQ¡W XQGHUVWDQG KRZ ZH HQGHG ZLWK D VFULSWOHW , ZDV 72/' WKHUH ZRXOG EH QR VFULSWLQJ LQ WKLV FKDSWHU ,I RQO\ WKHUH ZHUH D ZD\ WR GR D FRQGLWLRQDO WHVW ZLWKRXW KDYLQJ WR JR EDFN WR VFULSWLQJ

;PM LWM[VŸ\ SVW_ IJW]\ 2;<4 \IO[ 7HEN YOU NEED MORE FUNCTIONALITY SOMETHING BEYOND WHAT YOU CAN GET WITH THE STANDARD ACTIONS OR %, YOU DON T HAVE TO RESORT TO SCRIPTING )N THE NEXT CHAPTER YOU LL LEARN HOW TO USE THE *30 3TANDARD 4AG ,IBRARY *34, TO DO JUST ABOUT EVERYTHING YOU LL EVER NEED USING A COMBINATION OF TAGS AND %, (ERE S A SNEAK PEEK OF HOW TO DO OUR CONDITIONAL FORWARD WITHOUT SCRIPTING # WDJOLE SUH¿ [ ´F´ XUL ´KWWS MDYD VXQ FRP MVS MVWO FRUH´ ! KWPO! ERG\! :HOFRPH WR RXU SDJH a taglib directive

This replaces the scriptlet if test

F LI WHVW ´ ^HPSW\ SDUDP XVHU1DPH`´ ! MVS IRUZDUG SDJH ´+DQGOH,W MVS´ ! F LI! +HOOR ^SDUDP XVHU1DPH` ERG\! KWPO!

Declare y where that names the librar . live gs the ta

By the way... you probably wonÕt be able to run this yet because you donÕt have JSTL in your web app. WeÕll do that in the next chapter.

\RX DUH KHUH

Chapter 8. Script-free pages Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher: O'Reilly Prepared for Stephen Goss, Safari ID: stephengoss@gmx.net Print Publication Date: 8/1/2004 User number: 747221 Copyright 2007, Safari Books Online, LLC. This PDF is exclusively for your use in accordance with the Safari Terms of Service. No part of it may be reproduced or transmitted in any form by any means without the prior written permission for reprints and excerpts from the publisher. Redistribution or other use that violates the fair use priviledge under U.S. copyright laws (see 17 USC107) or that otherwise violates the Safari Terms of Service is strictly prohibited.


Chapter 8. Script-free pages

EHDQ VWDQGDUG DFWLRQV

*MIV ZMTI\ML [\IVLIZL IK\QWV ZM^QM_ :MDD=L HGAFLK

ƒ 7KH MVS XVH%HDQ! VWDQGDUG DFWLRQ GHILQHV D YDULDEOH WKDW KROGV D UHIHUHQFH WR HLWKHU DQ H[LVWLQJ EHDQ DWWULEXWH RU LI WKH EHDQ GRHVQ¡W DOUHDG\ H[LVW D QHZ EHDQ

ƒ 7KH MVS XVH%HDQ! 0867 KDYH DQ ´LGÂľ DWWULEXWH ZKLFK GHFODUHV WKH YDULDEOH QDPH WKDW¡OO EH XVHG LQ WKLV -63 WR UHIHU WR WKH EHDQ

ƒ ,I \RX GRQ¡W LQFOXGH D ´VFRSHÂľ DWWULEXWH ZLWK MVS XVH%HDQ! WKH VFRSH GHIDXOWV WR SDJH VFRSH ƒ 7KH ´FODVVÂľ DWWULEXWH LV RSWLRQDO DQG LW GHFODUHV WKH FODVV W\SH WKDW ZLOO EH XVHG LI D QHZ EHDQ LV FUHDWHG 7KH W\SH PXVW EH SXEOLF QRQ DEVWUDFW DQG KDYH D SXEOLF QR DUJ FRQVWUXFWRU

ƒ ,I \RX SXW D ´W\SHÂľ DWWULEXWH LQ MVS XVH%HDQ! LW PXVW EH D W\SH WR ZKLFK WKH EHDQ FDQ EH FDVW

ƒ ,I \RX KDYH D ´W\SHÂľ DWWULEXWH EXW GR 127 KDYH D ´FODVVÂľ DWWULEXWH WKH EHDQ PXVW DOUHDG\ H[LVW VLQFH \RX KDYHQ¡W VSHFLILHG WKH FODVV W\SH WKDW VKRXOG EH LQVWDQWLDWHG IRU WKH QHZ EHDQ

ƒ 7KH MVS XVH%HDQ! WDJ FDQ KDYH D ERG\ DQG DQ\WKLQJ LQ WKH ERG\ UXQV 21/< LI D QHZ EHDQ LV FUHDWHG DV D UHVXOW RI MVS XVH%HDQ! ZKLFK PHDQV WKDW QR EHDQ ZLWK WKDW ´LGÂľ ZDV IRXQG LQ WKH VSHFLILHG RU GHIDXOW VFRSH

ƒ 7KH PDLQ SXUSRVH RI WKH ERG\ RI MVS XVH%HDQ! LV WR VHW WKH QHZ EHDQ¡V SURSHUWLHV XVLQJ MVS VHW3URSHUW\!

ƒ MVS VHW3URSHUW\! PXVW KDYH D QDPH DWWULEXWH ZKLFK ZLOO PDWFK WKH ´LGÂľ IURP MVS XVH%HDQ! DQG D ´SURSHUW\Âľ DWWULEXWH 7KH ´SURSHUW\Âľ DWWULEXWH PXVW EH HLWKHU DQ DFWXDO SURSHUW\ QDPH RU WKH ZLOGFDUG ´ Âľ

ƒ ,I \RX GRQ¡W LQFOXGH D ´YDOXHÂľ DWWULEXWH WKH &RQWDLQHU ZLOO VHW WKH SURSHUW\ YDOXH RQO\ LI WKHUH¡V D UHTXHVW SDUDPHWHU ZLWK D QDPH WKDW PDWFKHV WKH SURSHUW\ QDPH ,I \RX XVH WKH ZLOGFDUG IRU WKH ´SURSHUW\Âľ DWWULEXWH WKH &RQWDLQHU ZLOO VHW WKH YDOXH RI DOO SURSHUWLHV WKDW KDYH D PDWFKLQJ UHTXHVW SDUDPHWHU QDPH 2WKHU SURSHUWLHV ZRQ¡W EH DIIHFWHG

ƒ ,I WKH UHTXHVW SDUDPHWHU QDPH LV GLIIHUHQW IURP WKH SURSHUW\ QDPH EXW \RX ZDQW WR VHW WKH YDOXH RI WKH SURSHUW\ HTXDO WR WKH UHTXHVW SDUDPHWHU YDOXH \RX FDQ XVH WKH ´SDUDPÂľ DWWULEXWH LQ WKH MVS VHW3URSHUW\! WDJ

ƒ ,I \RX VSHFLI\ D ´W\SHÂľ DWWULEXWH LQ MVS XVH%HDQ! \RX FDQ VHW SURSHUWLHV LQ MVS VHW3URSHUW\! 21/< RQ SURSHUWLHV RI WKH ´W\SHÂľ EXW 127 RQ SURSHUWLHV WKDW H[LVW RQO\ LQ WKH DFWXDO ´FODVVÂľ W\SH ,Q RWKHU ZRUGV SRO\PRUSKLVP DQG QRUPDO -DYD W\SH UXOHV DSSO\

ƒ 3URSHUW\ YDOXHV FDQ EH 6WULQJV RU SULPLWLYHV DQG WKH MVS VHW3URSHUW\! VWDQGDUG DFWLRQ ZLOO GR WKH FRQYHUVLRQV DXWRPDWLFDOO\

FKDSWHU

Chapter 8. Script-free pages Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher: O'Reilly Prepared for Stephen Goss, Safari ID: stephengoss@gmx.net Print Publication Date: 8/1/2004 User number: 747221 Copyright 2007, Safari Books Online, LLC. This PDF is exclusively for your use in accordance with the Safari Terms of Service. No part of it may be reproduced or transmitted in any form by any means without the prior written permission for reprints and excerpts from the publisher. Redistribution or other use that violates the fair use priviledge under U.S. copyright laws (see 17 USC107) or that otherwise violates the Safari Terms of Service is strictly prohibited.


Chapter 8. Script-free pages

VFULSWOHVV -63V

<PM QVKT]LM ZM^QM_ :MDD=L HGAFLK

<RX FDQ EXLOG D SDJH ZLWK UHXVDEOH FRPSRQHQWV XVLQJ RQH RI WZR LQFOXGH PHFKDQLVPV³WKH LQFOXGH GLUHFWLYH RU WKH MVS LQFOXGH! VWDQGDUG DFWLRQ

7KH LQFOXGH GLUHFWLYH GRHV WKH LQFOXGH DW WUDQVOD WLRQ WLPH RQO\ RQFH 6R WKH LQFOXGH GLUHFWLYH LV FRQVLGHUHG WKH DSSURSULDWH PHFKDQLVP IRU LQFOXGLQJ FRQWHQW WKDW LVQ·W OLNHO\ WR FKDQJH DIWHU GHSOR\PHQW

7KH LQFOXGH GLUHFWLYH HVVHQWLDOO\ FRSLHV HYHU\WKLQJ IURP ZLWKLQ WKH LQFOXGHG ILOH DQG SDVWHV LW LQWR WKH SDJH ZLWK WKH LQFOXGH 7KH &RQWDLQHU FRPELQHV DOO WKH LQFOXGHG ILOHV DQG FRPSLOHV MXVW RQH ILOH IRU WKH JHQHUDWHG VHUYOHW $W UXQWLPH WKH SDJH ZLWK WKH LQFOXGH UXQV H[DFWO\ DV WKRXJK \RX KDG W\SHG DOO WKH VRXUFH LQWR RQH ILOH \RXUVHOI

7KH MVS LQFOXGH! VWDQGDUG DFWLRQ LQFOXGHV WKH UHVSRQVH RI WKH LQFOXGHG SDJH LQWR WKH RULJLQDO SDJH DW UXQWLPH 6R WKH LQFOXGH VWDQGDUG DFWLRQ LV FRQVLGHUHG DSSURSULDWH IRU LQFOXGLQJ FRQWHQW WKDW PD\ EH XSGDWHG DIWHU GHSOR\PHQW ZKLOH WKH LQFOXGH GLUHFWLYH LV QRW

(LWKHU PHFKDQLVP FDQ LQFOXGH G\QDPLF HOHPHQWV -63 FRGH ZLWK (/ H[SUHVVLRQV IRU H[DPSOH DV ZHOO DV VWDWLF +70/ SDJHV

7KH LQFOXGH GLUHFWLYH LV WKH RQO\ SRVLWLRQ VHQVLWLYH GLUHFWLYH WKH LQFOXGHG FRQWHQW LV LQVHUWHG LQWR WKH SDJH DW WKH H[DFW ORFDWLRQ RI WKH GLUHFWLYH

7KH DWWULEXWHV IRU WKH LQFOXGH GLUHFWLYH DQG WKH LQFOXGH VWDQGDUG DFWLRQ DUH LQFRQVLVWHQWO\ QDPHG³WKH GLUHFWLYH XVHV ´ILOHµ DV WKH DWWULEXWH ZKLOH WKH VWDQGDUG DFWLRQ XVHV D ´SDJHµ DWWULEXWH

,Q \RXU UHXVDEOH FRPSRQHQWV EH VXUH WR VWULS RXW WKH RSHQLQJ DQG FORVLQJ WDJV 2WKHUZLVH WKH JHQHUDWHG RXWSXW ZLOO KDYH QHVWHG RSHQLQJ DQG

FORVLQJ WDJV ZKLFK QRW DOO EURZVHUV FDQ KDQGOH 'HVLJQ DQG FRQVWUXFW \RXU UHXVDEOH SLHFHV NQRZ LQJ WKDW WKH\·OO EH LQFOXGHG LQVHUWHG LQWR VRPHWKLQJ HOVH

<RX FDQ FXVWRPL]H DQ LQFOXGHG ILOH E\ VHWWLQJ RU UHSODFLQJ D UHTXHVW SDUDPHWHU XVLQJ WKH MVS SDUDP ! VWDQGDUG DFWLRQ LQVLGH WKH ERG\ RI D MVS LQFOXGH!

:H GLGQ·W VKRZ LW LQ WKLV FKDSWHU EXW WKH MVS SDUDP! FDQ EH XVHG LQVLGH WKH ERG\ RI D MVS IRUZDUG! WDJ DV ZHOO

7KH 21/< SODFHV ZKHUH D MVS SDUDP! PDNHV VHQVH DUH ZLWKLQ D MVS LQFOXGH! RU D MVS IRUZDUG! VWDQGDUG DFWLRQ

,I WKH SDUDP QDPH XVHG LQ MVS SDUDP! DOUHDG\ KDV D YDOXH DV D UHTXHVW SDUDPHWHU WKH QHZ YDOXH ZLOO RYHUZULWH WKH SUHYLRXV RQH 2WKHUZLVH D QHZ UHTXHVW SDUDPHWHU LV DGGHG WR WKH UHTXHVW

7KH LQFOXGHG UHVRXUFH KDV VRPH OLPLWDWLRQV LW FDQQRW FKDQJH WKH UHVSRQVH VWDWXV FRGH RU VHW KHDGHUV

7KH MVS IRUZDUG! VWDQGDUG DFWLRQ IRUZDUGV WKH UHTXHVW MXVW OLNH XVLQJ D 5HTXHVW'LVSDWFKHU WR DQRWKHU UHVRXUFH IURP WKH VDPH ZHE DSS

:KHQ D IRUZDUG KDSSHQV WKH UHVSRQVH EXIIHU LV FOHDUHG ILUVW 7KH UHVRXUFH WR ZKLFK WKH UHTXHVW ZDV IRUZDUGHG JHWV WR VWDUW ZLWK D FOHDQ RXWSXW 6R DQ\WKLQJ ZULWWHQ WR WKH UHVSRQVH EHIRUH WKH IRUZDUG ZLOO EH WKURZQ DZD\

,I \RX FRPPLW WKH UHVSRQVH EHIRUH WKH IRUZDUG E\ FDOOLQJ RXW IOXVK IRU H[DPSOH WKH FOLHQW ZLOO EH VHQW ZKDWHYHU ZDV IOXVKHG EXW WKDW·V LW 7KH IRUZDUG ZRQ·W KDSSHQ DQG WKH UHVW RI WKH RULJLQDO SDJH ZRQ·W EH SURFHVVHG

\RX DUH KHUH

Chapter 8. Script-free pages Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher: O'Reilly Prepared for Stephen Goss, Safari ID: stephengoss@gmx.net Print Publication Date: 8/1/2004 User number: 747221 Copyright 2007, Safari Books Online, LLC. This PDF is exclusively for your use in accordance with the Safari Terms of Service. No part of it may be reproduced or transmitted in any form by any means without the prior written permission for reprints and excerpts from the publisher. Redistribution or other use that violates the fair use priviledge under U.S. copyright laws (see 17 USC107) or that otherwise violates the Safari Terms of Service is strictly prohibited.


Chapter 8. Script-free pages

H[HUFLVH DQVZHUV

%( WKH &RQWDLQHU $16:(56 /RRN DW WKLV VWDQGDUG DFWLRQ

class, s a type but scnoope, Note: this haNO y if ec T sp and it does it uses ÒpageÓ. which means

MVS XVH%HDQ LG ´SHUVRQ´ W\SH ´IRR (PSOR\HH´ ! MVS VHW3URSHUW\ QDPH ´SHUVRQ´ SURSHUW\ ´QDPH´ YDOXH ´)UHG´ ! NEVER The body willtless to MVS XVH%HDQ ! run! ItĂ•s poin side a <jsp: 1DPH LV MVS JHW3URSHUW\ QDPH ´SHUVRQ´ SURSHUW\ ´QDPH´ ! put a body ing if you have this far, useBean > taand no class! If we made itvanĂ“. Ă’E t in only a type e tag body pr Ă•ll we Remember, thLY if a new :KDW KDSSHQV LI WKH VHUYOHW FRGH ORRNV OLNH executes ON d, which can bean is createwhen only IRR 3HUVRQ S QHZ IRR (PSOR\HH S VHW1DPH Âł(YDQ´ never happen no class) is UHTXHVW VHW$WWULEXWH ÂłSHUVRQ´ S a type (but e tag. th declared in at request FAILS at request time! The Ă’personĂ“ attribute is stored es only a scope, so the <jsp:useBean > tag wonĂ•t work since it speciĂž type speciĂžed, type. The Container KNOWS that if you have only aname and scope. abstract there MUST be an existing bean attribute of that

3HUVRQ

:KDW KDSSHQV LI WKH VHUYOHW FRGH ORRNV OLNH IRR 3HUVRQ S QHZ IRR 3HUVRQ S VHW1DPH ³(YDQ´ UHTXHVW VHW$WWULEXWH ³SHUVRQ´ S

6WULQJ JHW1DPH

YRLG VHW1DPH 6WULQJ

Actually, this servlet fails to compile. We cheated a little, since on this question it isnÕt ÒBe the ContainerÓ, itÕs more like ÒBe the COMPILERÓ. foo.Person is now abstract, so we canÕt insta ntiate the foo.Person. (PSOR\HH LQW JHW(PS,'

YRLG VHW(PS,' LQW

:KDW KDSSHQV LI WKH VHUYOHW FRGH ORRNV OLNH IRR (PSOR\HH S QHZ IRR (PSOR\HH S VHW1DPH ³(YDQ´ UHTXHVW VHW$WWULEXWH ³SHUVRQ´ S

Both classes are in the package ÒfooÓ.

This works Þne, and prints out ÒEvanÓ. Remember, the code INSIDE the body of <jsp:useBean> will NEVER run, since we speciÞed a type without class.

FKDSWHU

Chapter 8. Script-free pages Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher: O'Reilly Prepared for Stephen Goss, Safari ID: stephengoss@gmx.net Print Publication Date: 8/1/2004 User number: 747221 Copyright 2007, Safari Books Online, LLC. This PDF is exclusively for your use in accordance with the Safari Terms of Service. No part of it may be reproduced or transmitted in any form by any means without the prior written permission for reprints and excerpts from the publisher. Redistribution or other use that violates the fair use priviledge under U.S. copyright laws (see 17 USC107) or that otherwise violates the Safari Terms of Service is strictly prohibited.


Chapter 8. Script-free pages

VFULSWOHVV -63V

0RFN ([DP &KDSWHU

'IVEN AN (4-, FORM THAT USES CHECKBOXES TO ALLOW A USER TO SELECT MULTIPLE VALUES FOR A PARAMETER CALLED KREELHV 7HICH %, EXPRESSIONS EVALUATE TO THE lRST VALUE OF THE KREELHV PARAMETER #HOOSE ALL THAT APPLY

R ! ^SDUDP KREELHV` R " ^SDUDP9DOXH KREELHV` R # ^SDUDP9DOXHV KREELHV> @` R $ ^SDUDP9DOXHV KREELHV> @` R % ^SDUDP9DOXHV>KREELHV@> @` R & ^SDUDP9DOXHV>KREELHV@> @`

'IVEN THAT A WEB APPLICATION STORES THE WEBMASTER EMAIL ADDRESS IN THE SERVLET CONTEXT INITIALIZATION PARAMETER CALLED PDVWHU HPDLO 7HICH RETRIEVES THAT VALUE #HOOSE ALL THAT APPLY

R ! D KUHI ¶PDLOWR ^LQLW3DUDP PDVWHU HPDLO`¶! HPDLO PH D!

R " D KUHI ¶PDLOWR ^FRQWH[W3DUDP PDVWHU HPDLO`¶! HPDLO PH D!

R # D KUHI ¶PDLOWR ^LQLW3DUDP>µPDVWHU HPDLO¶@`¶! HPDLO PH D!

R $ D KUHI ¶PDLOWR ^FRQWH[W3DUDP>µPDVWHU HPDLO¶@`¶! HPDLO PH D!

\RX DUH KHUH

Chapter 8. Script-free pages Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher: O'Reilly Prepared for Stephen Goss, Safari ID: stephengoss@gmx.net Print Publication Date: 8/1/2004 User number: 747221 Copyright 2007, Safari Books Online, LLC. This PDF is exclusively for your use in accordance with the Safari Terms of Service. No part of it may be reproduced or transmitted in any form by any means without the prior written permission for reprints and excerpts from the publisher. Redistribution or other use that violates the fair use priviledge under U.S. copyright laws (see 17 USC107) or that otherwise violates the Safari Terms of Service is strictly prohibited.


Chapter 8. Script-free pages

PRFN H[DPV

'IVEN THE FOLLOWING *AVA CLASS SDFNDJH FRP P\FRPSDQ\ SXEOLF FODVV 0\)XQFWLRQV ^ SXEOLF VWDWLF 6WULQJ KHOOR 6WULQJ QDPH ^ UHWXUQ ³+HOOR ³ QDPH ` ` 4HIS CLASS REPRESENTS THE HANDLER FOR A FUNCTION THAT IS PART OF A TAG LIBRARY # WDJOLE XUL ´KWWS P\FRPSDQ\ FRP WDJV´ SUH¿[ ´FRPS´ ! 7HICH 4AG ,IBRARY $ESCRIPTOR ENTRY DElNES THIS CUSTOM FUNCTION SO THAT IT CAN BE USED IN AN %, EXPRESSION

R ! WDJOLE! WDJ! QDPH!+HOOR QDPH! WDJ FODVV!FRP P\FRPSDQ\ 0\)XQFWLRQV WDJ FODVV! ERG\ FRQWHQW!-63 ERG\ FRQWHQW! WDJ! WDJOLE!

R " WDJOLE! IXQFWLRQ! QDPH!+HOOR QDPH! IXQFWLRQ FODVV!FRP P\FRPSDQ\ 0\)XQFWLRQV IXQFWLRQ FODVV! IXQFWLRQ VLJQDWXUH!MDYD ODQJ 6WULQJ KHOOR MDYD ODQJ 6WULQJ IXQFWLRQ VLJQDWXUH! IXQFWLRQ! WDJOLE!

R # ZHE DSS! VHUYOHW! VHUYOHW QDPH!KHOOR VHUYOHW QDPH! VHUYOHW FODVV!FRP P\FRPSDQ\ 0\)XQFWLRQV VHUYOHW FODVV! VHUYOHW! ZHE DSS!

R $ WDJOLE! IXQFWLRQ! QDPH!+HOOR QDPH! IXQFWLRQ FODVV!FRP P\FRPSDQ\ 0\)XQFWLRQV IXQFWLRQ FODVV! IXQFWLRQ VLJQDWXUH!KHOOR MDYD ODQJ 6WULQJ IXQFWLRQ VLJQDWXUH! IXQFWLRQ! WDJOLE!

FKDSWHU

Chapter 8. Script-free pages Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher: O'Reilly Prepared for Stephen Goss, Safari ID: stephengoss@gmx.net Print Publication Date: 8/1/2004 User number: 747221 Copyright 2007, Safari Books Online, LLC. This PDF is exclusively for your use in accordance with the Safari Terms of Service. No part of it may be reproduced or transmitted in any form by any means without the prior written permission for reprints and excerpts from the publisher. Redistribution or other use that violates the fair use priviledge under U.S. copyright laws (see 17 USC107) or that otherwise violates the Safari Terms of Service is strictly prohibited.


Chapter 8. Script-free pages

VFULSWOHVV -63V

'IVEN SDFNDJH FRP H[DPSOH SXEOLF FODVV 7KH%HDQ ^ SULYDWH LQW YDOXH SXEOLF 7KH%HDQ ^ YDOXH ` SXEOLF LQW JHW9DOXH ^ UHWXUQ YDOXH ` SXEOLF YRLG VHW9DOXH LQW Y ^ YDOXH Y ` ` !SSUMING NO INSTANCES OF 7KH%HDQ HAVE BEEN CREATED YET WHICH *30 STANDARD ACTION STATEMENTS CREATE A NEW INSTANCE OF THIS BEAN AND STORE IT IN THE REQUEST SCOPE #HOOSE ALL THAT APPLY

R ! MVS XVH%HDQ QDPH ´P\%HDQ´ W\SH ´FRP H[DPSOH 7KH%HDQ´ !

R " MVS PDNH%HDQ QDPH ´P\%HDQ´ W\SH ´FRP H[DPSOH 7KH%HDQ´ !

R # MVS XVH%HDQ LG ´P\%HDQ´ FODVV ´FRP H[DPSOH 7KH%HDQ´ VFRSH ´UHTXHVW´ !

R $ MVS PDNH%HDQ LG ´P\%HDQ´ FODVV ´FRP H[DPSOH 7KH%HDQ´ VFRSH ´UHTXHVW´ !

'IVEN A -ODEL ARCHITECTURE IN WHICH A *30 PAGE HANDLES ALL OF THE CONTROLLER FUNCTIONS THAT *30 CONTROLLER NEEDS TO DISPATCH THE REQUEST TO ANOTHER *30 PAGE 7HICH STANDARD ACTION CODE WILL PERFORM THIS DISPATCH

R ! MVS IRUZDUG SDJH ´YLHZ MVS´ ! R " MVS IRUZDUG ¿OH ´YLHZ MVS´ ! R # MVS GLVSDWFK SDJH ´YLHZ MVS´ ! R $ MVS GLVSDWFK ¿OH ´YLHZ MVS´ !

\RX DUH KHUH

Chapter 8. Script-free pages Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher: O'Reilly Prepared for Stephen Goss, Safari ID: stephengoss@gmx.net Print Publication Date: 8/1/2004 User number: 747221 Copyright 2007, Safari Books Online, LLC. This PDF is exclusively for your use in accordance with the Safari Terms of Service. No part of it may be reproduced or transmitted in any form by any means without the prior written permission for reprints and excerpts from the publisher. Redistribution or other use that violates the fair use priviledge under U.S. copyright laws (see 17 USC107) or that otherwise violates the Safari Terms of Service is strictly prohibited.


Chapter 8. Script-free pages

PRFN H[DPV

'IVEN MDYD XWLO /LVW OLVW QHZ MDYD XWLO $UUD\/LVW OLVW DGG ³D´ OLVW DGG ³ ´ OLVW DGG ³F´ UHTXHVW VHW$WWULEXWH ³OLVW´ OLVW UHTXHVW VHW$WWULEXWH ³OLVW,G[´ ³ ´ ! LQVHUW FRGH KHUH ! 7HICH INSERTED AT LINE ARE VALID AND EVALUATE TO F #HOOSE ALL THAT APPLY

R ! ^OLVW ` R " ^OLVW> @` R # ^OLVW OLVW,G[ ` R $ ^OLVW>OLVW,G[ @` R % ^OLVW>µOLVW,G[¶ @` R & ^OLVW>OLVW>µOLVW,G[¶@@`

7HICH STATEMENTS ABOUT THE DOT AND >@ %, OPERATORS ARE TRUE #HOOSE ALL THAT APPLY

R ! ^IRR EDU` IS EQUIVALENT TO ^IRR>EDU@`

R " ^IRR EDU` IS EQUIVALENT TO ^IRR>³EDU´@` R # ^IRR>³ ´@` IS VALID SYNTAX IF IRR IS A 0DS R $ ^KHDGHU 8VHU $JHQW` IS EQUIVALENT TO ^KHDGHU>8VHU $JHQW@`

R % ^KHDGHU 8VHU $JHQW` IS EQUIVALENT TO ^KHDGHU>³8VHU $JHQW´@`

R & ^IRR> @` IS VALID SYNTAX IF IRR IS A /LVW OR AN ARRAY

FKDSWHU

Chapter 8. Script-free pages Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher: O'Reilly Prepared for Stephen Goss, Safari ID: stephengoss@gmx.net Print Publication Date: 8/1/2004 User number: 747221 Copyright 2007, Safari Books Online, LLC. This PDF is exclusively for your use in accordance with the Safari Terms of Service. No part of it may be reproduced or transmitted in any form by any means without the prior written permission for reprints and excerpts from the publisher. Redistribution or other use that violates the fair use priviledge under U.S. copyright laws (see 17 USC107) or that otherwise violates the Safari Terms of Service is strictly prohibited.


Chapter 8. Script-free pages

VFULSWOHVV -63V

'IVEN A *30 PAGE WITH THE LINE ^ ` 7HAT WILL BE DISPLAYED

R ! R " R # R $ R % [ `

'IVEN ^SDUDP ¿UVWQDPH` ^SDUDP PLGGOHQDPH` ^SDUDP ODVWQDPH` ^SDUDP9DOXHV ODVWQDPH> @` 7HICH DESCRIBES THE OUTPUT PRODUCED BY THIS PORTION OF A *30 PAGE WHEN PASSED THE QUERY STRING "¿UVWQDPH -RKQ ODVWQDPH 'RH

R ! -RKQ 'RH R " -RKQ 'RH 'RH R # -RKQ QXOO 'RH R $ -RKQ QXOO 'RH 'RH R % ! NULL POINTER EXCEPTION WILL BE THROWN

7HICH SHOW VALID USAGE OF %, IMPLICIT VARIABLES #HOOSE ALL THAT APPLY

R ! ^FRRNLHV IRR` R " ^LQLW3DUDP IRR` R # ^SDJH&RQWH[W IRR` R $ ^UHTXHVW6FRSH IRR` R % ^KHDGHU>³8VHU $JHQW´@` R & ^UHTXHVW'LVSDWFKHU IRR` R ' ^SDJH&RQWH[W UHTXHVW UHTXHVW85,` \RX DUH KHUH

Chapter 8. Script-free pages Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher: O'Reilly Prepared for Stephen Goss, Safari ID: stephengoss@gmx.net Print Publication Date: 8/1/2004 User number: 747221 Copyright 2007, Safari Books Online, LLC. This PDF is exclusively for your use in accordance with the Safari Terms of Service. No part of it may be reproduced or transmitted in any form by any means without the prior written permission for reprints and excerpts from the publisher. Redistribution or other use that violates the fair use priviledge under U.S. copyright laws (see 17 USC107) or that otherwise violates the Safari Terms of Service is strictly prohibited.


Chapter 8. Script-free pages

PRFN H[DPV

7HICH ARE TRUE ABOUT THE MVS XVH%HDQ! STANDARD ACTION #HOOSE ALL THAT APPLY

R ! 4HE LG ATTRIBUTE IS OPTIONAL R " 4HE VFRSH ATTRIBUTE IS REQUIRED R # 4HE VFRSH ATTRIBUTE IS OPTIONAL AND DEFAULTS TO UHTXHVW R $ %ITHER THE FODVV OR W\SH ATTRIBUTES MAY BE SPECIlED BUT AT LEAST ONE

R % )T IS VALID TO INCLUDE BOTH THE FODVV ATTRIBUTE AND THE W\SH ATTRIBUTE EVEN IF THEIR VALUES ARE ./4 THE SAME

(OW WOULD YOU INCLUDE DYNAMIC CONTENT IN A *30 SIMILAR TO A SERVER SIDE INCLUDE 33) #HOOSE ALL THAT APPLY

R ! # LQFOXGH ¿OH ´ VHJPHQWV IRRWHU MVSI´ ! R " MVS IRUZDUG SDJH ´ VHJPHQWV IRRWHU MVSI´ ! R # MVS LQFOXGH SDJH ´ VHJPHQWV IRRWHU MVSI´ ! R $ 5HTXHVW'LVSDWFKHU GLVSDWFKHU UHTXHVW JHW5HTXHVW'LVSDWFKHU ³ VHJPHQWV IRRWHU MVSI´ GLVSDWFKHU LQFOXGH UHTXHVW UHVSRQVH

)N AN (4-, PAGE WITH A RICH GRAPHICAL LAYOUT WHICH *30 STANDARD ACTION CAN BE USED TO IMPORT AN IMAGE lLE INTO THE *30 PAGE

R ! MVS LPDJH SDJH ´ORJR SQJ´ ! R " MVS LPDJH ¿OH ´ORJR SQJ´ ! R # MVS LQFOXGH SDJH ´ORJR SQJ´ ! R $ MVS LQFOXGH ¿OH ´ORJR SQJ´ ! R % 4HIS #!../4 BE DONE USING A *30 STANDARD ACTION

FKDSWHU

Chapter 8. Script-free pages Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher: O'Reilly Prepared for Stephen Goss, Safari ID: stephengoss@gmx.net Print Publication Date: 8/1/2004 User number: 747221 Copyright 2007, Safari Books Online, LLC. This PDF is exclusively for your use in accordance with the Safari Terms of Service. No part of it may be reproduced or transmitted in any form by any means without the prior written permission for reprints and excerpts from the publisher. Redistribution or other use that violates the fair use priviledge under U.S. copyright laws (see 17 USC107) or that otherwise violates the Safari Terms of Service is strictly prohibited.


Chapter 8. Script-free pages

VFULSWOHVV -63V

'IVEN SDFNDJH FRP H[DPSOH SXEOLF FODVV 0\)XQFWLRQV ^ SXEOLF VWDWLF 6WULQJ UHSHDW LQW [ 6WULQJ VWU ^ PHWKRG ERG\ ` ` AND GIVEN THE *30 # WDJOLE XUL ´ :(% ,1) P\IXQFWV´ SUH¿[ ´P\´ ! LQVHUW FRGH KHUH ! 7HICH INSERTED AT LINE IN THE *30 IS A VALID %, FUNCTION INVOCATION

R ! ^UHSHDW ³ ´ ` R " ^UHSHDW ³ ´ ³ ´ ` R # ^P\ UHSHDW ³ ´ ` R $ ^P\ UHSHDW ³ ´ ³ ´ ` R % ! VALID INVOCATION #!../4 BE DETERMINED

'IVEN SXEOLF FODVV 0\%HDQ ^ SULYDWH MDYD XWLO 0DS SDUDPV SULYDWH MDYD XWLO /LVW REMHFWV SULYDWH 6WULQJ QDPH SXEOLF MDYD XWLO 0DS JHW3DUDPV ^ UHWXUQ SDUDPV ` SXEOLF 6WULQJ JHW1DPH ^ UHWXUQ QDPH ` SXEOLF MDYD XWLO /LVW JHW2EMHFWV ^ UHWXUQ REMHFWV ` ` 7HICH WILL CAUSE ERRORS ASSUME THAT AN ATTRIBUTE NAMED P\EHDQ CAN BE FOUND AND IS OF TYPE 0\%HDQ #HOOSE ALL THAT APPLY

R ! ^P\EHDQ QDPH` R " ^P\EHDQ>³QDPH´@` R # ^P\EHDQ REMHFWV D` R $ ^P\EHDQ>³SDUDPV´@ D` R % ^P\EHDQ SDUDPV>³D´@` R & ^P\EHDQ>³REMHFWV´@ D` \RX DUH KHUH

Chapter 8. Script-free pages Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher: O'Reilly Prepared for Stephen Goss, Safari ID: stephengoss@gmx.net Print Publication Date: 8/1/2004 User number: 747221 Copyright 2007, Safari Books Online, LLC. This PDF is exclusively for your use in accordance with the Safari Terms of Service. No part of it may be reproduced or transmitted in any form by any means without the prior written permission for reprints and excerpts from the publisher. Redistribution or other use that violates the fair use priviledge under U.S. copyright laws (see 17 USC107) or that otherwise violates the Safari Terms of Service is strictly prohibited.


Chapter 8. Script-free pages

PRFN H[DPV

'IVEN A *30 PAGE 7KH XVHU KDV VXI¿FLHQWO\ ORJJHG LQ RU RXW ^SDUDP ORJJHG,Q RU SDUDP ORJJHG2XW` )F THE REQUEST INCLUDES THE QUERY STRING hORJJHG2XW WUXH´ WHAT WILL BE THIS STATEMENT S DISPLAYED VALUE

R ! 7KH XVHU KDV VXI¿FLHQWO\ ORJJHG LQ RU RXW IDOVH R " 7KH XVHU KDV VXI¿FLHQWO\ ORJJHG LQ RU RXW WUXH R # 7KH XVHU KDV VXI¿FLHQWO\ ORJJHG LQ RU RXW ^SDUDP ORJJHG,Q RU SDUDP ORJJHG2XW`

R $ 7KH XVHU KDV VXI¿FLHQWO\ ORJJHG LQ RU RXW SDUDP ORJJHG,Q RU SDUDP ORJJHG2XW

R % 7KH XVHU KDV VXI¿FLHQWO\ ORJJHG LQ RU RXW RU WUXH

7HICH ABOUT %, ACCESS OPERATORS ARE TRUE #HOOSE ALL THAT APPLY

R ! !NYWHERE THE DOT OPERATOR IS USED THE >@ COULD BE USED INSTEAD

R " !NYWHERE THE >@ OPERATOR IS USED THE DOT COULD BE USED INSTEAD

R # )F THE DOT OPERATOR IS USED TO ACCESS A BEAN PROPERTY BUT THE PROPERTY DOESN T EXIST THEN A RUNTIME EXCEPTION IS THROWN

R $ 4HERE ARE SOME SITUATIONS WHERE THE DOT OPERATOR MUST BE USED AND OTHER SITUATIONS WHERE THE >@ OPERATOR MUST BE USED

4HE FOLLOWING CODE FRAGMENT APPEARS IN A *30 PAGE MVS LQFOXGH SDJH ´ MVSI KHDGHU KWPO´ ! 4HE *30 PAGE IS PART OF A WEB APPLICATION WITH THE CONTEXT ROOT P\DSS 'IVEN THAT THE APPLICATION S TOP LEVEL DIRECTORY IS P\DSS WHAT IS THE PATH TO THE KHDGHU KWPO lLE

R ! KHDGHU KWPO R " MVSI KHDGHU KWPO R # P\DSS MVSI KHDGHU KWPO R $ LQFOXGHV MVSI KHDGHU KWPO

FKDSWHU

Chapter 8. Script-free pages Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher: O'Reilly Prepared for Stephen Goss, Safari ID: stephengoss@gmx.net Print Publication Date: 8/1/2004 User number: 747221 Copyright 2007, Safari Books Online, LLC. This PDF is exclusively for your use in accordance with the Safari Terms of Service. No part of it may be reproduced or transmitted in any form by any means without the prior written permission for reprints and excerpts from the publisher. Redistribution or other use that violates the fair use priviledge under U.S. copyright laws (see 17 USC107) or that otherwise violates the Safari Terms of Service is strictly prohibited.


Chapter 8. Script-free pages

VFULSWOHVV -63V

&KDSWHU $QVZHUV

(JSP v2.0 sections 2.2.3)

'IVEN AN (4-, FORM THAT USES CHECKBOXES TO ALLOW A USER TO SELECT MULTIPLE VALUES FOR A PARAMETER CALLED KREELHV 7HICH %, EXPRESSIONS EVALUATE TO THE lRST VALUE OF THE KREELHV PARAMETER #HOOSE ALL THAT APPLY

R ! ^SDUDP KREELHV` R " ^SDUDP9DOXH KREELHV` R # ^SDUDP9DOXHV KREELHV> @` R $ ^SDUDP9DOXHV KREELHV> @` R % ^SDUDP9DOXHV>KREELHV@> @` R & ^SDUDP9DOXHV>KREELHV@> @`

use there -Option B is incorrect beca is no ÒparamValueÓ implicit variable. -Option D is incorrect, arrays are 0 indexed. -Options E and F have incorrect syntax.

'IVEN THAT A WEB APPLICATION STORES THE WEBMASTER EMAIL ADDRESS IN THE SERVLET CONTEXT INITIALIZATION PARAMETER CALLED PDVWHU HPDLO 7HICH RETRIEVES THAT VALUE #HOOSE ALL THAT APPLY

R ! D KUHI ÂśPDLOWR ^LQLW3DUDP PDVWHU HPDLO`Âś! HPDLO PH D!

(JSP v2.0 sections 2.2.3 and 2.3.4)

-Option A is trying to subtract email from master

R " D KUHI ÂśPDLOWR ^FRQWH[W3DUDP PDVWHU HPDLO`Âś! -Option B, there is no HPDLO PH D!

contextParam implicit variable

R # D KUHI ÂśPDLOWR ^LQLW3DUDP>ÂľPDVWHU HPDLOÂś@`Âś! HPDLO PH D!

-Option D, there

is no R $ D KUHI ÂśPDLOWR ^FRQWH[W3DUDP>ÂľPDVWHU HPDLOÂś@`Âś! contextParam implicit variable HPDLO PH D!

\RX DUH KHUH

Chapter 8. Script-free pages Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher: O'Reilly Prepared for Stephen Goss, Safari ID: stephengoss@gmx.net Print Publication Date: 8/1/2004 User number: 747221 Copyright 2007, Safari Books Online, LLC. This PDF is exclusively for your use in accordance with the Safari Terms of Service. No part of it may be reproduced or transmitted in any form by any means without the prior written permission for reprints and excerpts from the publisher. Redistribution or other use that violates the fair use priviledge under U.S. copyright laws (see 17 USC107) or that otherwise violates the Safari Terms of Service is strictly prohibited.


Chapter 8. Script-free pages

PRFN DQVZHUV

(JSP v2.0 section 2.6.3)

'IVEN THE FOLLOWING *AVA CLASS SDFNDJH FRP P\FRPSDQ\ SXEOLF FODVV 0\)XQFWLRQV ^ SXEOLF VWDWLF 6WULQJ KHOOR 6WULQJ QDPH ^ UHWXUQ ³+HOOR ³ QDPH ` ` 4HIS CLASS REPRESENTS THE HANDLER FOR A FUNCTION THAT IS PART OF A TAG LIBRARY # WDJOLE XUL ´KWWS P\FRPSDQ\ FRP WDJV´ SUH¿[ ´FRPS´ ! 7HICH 4AG ,IBRARY $ESCRIPTOR ENTRY DElNES THIS CUSTOM FUNCTION SO THAT IT CAN BE USED IN AN %, EXPRESSION

R ! WDJOLE! WDJ! QDPH!+HOOR QDPH! WDJ FODVV!FRP P\FRPSDQ\ 0\)XQFWLRQV WDJ FODVV! ERG\ FRQWHQW!-63 ERG\ FRQWHQW! WDJ! WDJOLE!

R " WDJOLE!

correct

-Option B uses the syntax. IXQFWLRQ! QDPH!+HOOR QDPH! IXQFWLRQ FODVV!FRP P\FRPSDQ\ 0\)XQFWLRQV IXQFWLRQ FODVV! IXQFWLRQ VLJQDWXUH!MDYD ODQJ 6WULQJ KHOOR MDYD ODQJ 6WULQJ IXQFWLRQ VLJQDWXUH! IXQFWLRQ! WDJOLE!

R # ZHE DSS! VHUYOHW! VHUYOHW QDPH!KHOOR VHUYOHW QDPH! VHUYOHW FODVV!FRP P\FRPSDQ\ 0\)XQFWLRQV VHUYOHW FODVV! VHUYOHW! ZHE DSS!

R $ WDJOLE!

use the -Option D is incorrect becaplete IXQFWLRQ! function signature is incom QDPH!+HOOR QDPH! IXQFWLRQ FODVV!FRP P\FRPSDQ\ 0\)XQFWLRQV IXQFWLRQ FODVV! IXQFWLRQ VLJQDWXUH!KHOOR MDYD ODQJ 6WULQJ IXQFWLRQ VLJQDWXUH! IXQFWLRQ! WDJOLE!

FKDSWHU

Chapter 8. Script-free pages Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher: O'Reilly Prepared for Stephen Goss, Safari ID: stephengoss@gmx.net Print Publication Date: 8/1/2004 User number: 747221 Copyright 2007, Safari Books Online, LLC. This PDF is exclusively for your use in accordance with the Safari Terms of Service. No part of it may be reproduced or transmitted in any form by any means without the prior written permission for reprints and excerpts from the publisher. Redistribution or other use that violates the fair use priviledge under U.S. copyright laws (see 17 USC107) or that otherwise violates the Safari Terms of Service is strictly prohibited.


Chapter 8. Script-free pages

VFULSWOHVV -63V

(JSP v2.0 section

'IVEN

5.1)

SDFNDJH FRP H[DPSOH SXEOLF FODVV 7KH%HDQ ^ SULYDWH LQW YDOXH SXEOLF 7KH%HDQ ^ YDOXH ` SXEOLF LQW JHW9DOXH ^ UHWXUQ YDOXH ` SXEOLF YRLG VHW9DOXH LQW Y ^ YDOXH Y ` ` !SSUMING NO INSTANCES OF 7KH%HDQ HAVE BEEN CREATED YET WHICH *30 STANDARD ACTION STATEMENTS CREATE A NEW INSTANCE OF THIS BEAN AND STORE IT IN THE REQUEST SCOPE #HOOSE ALL THAT APPLY

R ! MVS XVH%HDQ QDPH ´P\%HDQ´ W\SH ´FRP H[DPSOH 7KH%HDQ´ !

R " MVS PDNH%HDQ QDPH ´P\%HDQ´ W\SH ´FRP H[DPSOH 7KH%HDQ´ !

R # MVS XVH%HDQ LG ´P\%HDQ´ FODVV ´FRP H[DPSOH 7KH%HDQ´ VFRSH ´UHTXHVW´ !

R $ MVS PDNH%HDQ LG ´P\%HDQ´ FODVV ´FRP H[DPSOH 7KH%HDQ´ VFRSH ´UHTXHVW´ !

te is -Option A is invalid because the type attribu scope NOT used to create a new instance ands the attribute must be speciĂžed (or default to page).

-Option B is invalid for all of the above reasons plus jsp:makeBean is NOT a real tag.

-Option D is invalid because jsp:makeBean is NOT a real tag.

'IVEN A -ODEL ARCHITECTURE IN WHICH A *30 PAGE HANDLES ALL OF THE CONTROLLER (JSP FUNCTIONS THAT *30 CONTROLLER NEEDS TO DISPATCH THE REQUEST TO ANOTHER *30 PAGE

v2.0 section 5.5)

7HICH STANDARD ACTION CODE WILL PERFORM THIS DISPATCH

. R ! MVS IRUZDUG SDJH ´YLHZ MVS´ ! -Option A is correct (pg 1-110) -Option B is invalid because the R " MVS IRUZDUG ÂżOH ´YLHZ MVS´ ! forward action has no Ăžle attribute. R # MVS GLVSDWFK SDJH ´YLHZ MVS´ ! -Op tion R $ MVS GLVSDWFK ÂżOH ´YLHZ MVS´ ! ther s C and D are invalid because

e is no dispatch action.

\RX DUH KHUH

Chapter 8. Script-free pages Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher: O'Reilly Prepared for Stephen Goss, Safari ID: stephengoss@gmx.net Print Publication Date: 8/1/2004 User number: 747221 Copyright 2007, Safari Books Online, LLC. This PDF is exclusively for your use in accordance with the Safari Terms of Service. No part of it may be reproduced or transmitted in any form by any means without the prior written permission for reprints and excerpts from the publisher. Redistribution or other use that violates the fair use priviledge under U.S. copyright laws (see 17 USC107) or that otherwise violates the Safari Terms of Service is strictly prohibited.


Chapter 8. Script-free pages

PRFN DQVZHUV

(JSP v2.0 section 2.3.4)

'IVEN MDYD XWLO /LVW OLVW QHZ MDYD XWLO $UUD\/LVW OLVW DGG ³D´ OLVW DGG ³ ´ OLVW DGG ³F´ UHTXHVW VHW$WWULEXWH ³OLVW´ OLVW UHTXHVW VHW$WWULEXWH ³OLVW,G[´ ³ ´ ! LQVHUW FRGH KHUH !

7HICH INSERTED AT LINE ARE VALID AND EVALUATE TO F #HOOSE ALL THAT APPLY

R ! ^OLVW ` -Options A and C are incorrect R " ^OLVW> @` because the dot operator cannot R # ^OLVW OLVW,G[ ` be used with a primitive. R $ ^OLVW>OLVW,G[ @` R % ^OLVW>¾OLVW,G[œ @` -Option E is incorrect because R & ^OLVW>OLVW>¾OLVW,G[œ@@` (ÔlistIdxÕ + 1) becomes a String.

7HICH STATEMENTS ABOUT THE DOT AND >@ %, OPERATORS ARE TRUE #HOOSE ALL THAT APPLY

(JSP v2.0 pg. 1-69 )

R ! ^IRR EDU` IS EQUIVALENT TO ^IRR>EDU@` -Option A is incorrect because it

should be foo[ÒbarÓ].

R " ^IRR EDU` IS EQUIVALENT TO ^IRR>³EDU´@` R # ^IRR>³ ´@` IS VALID SYNTAX IF IRR IS A 0DS R $ ^KHDGHU 8VHU $JHQW` IS EQUIVALENT TO ^KHDGHU>8VHU $JHQW@`

R % ^KHDGHU 8VHU $JHQW` IS EQUIVALENT TO

-Options D and E are incorrect because of the dash in User-Agent. Only header[ÒUser-AgentÓ] will work.

^KHDGHU>³8VHU $JHQW´@`

R & ^IRR> @` IS VALID SYNTAX IF IRR IS A /LVW OR AN ARRAY

FKDSWHU

Chapter 8. Script-free pages Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher: O'Reilly Prepared for Stephen Goss, Safari ID: stephengoss@gmx.net Print Publication Date: 8/1/2004 User number: 747221 Copyright 2007, Safari Books Online, LLC. This PDF is exclusively for your use in accordance with the Safari Terms of Service. No part of it may be reproduced or transmitted in any form by any means without the prior written permission for reprints and excerpts from the publisher. Redistribution or other use that violates the fair use priviledge under U.S. copyright laws (see 17 USC107) or that otherwise violates the Safari Terms of Service is strictly prohibited.


Chapter 8. Script-free pages

VFULSWOHVV -63V

^ ` 7HAT WILL BE DISPLAYED

R ! R " R # R $ R % [ `

(JSP v2.0 pg. 1-71)

'IVEN A *30 PAGE WITH THE LINE

-Option A is correct. The modulus operator returns the remainder of a division operation.

(JSP v2.0 pg 1-67 and pg 1-79)

'IVEN ^SDUDP ÂżUVWQDPH` ^SDUDP PLGGOHQDPH` ^SDUDP ODVWQDPH` ^SDUDP9DOXHV ODVWQDPH> @` 7HICH DESCRIBES THE OUTPUT PRODUCED BY THIS PORTION OF A *30 PAGE WHEN PASSED THE QUERY STRING "ÂżUVWQDPH -RKQ ODVWQDPH 'RH

R ! -RKQ 'RH 13 -Option A is invalid because aslinewell. prints the userÕs last name R " -RKQ 'RH 'RH R # -RKQ QXOO 'RH -Options C and D are invalid because line 11 R $ -RKQ QXOO 'RH 'RH results in printing nothing rather than ÒnullÓ. R % ! NULL POINTER EXCEPTION WILL BE THROWN

7HICH SHOW VALID USAGE OF %, IMPLICIT VARIABLES #HOOSE ALL THAT APPLY

R ! ^FRRNLHV IRR` R " ^LQLW3DUDP IRR`

(JSP v2.0 pg. 1-66)

-Option A is incorrect because the variable is ÒcookieÓ.

R # ^SDJH&RQWH[W IRR` R $ ^UHTXHVW6FRSH IRR`

-Option C is incorrect because pageContext is NOT a Map and it doesnÕt have a ÒfooÓ property.

R % ^KHDGHU>³8VHU $JHQW´@` R & ^UHTXHVW'LVSDWFKHU IRR` -Option F is incorrect because

this is NOT an implicit object.

R ' ^SDJH&RQWH[W UHTXHVW UHTXHVW85,` \RX DUH KHUH

Chapter 8. Script-free pages Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher: O'Reilly Prepared for Stephen Goss, Safari ID: stephengoss@gmx.net Print Publication Date: 8/1/2004 User number: 747221 Copyright 2007, Safari Books Online, LLC. This PDF is exclusively for your use in accordance with the Safari Terms of Service. No part of it may be reproduced or transmitted in any form by any means without the prior written permission for reprints and excerpts from the publisher. Redistribution or other use that violates the fair use priviledge under U.S. copyright laws (see 17 USC107) or that otherwise violates the Safari Terms of Service is strictly prohibited.


Chapter 8. Script-free pages

PRFN DQVZHUV

(JSP v2.0 pgs. 1-103 and pg. 1-104)

7HICH ARE TRUE ABOUT THE MVS XVH%HDQ! STANDARD ACTION #HOOSE ALL THAT APPLY

-Option A is incorrect

R ! 4HE LG ATTRIBUTE IS OPTIONAL because id is required. -Options B and C are incorrect R " 4HE VFRSH ATTRIBUTE IS REQUIRED because scope is optional and R # 4HE VFRSH ATTRIBUTE IS OPTIONAL AND DEFAULTS TO UHTXHVW defaults to page. R $ %ITHER THE FODVV OR W\SH ATTRIBUTES MAY BE SPECIlED BUT AT LEAST ONE

R % )T IS VALID TO INCLUDE BOTH THE FODVV ATTRIBUTE AND THE W\SH ATTRIBUTE EVEN IF THEIR VALUES ARE ./4 THE SAME

(JSP v2.0 section

(OW WOULD YOU INCLUDE DYNAMIC CONTENT IN A *30 SIMILAR TO A SERVER SIDE INCLUDE 33) #HOOSE ALL THAT APPLY

R ! # LQFOXGH ¿OH ´ VHJPHQWV IRRWHU MVSI´ ! R " MVS IRUZDUG SDJH ´ VHJPHQWV IRRWHU MVSI´ ! R # MVS LQFOXGH SDJH ´ VHJPHQWV IRRWHU MVSI´ ! R $ 5HTXHVW'LVSDWFKHU GLVSDWFKHU

5.4)

-Option A is incorrect because it uses an include directive, which is for static includes that happen at translation time.

UHTXHVW JHW5HTXHVW'LVSDWFKHU ³ VHJPHQWV IRRWHU MVSI´ GLVSDWFKHU LQFOXGH UHTXHVW UHVSRQVH

-Option D would be correct if it was a scriptlet: it functionally does the same thing as option C, but its syntax is only used by servlets.

)N AN (4-, PAGE WITH A RICH GRAPHICAL LAYOUT WHICH *30 STANDARD ACTION CAN BE USED TO IMPORT AN IMAGE lLE INTO THE *30 PAGE

(JSP v2.0 section

5.4)

because

alid R ! MVS LPDJH SDJH ´ORJR SQJ´ ! -Options A and B are inv standard action. there is no image

R " MVS LPDJH ¿OH ´ORJR SQJ´ ! R # MVS LQFOXGH SDJH ´ORJR SQJ´ !

e syntax of , not because th ause it does -Option C is invalid bec but , ong is wr data of the include action ary bin e th ort to imp . not make senseint nt te con P JS e the image Ăžle o th

R $ MVS LQFOXGH ¿OH ´ORJR SQJ´ ! R % 4HIS #!../4 BE DONE USING A *30 STANDARD ACTION

the include -Option D is invalid because attr ibute. action does not take a Ăžle This is a tricky question because it is NOT possible to import the contents of any binary Ăžle into a JSP page, which generates an HTML response.

FKDSWHU

Chapter 8. Script-free pages Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher: O'Reilly Prepared for Stephen Goss, Safari ID: stephengoss@gmx.net Print Publication Date: 8/1/2004 User number: 747221 Copyright 2007, Safari Books Online, LLC. This PDF is exclusively for your use in accordance with the Safari Terms of Service. No part of it may be reproduced or transmitted in any form by any means without the prior written permission for reprints and excerpts from the publisher. Redistribution or other use that violates the fair use priviledge under U.S. copyright laws (see 17 USC107) or that otherwise violates the Safari Terms of Service is strictly prohibited.


Chapter 8. Script-free pages

VFULSWOHVV -63V

(JSP v2.0 section 2.6)

'IVEN

SDFNDJH FRP H[DPSOH SXEOLF FODVV 0\)XQFWLRQV ^ SXEOLF VWDWLF 6WULQJ UHSHDW LQW [ 6WULQJ VWU ^ PHWKRG ERG\ ` ` AND GIVEN THE *30 # WDJOLE XUL ´ :(% ,1) P\IXQFWV´ SUH¿[ ´P\´ ! LQVHUW FRGH KHUH ! 7HICH INSERTED AT LINE IN THE *30 IS A VALID %, FUNCTION INVOCATION

R ! ^UHSHDW ³ ´ ` R " ^UHSHDW ³ ´ ³ ´ ` R # ^P\ UHSHDW ³ ´ ` . The -Option E is correct R $ ^P\ UHSHDW ³ ´ ³ ´ ` necessary mapping information R % ! VALID INVOCATION #!../4 BE DETERMINED is NOT known.

'IVEN

(JSP v2.0 pg. 1-68)

SXEOLF FODVV 0\%HDQ ^ SULYDWH MDYD XWLO 0DS SDUDPV SULYDWH MDYD XWLO /LVW REMHFWV SULYDWH 6WULQJ QDPH SXEOLF MDYD XWLO 0DS JHW3DUDPV ^ UHWXUQ SDUDPV ` SXEOLF 6WULQJ JHW1DPH ^ UHWXUQ QDPH ` SXEOLF MDYD XWLO /LVW JHW2EMHFWV ^ UHWXUQ REMHFWV ` ` 7HICH WILL CAUSE ERRORS ASSUME THAT AN ATTRIBUTE NAMED P\EHDQ CAN BE FOUND AND IS OF TYPE 0\%HDQ #HOOSE ALL THAT APPLY

R ! ^P\EHDQ QDPH` R " ^P\EHDQ>³QDPH´@` R # ^P\EHDQ REMHFWV D` R $ ^P\EHDQ>³SDUDPV´@ D` R % ^P\EHDQ SDUDPV>³D´@` R & ^P\EHDQ>³REMHFWV´@ D`

-Options C and F will cause errors. ÒaÓ is NOT a List property, and since ÒobjectsÓ is NOT a Map, a lookup wonÕt be performed (as opposed to D and E).

\RX DUH KHUH

Chapter 8. Script-free pages Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher: O'Reilly Prepared for Stephen Goss, Safari ID: stephengoss@gmx.net Print Publication Date: 8/1/2004 User number: 747221 Copyright 2007, Safari Books Online, LLC. This PDF is exclusively for your use in accordance with the Safari Terms of Service. No part of it may be reproduced or transmitted in any form by any means without the prior written permission for reprints and excerpts from the publisher. Redistribution or other use that violates the fair use priviledge under U.S. copyright laws (see 17 USC107) or that otherwise violates the Safari Terms of Service is strictly prohibited.


Chapter 8. Script-free pages

PRFN DQVZHUV

(JSP v2.0 pgs 1-66 and 1-73)

'IVEN A *30 PAGE 7KH XVHU KDV VXIÂżFLHQWO\ ORJJHG LQ RU RXW ^SDUDP ORJJHG,Q RU SDUDP ORJJHG2XW`

)F THE REQUEST INCLUDES THE QUERY STRING hORJJHG2XW WUXH´ WHAT WILL BE THIS STATEMENT S DISPLAYED VALUE

R ! 7KH XVHU KDV VXI¿FLHQWO\ ORJJHG LQ RU RXW IDOVH R " 7KH XVHU KDV VXI¿FLHQWO\ ORJJHG LQ RU RXW WUXH -Option B is correct because the EL expression using ÒorÓ R # 7KH XVHU KDV VXI¿FLHQWO\ ORJJHG LQ RU RXW ^SDUDP true if either ORJJHG,Q RU SDUDP ORJJHG2XW`

R $ 7KH XVHU KDV VXIÂżFLHQWO\ ORJJHG LQ RU RXW SDUDP

will return loggedIn or loggedOut is true.

ORJJHG,Q RU SDUDP ORJJHG2XW

R % 7KH XVHU KDV VXIÂżFLHQWO\ ORJJHG LQ RU RXW RU WUXH

(JSP v2.0 pg. 1-69)

7HICH ABOUT %, ACCESS OPERATORS ARE TRUE #HOOSE ALL THAT APPLY

R ! !NYWHERE THE DOT OPERATOR IS USED THE >@ COULD BE USED INSTEAD

-Option B is incorrect because only b) a) Lists and arrays, and form whose keys are not well- ed.

R " !NYWHERE THE >@ OPERATOR IS USED THE DOT COULD BE USED the [] will work when accessing Maps INSTEAD

R # )F THE DOT OPERATOR IS USED TO ACCESS A BEAN PROPERTY BUT THE PROPERTY DOESN T EXIST THEN A RUNTIME EXCEPTION IS THROWN

ause

ption D is incorrect bec be R $ 4HERE ARE SOME SITUATIONS WHERE THE DOT OPERATOR MUST BE -O the dot operator can alwaysor. USED AND OTHER SITUATIONS WHERE THE >@ OPERATOR MUST BE USED

converted to the [] operat

4HE FOLLOWING CODE FRAGMENT APPEARS IN A *30 PAGE MVS LQFOXGH SDJH ´ MVSI KHDGHU KWPO´ !

(JSP v2.0 section

5.4)

4HE *30 PAGE IS PART OF A WEB APPLICATION WITH THE CONTEXT ROOT P\DSS 'IVEN THAT THE APPLICATION S TOP LEVEL DIRECTORY IS P\DSS WHAT IS THE PATH TO THE KHDGHU KWPO lLE

R ! KHDGHU KWPO R " MVSI KHDGHU KWPO R # P\DSS MVSI KHDGHU KWPO R $ LQFOXGHV MVSI KHDGHU KWPO

as -The path /jspf/header.html when used the value of the <jsp:include> actionÕs page tion, attribute is relative to the web applicaat theso a leading back slash (Ò/Ó) means Òbegin applicationÕs top level.Ó

FKDSWHU

Chapter 8. Script-free pages Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher: O'Reilly Prepared for Stephen Goss, Safari ID: stephengoss@gmx.net Print Publication Date: 8/1/2004 User number: 747221 Copyright 2007, Safari Books Online, LLC. This PDF is exclusively for your use in accordance with the Safari Terms of Service. No part of it may be reproduced or transmitted in any form by any means without the prior written permission for reprints and excerpts from the publisher. Redistribution or other use that violates the fair use priviledge under U.S. copyright laws (see 17 USC107) or that otherwise violates the Safari Terms of Service is strictly prohibited.


Chapter 9. Custom tags are powerful

XVLQJ -67/

&XVWRP WDJV DUH SRZHUIXO <RX PHDQ , VSHQW DOO WKLV WLPH ZULWLQJ VFULSWOHWV IRU WKH WKLQJV , FDQ·W GR ZLWK (/ DQG VWDQGDUG DFWLRQV ZKHQ , FRXOG KDYH XVHG -67/"

6RPHWLPHV \RX QHHG PRUH WKDQ (/ RU VWDQGDUG DFWLRQV :KDW LI \RX ZDQW WR ORRS WKURXJK WKH GDWD LQ DQ DUUD\ DQG GLVSOD\ RQH LWHP SHU URZ LQ DQ +70/ WDEOH" <RX NQRZ \RX FRXOG ZULWH WKDW LQ WZR VHFRQGV XVLQJ D IRU ORRS LQ D VFULSWOHW %XW \RX¶UH WU\LQJ WR JHW DZD\ IURP VFULSWLQJ 1R SUREOHP :KHQ (/ DQG VWDQGDUG DFWLRQV DUHQ¶W HQRXJK \RX FDQ XVH FXVWRP WDJV 7KH\¶UH DV HDV\ WR XVH LQ D -63 DV VWDQGDUG DFWLRQV (YHQ EHWWHU VRPHRQH¶V DOUHDG\ ZULWWHQ D SLOH RI WKH RQHV \RX¶UH PRVW OLNHO\ WR QHHG DQG EXQGOHG WKHP LQWR WKH -63 6WDQGDUG 7DJ /LEUDU\ -67/ ,Q WKLV FKDSWHU ZH¶OO OHDUQ WR XVH FXVWRP WDJV DQG LQ WKH QH[W FKDSWHU ZH¶OO OHDUQ WR FUHDWH RXU RZQ

WKLV LV D QHZ FKDSWHU

Chapter 9. Custom tags are powerful Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher: O'Reilly Prepared for Stephen Goss, Safari ID: stephengoss@gmx.net Print Publication Date: 8/1/2004 User number: 747221 Copyright 2007, Safari Books Online, LLC. This PDF is exclusively for your use in accordance with the Safari Terms of Service. No part of it may be reproduced or transmitted in any form by any means without the prior written permission for reprints and excerpts from the publisher. Redistribution or other use that violates the fair use priviledge under U.S. copyright laws (see 17 USC107) or that otherwise violates the Safari Terms of Service is strictly prohibited.


Chapter 9. Custom tags are powerful

RI¿FLDO 6XQ H[DP REMHFWLYHV

%XLOGLQJ -63 SDJHV XVLQJ WDJ OLEUDULHV

&RYHUDJH 1RWHV

Copyright Safari Books Online #747221 'HVFULEH WKH V\QWD[ DQG VHPDQWLFV RI WKH µWDJOLE¶

GLUHFWLYH IRU D VWDQGDUG WDJ OLEUDU\ IRU D OLEUDU\ RI 7DJ )LOHV

!LL OF THE OBJECTIVES IN THIS SECTION ARE COVERED IN THIS CHAPTER ALTHOUGH SOME OF THE CONTENT IS COVERED AGAIN IN THE NEXT CHAPTER $EVELOPING #USTOM 4AGS

*LYHQ D GHVLJQ JRDO FUHDWH WKH FXVWRP WDJ VWUXFWXUH WR VXSSRUW WKDW JRDO

,GHQWLI\ WKH WDJ V\QWD[ DQG GHVFULEH WKH DFWLRQ VHPDQWLFV RI WKH IROORZLQJ -63 6WDQGDUG 7DJ /LEUDU\ -67/ Y WDJV D FRUH WDJV RXW VHW UHPRYH DQG FDWFK E FRQGLWLRQDO WDJV LI FKRRVH ZKHQ DQG RWKHUZLVH F LWHUDWLRQ WDJV IRU(DFK DQG G 85/ UHODWHG XUO

,QVWDOOLQJ WKH -67/ 7KH -67/ LV 127 SDUW RI WKH -63 VSHFL¿FDWLRQ +DYLQJ DFFHVV WR WKH 6HUYOHW DQG -63 $3,¶V GRHVQ¶W PHDQ \RX KDYH DFFHVV WR -67/ %HIRUH \RX FDQ XVH -67/ \RX QHHG WR LQVWDOO WKH ³MVWO MDU´ ¿OH LQWR WKH :(% ,1) OLE GLUHFWRU\ RI \RXU ZHE DSS 7KDW PHDQV HDFK ZHE DSS QHHGV D FRS\ ,Q 7RPFDW WKH -67/ LV DOUHDG\ LQ WKH H[DPSOH DSSOLFDWLRQV WKDW VKLS RXW RI WKH ER[ ZLWK 7RPFDW VR DOO \RX QHHG WR GR LV FRS\ LW RXW RI RQH GLUHFWRU\ DQG LQWR \RXU RZQ :(% ,1) OLE GLUHFWRU\ &RS\ WKH -67/ IURP WKH 7RPFDW H[DPSOHV DW ZHEDSSV MVS H[DPSOHV :(% ,1) OLE MVWO MDU $QG SODFH LW LQ \RXU RZQ ZHE DSS¶V :(% ,1) OLE GLUHFWRU\

FKDSWHU

Chapter 9. Custom tags are powerful Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher: O'Reilly Prepared for Stephen Goss, Safari ID: stephengoss@gmx.net Print Publication Date: 8/1/2004 User number: 747221 Copyright 2007, Safari Books Online, LLC. This PDF is exclusively for your use in accordance with the Safari Terms of Service. No part of it may be reproduced or transmitted in any form by any means without the prior written permission for reprints and excerpts from the publisher. Redistribution or other use that violates the fair use priviledge under U.S. copyright laws (see 17 USC107) or that otherwise violates the Safari Terms of Service is strictly prohibited.


Chapter 9. Custom tags are powerful

XVLQJ -67/

7KHUH·V JRW WR EH D ZD\ WR LWHUDWH WKURXJK D FROOHFWLRQ LQ D -63 ZLWKRXW VFULSWLQJ , ZDQW WR VKRZ RQH HOHPHQW SHU URZ LQ D WDEOH

-4 IVL [\IVLIZL IK\QWV[ IZM TQUQ\ML 7HAT HAPPENS WHEN YOU BUMP INTO A BRICK WALL 9OU CAN GO BACK TO SCRIPTING OF COURSEˆBUT YOU KNOW THAT S NOT THE PATH $EVELOPERS USUALLY WANT WAY MORE STANDARD ACTIONS ORˆEVEN BETTERˆTHE ABILITY TO CREATE THEIR OWN ACTIONS 4HAT S WHAT CUSTOM TAGS ARE FOR )NSTEAD OF SAYING JSP SET0ROPERTY YOU WANT TO DO SOMETHING LIKE MY DO#USTOM4HING !ND YOU CAN "UT IT S NOT THAT EASY TO CREATE THE SUPPORT CODE THAT GOES BEHIND THE TAG &OR THE *30 PAGE CREATOR CUSTOM TAGS ARE MUCH EASIER TO USE THAN SCRIPTING &OR THE *AVA PROGRAMMER HOWEVER BUILDING THE CUSTOM TAG HANDLER THE *AVA CODE INVOKED WHEN A *30 USES THE TAG IS TOUGHER &ORTUNATELY THERE S A STANDARD LIBRARY OF CUSTOM TAGS KNOWN AS THE *30 3TANDARD 4AG ,IBRARY *34, 'IVEN THAT YOUR *30 SHOULDN T BE DOING A BUNCH OF BUSINESS LOGIC ANYWAY YOU MIGHT lND THAT THE *34, COMBINED WITH %, IS ALL YOU LL EVER NEED 3TILL THERE COULD BE TIMES WHEN YOU NEED SOMETHING FROM SAY A CUSTOM TAG LIBRARY DEVELOPED SPECIlCALLY FOR YOUR COMPANY )N THIS CHAPTER YOU LL LEARN HOW TO USE THE CORE *34, TAGS AS WELL AS CUSTOM TAGS FROM OTHER LIBRARIES )N THE NEXT CHAPTER WE LL LEARN HOW TO ACTUALLY BUILD THE CLASSES THAT HANDLE CALLS TO THE CUSTOM TAGS SO THAT YOU CAN DEVELOP YOUR OWN

\RX DUH KHUH

Chapter 9. Custom tags are powerful Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher: O'Reilly Prepared for Stephen Goss, Safari ID: stephengoss@gmx.net Print Publication Date: 8/1/2004 User number: 747221 Copyright 2007, Safari Books Online, LLC. This PDF is exclusively for your use in accordance with the Safari Terms of Service. No part of it may be reproduced or transmitted in any form by any means without the prior written permission for reprints and excerpts from the publisher. Redistribution or other use that violates the fair use priviledge under U.S. copyright laws (see 17 USC107) or that otherwise violates the Safari Terms of Service is strictly prohibited.


Chapter 9. Custom tags are powerful

WKH F IRU(DFK! WDJ

4WWXQVO _Q\PW]\ [KZQX\QVO )MAGINE YOU WANT SOMETHING THAT LOOPS OVER A COLLECTION SAY AN ARRAY OF CATALOG ITEMS PULLS OUT ONE ELEMENT AT A TIME AND PRINTS THAT ELEMENT IN A DYNAMICALLY GENERATED TABLE ROW 9OU CAN T POSSIBLY HARD CODE THE COMPLETE TABLEˆYOU HAVE NO IDEA HOW MANY ROWS THERE WILL BE AT RUNTIME AND OF COURSE YOU DON T KNOW THE VALUES IN THE COLLECTION 4HE C FOR%ACH TAG IS THE ANSWER 4HIS DOES REQUIRE A VERY SLIGHT KNOWLEDGE OF (4-, TABLES BUT WE VE INCLUDED NOTES HERE FOR THOSE WHO AREN T FAMILIAR WITH THE TOPIC "Y THE WAY ON THE EXAM YOU ARE EXPECTED TO KNOW HOW TO USE C FOR%ACH WITH TABLES

6HUYOHW FRGH 6WULQJ>@ PRYLH/LVW ^³$PHOLH´ ³5HWXUQ RI WKH .LQJ´ ³0HDQ *LUOV´` UHTXHVW VHW$WWULEXWH ³PRYLH/LVW´ PRYLH/LVW Make

:KDW \RX ZDQW

a Str set the arraing[] of movie names, y as a reques an t attribute.d

KWWS ORFDOKRVW WHVW-63 7HVWHU GR

0RYLH OLVW $PHOLH 5HWXUQ RI WKH .LQJ 0HDQ *LUOV

,Q D -63 ZLWK VFULSWLQJ WDEOH! 6WULQJ>@ LWHPV 6WULQJ>@ UHTXHVW JHW$WWULEXWH ³PRYLH/LVW´ 6WULQJ YDU QXOO IRU LQW L L LWHPV OHQJWK L ^ YDU LWHPV>L@ ! WU! WG! YDU ! WG! WU! ` ! WDEOH!

FKDSWHU

Chapter 9. Custom tags are powerful Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher: O'Reilly Prepared for Stephen Goss, Safari ID: stephengoss@gmx.net Print Publication Date: 8/1/2004 User number: 747221 Copyright 2007, Safari Books Online, LLC. This PDF is exclusively for your use in accordance with the Safari Terms of Service. No part of it may be reproduced or transmitted in any form by any means without the prior written permission for reprints and excerpts from the publisher. Redistribution or other use that violates the fair use priviledge under U.S. copyright laws (see 17 USC107) or that otherwise violates the Safari Terms of Service is strictly prohibited.


Chapter 9. Custom tags are powerful

XVLQJ -67/

$K"NWZ-IKP& 4HE C FOR%ACH TAG FROM THE *34, IS PERFECT FOR THISˆIT GIVES YOU A SIMPLE WAY TO ITERATE OVER ARRAYS AND COLLECTIONS -63 FRGH

this taglib (WeÕll talk aboutin the chapter.) er lat directive

# WDJOLE SUH¿[ ´F´ XUL ´KWWS MDYD VXQ FRP MVS MVWO FRUH´ ! KWPO! ERG\! VWURQJ! 0RYLH OLVW VWURQJ! EU! EU!

WDEOH! F IRU(DFK YDU ´PRYLH´ LWHPV ´ ^PRYLH/LVW`´ ! WU! WG! ^PRYLH` WG! WU! F IRU(DFK!

he e entire array (t Loops through thibute) and prints each tr at Ă“ has Ă’movieList row. (This table element in a newper row.) n lum just one co

WDEOH! ERG\! KWPO!

&UDVK UHIUHVKHU RQ +70/ WDEOHV WDEOH!

Table Row. <tr> stands for Table Data. <td> stands for

WU!

WG!GDWD IRU WKLV FHOO WG!

WG!GDWD IRU WKLV FHOO WG!

WG!GDWD IRU WKLV FHOO WG!

WU!

WU!

WG!GDWD IRU WKLV FHOO WG!

WG!GDWD IRU WKLV FHOO WG!

WG!GDWD IRU WKLV FHOO WG!

WU!

WU!

WG!GDWD IRU WKLV FHOO WG!

WG!GDWD IRU WKLV FHOO WG!

WG!GDWD IRU WKLV FHOO WG!

WU!

WDEOH! 4ABLES ARE PRETTY STRAIGHTFORWARD 4HEY VE GOT CELLS ARRANGED INTO ROWS AND COLUMNS AND THE DATA GOES INSIDE THE CELLS 4HE TRICK IS TELLING THE TABLE HOW MANY ROWS AND COLUMNS YOU WANT 2OWS ARE DElNED WITH THE TR 4ABLE 2OW TAG AND COLUMNS ARE DElNED WITH THE TD 4ABLE $ATA TAG 4HE NUMBER OF ROWS COMES FROM THE NUMBER OF TR TAGS AND THE NUMBER OF COLUMNS COMES FROM THE NUMBER OF TD TAGS YOU PUT INSIDE THE TR TR TAGS

$ATA TO PRINT DISPLAY GOES ONLY INSIDE THE TD TD TAGS \RX DUH KHUH

Chapter 9. Custom tags are powerful Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher: O'Reilly Prepared for Stephen Goss, Safari ID: stephengoss@gmx.net Print Publication Date: 8/1/2004 User number: 747221 Copyright 2007, Safari Books Online, LLC. This PDF is exclusively for your use in accordance with the Safari Terms of Service. No part of it may be reproduced or transmitted in any form by any means without the prior written permission for reprints and excerpts from the publisher. Redistribution or other use that violates the fair use priviledge under U.S. copyright laws (see 17 USC107) or that otherwise violates the Safari Terms of Service is strictly prohibited.


Chapter 9. Custom tags are powerful

WKH F IRU(DFK! WDJ

,MKWV[\Z]K\QVO $K"NWZ-IKP& 4HE C FOR%ACH TAG MAPS NICELY INTO A FOR LOOPˆTHE TAG REPEATS THE BODY OF THE TAG FOR EACH ELEMENT IN THE COLLECTION AND WE USE hCOLLECTIONv HERE TO MEAN EITHER AN ARRAY OR #OLLECTION OR -AP OR COMMA DELIMITED 3TRING 4HE KEY FEATURE IS THAT THE TAG ASSIGNS EACH ELEMENT IN THE COLLECTION TO THE VARIABLE YOU DECLARE WITH THE VAR ATTRIBUTE

7KH F IRU(DFK! WDJ

ENT in the holds each ELEM at th ble iteration. ria ch va ea e Th changes with lue va s It . ion ct lle co

F IRU(DFK YDU ´PRYLH´ LWHPV ´ ^PRYLH/LVW`´ ! ^PRYLH` ( F IRU(DFK!

The actual thing (array, Collection to loop over comma-delimited , Map, or a String).

6WULQJ>@ LWHPV LW 6WULQJ>@ UHTXHVW JHW$WWULEXWH ³PRYLH/LVW´ IRU LQW L L LWHPV OHQJWK L ^ IRU 6WULQJ PRYLH LWHPV>L@ WULQ RXW SULQWOQ PRYLH LQWOQ P `

*HWWLQJ D ORRS FRXQWHU ZLWK WKH RSWLRQDO YDU6WDWXV DWWULEXWH WDEOH!

varStatus make that holds an inss a new variable servlet.jsp.jstl.cortance of javax. e.LoopTagStatus.

F IRU(DFK YDU ´PRYLH´ LWHPV ´ ^PRYLH/LVW`´ YDU6WDWXV ´PRYLH/RRS&RXQW´ ! WU!

WG!&RXQW ^PRYLH/RRS&RXQW FRXQW` WG!

WU! WU! WG! ^PRYLH` EU! EU! WG! WU! F IRU(DFK! WDEOH!

Helpfully, the LoopTagStatus class has a count property that gives you the current value of the iteration counter. (Like the ÒiÓ in a for loop.)

KWWS ORFDOKRVW WHVW-63 7HVWHU GR

&RXQW $PHOLH &RXQW 5HWXUQ RI WKH .LQJ &RXQW 0HDQ *LUO

FKDSWHU

Chapter 9. Custom tags are powerful Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher: O'Reilly Prepared for Stephen Goss, Safari ID: stephengoss@gmx.net Print Publication Date: 8/1/2004 User number: 747221 Copyright 2007, Safari Books Online, LLC. This PDF is exclusively for your use in accordance with the Safari Terms of Service. No part of it may be reproduced or transmitted in any form by any means without the prior written permission for reprints and excerpts from the publisher. Redistribution or other use that violates the fair use priviledge under U.S. copyright laws (see 17 USC107) or that otherwise violates the Safari Terms of Service is strictly prohibited.


Chapter 9. Custom tags are powerful

XVLQJ -67/

AW] KIV M^MV VM[\ $K"NWZ-IKP& \IO[ 7HAT IF YOU HAVE SOMETHING LIKE A COLLECTION OF COLLECTIONS !N ARRAY OF ARRAYS 9OU CAN NEST C FOR%ACH TAGS FOR MORE COMPLEX TABLE STRUCTURES )N THIS EXAMPLE WE PUT 3TRING ARRAYS INTO AN !RRAY,IST THEN MAKE THE !RRAY,IST A REQUEST ATTRIBUTE 4HE *30 HAS TO LOOP THROUGH THE !RRAY,IST TO GET EACH 3TRING ARRAY THEN LOOP THROUGH EACH 3TRING ARRAY TO PRINT THE ACTUAL ELEMENTS OF THE ARRAY 6HUYOHW FRGH 6WULQJ>@ PRYLHV ^³0DWUL[ 5HYROXWLRQV´ ³.LOO %LOO´ ³%RRQGRFN 6DLQWV´` 6WULQJ>@ PRYLHV ^³$PHOLH´ ³5HWXUQ RI WKH .LQJ´ ³0HDQ *LUOV´` MDYD XWLO /LVW PRYLH/LVW QHZ MDYD XWLO $UUD\/LVW PRYLH/LVW DGG PRYLHV PRYLH/LVW DGG PRYLHV UHTXHVW VHW$WWULEXWH ³PRYLHV´ PRYLH/LVW

-63 FRGH

outer loop

tribute

ArrayList request at

The WDEOH! F IRU(DFK YDU ´OLVW(OHPHQW´ LWHPV ´ ^PRYLHV`´ !

F IRU(DFK YDU ´PRYLH´ LWHPV ´ ^OLVW(OHPHQW`´ ! WU! One of the St WG! ^PRYLH` WG! inner that was assignerindg arrays loop WU! outer loopĂ•s Ă’varĂ“ to the F IRU(DFK! at

tribute.

F IRU(DFK! WDEOH! KWWS ORFDOKRVW WHVW-63 7HVWHU GR

From the Ăžrst St rin

g[]

From the second String[]

0DWUL[ 5HYROXWLRQV .LOO %LOO %RRQGRFN 6DLQWV $PHOLH 5HWXUQ RI WKH .LQJ 0HDQ *LUOV

\RX DUH KHUH

Chapter 9. Custom tags are powerful Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher: O'Reilly Prepared for Stephen Goss, Safari ID: stephengoss@gmx.net Print Publication Date: 8/1/2004 User number: 747221 Copyright 2007, Safari Books Online, LLC. This PDF is exclusively for your use in accordance with the Safari Terms of Service. No part of it may be reproduced or transmitted in any form by any means without the prior written permission for reprints and excerpts from the publisher. Redistribution or other use that violates the fair use priviledge under U.S. copyright laws (see 17 USC107) or that otherwise violates the Safari Terms of Service is strictly prohibited.


Chapter 9. Custom tags are powerful

WKH F IRU(DFK! WDJ

WKHUH DUH QR

'XPE 4XHVWLRQV

4

(OW DID YOU KNOW THAT THE hVAR3TATUSv ATTRI BUTE WAS AN INSTANCE OF WHATEVER THAT WAS AND HOW DID YOU KNOW THAT IT HAS A hCOUNTv PROPERTY

$

!HHHH WE LOOKED IT UP

)T S ALL THERE IN THE *34, SPEC )F YOU DON T HAVE THE SPEC ALREADY GO DOWNLOAD IT ./7 THE INTRO OF THIS BOOK TELLS YOU WHERE TO GET THE SPECS COVERED ON THE EXAM )T IS 4(% REFERENCE FOR ALL THE TAGS IN THE *34, AND TELLS YOU ALL THE POSSIBLE ATTRIBUTES WHETHER THEY RE OPTIONAL OR REQUIRED THE ATTRIBUTE TYPE AND ANY OTHER DETAILS ON HOW YOU USE THE TAG %VERYTHING YOU NEED TO KNOW ABOUT THESE TAGS FOR THE EXAM IS IN THIS CHAPTER "UT SOME OF THE TAGS HAVE A FEW MORE OPTIONS THAN WE COVER HERE SO YOU MIGHT WANT TO HAVE A LOOK IN THE SPEC

4

3INCE YOU KNOW MORE THAN YOU RE TELLING ABOUT THIS TAG DOES IT GIVE YOU A WAY TO CHANGE THE ITERATION STEPS )N A REAL *AVA FOR LOOP ) DON T HAVE TO DO I ) CAN DO I FOR EXAMPLE TO GET EVERY THIRD ELEMENT INSTEAD OF EVERY ELEMENT

.OT A PROBLEM 4HE C FOR%ACH TAG HAS OPTIONAL ATTRIBUTES FOR BEGIN END IN CASE YOU WANT TO ITERATE OVER A SUBSET OF THE COLLECTION AND STEP IF YOU WANT TO SKIP OVER SOME ELEMENTS

)S THE hCv IN C FOR%ACH A REQUIRED PREl X

7ELL SOME PREFIX IS REQUIRED OF COURSE ALL TAGS AND %, FUNCTIONS MUST HAVE A PREFIX TO GIVE THE #ONTAIN ER THE NAMESPACE FOR THAT TAG OR FUNCTION NAME "UT YOU DON T (!6% TO NAME THE PREFIX hCv )T S JUST THE STANDARD CONVENTION FOR THE SET OF TAGS IN *34, KNOWN AS hCOREv 7E RECOMMEND USING SOMETHING OTHER THAN hCv AS A PREFIX WHENEVER YOU WANT TO TOTALLY CONFUSE THE PEOPLE YOU WORK WITH

:DWFK LW

7KH ´YDU¾ YDULDEOH LV J VFRSHG WR 21/< WKH WD

WKLV LVQÂśW D IXOO Ă€ HGJHG VFRSH 7KDWÂśV ULJKW WDJ VFRSH 1R EXWHV OLNH WKH RWKHU IRXU² WR ZKLFK \RX FDQ ELQG DWWUL DSSOLFDWLRQ 7DJ VFRSH SDJH UHTXHVW VHVVLRQ DQG EOH ZDV GHFODUHG ,16,'( D VLPSO\ PHDQV WKDW WKH YDULD ORRS W WKDW PHDQV LQ -DYD WHUPV $QG \RX DOUHDG\ NQRZ ZKD JV D YDULDEOH VHW ZLWK HU WD W RWK PRV W IRU H WKD <RXÂśOO VH OH WR ZKDWHYHU VFRSH \RX D ÂłYDU´ DWWULEXWH ZLOO EH YLVLE 5 RQDO ÂłVFRSH´ DWWULEXWH 2 VSHFLÂż FDOO\ VHW XVLQJ DQ RSWL DJH VFRSH WKH YDULDEOH ZLOO GHIDXOW WR S H WKDW WULHV WR XVH WKH YDULDEO 6R GRQÂśW EH IRROHG E\ FRGH WKH G RI H HQ : WK VRPHZKHUH %(/2 F IRU(DFK! ERG\ WDJ LWHPV ´ ^IRR/LVW`´ ! F IRU(DFK YDU ´IRR´ OK ^IRR` F IRU(DFK!

$

4 $

R` RR` ^IR ^I

ooÓ variable NO!! The Òfe! op out of sc

is

VFRSH DV EHLQJ MXVW OLNH ,W PLJKW KHOS WR WKLQN RI WDJ YD FRGH $Q H[DPSOH LV WKH EORFN VFRSH LQ SODLQ ROG -D YH IRU ORRS \RX DOO NQRZ DQG OR WHPV OHQJWK L ^ IRU LQW L L L [ L `

L L

J L GR6RPHWKLQJ

variable NO!! The Ă’i Ă“ope! sc of t ou is

FKDSWHU

Chapter 9. Custom tags are powerful Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher: O'Reilly Prepared for Stephen Goss, Safari ID: stephengoss@gmx.net Print Publication Date: 8/1/2004 User number: 747221 Copyright 2007, Safari Books Online, LLC. This PDF is exclusively for your use in accordance with the Safari Terms of Service. No part of it may be reproduced or transmitted in any form by any means without the prior written permission for reprints and excerpts from the publisher. Redistribution or other use that violates the fair use priviledge under U.S. copyright laws (see 17 USC107) or that otherwise violates the Safari Terms of Service is strictly prohibited.


Chapter 9. Custom tags are powerful

XVLQJ -67/

,WQVO I KWVLQ\QWVIT QVKT]LM _Q\P $K"QN& )MAGINE YOU HAVE A PAGE WHERE USERS CAN VIEW COMMENTS FROM OTHER USERS !ND IMAGINE THAT MEMBERS CAN ALSO POST COMMENTS BUT NON MEMBER GUESTS CANNOT 9OU WANT EVERYONE TO GET THE SAME PAGE BUT YOU WANT MEMBERS TO hSEEv MORE THINGS ON THE PAGE 9OU WANT A CONDITIONAL JSP INCLUDE AND OF COURSE YOU DON T WANT TO DO IT WITH SCRIPTING :KDW PHPEHUV VHH

:KDW 121 PHPEHUV VHH

KWWS ORFDOKRVW WHVW-63 7HVWHU GR

KWWS ORFDOKRVW WHVW-63 7HVWHU GR

dd...Ó want the tÒAhe client is We donÕt ap if ar pe parts to ember. NOT a m

-63 FRGH # WDJOLE SUH¿ [ ´F´ XUL ´KWWS MDYD VXQ FRP MVS MVWO FRUH´ ! KWPO! ERG\! VWURQJ!0HPEHU &RPPHQWV VWURQJ! EU! somewhere set on Assume a servlet KU! ^FRPPHQW/LVW` KU! ibute, based tr at pe

the userTy information. the userÕs login

F LI WHVW ´ ^XVHU7\SH HT ¾PHPEHUœ `´ ! MVS LQFOXGH SDJH ´LQSXW&RPPHQWV MVS´ ! F LI! ERG\! KWPO!

,QFOXGHG SDJH ´LQSXW&RPPHQWV MVS¾

Yes, those are SINGLE quotes around ÔmemberÕ. DonÕt forget that you can use EITHER double or single quotes in your tags and EL.

IRUP DFWLRQ ´FRPPHQWV3URFHVV MVS´ PHWKRG ´SRVW´! $GG \RXU FRPPHQW EU! WH[WDUHD QDPH ´LQSXW´ FROV ´ ´ URZV ´ ´! WH[WDUHD! EU! LQSXW QDPH ´FRPPHQW6XEPLW´ W\SH ´EXWWRQ´ YDOXH ´$GG &RPPHQW´! IRUP!

\RX DUH KHUH

Chapter 9. Custom tags are powerful Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher: O'Reilly Prepared for Stephen Goss, Safari ID: stephengoss@gmx.net Print Publication Date: 8/1/2004 User number: 747221 Copyright 2007, Safari Books Online, LLC. This PDF is exclusively for your use in accordance with the Safari Terms of Service. No part of it may be reproduced or transmitted in any form by any means without the prior written permission for reprints and excerpts from the publisher. Redistribution or other use that violates the fair use priviledge under U.S. copyright laws (see 17 USC107) or that otherwise violates the Safari Terms of Service is strictly prohibited.


Chapter 9. Custom tags are powerful

WKH F LI! WDJ

*]\ _PI\ QN aW] VMML IV MT[M ' 7HAT IF YOU WANT TO DO ONE THING IF THE CONDITION IS TRUE AND A DIFFERENT THING IF THE CONDITION IS FALSE )N OTHER WORDS WHAT IF WE WANT TO SHOW EITHER ONE THING OR THE OTHER BUT NOBODY WILL SEE BOTH 4HE C IF ON THE PREVIOUS PAGE WORKED l NE BECAUSE THE LOGIC WAS EVERYBODY SEES THE l RST PART AND THEN IF THE TEST CONDITION IS TRUE SHOW A LITTLE EXTRA "UT NOW IMAGINE THIS SCENARIO YOU HAVE A CAR SALES WEB SITE AND YOU WANT TO CUSTOMIZE THE HEADLINE THAT SHOWS UP ON EACH PAGE BASED ON A USER ATTRIBUTE SET UP EARLIER IN THE SESSION -OST OF THE PAGE IS THE SAME REGARDLESS OF THE USER BUT EACH USER SEES A CUSTOMIZED HEADLINE ˆONE THAT BEST l TS THE USER S PERSONAL MOTIVATION FOR BUYING 7E ARE AFTER ALL TRYING TO SELL HIM A CAR AND BECOME OBSCENELY WEALTHY !T THE BEGINNING OF THE SESSION A FORM ASKS THE USER TO CHOOSE WHAT S MOST IMPORTANT $W WKH EHJLQQLQJ RI WKH VHVVLRQ KWWS ORFDOKRVW WHVW-63 7HVWHU GR

:KHQ EX\LQJ D FDU ZKDW LV PRVW LPSRUWDQW WR \RX"

6RPHZKHUH ODWHU LQ WKH VHVVLRQ KWWS ORFDOKRVW WHVW-63 7HVWHU GR

1RZ \RX FDQ VWRS HYHQ LI \RX GR GULYH LQVDQHO\ IDVW

,PDJLQH D ZHE VLWH IRU D FDU FRPSDQ\ 7KH ILUVW SDJH DVNV WKH XVHU ZKDW KH IHHOV LV PRVW LPSRUWDQW -XVW OLNH D JRRG VDOHVPDQ WKH SDJHV WKDW WDON DERXW IHDWXUHV RI WKH FDU ZLOO FXVWRPL]H WKH SUHVHQWDWLRQ EDVHG RQ WKH XVHU¡V SUHIHUHQFH VR WKDW HDFK IHDWXUH RI WKH FDU ORRNV OLNH LW ZDV PDGH ZLWK +,6 SHUVRQDO QHHGV LQ PLQG

age is serÕs p ttle, The uomized a lierests... cust t his int to Þ

7KH %UDNHV 2XU DGYDQFHG DQWL ORFN EUDNH V\VWHP $%6 LV HQJLQHHUHG WR JLYH \RX WKH DELOLW\ WR VWHHU HYHQ DV \RX¡UH VWRSSLQJ :H KDYH WKH EHVW VSHHG VHQVRUV RI DQ\ FDU WKLV VL]H

FKDSWHU

Chapter 9. Custom tags are powerful Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher: O'Reilly Prepared for Stephen Goss, Safari ID: stephengoss@gmx.net Print Publication Date: 8/1/2004 User number: 747221 Copyright 2007, Safari Books Online, LLC. This PDF is exclusively for your use in accordance with the Safari Terms of Service. No part of it may be reproduced or transmitted in any form by any means without the prior written permission for reprints and excerpts from the publisher. Redistribution or other use that violates the fair use priviledge under U.S. copyright laws (see 17 USC107) or that otherwise violates the Safari Terms of Service is strictly prohibited.


Chapter 9. Custom tags are powerful

XVLQJ -67/

<PM $K"QN& \IO _WVŸ\ _WZS NWZ \PQ[ 4HERE S NO WAY TO DO EXACTLY WHAT WE WANT USING THE C IF TAG BECAUSE IT DOESN T HAVE AN hELSEv 7E CAN ALMOST DO IT USING SOMETHING LIKE -63 XVLQJ F LI! EXW LW GRHVQ¡W ZRUN ULJKW F LI WHVW ´ ^XVHU3UHI œSHUIRUPDQFHœ`´ ! 1RZ \RX FDQ VWRS HYHQ LI \RX HP!GR HP! GULYH LQVDQHO\ IDVW F LI! F LI WHVW ´ ^XVHU3UHI œVDIHW\œ`´ ! 2XU EUDNHV ZRQœW ORFN XS QR PDWWHU KRZ EDG D GULYHU \RX DUH F LI! F LI WHVW ´ ^XVHU3UHI œPDLQWHQDQFHœ`´ ! /RVW \RXU WHFK MRE" 1R SUREOHP \RX ZRQœW KDYH WR VHUYLFH WKHVH EUDNHV IRU DW OHDVW WKUHH \HDUV F LI! any of these?

Pref doesnÕt match But what happens if user the default headline? ify spec to way no ThereÕs

FRQWLQXH ZLWK WKH UHVW RI WKH SDJH WKDW (9(5<21( VKRXOG VHH !

4HE C IF WON T WORK UNLESS WE RE #%24!). THAT WE LL NEVER NEED A DEFAULT VALUE 7HAT WE REALLY NEED IS KIND OF AN IF ELSE CONSTRUCT

-63 ZLWK VFULSWLQJ DQG LW GRHV ZKDW ZH ZDQW

s set Assume ÒuserPrefÓ inwathe session. somewhere earlier

KWPO! ERG\! K ! 6WULQJ SUHI 6WULQJ VHVVLRQ JHW$WWULEXWH ³XVHU3UHI´ LI SUHI HTXDOV ³SHUIRUPDQFH´

^ RXW SULQWOQ ³1RZ \RX FDQ VWRS HYHQ LI \RX HP!GR HP! GULYH LQVDQHO\ IDVW ´ ` HOVH LI SUHI HTXDOV ³VDIHW\´

^ RXW SULQWOQ ³2XU EUDNHV ZRQœW ORFN XS QR PDWWHU KRZ EDG D GULYHU \RX DUH ³ ` HOVH LI SUHI HTXDOV ³PDLQWHQDQFH´

^ RXW SULQWOQ ³ /RVW \RXU WHFK MRE" 1R SUREOHP \RX ZRQœW KDYH WR VHUYLFH WKHVH EUDNHV IRU DW OHDVW WKUHH \HDUV ´ ` HOVH ^ XVHU3UHI GRHVQœW PDWFK WKRVH VR SULQW WKH GHIDXOW KHDGOLQH RXW SULQWOQ ³2XU EUDNHV DUH WKH EHVW ´ ` ! K ! VWURQJ!7KH %UDNHV VWURQJ! EU! 2XU DGYDQFHG DQWL ORFN EUDNH V\VWHP $%6 LV HQJLQHHUHG WR JLYH \RX WKH DELOLW\ WR VWHHU HYHQ DV \RXœUH VWRSSLQJ :H KDYH WKH EHVW VSHHG VHQVRUV RI DQ\ FDU WKLV VL]H EU! <HV ZH DJUHH ZLWK \RX³WKHUH¡V QHDUO\ DOZD\V ERG\! KWPO! D EHWWHU DSSURDFK WKDQ FKDLQHG LI WHVWV %XW \RX¡UH MXVW JRQQD KDYH WR VXVSHQG GLVEHOLHI ORQJ HQRXJK WR OHDUQ KRZ WKLV DOO ZRUNV \RX DUH KHUH

Chapter 9. Custom tags are powerful Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher: O'Reilly Prepared for Stephen Goss, Safari ID: stephengoss@gmx.net Print Publication Date: 8/1/2004 User number: 747221 Copyright 2007, Safari Books Online, LLC. This PDF is exclusively for your use in accordance with the Safari Terms of Service. No part of it may be reproduced or transmitted in any form by any means without the prior written permission for reprints and excerpts from the publisher. Redistribution or other use that violates the fair use priviledge under U.S. copyright laws (see 17 USC107) or that otherwise violates the Safari Terms of Service is strictly prohibited.


Chapter 9. Custom tags are powerful

WKH F FKRRVH! WDJ

, ZLOO &+226( \RX :+(1 \RX DUH UHDG\ WR JLYH XS \RXU REVHVVLRQ ZLWK 3LODWHV 27+(5:,6( ,¡OO KDYH WR JR ZLWK .HQQ\ IRU WKH V\QFKURQL]HG VZLP WHDP

ur bodies E of these fo N O an run. th ill e w or No m <c:otherwise>) (including the ten atem e a switch hst.) (ItÕs not likfa ug ll-thro thereÕs no

<PM $K"KPWW[M& \IO IVL Q\[ XIZ\VMZ[ $K"_PMV& IVL $K"W\PMZ _Q[M& F FKRRVH! F ZKHQ WHVW ´ ^XVHU3UHI

¾SHUIRUPDQFHœ`´!

1RZ \RX FDQ VWRS HYHQ LI \RX HP!GR HP! GULYH LQVDQHO\ IDVW F ZKHQ! F ZKHQ WHVW ´ ^XVHU3UHI

¾VDIHW\œ`´!

2XU EUDNHV ZLOO QHYHU ORFN XS QR PDWWHU KRZ EDG D GULYHU \RX DUH F ZKHQ! F ZKHQ WHVW ´ ^XVHU3UHI

¾PDLQWHQDQFHœ`´!

/RVW \RXU WHFK MRE" 1R SUREOHP \RX ZRQÂśW KDYH WR VHUYLFH WKHVH EUDNHV IRU DW OHDVW WKUHH \HDUV F ZKHQ! F RWKHUZLVH! 2XU EUDNHV DUH WKH EHVW F RWKHUZLVH!

If none of the <c:when ts are true, the <c:otherwise> runs >astes a default.

F FKRRVH! WKH UHVW RI WKH SDJH JRHV KHUH !

Note: the <c:choose> tag is NOT required to have a <c:otherwise> tag.

FKDSWHU

Chapter 9. Custom tags are powerful Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher: O'Reilly Prepared for Stephen Goss, Safari ID: stephengoss@gmx.net Print Publication Date: 8/1/2004 User number: 747221 Copyright 2007, Safari Books Online, LLC. This PDF is exclusively for your use in accordance with the Safari Terms of Service. No part of it may be reproduced or transmitted in any form by any means without the prior written permission for reprints and excerpts from the publisher. Redistribution or other use that violates the fair use priviledge under U.S. copyright laws (see 17 USC107) or that otherwise violates the Safari Terms of Service is strictly prohibited.


Chapter 9. Custom tags are powerful

XVLQJ -67/

<PM $K"[M\& \IO [W U]KP KWWTMZ \PIV $R[X"[M\8ZWXMZ\a& 4HE JSP SET0ROPERTY TAG CAN DO ONLY ONE THINGˆSET THE PROPERTY OF A BEAN "UT WHAT IF YOU WANT TO SET A VALUE IN A -AP 7HAT IF YOU WANT TO MAKE A NEW ENTRY IN A -AP /R WHAT IF YOU SIMPLY WANT TO CREATE A NEW REQUEST SCOPED ATTRIBUTE 9OU GET ALL THAT WITH C SET BUT YOU HAVE TO LEARN A FEW SIMPLE RULES 3ET COMES IN TWO m AVORS VAR AND TARGET 4HE VAR VERSION IS FOR SETTING ATTRIBUTE VARIABLES THE TARGET VERSION IS FOR SETTING BEAN PROPERTIES OR -AP VALUES %ACH OF THE TWO m AVORS COMES IN TWO VARIATIONS WITH OR WITHOUT A BODY 4HE C SET BODY IS JUST ANOTHER WAY TO PUT IN THE VALUE

6HWWLQJ DQ DWWULEXWH YDULDEOH YDU ZLWK F VHW!

ed ÒuserLevelÓ, n-scoped attribute nam is not null). ute rib att If thereÕs NOT a sessio ue (assuming the val one s ate cre g ta is th

:LWK 12 ERG\

F VHW YDU ´XVHU/HYHO´ VFRSH ´VHVVLRQ´ YDOXH ´&RZER\´ !

The scope is optional; var is You MUST specify a valu required. e, but you have a choice between put tin value attribute or puttin g in a g the value in the tag body (see #2 below).

ve to be a

nÕt ha value does

F VHW YDU ´)LGR´ YDOXH ´ ^SHUVRQ GRJ`´ !

:,7+ D ERG\

String...

If ${person.dog} evaluates to a Dog object, then ÒFidoÓ is of type Dog.

e Remember, no slasha her y. bod has g ta e when th

F VHW YDU ´XVHU/HYHO´ VFRSH ´VHVVLRQ´ ! 6KHULII %DUWHQGHU &RZJLUO The F VHW!

used body is evaluated and iable. as the value of the var

EH R QXOO WKH YDULDEOH ZLOO ,I WKH YDOXH HYDOXDWHV W UHPRYHG JKW ¡V UL KDW ' 7 29( 5(0 RU XVLQJ WKH YDOXH DW HLWKHU LQ WKH ERG\ RI WKH WDJ ,PDJLQH WKDW IRU WKH YDOXH V WR QXOO PHDQLQJ OXDWH HYD GRJ` VRQ ^SHU GRJ` ,I WULEXWH \RX XVH ^SHUVRQ Q LI WKHUH ,6 D YDULDEOH WKH QXOO UW\ LV URSH RJ S QœV G WKHUH LV QR SHUVRQ RU SHUVR HG ,I \RX GRQœW VSHFLI\ WKDW DWWULEXWH ZLOO EH UHPRY HQ LI DWWULEXWH ZLWK D QDPH ³)LGR´ HVW HWF 7KLV KDSSHQV HY UHTX WKHQ DJH DW S NLQJ URFFROL D VFRSH LW ZLOO VWDUW ORR D 6WULQJ RU D 'XFN RU D % W DV \ VH LQDOO RULJ ZDV WKH ³)LGR´ DWWULEXWH

\RX DUH KHUH

Chapter 9. Custom tags are powerful Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher: O'Reilly Prepared for Stephen Goss, Safari ID: stephengoss@gmx.net Print Publication Date: 8/1/2004 User number: 747221 Copyright 2007, Safari Books Online, LLC. This PDF is exclusively for your use in accordance with the Safari Terms of Service. No part of it may be reproduced or transmitted in any form by any means without the prior written permission for reprints and excerpts from the publisher. Redistribution or other use that violates the fair use priviledge under U.S. copyright laws (see 17 USC107) or that otherwise violates the Safari Terms of Service is strictly prohibited.


Chapter 9. Custom tags are powerful

WKH F VHW! WDJ

=[QVO $K"[M\& _Q\P JMIV[ IVL 5IX[ 4HIS m AVOR OF C SET WITH ITS TWO VARIATIONSˆWITH AND WITHOUT A BODY WORKS FOR ONLY TWO THINGS BEAN PROPERTIES AND -AP VALUES 4HAT S IT 9OU CAN T USE IT TO ADD THINGS TO LISTS OR ARRAYS )T S SIMPLEˆYOU GIVE IT THE OBJECT A BEAN OR -AP THE PROPERTY KEY NAME AND THE VALUE

6HWWLQJ D WDUJHW SURSHUW\ RU YDOXH ZLWK F VHW!

lue bean, set the va If target is a ty ÒdogNameÓ. of the proper

:LWK 12 ERG\

F VHW WDUJHW ´ ^3HW0DS`´ SURSHUW\ ´GRJ1DPH´ YDOXH ´&ORYHU´ !

target must NOT be

null!!

If target is a Map, the value of a key namedset Ă’dogNam

eÓ.

:,7+ D ERG\

ÒidÓ name DonÕt put thibeute here ! of the attr

F VHW WDUJHW ´ ^SHUVRQ`´ SURSHUW\ ´QDPH´ ! ^IRR QDPH` The body can F VHW! be a

h for No slash... watcam. this on the ex

String or expr ession.

RX GRQ¡W OXDWH WR WKH 2%-(&7 < 7KH ´WDUJHW¾ PXVW HYD 0DS DWWULEXWH Q RU EHD WKH RI DPH W\SH LQ WKH 6WULQJ ´LG¾ Q VHHPV OLNH LW H ³WDUJHW´ DWWULEXWH LQ WKH WDJ U WFKD ,Q WKH F VHW ! WDJ WK H JR KXJ 7KLV LV D H ³YDU´ DWWULEXWH LQ WKH RWKH HQ WK (Y UW\ ! URSH VHW3 WKH MVS ULEXWH VKRXOG ZRUN MXVW OLNH ³LG´ LQ WKH QDPH RI WKH VFRSHG DWW HQWV SUHV DW UH DO WK OLWHU WULQJ YHUVLRQ RI F VHW! WDNHV D 6 D\ ZLWK ³WDUJHW´ H DO WKDW UHSUHVHQWV WKH QDP %87 LW GRHVQœW ZRUN WKLV Z R 127 W\SH LQ WKH 6WULQJ OLWHU RX G WH \ JHW´ DWWULEXWH ³WDU WKH 1R :LWK WKH ³WDUJHW´ DWWULEX HWF FRSH DV ERXQG WR WKH SDJH V RU D XQGHU ZKLFK WKH DWWULEXWH Z W PHDQV DQ (/ H[SUHVVLRQ WR WKH 5($/ 7+,1* 7KD MVS DWWULEXWH! \HW QHHGV D YDOXH WKDW UHVROYHV VHHQ HQœW KDY J ZH ! RU VRPHWKLQ VFULSWLQJ H[SUHVVLRQ

FKDSWHU

Chapter 9. Custom tags are powerful Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher: O'Reilly Prepared for Stephen Goss, Safari ID: stephengoss@gmx.net Print Publication Date: 8/1/2004 User number: 747221 Copyright 2007, Safari Books Online, LLC. This PDF is exclusively for your use in accordance with the Safari Terms of Service. No part of it may be reproduced or transmitted in any form by any means without the prior written permission for reprints and excerpts from the publisher. Redistribution or other use that violates the fair use priviledge under U.S. copyright laws (see 17 USC107) or that otherwise violates the Safari Terms of Service is strictly prohibited.


Chapter 9. Custom tags are powerful

XVLQJ -67/

3Ma XWQV\[ IVL OW\KPI[ _Q\P $K"[M\& 9ES C SET IS EASY TO USE BUT THERE ARE A FEW DEAL BREAKERS YOU HAVE TO REMEMBER

<RX FDQ QHYHU KDYH %27+ WKH ´YDUµ DQG ´WDUJHWµ DWWULEXWHV LQ D F VHW!

´6FRSHµ LV RSWLRQDO EXW LI \RX GRQ·W XVH LW WKH GHIDXOW LV SDJH VFRSH

,I WKH ´YDOXHµ LV QXOO WKH DWWULEXWH QDPHG E\ ´YDUµ ZLOO EH UHPRYHG

,I WKH DWWULEXWH QDPHG E\ ´YDUµ GRHV QRW H[LVW LW·OO EH FUHDWHG EXW RQO\ LI ´YDOXHµ LV QRW QXOO

,I WKH ´WDUJHWµ H[SUHVVLRQ LV QXOO WKH &RQWDLQHU WKURZV DQ H[FHSWLRQ

7KH ´WDUJHWµ LV IRU SXWWLQJ LQ DQ H[SUHVVLRQ WKDW UHVROYHV WR WKH 5HDO 2EMHFW ,I \RX SXW LQ D 6WULQJ OLWHUDO WKDW UHSUHVHQWV WKH ´LGµ QDPH RI WKH EHDQ RU 0DS LW ZRQ·W ZRUN ,Q RWKHU ZRUGV ´WDUJHWµ LV QRW IRU WKH DWWULEXWH QDPH RI WKH EHDQ RU 0DS³LW·V IRU WKH DFWXDO DWWULEXWH REMHFW

,I WKH ´WDUJHWµ H[SUHVVLRQ LV QRW D 0DS RU D EHDQ WKH &RQWDLQHU WKURZV DQ H[FHSWLRQ

,I WKH ´WDUJHWµ H[SUHVVLRQ LV D EHDQ EXW WKH EHDQ GRHV QRW KDYH D SURSHUW\ WKDW PDWFKHV ´SURSHUW\µ WKH &RQWDLQHU WKURZV DQ H[FHSWLRQ %XW EH FDUHIXO EHFDXVH WKH (/ H[SUHVVLRQ E\ LWVHOI ZLOO 127 FDXVH DQ H[FHSWLRQ LI WKH SURSHUW\ GRHVQ·W H[LVW 6R HYHQ WKRXJK ^IRR%HDQ QRW$3URSHUW\` ZRQ·W FDXVH DQ H[FHSWLRQ E\ LWVHOI LW MXVW UHWXUQV QXOO LI WKDW VDPH ´QRW$3URSHUW\µ LV WKH YDOXH RI D ´WDUJHWµ DWWULEXWH WKH &RQWDLQHU WKURZV DQ H[FHSWLRQ

WKHUH DUH QR

'XPE 4XHVWLRQV

4

7HY WOULD ) USE THE BODY VERSION INSTEAD OF THE NO BODY VERSION )T LOOKS LIKE THEY BOTH DO EXACTLY THE SAME THING

$

4HAT S BECAUSE THEY $/ DO THE SAME THING 4HE BODY VERSION IS JUST FOR CONVENIENCE WHEN YOU WANT MORE ROOM FOR THE VALUE )T MIGHT BE A LONG AND COMPLEX EXPRESSION FOR EXAMPLE AND PUTTING IT IN THE BODY MAKES IT EASIER TO READ

4

)F ) DON T SPECIFY A SCOPE DOES THAT MEAN IT WILL lND ATTRIBUTES THAT ARE /.,9 WITHIN PAGE SCOPE OR DOES IT DO A SEARCH BEGINNING WITH PAGE SCOPE

$

)F YOU DON T USE THE OPTIONAL hSCOPEv ATTRIBUTE IN THE TAG AND YOU RE USING hVARv OR hTARGETv THE #ONTAINER WILL SEARCH SCOPES IN THE ORDER IN WHICH YOU VE COME TO EXPECTˆPAGE THEN REQUEST THEN SESSION THEN APPLICATION CONTEXT )F YOU USE THE hVARv VERSION WITHOUT A SCOPE AND THE #ONTAINER CAN T FIND AN ATTRIBUTE OF THAT NAME IN ANY OF THE FOUR SCOPES THE #ONTAINER MAKES A NEW ONE IN PAGE SCOPE

4

7HY IS THE WORD hATTRIBUTEv SO OVERLOADED )T MEANS BOTH hTHE THINGS THAT GO INSIDE TAGSv AND hTHE THINGS THAT ARE BOUND TO OBJECTS IN ONE OF THE FOUR SCOPES v 3O YOU END UP WITH AN ATTRIBUTE OF A TAG WHOSE VALUE IS AN ATTRIBUTE OF THE PAGE AND

$

7E HEAR YOU "UT THAT S WHAT THEY RE CALLED /NCE AGAIN NOBODY ASKED 53 7E WOULD HAVE CALLED THE BOUND OBJECTS SOMETHING LIKE OH hBOUND OBJECTSv \RX DUH KHUH

Chapter 9. Custom tags are powerful Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher: O'Reilly Prepared for Stephen Goss, Safari ID: stephengoss@gmx.net Print Publication Date: 8/1/2004 User number: 747221 Copyright 2007, Safari Books Online, LLC. This PDF is exclusively for your use in accordance with the Safari Terms of Service. No part of it may be reproduced or transmitted in any form by any means without the prior written permission for reprints and excerpts from the publisher. Redistribution or other use that violates the fair use priviledge under U.S. copyright laws (see 17 USC107) or that otherwise violates the Safari Terms of Service is strictly prohibited.


Chapter 9. Custom tags are powerful

WKH F UHPRYH! WDJ

, FDQ¡W EHOLHYH \RX KDYH WR XVH F VHW! WR UHPRYH DQ DWWULEXWH 7KDW IHHOV ZURQJ

$K"ZMUW^M& R][\ UISM[ [MV[M 7E AGREE WITH $ICKˆUSING A SET TO REMOVE SOMETHING FEELS WRONG "UT REMEMBER SET DOES A REMOVE ONLY WHEN YOU PASS IN A NULL VALUE 4HE C REMOVE TAG IS INTUITIVE AND SIMPLE

# WDJOLE SUH¿ [ ´F´ XUL ´KWWS MDYD VXQ FRP MVS MVWO FRUH´ ! KWPO! ERG\!

The var attrib ute MUST be a St literal ! It canÕtring an expression!! be

F VHW YDU ´XVHU6WDWXV´ VFRSH ´UHTXHVW´ YDOXH ´%ULOOLDQW´ ! XVHU6WDWXV ^XVHU6WDWXV` EU!

F UHPRYH YDU ´XVHU6WDWXV´ VFRSH ´UHTXHVW´ ! XVHU6WDWXV LV QRZ ^XVHU6WDWXV` ERG\! KWPO!

The scope is tional, and alwaysÑpage op is the defaultlike scope.

KWWS ORFDOKRVW WHVW-63 7HVWHU GR

XVHU6WDWXV %ULOOLDQW XVHU6WDWXV LV QRZ

The value of us nothing prints erStatus was removed, so is used AFTERwhen the EL expression the remove.

FKDSWHU

Chapter 9. Custom tags are powerful Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher: O'Reilly Prepared for Stephen Goss, Safari ID: stephengoss@gmx.net Print Publication Date: 8/1/2004 User number: 747221 Copyright 2007, Safari Books Online, LLC. This PDF is exclusively for your use in accordance with the Safari Terms of Service. No part of it may be reproduced or transmitted in any form by any means without the prior written permission for reprints and excerpts from the publisher. Redistribution or other use that violates the fair use priviledge under U.S. copyright laws (see 17 USC107) or that otherwise violates the Safari Terms of Service is strictly prohibited.


Chapter 9. Custom tags are powerful

XVLQJ -67/

6KDUSHQ \RXU SHQFLO

7HVW \RXU 7DJ PHPRU\ ,I \RX·UH VWXG\LQJ IRU WKH H[DP GRQ·W VNLS WKLV RQH 7KH DQVZHUV DUH DW WKH HQG RI WKH FKDSWHU

)LOO LQ WKH QDPH RI WKH RSWLRQDO DWWULEXWH F IRU(DFK YDU ´PRYLH´ LWHPV ´ ^PRYLH/LVW`´ ^PRYLH` F IRU(DFK!

´IRR´ !

)LOO LQ WKH PLVVLQJ DWWULEXWH QDPH F LI ´ ^XVHU3UHI ¶VDIHW\¶`´ ! 0D\EH \RX VKRXOG MXVW ZDON F LI!

)LOO LQ WKH PLVVLQJ DWWULEXWH QDPH F VHW YDU ´XVHU/HYHO´ VFRSH ´VHVVLRQ´ ´IRR´ !

)LOO LQ WKH PLVVLQJ WDJ QDPHV WZR GLIIHUHQW WDJ W\SHV DQG WKH PLVVLQJ DWWULEXWH QDPH F FKRRVH! F ´ ^XVHU3UHI µSHUIRUPDQFH¶`´! 1RZ \RX FDQ VWRS HYHQ LI \RX HP!GR HP! GULYH LQVDQHO\ IDVW F ! F ! 2XU EUDNHV DUH WKH EHVW F ! F FKRRVH! \RX DUH KHUH

Chapter 9. Custom tags are powerful Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher: O'Reilly Prepared for Stephen Goss, Safari ID: stephengoss@gmx.net Print Publication Date: 8/1/2004 User number: 747221 Copyright 2007, Safari Books Online, LLC. This PDF is exclusively for your use in accordance with the Safari Terms of Service. No part of it may be reproduced or transmitted in any form by any means without the prior written permission for reprints and excerpts from the publisher. Redistribution or other use that violates the fair use priviledge under U.S. copyright laws (see 17 USC107) or that otherwise violates the Safari Terms of Service is strictly prohibited.


Chapter 9. Custom tags are powerful

WKH F LPSRUW! WDJ

?Q\P $K"QUXWZ\& \PMZM IZM VW_ <0:-- _Ia[ \W QVKT]LM KWV\MV\ 3O FAR WE VE USED TWO DIFFERENT WAYS TO ADD CONTENT FROM ANOTHER RESOURCE INTO A *30 "UT THERE S YET ANOTHER WAY USING *34,

7KH LQFOXGH GLUHFWLYH # LQFOXGH ¿ OH ´+HDGHU KWPO´ ! 3TATIC ADDS THE CONTENT FROM THE VALUE OF THE l LE ATTRIBUTE TO THE CURRENT PAGE AT TRANSLATION TIME

7KH MVS LQFOXGH! VWDQGDUG DFWLRQ MVS LQFOXGH SDJH ´+HDGHU MVS´ ! $YNAMIC ADDS THE CONTENT FROM THE VALUE OF THE PAGE ATTRIBUTE TO THE CURRENT PAGE AT REQUEST TIME

7KH F LPSRUW! -67/ WDJ

includes, other two Unlike theport> url can be from the <c:im he web Container! outside t

F LPSRUW XUO ´KWWS ZZZ ZLFNHGO\VPDUW FRP VN\OHU KRUVH KWPO´ ! $YNAMIC ADDS THE CONTENT FROM THE VALUE OF THE 52, ATTRIBUTE TO THE CURRENT PAGE AT REQUEST TIME )T WORKS A LOT LIKE JSP INCLUDE BUT IT S MORE POWERFUL AND m EXIBLE

Do NOT confuse <c:import> (a type of include) with the ÒimportÓ attribute of the page directive (a way to put a Java import statement in the generated servlet).

W DWWULEXWH QDPHV 7KH\ DOO KDYH GLIIHUHQ FOXGH¾ YV ´LPSRUW¾

U ´LQ W IR K RX DWF $QG Z U -63 XVHV D DQRWKHU UHVRXUFH LQWR \RX V IRU LQFOXGLQJ FRQWHQW IURP QFOXGH! XVHV SDJH DQG MVS L KH (DFK RI WKH WKUHH PHFKDQLVP OH W HV Âż H XV WH 7KH LQFOXGH GLUHFWLY W \RX GR KDYH GLIIHUHQW ZRUG IRU WKH DWWULEX KHQ \RX WKLQN DERXW LW EX 0/ HV XUO 7KLV PDNHV VHQVH Z LF OD\RXW WHPSODWHV OLNH +7 VWDW WKH -67/ F LPSRUW! WDJ XV G IRU HQGH \ LQW LQDOO GLUHFWLYH ZDV RULJ PRUH IRU G\QDPLF FRQWHQW WR PHPRUL]H DOO WKUHH 7KH QGHG LQWH ZDV XGH! LQFO OH´ 7KH MVS IRU F LPSRUW! KHDGHUV ,Q RWKHU ZRUGV D ³¿ R UHĂ€ HFW WKDW 7KH DWWULEXWH QDPHG WKH DWWULEXWH ÂłSDJH´ W ÂśW JR RXWVLGH FRPLQJ IURP -63V VR WKH\ U WKH Âż UVW WZR ÂłLQFOXGHV´ FDQ PEH HPH / 5 D 85 H LW² X JLY LV QDPHG IRU H[DFWO\ ZKDW \R F LPSRUW! FDQ WKH FXUUHQW &RQWDLQHU EXW

FKDSWHU

Chapter 9. Custom tags are powerful Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher: O'Reilly Prepared for Stephen Goss, Safari ID: stephengoss@gmx.net Print Publication Date: 8/1/2004 User number: 747221 Copyright 2007, Safari Books Online, LLC. This PDF is exclusively for your use in accordance with the Safari Terms of Service. No part of it may be reproduced or transmitted in any form by any means without the prior written permission for reprints and excerpts from the publisher. Redistribution or other use that violates the fair use priviledge under U.S. copyright laws (see 17 USC107) or that otherwise violates the Safari Terms of Service is strictly prohibited.


Chapter 9. Custom tags are powerful

XVLQJ -67/

$K"QUXWZ\& KIV ZMIKP 7=<;1,- \PM _MJ IXX 7ITH JSP INCLUDE OR THE INCLUDE DIRECTIVE YOU CAN INCLUDE ONLY PAGES THAT ARE PART OF THE CURRENT WEB APP "UT NOW WITH C IMPORT YOU HAVE THE OPTION TO PULL IN CONTENT FROM OUTSIDE THE #ONTAINER 4HIS SIMPLE EXAMPLE SHOWS A *30 ON 3ERVER ! IMPORTING THE CONTENTS OF A 52, ON 3ERVER " !T REQUEST TIME THE (4-, CHUNK IN THE IMPORTED l LE IS ADDED TO THE *30 4HE IMPORTED CHUNK USES A REFERENCE TO AN IMAGE THAT IS ALSO ON 3ERVER " 6HUYHU $ WKH -63 GRLQJ WKH LPSRUW

$

7KH -63 # WDJOLE SUH¿ [ ´F´ XUL ´KWWS MDYD VXQ FRP MVS MVWO FRUH´ ! KWPO! ERG\! F LPSRUW XUO ´KWWS ZZZ ZLFNHGO\VPDUW FRP VN\OHU KRUVH KWPO´ ! EU! 7KLV LV P\ KRUVH ERG\! KWPO!

6HUYHU % WKH LPSRUWHG FRQWHQW

(DonÕt forget: as with other include mechanisms, thea thing you import should be an HTML fragment and NOT tags.) complete page with opening and closing <html><body>

7KH LPSRUWHG À OH

%

LPJ VUF ´KWWS ZZZ ZLFNHGO\VPDUW FRP VN\OHU KRUVH JLI´!

7KH UHVSRQVH KWWS ORFDOKRVW WHVW-63 7HVWHU GR

ming The horse is co ely from a complet rver different web sethat an the page xt. th 7KLV LV P\ KRUVH contains the te

Òhorse.htmlÓ and Òhorse.gifÓ are both on Server B, a completely different web server from the one with the JSP.

\RX DUH KHUH

Chapter 9. Custom tags are powerful Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher: O'Reilly Prepared for Stephen Goss, Safari ID: stephengoss@gmx.net Print Publication Date: 8/1/2004 User number: 747221 Copyright 2007, Safari Books Online, LLC. This PDF is exclusively for your use in accordance with the Safari Terms of Service. No part of it may be reproduced or transmitted in any form by any means without the prior written permission for reprints and excerpts from the publisher. Redistribution or other use that violates the fair use priviledge under U.S. copyright laws (see 17 USC107) or that otherwise violates the Safari Terms of Service is strictly prohibited.


Chapter 9. Custom tags are powerful

WKH F LPSRUW! WDJ

+][\WUQbQVO \PM \PQVO aW] QVKT]LM 2EMEMBER IN THE PREVIOUS CHAPTER WHEN WE DID A JSP INCLUDE TO PUT IN THE LAYOUT HEADER A GRAPHIC WITH SOME TEXT BUT WE WANTED TO CUSTOMIZE THE SUBTITLE USED IN THE HEADER 7E USED JSP PARAM TO MAKE THAT HAPPEN

7KH -63 ZLWK WKH MVS LQFOXGH! KWPO! ERG\! MVS LQFOXGH SDJH ´+HDGHU MVS´! MVS SDUDP QDPH ´VXE7LWOH´ YDOXH ´:H WDNH WKH VWLQJ RXW RI 62$3 ´ ! MVS LQFOXGH! EU! HP!:HOFRPH WR RXU :HE 6HUYLFHV 6XSSRUW *URXS HP! EU! EU! &RQWDFW XV DW ^LQLW3DUDP PDLQ(PDLO` ( ERG\! KWPO

7KH LQFOXGHG À OH ´+HDGHU MVSµ

LPJ VUF ´LPDJHV :HE 6HUYLFHV MSJ´ ! EU! YL HP! VWURQJ! ^SDUDP VXE7LWOH` VWURQJ! HP! EU!

KWWS ORFDOKRVW WHVWV &RQWDFW MVS

le ÒWe We made the subtit ilable to take the sting...Ó avasetting it the header JSP by ameter. as a new request par

:H WDNH WKH VWLQJ RXW RI 62$3 :HOFRPH WR RXU :HE 6HUYLFHV 6XSSRUW *URXS

&RQWDFW XV DW OLNHZHFDUH#ZLFNHGO\VPDUW FRP

FKDSWHU

Chapter 9. Custom tags are powerful Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher: O'Reilly Prepared for Stephen Goss, Safari ID: stephengoss@gmx.net Print Publication Date: 8/1/2004 User number: 747221 Copyright 2007, Safari Books Online, LLC. This PDF is exclusively for your use in accordance with the Safari Terms of Service. No part of it may be reproduced or transmitted in any form by any means without the prior written permission for reprints and excerpts from the publisher. Redistribution or other use that violates the fair use priviledge under U.S. copyright laws (see 17 USC107) or that otherwise violates the Safari Terms of Service is strictly prohibited.


Chapter 9. Custom tags are powerful

XVLQJ -67/

,WQVO \PM [IUM \PQVO _Q\P $K"XIZIU& (ERE WE ACCOMPLISH THE SAME THING WE DID ON THE PREVIOUS PAGE BUT USING A COMBINATION OF C IMPORT AND C PARAM 9OU LL SEE THAT THE STRUCTURE IS VIRTUALLY IDENTICAL TO THE ONE WE USED WITH STANDARD ACTIONS

7KH -63 ZLWK WKH MVS LQFOXGH! # WDJOLE SUH¿ [ ´F´ XUL ´KWWS MDYD VXQ FRP MVS MVWO FRUH´ ! KWPO! ERG\! the F LPSRUW XUO ´+HDGHU MVS´ !

W No slash, because NO tag has a body...

F SDUDP QDPH ´VXE7LWOH´ YDOXH ´:H WDNH WKH VWLQJ RXW RI 62$3 ´ ! F LPSRUW! EU! HP!:HOFRPH WR RXU :HE 6HUYLFHV 6XSSRUW *URXS HP! EU! EU! FH &RQWDFW XV DW ^LQLW3DUDP PDLQ(PDLO` LQ ERG\! KWPO!

7KH LQFOXGHG Ă€ OH ´+HDGHU MVSÂľ

LPJ VUF ´LPDJHV :HE 6HUYLFHV MSJ´ ! EU! F HP! VWURQJ! ^SDUDP VXE7LWOH` VWURQJ! HP! EU!

ange at all. It This page doesnÕtWchthe parameter got HO re doesnÕt ca s there. there, as long as itÕ

\RX DUH KHUH

Chapter 9. Custom tags are powerful Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher: O'Reilly Prepared for Stephen Goss, Safari ID: stephengoss@gmx.net Print Publication Date: 8/1/2004 User number: 747221 Copyright 2007, Safari Books Online, LLC. This PDF is exclusively for your use in accordance with the Safari Terms of Service. No part of it may be reproduced or transmitted in any form by any means without the prior written permission for reprints and excerpts from the publisher. Redistribution or other use that violates the fair use priviledge under U.S. copyright laws (see 17 USC107) or that otherwise violates the Safari Terms of Service is strictly prohibited.


Chapter 9. Custom tags are powerful

85/ UHZULWLQJ LQ D -63 6RUU\ WR FKDQJH WKH VXEMHFW KHUH EXW , MXVW QRWLFHG D +8*( SUREOHP ZLWK -63V +RZ FDQ \RX JXDUDQWHH VHVVLRQ WUDFNLQJ IURP D -63 ZLWKRXW XVLQJ VFULSWLQJ"

6HVVLRQ WUDFNLQJ KDSSHQV DXWRPDWLFDOO\ ZLWK -63V XQOHVV \RX H[SOLFLWO\ GLVDEOH LW ZLWK D SDJH GLUHFWLYH WKDW KDV D VHVVLRQ DWWULEXWH WKDW VD\V VHVVLRQ µIDOVHµ

+H PLVVHG WKH SRLQW , VDLG ´JXDUDQWHHµ 0\ UHDO TXHVWLRQ LV LI WKH FOLHQW GRHVQ·W VXSSRUW FRRNLHV KRZ FDQ , JHW 85/ UHZULWLQJ WR KDSSHQ" +RZ FDQ , JHW WKH VHVVLRQ ,' DGGHG WR WKH 85/V LQ P\ -63"

$KKK KH REYLRXVO\ GRHVQ·W NQRZ DERXW WKH F XUO! WDJ ,W GRHV 85/ UHZULWLQJ DXWRPDWLFDOO\

FKDSWHU

Chapter 9. Custom tags are powerful Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher: O'Reilly Prepared for Stephen Goss, Safari ID: stephengoss@gmx.net Print Publication Date: 8/1/2004 User number: 747221 Copyright 2007, Safari Books Online, LLC. This PDF is exclusively for your use in accordance with the Safari Terms of Service. No part of it may be reproduced or transmitted in any form by any means without the prior written permission for reprints and excerpts from the publisher. Redistribution or other use that violates the fair use priviledge under U.S. copyright laws (see 17 USC107) or that otherwise violates the Safari Terms of Service is strictly prohibited.


Chapter 9. Custom tags are powerful

XVLQJ -67/

$K"]ZT& NWZ ITT aW]Z PaXMZTQVS VMML[ 2EMEMBER WAY BACK IN OUR OLD SERVLET DAYS WHEN WE WANTED TO USE A SESSION &IRST WE HAD TO GET THE SESSION EITHER THE EXISTING ONE OR A NEW ONE !T THAT POINT THE #ONTAINER KNOWS THAT IT S SUPPOSED TO ASSOCIATE THE CLIENT FROM THIS REQUEST WITH A PARTICULAR SESSION )$ 4HE #ONTAINER WANTS TO USE A COOKIEˆIT WANTS TO INCLUDE A UNIQUE COOKIE WITH THE RESPONSE AND THEN THE CLIENT WILL SEND THAT COOKIE BACK WITH EACH SUBSEQUENT REQUEST %XCEPT ONE PROBLEM THE CLIENT MIGHT HAVE A BROWSER WITH COOKIES DISABLED 4HEN WHAT 4HE #ONTAINER WILL AUTOMATICALLY FALL BACK TO 52, REWRITING IF IT DOESN T GET A COOKIE FROM THE CLIENT "UT WITH SERVLETS YOU 34),, HAVE TO ENCODE YOUR 52,S )N OTHER WORDS YOU STILL HAVE TO TELL THE #ONTAINER TO hAPPEND THE JSESSIONID TO THE END OF THIS PARTICULAR 52, v FOR EACH 52, WHERE IT MATTERS 7ELL YOU CAN DO THE SAME THING FROM A *30 USING THE C URL TAG 85/ UHZULWLQJ IURP D VHUYOHW SXEOLF YRLG GR*HW +WWS6HUYOHW5HTXHVW UHTXHVW +WWS6HUYOHW5HVSRQVH UHVSRQVH WKURZV ,2([FHSWLRQ 6HUYOHW([FHSWLRQ ^ UHVSRQVH VHW&RQWHQW7\SH ÂłWH[W KWPO´ 3ULQW:ULWHU RXW UHVSRQVH JHW:ULWHU +WWS6HVVLRQ VHVVLRQ UHTXHVW JHW6HVVLRQ RXW SULQWOQ Âł KWPO! ERG\!´ RXW SULQWOQ Âł D KUHI ?´´ UHVSRQVH HQFRGH85/ Âł %HHU7HVW GR´ Âł?´!FOLFN D!´ RXW SULQWOQ Âł ERG\! KWPO!´ ` to this URL.

Add the extra session ID info

85/ UHZULWLQJ IURP D -63 # WDJOLE SUH¿[ ´F´ XUL ´KWWS MDYD VXQ FRP MVS MVWO FRUH´ ! KWPO! ERG\! 7KLV LV D K\SHUOLQN ZLWK 85/ UHZULWLQJ HQDEOHG

D KUHI ´ F XUO YDOXH œ LQSXW&RPPHQWV MVSœ !´!&OLFN KHUH D!

ERG\! KWPO!

to the end of the This adds the jsessionid coo kies are disabled). (if L UR tive rela ÒvalueÓ

\RX DUH KHUH

Chapter 9. Custom tags are powerful Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher: O'Reilly Prepared for Stephen Goss, Safari ID: stephengoss@gmx.net Print Publication Date: 8/1/2004 User number: 747221 Copyright 2007, Safari Books Online, LLC. This PDF is exclusively for your use in accordance with the Safari Terms of Service. No part of it may be reproduced or transmitted in any form by any means without the prior written permission for reprints and excerpts from the publisher. Redistribution or other use that violates the fair use priviledge under U.S. copyright laws (see 17 USC107) or that otherwise violates the Safari Terms of Service is strictly prohibited.


Chapter 9. Custom tags are powerful

WKH F 85/! WDJ

?PI\ QN \PM =:4 VMML[ MVKWLQVO' 2EMEMBER THAT IN AN (440 '%4 REQUEST THE PARAMETERS ARE APPENDED TO THE 52, AS A QUERY STRING &OR EXAMPLE IF A FORM ON AN (4-, PAGE HAS TWO TEXT l ELDSˆl RST NAME AND LAST NAMEˆTHE REQUEST 52, WILL STICK THE PARAMETER NAMES AND VALUES ON TO THE END OF THE REQUEST 52, "UT AN (440 REQUEST WON T WORK CORRECTLY IF IT CONTAINS UNSAFE CHARACTERS ALTHOUGH MOST MODERN BROWSERS WILL TRY TO COMPENSATE FOR THIS )F YOU RE A WEB DEVELOPER THIS IS OLD NEWS BUT IF YOU RE NEW TO WEB DEVELOPMENT YOU NEED TO KNOW THAT 52,S OFTEN NEED TO BE ENCODED 52, ENCODING MEANS REPLACING THE UNSAFE RESERVED CHARACTERS WITH OTHER CHARACTERS AND THEN THE WHOLE THING IS DECODED AGAIN ON THE SERVER SIDE &OR EXAMPLE SPACES AREN T ALLOWED IN A 52, BUT YOU CAN SUBSTITUTE A PLUS SIGN h v FOR THE SPACE 4HE PROBLEM IS C URL DOES ./4 AUTOMATICALLY ENCODE YOUR 52,S 8VLQJ F XUO! ZLWK D TXHU\ VWULQJ 2EMEMBER THE C URL TAG DOES 52, REWRITING BUT NOT 52, ENCODING F VHW YDU ´ODVW´ YDOXH ´+LGGHQ &XUVRU´ ! F VHW YDU ´¿ UVW´ YDOXH ´&URXFKLQJ 3L[HOV´ !

ÒvarÓ Use the optionalyou want attribute whenvalue later... access to this

F XUO YDOXH ´ LQSXW&RPPHQWV MVS"¿ UVW ^¿ UVW` ODVW ^ODVW`´ YDU ´LQSXW85/´ ! 7KH 85/ XVLQJ SDUDPV LV ^LQSXW85/` EU!

KWWS ORFDOKRVW WHVWV ULVN\ MVS

7KH 85/ XVLQJ SDUDPV LV P\$SS LQSXW&RPPHQWV MVS"Ă€ UVW &URXFKLQJ 3L[HOV ODVW +LGGHQ &XUVRU

pos Uh-oh... youÕre not sup L! UR a in spaces

parameters have Yikes! Query string ces , for example, spa ... ed od to be enc a plus Ă’+Ă“ sign. h wit ed lac rep must be

ed to have

8VLQJ F SDUDP! LQ WKH ERG\ RI F XUO! 4HIS SOLVES OUR PROBLEM .OW WE GET BOTH 52, REWRITING AND 52, ENCODING

no slash

F XUO YDOXH ´ LQSXW&RPPHQWV MVS´ YDU ´LQSXW85/´ ! F SDUDP QDPH ´¿ UVW1DPH´ YDOXH ´ ^¿ UVW`´ !

F SDUDP QDPH ´ODVW1DPH´ YDOXH ´ ^ODVW`´ ! F XUO!

.OW THE 52, LOOKS LIKE THIS

ause <c:param> Now weÕre safe, becenc oding! e th takes care of

P\$SS LQSXW&RPPHQWV MVS"Âż UVW1DPH &URXFKLQJ 3L[HOV ODVW1DPH +LGGHQ &XUVRU

FKDSWHU

Chapter 9. Custom tags are powerful Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher: O'Reilly Prepared for Stephen Goss, Safari ID: stephengoss@gmx.net Print Publication Date: 8/1/2004 User number: 747221 Copyright 2007, Safari Books Online, LLC. This PDF is exclusively for your use in accordance with the Safari Terms of Service. No part of it may be reproduced or transmitted in any form by any means without the prior written permission for reprints and excerpts from the publisher. Redistribution or other use that violates the fair use priviledge under U.S. copyright laws (see 17 USC107) or that otherwise violates the Safari Terms of Service is strictly prohibited.


Chapter 9. Custom tags are powerful

XVLQJ -67/

,路P LQWHUUXSWLQJ WKLV -67/ WDON IRU D IHZ PRPHQWV WR WDON DERXW \RXU HUURU KDQGOLQJ :H路UH DERXW WR GR VRPHWKLQJ WKDW PLJKW FDXVH DQ H[FHSWLRQ

AW] LW 67< _IV\ aW]Z KTQMV\[ \W [MM \PQ["

\RX DUH KHUH

Chapter 9. Custom tags are powerful Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher: O'Reilly Prepared for Stephen Goss, Safari ID: stephengoss@gmx.net Print Publication Date: 8/1/2004 User number: 747221 Copyright 2007, Safari Books Online, LLC. This PDF is exclusively for your use in accordance with the Safari Terms of Service. No part of it may be reproduced or transmitted in any form by any means without the prior written permission for reprints and excerpts from the publisher. Redistribution or other use that violates the fair use priviledge under U.S. copyright laws (see 17 USC107) or that otherwise violates the Safari Terms of Service is strictly prohibited.


Chapter 9. Custom tags are powerful

HUURU SDJHV

5ISM aW]Z W_V MZZWZ XIOM[ 4HE GUY SURl NG YOUR SITE DOESN T WANT TO SEE YOUR STACK TRACE !ND HE S NOT TOO THRILLED TO GET A STANDARD h .OT &OUNDv EITHER 9OU CAN T PREVENT ALL ERRORS OF COURSE BUT YOU CAN AT LEAST GIVE THE USER A FRIENDLIER AND MORE ATTRACTIVE ERROR RESPONSE PAGE 9OU CAN DESIGN A CUSTOM PAGE TO HANDLE ERRORS THEN USE THE PAGE DIRECTIVE TO CONl GURE IT 7KH GHVLJQDWHG (5525 SDJH ´HUURU3DJH MVS¾

# SDJH LV(UURU3DJH ´WUXH´ !

IS Container, Ă’Yes, this ConĂžrms for the gna e.Ă“ pag or err d te an ofĂžcially-desi

KWPO! ERG\! VWURQJ!%XPPHU VWURQJ! LPJ VUF ´LPDJHV EXPPHU*X\ MSJ´! ERG\! KWPO!

7KH %$' SDJH WKDW WKURZV DQ H[FHSWLRQ ´EDG3DJH MVS¾

# SDJH HUURU3DJH ´HUURU3DJH MVS´ ! KWPO! ERG\! $ERXW WR EH EDG LQW [ ! ERG\! KWPO!

Tells the Contain goes wrong here, er, ÒIf something forward the request to errorP age.jspÓ.

:KDW KDSSHQV ZKHQ \RX UHTXHVW ´EDG3DJH MVS¾ KWWS ORFDOKRVW WHVWV EDG3DJH MVS

%XPPHU

The REQUEST was for t page ÒbadPage.jspÓ, but tha the threw an exception, som RESPONSE came fro ÒerrorPage.jspÓ.

FKDSWHU

Chapter 9. Custom tags are powerful Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher: O'Reilly Prepared for Stephen Goss, Safari ID: stephengoss@gmx.net Print Publication Date: 8/1/2004 User number: 747221 Copyright 2007, Safari Books Online, LLC. This PDF is exclusively for your use in accordance with the Safari Terms of Service. No part of it may be reproduced or transmitted in any form by any means without the prior written permission for reprints and excerpts from the publisher. Redistribution or other use that violates the fair use priviledge under U.S. copyright laws (see 17 USC107) or that otherwise violates the Safari Terms of Service is strictly prohibited.


Chapter 9. Custom tags are powerful

XVLQJ -67/

,W ZLOO WDNH PH )25(9(5 WR SXW SDJH GLUHFWLYHV LQ DOO P\ -63V WR VSHFLI\ WKH HUURU SDJH WR XVH $QG ZKDW LI , ZDQW D GLIIHUHQW HUURU SDJH GHSHQGLQJ RQ WKH HUURU" ,I RQO\ WKHUH ZHUH D ZD\ WR FRQÀ JXUH HUURU SDJHV IRU WKH ZKROH ZHE DSS

;PM LWM[V¼\ SVW_ IJW]\ \PM $MZZWZ XIOM& ,, \IO 9OU CAN DECLARE ERROR PAGES IN THE $$ FOR THE ENTIRE WEB APP AND YOU CAN EVEN CONl GURE DIFFERENT ERROR PAGES FOR DIFFERENT EXCEPTION TYPES OR (440 ERROR CODE TYPES ETC 4HE #ONTAINER USES ERROR PAGE CONl GURATION IN THE $$ AS THE DEFAULT BUT IF A *30 HAS AN EXPLICIT ERROR0AGE PAGE DIRECTIVE THE #ONTAINER USES THE DIRECTIVE

\RX DUH KHUH

Chapter 9. Custom tags are powerful Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher: O'Reilly Prepared for Stephen Goss, Safari ID: stephengoss@gmx.net Print Publication Date: 8/1/2004 User number: 747221 Copyright 2007, Safari Books Online, LLC. This PDF is exclusively for your use in accordance with the Safari Terms of Service. No part of it may be reproduced or transmitted in any form by any means without the prior written permission for reprints and excerpts from the publisher. Redistribution or other use that violates the fair use priviledge under U.S. copyright laws (see 17 USC107) or that otherwise violates the Safari Terms of Service is strictly prohibited.


Chapter 9. Custom tags are powerful

HUURU SDJHV LQ WKH ''

+WVNQO]ZQVO MZZWZ XIOM[ QV \PM ,, 9OU CAN DECLARE ERROR PAGES IN THE $$ BASED ON EITHER THE EXCEPTION TYPE OR THE (440 STATUS ERROR CODE NUMBER 4HAT WAY YOU CAN SHOW THE CLIENT DIFFERENT ERROR PAGES SPECIlC TO THE TYPE OF THE PROBLEM THAT GENERATED THE ERROR

'HFODULQJ D FDWFK DOO HUURU SDJH 4HIS APPLIES TO EVERYTHING IN YOUR WEB APPˆNOT JUST *30S 9OU CAN OVERRIDE IT IN INDIVIDUAL *30S BY ADDING A PAGE DIRECTIVE WITH AN ERROR0AGE ATTRIBUTE HUURU SDJH! H[FHSWLRQ W\SH!MDYD ODQJ 7KURZDEOH H[FHSWLRQ W\SH! ORFDWLRQ! HUURU3DJH MVS ORFDWLRQ! HUURU SDJH!

'HFODULQJ DQ HUURU SDJH IRU D PRUH H[SOLFLW H[FHSWLRQ 4HIS CONlGURES AN ERROR PAGE THAT S CALLED ONLY WHEN THERE S AN !RITHMETIC%XCEPTION )F YOU HAVE BOTH THIS DECLARATION AND THE CATCH ALL ABOVE ANY EXCEPTION OTHER THAN !RITHMETIC%XCEPTION WILL STILL END UP AT THE hERROR0AGE JSPv HUURU SDJH! H[FHSWLRQ W\SH!MDYD ODQJ $ULWKPHWLF([FHSWLRQ H[FHSWLRQ W\SH! ORFDWLRQ! DULWKPHWLF(UURU MVS ORFDWLRQ! HUURU SDJH!

'HFODULQJ DQ HUURU SDJH EDVHG RQ DQ +773 VWDWXV FRGH 4HIS CONlGURES AN ERROR PAGE THAT S CALLED ONLY WHEN THE STATUS CODE FOR THE RESPONSE IS h v lLE NOT FOUND HUURU SDJH! HUURU FRGH! HUURU FRGH! ORFDWLRQ! QRW)RXQG(UURU MVS ORFDWLRQ! HUURU SDJH!

root/context, which relative to the web-appreg ardless of whether The <location> MUST be e tru is is (Th h a slash. -type>.) tion means it MUST start wit cep <ex or de> ror-co the error page is based on <er

FKDSWHU

Chapter 9. Custom tags are powerful Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher: O'Reilly Prepared for Stephen Goss, Safari ID: stephengoss@gmx.net Print Publication Date: 8/1/2004 User number: 747221 Copyright 2007, Safari Books Online, LLC. This PDF is exclusively for your use in accordance with the Safari Terms of Service. No part of it may be reproduced or transmitted in any form by any means without the prior written permission for reprints and excerpts from the publisher. Redistribution or other use that violates the fair use priviledge under U.S. copyright laws (see 17 USC107) or that otherwise violates the Safari Terms of Service is strictly prohibited.


Chapter 9. Custom tags are powerful

XVLQJ -67/

-ZZWZ XIOM[ OM\ IV M`\ZI WJRMK\" M`KMX\QWV !N ERROR PAGE IS ESSENTIALLY THE *30 THAT HANDLES THE EXCEPTION SO THE #ONTAINER GIVES THE PAGE AN EXTRA OBJECT FOR THE EXCEPTION 9OU PROBABLY WON T WANT TO SHOW THE EXCEPTION TO THE USER BUT YOU VE GOT IT )N A SCRIPTLET YOU CAN USE THE IMPLICIT OBJECT EXCEPTION AND FROM A *30 YOU CAN USE THE %, IMPLICIT OBJECT [PAGE#ONTEXT EXCEPTION] 4HE OBJECT IS TYPE JAVA LANG 4HROWABLE SO IN A SCRIPT YOU CAN CALL METHODS AND WITH %, YOU CAN ACCESS THE STACK4RACE AND MESSAGE PROPERTIES Note:

the exception implicit object is available ONLY to error pages with an explicitly-deĂžned page directive:

$ PRUH H[SOLFLW (5525 SDJH ´HUURU3DJH MVS¾

# SDJH LV(UURU3DJH ´WUXH´ ! KWPO! ERG\! VWURQJ!%XPPHU VWURQJ! EU!

<%@ page isErrorPage=ÓtrueÓ %> in In other words, conÞguring an error pageainer the DD is not enough to make the Cont object! give that page the implicit exception

<RX FDXVHG D ^SDJH&RQWH[W H[FHSWLRQ` RQ WKH VHUYHU EU! LPJ VUF ´LPDJHV EXPPHU*X\ MSJ´! ERG\! KWPO!

:KDW KDSSHQV ZKHQ \RX UHTXHVW ´EDG3DJH MVS¾ KWWS ORFDOKRVW WHVWV EDG3DJH MVS

%XPPHU <RX FDXVHG D MDYD ODQJ $ULWKPHWLF([FHSWLRQ E\ ]HUR RQ WKH VHUYHU

more This time, you get bly details. You proba the wonÕt show this tothis so user...we just did you could see it.

\RX DUH KHUH

Chapter 9. Custom tags are powerful Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher: O'Reilly Prepared for Stephen Goss, Safari ID: stephengoss@gmx.net Print Publication Date: 8/1/2004 User number: 747221 Copyright 2007, Safari Books Online, LLC. This PDF is exclusively for your use in accordance with the Safari Terms of Service. No part of it may be reproduced or transmitted in any form by any means without the prior written permission for reprints and excerpts from the publisher. Redistribution or other use that violates the fair use priviledge under U.S. copyright laws (see 17 USC107) or that otherwise violates the Safari Terms of Service is strictly prohibited.


Chapter 9. Custom tags are powerful

WKH F FDWFK! WDJ

:KDW LI , WKLQN WKHUH·V DQ H[FHSWLRQ , PLJKW EH DEOH WR UHFRYHU IURP LQ D -63" :KDW LI WKHUH DUH VRPH HUURUV , ZDQW WR FDWFK P\VHOI"

<PM $K"KI\KP& \IO 4QSM \Za KI\KP [WZ\ WN )F YOU HAVE A PAGE THAT INVOKES A RISKY TAG BUT YOU THINK YOU CAN RECOVER THERE S A SOLUTION 9OU CAN DO A KIND OF TRY CATCH USING THE C CATCH TAG TO WRAP THE RISKY TAG OR EXPRESSION "ECAUSE IF YOU DON T AND AN EXCEPTION IS THROWN YOUR DEFAULT ERROR HANDLING WILL KICK IN AND THE USER WILL GET THE ERROR PAGE DECLARED IN THE $$ 4HE PART THAT MIGHT FEEL A LITTLE STRANGE IS THAT THE C CATCH SERVES AS BOTH THE TRY AND THE CATCHˆTHERE S NO SEPARATE TRY TAG 9OU WRAP THE RISKY %, OR TAG CALLS OR WHATEVER IN THE BODY OF A C CATCH AND THE EXCEPTION IS CAUGHT RIGHT THERE "UT YOU CAN T ASSUME IT S EXACTLY LIKE A CATCH BLOCK EITHER BECAUSE ONCE THE EXCEPTION OCCURS CONTROL JUMPS TO THE END OF THE C CATCH TAG BODY MORE ON THAT IN A MINUTE # WDJOLE SUH¿ [ ´F´ XUL ´KWWS MDYD VXQ FRP MVS MVWO FRUH´ ! # SDJH HUURU3DJH ´HUURU3DJH MVS´ ! KWPO! ERG\! $ERXW WR GR D ULVN\ WKLQJ EU!

F FDWFK! LQW [ !

This scriptlet will DEFINITELY cause an exception... but we caught it instead of triggering the error page.

F FDWFK! ,I \RX VHH WKLV ZH VXUYLYHG ERG\! KWPO!

If this prints out, then we KNOW we made it past the exception (which in this example, means we successfully caught the exception).

KWWS ORFDOKRVW WHVWV ULVN\ MVS

$ERXW WR GR D ULVN\ WKLQJ ,I \RX VHH WKLV ZH VXUYLYHG

the catch must have worked...

FKDSWHU

Chapter 9. Custom tags are powerful Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher: O'Reilly Prepared for Stephen Goss, Safari ID: stephengoss@gmx.net Print Publication Date: 8/1/2004 User number: 747221 Copyright 2007, Safari Books Online, LLC. This PDF is exclusively for your use in accordance with the Safari Terms of Service. No part of it may be reproduced or transmitted in any form by any means without the prior written permission for reprints and excerpts from the publisher. Redistribution or other use that violates the fair use priviledge under U.S. copyright laws (see 17 USC107) or that otherwise violates the Safari Terms of Service is strictly prohibited.


Chapter 9. Custom tags are powerful

XVLQJ -67/

%XW KRZ GR , JHW DFFHVV WR WKH ([FHSWLRQ REMHFW" 7KH RQH WKDW ZDV DFWXDOO\ WKURZQ" 6LQFH WKLV LVQ¡W DQ DFWXDO HUURU SDJH WKH LPSOLFLW H[FHSWLRQ REMHFW GRHVQ¡W ZRUN KHUH

AW] KIV UISM \PM M`KMX\QWV IV I\\ZQJ]\M )N A REAL *AVA TRY CATCH THE CATCH ARGUMENT IS THE EXCEPTION OBJECT "UT WITH WEB APP ERROR HANDLING REMEMBER ONLY OFl CIALLY DESIGNATED ERROR PAGES GET THE EXCEPTION OBJECT 4O ANY OTHER PAGE THE EXCEPTION JUST ISN T THERE 3O THIS DOES NOT WORK F FDWFK! ,QVLGH WKH FDWFK LQW [ ! F FDWFK!

([FHSWLRQ ZDV ^SDJH&RQWH[W H[FHSWLRQ` RQWH[W WH[

this WonÕt work because or err l cia Þ of an isnÕt get page, so it doesnÕtject. the exception ob

8VLQJ WKH ´YDU¾ DWWULEXWH LQ F FDWFK! 5SE THE OPTIONAL VAR ATTRIBUTE IF YOU WANT TO ACCESS THE EXCEPTION AFTER THE END OF THE C CATCH TAG )T PUTS THE EXCEPTION OBJECT INTO THE PAGE SCOPE UNDER THE NAME YOU DECLARE AS THE VALUE OF VAR # WDJOLE SUH¿ [ ´F´ XUL ´KWWS MDYD VXQ FRP MVS MVWO FRUH´ ! # SDJH HUURU3DJH ´HUURU3DJH MVS´ ! KWPO! ERG\! $ERXW WR GR D ULVN\ WKLQJ EU!

F FDWFK YDU ´P\([FHSWLRQ´! ,QVLGH WKH FDWFK LQW [ !

page-scoped This creates a newÒmyExceptionÓ, and d me na te ibu attr n object to it. assigns the exceptio

F FDWFK! F LI WHVW ´ ^P\([FHSWLRQ QXOO`´! 7KHUH ZDV DQ H[FHSWLRQ ^P\([FHSWLRQ PHVVDJH` EU! F LI! :H VXUYLYHG ERG\! KWPO!

Now thereÕs an attribute myException, and since itÕs a Throw ÒmessageÓ property (be able, it has a has a getMessage() mecause Throwable thod). \RX DUH KHUH

Chapter 9. Custom tags are powerful Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher: O'Reilly Prepared for Stephen Goss, Safari ID: stephengoss@gmx.net Print Publication Date: 8/1/2004 User number: 747221 Copyright 2007, Safari Books Online, LLC. This PDF is exclusively for your use in accordance with the Safari Terms of Service. No part of it may be reproduced or transmitted in any form by any means without the prior written permission for reprints and excerpts from the publisher. Redistribution or other use that violates the fair use priviledge under U.S. copyright laws (see 17 USC107) or that otherwise violates the Safari Terms of Service is strictly prohibited.


Chapter 9. Custom tags are powerful

WKH F FDWFK! WDJ

GRHV F FDWFK! WKH ZD\ LW )ORZ FRQWURO ZRUNV LQ D QV LQVLGH WKH F FDWFK! * UX +,1 127 FN³ LQ D WU\ EOR LRQ HSW H[F WKH U ERG\ DIWH WKDW Q RFFXUV WKH FRGH %(/2: WU\ FDWFK RQFH WKH H[FHSWLR DYD ODU ,Q D UHJX O\ WR WKH FDWFK EORFN LUHFW SV G O MXP RQWUR V²F H[HFXWH SRLQW LQ WKH WU\ EORFN QHYHU WKLQJV KDSSHQ H WKH H[FHSWLRQ RFFXUV WZR :LWK WKH F FDWFK! WDJ RQF REMHFW LV DVVLJQHG WR LW YDU´ DWWULEXWH WKH H[FHSWLRQ ,I \RX XVHG WKH RSWLRQDO ³ H ERG\ RI WKH F FDWFK! WDJ )ORZ MXPSV WR EHORZ WK

F FDWFK! WFK ,QVLGH WKH FD QW [ !

ol L ontr $IWHU WKH FDWFK

c

e this! YouÕll NEVER se

F FDWFK!

:H VXUYLYHG LRQ REMHFW \RX PXVW ZDQW WR XVH WKH ³YDU´ H[FHSW ZRUGV WKHUH %H FDUHIXO DERXW WKLV ,I \RX H F FDWFK! ERG\ ,Q RWKHU RI WK HQG WKH HW WR RX J +,1 WKH ZDLW XQWLO $)7(5 \ RQ DERXW WKH H[FHSWLRQ :,7 PDWL LQIRU DQ\ XVH \ WR LV VLPSO\ QR ZD F FDWFK! WDJ ERG\ OLNH D QRUPDO -DYD FRGH F FDWFK! WDJ DV EHLQJ MXVW ,WœV WHPSWLQJ WR WKLQN RI D U\ EORFN EHFDXVH LWœV H D W H OLN PRU DFWV F FDWFK! FDWFK EORFN EXW LW LVQœW $ QHYHU QHHGV RU KDV D WKDW D WU\ OLNH W LWœV [FHS GH ( DW LW ZKHUH \RX SXW WKH ULVN\ FR OHDUQ WKLV WDJ IRU H[DFWO\ ZK W LV² SRLQ 7KH VHG" RQIX FDWFK FDWFK RU ¿ QDOO\ EORFN & RZOHGJH RI KRZ D QRUPDO WU\ J NQ LVWLQ XU H[ WR \R LW LQ LV UDWKHU WKDQ PDSSLQJ FDWFK! WDJ WKDW LV EHORZ RX VHH FRGH ZLWKLQ WKH F ZRUNV $QG RQ WKH H[DP LI \ URZQ GRQœW EH IRROHG LV WK SWLRQ H[FH WKH KLFK WKH SRLQW DW Z

FKDSWHU

Chapter 9. Custom tags are powerful Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher: O'Reilly Prepared for Stephen Goss, Safari ID: stephengoss@gmx.net Print Publication Date: 8/1/2004 User number: 747221 Copyright 2007, Safari Books Online, LLC. This PDF is exclusively for your use in accordance with the Safari Terms of Service. No part of it may be reproduced or transmitted in any form by any means without the prior written permission for reprints and excerpts from the publisher. Redistribution or other use that violates the fair use priviledge under U.S. copyright laws (see 17 USC107) or that otherwise violates the Safari Terms of Service is strictly prohibited.


Chapter 9. Custom tags are powerful

XVLQJ -67/

?PI\ QN aW] VMML I \IO \PI\Âź[ 67< QV 2;<4' 4HE *34, IS HUGE 6ERSION HAS lVE LIBRARIESˆFOUR WITH CUSTOM TAGS AND ONE WITH A BUNCH OF FUNCTIONS FOR 3TRING MANIPULATION 4HE TAGS WE COVER IN THIS BOOK WHICH HAPPEN TO BE THE ONES YOU RE EXPECTED TO KNOW FOR THE EXAM ARE FOR THE GENERIC THINGS YOU RE MOST LIKELY TO NEED BUT IT S POSSIBLE THAT BETWEEN ALL lVE LIBRARIES YOU LL lND EVERYTHING YOU MIGHT EVER NEED /N THE NEXT PAGE WE LL START LOOKING AT WHAT HAPPENS WHEN THE TAGS BELOW AREN T ENOUGH 7KH ´&RUHÂľ OLEUDU\

7KH ´)RUPDWWLQJ¾ OLEUDU\

*HQHUDO SXUSRVH

,QWHUQDWLRQDOL]DWLRQ

&RUH ;0/ DFWLRQV

F RXW!

IPW PHVVDJH!

[ SDUVH!

F VHW!

IPW VHW/RFDOH!

[ RXW!

F UHPRYH!

IPW EXQGOH!

[ VHW!

F FDWFK!

IPW VHW%XQGOH!

&RQGLWLRQDO

IPW SDUDP!

;0/ ÀRZ FRQWURO

IPW UHTXHVW(QFRGLQJ!

[ LI!

F LI! F FKRRVH! F ZKHQ! F RWKHUZLVH! 85/ UHODWHG F LPSRUW! F XUO!

[ FKRRVH! )RUPDWWLQJ IPW WLPH=RQH! IPW VHW7LPH=RQH!

[ ZKHQ! [ RWKHUZLVH! [ IRU(DFK!

IPW IRUPDW1XPEHU! IPW SDUVH1XPEHU!

7UDQVIRUP DFWLRQV

IPW SDUVH'DWH!

[ WUDQVIRUP! [ SDUDP!

F UHGLUHFW! F SDUDP!

7KH ´64/¾ OLEUDU\

,WHUDWLRQ

VTO TXHU\!

F IRU(DFK!

VTO XSGDWH!

F IRU(DFK7RNHQ!

VTO VHW'DWD6RXUFH!

'DWDEDVH DFFHVV

VTO SDUDP!

We didnÕt cover this one... it lets you iterate over tokens where YOU give it the delimiter. Works a lot like StringTokenizer. We also didnÕt cover <c:redirect> and <c:out>, but that gives you a wonderful excuse to get the JSTL docs.

7KH ´;0/¾ OLEUDU\

VTO GDWH3DUDP!

´ OLEUDU\ LV 2QO\ WKH ³FRUH H H[DP FRYHUHG RQ WK

\ ZKLFK E\ 7KH ³FRUH´ OLEUDU LWK ³F´ LV OZD\V SUH¿[ Z FRQYHQWLRQ ZH D HUHG RQ WKH H[DP RY \ F UDU WKH RQO\ -67/ OLE L]HG VR ZH GRQœW JR HFLDO NQRZ WKDW 7KH UHVW DUH VS VKRXOG DW OHDVW RX LQWR WKHP %XW \ / WUDQVIRUPDWLRQ ;0 KH 7 EOH LI \RX WKH\œUH DYDLOD OG VDYH \RXU OLIH RX F SOH DP WDJV IRU H[ LWLQJ \RXU V 566 IHHGV :U PDNH KDYH WR SURFHV VR FDQ EH D SDLQ JV WD WRP XV œUH QRW RZQ F ULWH RQH WKDW \RX Z RX H \ IRU EH VXUH HO ZKH UHLQYHQWLQJ WKH \RX DUH KHUH

Chapter 9. Custom tags are powerful Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher: O'Reilly Prepared for Stephen Goss, Safari ID: stephengoss@gmx.net Print Publication Date: 8/1/2004 User number: 747221 Copyright 2007, Safari Books Online, LLC. This PDF is exclusively for your use in accordance with the Safari Terms of Service. No part of it may be reproduced or transmitted in any form by any means without the prior written permission for reprints and excerpts from the publisher. Redistribution or other use that violates the fair use priviledge under U.S. copyright laws (see 17 USC107) or that otherwise violates the Safari Terms of Service is strictly prohibited.


Chapter 9. Custom tags are powerful

UHDGLQJ WKH 7/'

=[QVO I \IO TQJZIZa \PI\¼[ 67< NZWU \PM 2;<4 #REATING THE CODE THAT GOES BEHIND A TAG IN OTHER WORDS THE *AVA CODE THAT S INVOKED WHEN YOU PUT THE TAG IN YOUR *30 ISN T TRIVIAL 7E HAVE A WHOLE CHAPTER THE NEXT ONE DEVOTED TO DEVELOPING YOUR OWN CUSTOM TAG HANDLERS "UT THE LAST PART OF THIS CHAPTER IS ABOUT HOW TO USE CUSTOM TAGS 7HAT HAPPENS FOR EXAMPLE IF SOMEONE HANDS YOU A CUSTOM TAG LIBRARY THEY CREATED FOR YOUR COMPANY OR PROJECT (OW DO YOU KNOW WHAT THE TAGS ARE AND HOW TO USE THEM 7ITH *34, IT S EASYˆTHE *34, SPECIlCATION DOCUMENTS EACH TAG INCLUDING HOW TO USE EACH OF THE REQUIRED AND OPTIONAL ATTRIBUTES "UT NOT EVERY CUSTOM TAG WILL COME SO NICELY PACKAGED AND WELL DOCUMENTED 9OU HAVE TO KNOW HOW TO lGURE OUT A TAG EVEN IF THE DOCUMENTATION IS WEAK OR NONEXISTENT AND ONE MORE THINGˆYOU HAVE TO KNOW HOW TO DEPLOY A CUSTOM TAG LIBRARY

0DLQ WKLQJV \RX KDYH WR NQRZ

LEUDU\ 7R XVH D FXVWRP O H 7/' \RX 0867 UHDG WK HHG WR (YHU\WKLQJ \RX Q NQRZ LV LQ WKHUH

7KH WDJ QDPH DQG V\QWD[ 4HE TAG HAS A NAME OBVIOUSLY )N C SET THE TAG NAME IS SET AND THE PRElX IS C 9OU CAN USE ANY PRElX YOU WANT BUT THE NAME COMES FROM THE 4,$ 4HE SYNTAX INCLUDES THINGS LIKE REQUIRED AND OPTIONAL ATTRIBUTES WHETHER THE TAG CAN HAVE A BODY AND IF SO WHAT YOU CAN PUT THERE THE TYPE OF EACH ATTRIBUTE AND WHETHER THE ATTRIBUTE CAN BE AN EXPRESSION VS A LITERAL 3TRING

7KH OLEUDU\ 85, 4HE 52) IS A UNIQUE IDENTIlER IN THE 4AG ,IBRARY $ESCRIPTOR 4,$ )N OTHER WORDS IT S A UNIQUE NAME FOR THE TAG LIBRARY THE 4,$ DESCRIBES 4HE 52) IS WHAT YOU PUT IN YOUR TAGLIB DIRECTIVE )T S WHAT TELLS THE #ONTAINER HOW TO IDENTIFY THE 4,$ lLE WITHIN THE WEB APP WHICH THE #ONTAINER NEEDS IN ORDER TO MAP THE TAG NAME USED IN THE *30 TO THE *AVA CODE THAT RUNS WHEN YOU USE THE TAG

FKDSWHU

Chapter 9. Custom tags are powerful Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher: O'Reilly Prepared for Stephen Goss, Safari ID: stephengoss@gmx.net Print Publication Date: 8/1/2004 User number: 747221 Copyright 2007, Safari Books Online, LLC. This PDF is exclusively for your use in accordance with the Safari Terms of Service. No part of it may be reproduced or transmitted in any form by any means without the prior written permission for reprints and excerpts from the publisher. Redistribution or other use that violates the fair use priviledge under U.S. copyright laws (see 17 USC107) or that otherwise violates the Safari Terms of Service is strictly prohibited.


Chapter 9. Custom tags are powerful

XVLQJ -67/

5ISQVO [MV[M WN \PM <4, 4HE 4,$ DESCRIBES TWO MAIN THINGS CUSTOM TAGS AND %, FUNCTIONS 7E USED ONE WHEN WE MADE THE DICE ROLLING FUNCTION IN THE PREVIOUS CHAPTER BUT WE HAD ONLY A FUNCTION ELEMENT IN THE 4,$ .OW WE HAVE TO LOOK AT THE TAG ELEMENT WHICH CAN BE MORE COMPLEX "ESIDES THE FUNCTION WE DECLARED EARLIER THE $$ BELOW DESCRIBES ONE TAG ADVICE

schema that the XML orize it... of n io rs em ve m This is ther JSP 2.0. DonÕtlib> element. you use fo it into your <tag just copy

"[PO YHUVLRQ ´ ´ HQFRGLQJ ´,62 ´ "! WDJOLE [POQV ´KWWS MDYD VXQ FRP [PO QV M HH´ [POQV [VL ´KWWS ZZZ Z RUJ ;0/6FKHPD LQVWDQFH´ [VL VFKHPD/RFDWLRQ ´KWWS MDYD VXQ FRP [PO QV M HH ZHE MVSWDJOLEUDU\B B [VG´ YHUVLRQ ´ ´! the developer WOLE YHUVLRQ! WOLE YHUVLRQ!

value)Ă‘ he tag, not the rary. MANDATORY (tclare the version of the tag lib de to in it puts

VKRUW QDPH!5DQGRP7DJV VKRUW QDPH! MANDATORY; mainly IXQFWLRQ! QDPH!UROO,W QDPH! IXQFWLRQ FODVV!IRR 'LFH5ROOHU IXQFWLRQ FODVV! IXQFWLRQ VLJQDWXUH!LQW UROO'LFH IXQFWLRQ VLJQDWXUH! IXQFWLRQ!

XUL!UDQGRP7KLQJV XUL! WDJ!

The unique name we in the taglib directivuse e!

for tools to use..

The EL function we used in the last chap

ter.

t a real Optional, bu

...

ly good idea

GHVFULSWLRQ!UDQGRP DGYLFH GHVFULSWLRQ!

at you use inside REQUIRED! This is<mwh how the dvice>). y:a : ple am D ! This ishat to call when E IR the tag (ex U Q E R knows w SP. WDJ FODVV!IRR $GYLVRU7DJ+DQGOHU WDJ FODVV! Containeruses the tag in a J e n eo m so ERG\ FRQWHQW!HPSW\ ERG\ FRQWHQW! REQUIRED ! This says that the tag must NOT have anything in the body. If your tag has attributes, then one <attribute> DWWULEXWH! element per tag attribute is required. QDPH!XVHU QDPH! This says you MUST put a UHTXLUHG!WUXH UHTXLUHG! ÒuserÓ attribute in the tag. n be a serÓ attribute ca (i.e. UWH[SUYDOXH!WUXH UWH[SUYDOXH! This says the Òu ession al). un ime be a String liter DWWULEXWH! doesnÕt have to QDPH!DGYLFH QDPH!

r t expr

value

WDJ! WDJOLE! \RX DUH KHUH

Chapter 9. Custom tags are powerful Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher: O'Reilly Prepared for Stephen Goss, Safari ID: stephengoss@gmx.net Print Publication Date: 8/1/2004 User number: 747221 Copyright 2007, Safari Books Online, LLC. This PDF is exclusively for your use in accordance with the Safari Terms of Service. No part of it may be reproduced or transmitted in any form by any means without the prior written permission for reprints and excerpts from the publisher. Redistribution or other use that violates the fair use priviledge under U.S. copyright laws (see 17 USC107) or that otherwise violates the Safari Terms of Service is strictly prohibited.


Chapter 9. Custom tags are powerful

UHDGLQJ WKH 7/'

=[QVO \PM K][\WU šIL^QKMÂş \IO 4HE hADVICEv TAG IS A SIMPLE TAG THAT TAKES ONE ATTRIBUTEˆTHE USER NAMEˆAND PRINTS OUT A PIECE OF RANDOM ADVICE )T S SIMPLE ENOUGH THAT IT COULD HAVE BEEN JUST A PLAIN OLD %, FUNCTION WITH A STATIC METHOD GET!DVICE 3TRING NAME BUT WE MADE IT A SIMPLE TAG TO SHOW YOU HOW IT ALL WORKS

7KH 7/' HOHPHQWV IRU WKH DGYLFH WDJ WDJOLE ! XUL!UDQGRP7KLQJV LQJV XUL! WDJ! GHVFULSWLRQ!UDQGRP DGYLFH GHVFULSWLRQ! UD QDPH!DGYLFH QDPH! QD WDJ FODVV!IRR $GYLVRU7DJ+DQGOHU WDJ FODVV! ODVV GY ERG\ FRQWHQW!HPSW\ ERG\ FRQWHQW! FR W\

you saw This is the same tage, but pag us vio on the pre ons. without the annotati

DWWULEXWH! LE QDPH! D XVHU QDPH! ! UHTXLUHG!WUXH UHTXLUHG! UH UHG! HT HG UWH[SUYDOXH!WUXH UWH[SUYDOXH! U Y SU DWWULEXWH! W H WDJ! ! WDJOLE !

uri> ches the < The uri minatthe TLD. element

-63 WKDW XVHV WKH WDJ X K KWPO! ERG\! E

# WDJOLE SUH¿ JO H¿ [ ´PLQH´ XUL X ´UDQGRP7KLQJV´ ! UD G $GYLVRU 3DJH EU! 3D U! !

PLQH DGYLFH XVHU ´ ^XVHU1DPH`´ ! ERG\! KWPO!

ue> ItÕs OK to use EL here, because the <rtexpreval ute. in the TLD is set to ÒtrueÓ for the user attrib (Assume the ÒuserNameÓ attribute already exists.)

made it The TLD says the tag canÕt have a body, so wea slash). with ends tag the means (which an empty tag

Each library yo needs its own taugliuse in a page with a unique preĂž b directive x.

FKDSWHU

Chapter 9. Custom tags are powerful Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher: O'Reilly Prepared for Stephen Goss, Safari ID: stephengoss@gmx.net Print Publication Date: 8/1/2004 User number: 747221 Copyright 2007, Safari Books Online, LLC. This PDF is exclusively for your use in accordance with the Safari Terms of Service. No part of it may be reproduced or transmitted in any form by any means without the prior written permission for reprints and excerpts from the publisher. Redistribution or other use that violates the fair use priviledge under U.S. copyright laws (see 17 USC107) or that otherwise violates the Safari Terms of Service is strictly prohibited.


Chapter 9. Custom tags are powerful

XVLQJ -67/

<PM K][\WU \IO PIVLTMZ 4HIS SIMPLE TAG HANDLER EXTENDS 3IMPLE4AG3UPPORT A CLASS YOU LL SEE IN THE NEXT CHAPTER AND IMPLEMENTS TWO KEY METHODS DO4AG THE METHOD THAT DOES THE ACTUAL WORK AND SET5SER THE METHOD THAT ACCEPTS THE ATTRIBUTE VALUE

-DYD FODVV WKDW GRHV WKH WDJ ZRUN SDFNDJH IRR LPSRUW MDYD[ VHUYOHW MVS -VS([FHSWLRQ LPSRUW MDYD[ VHUYOHW MVS WDJH[W 6LPSOH7DJ6XSSRUW LPSRUW MDYD LR ,2([FHSWLRQ

implements SimpleTagSupport cus tom tags. in d nee we s thing

SXEOLF FODVV $GYLVRU7DJ+DQGOHU H[WHQGV 6LPSOH7DJ6XSSRUW ^ SULYDWH 6WULQJ XVHU

P invokes doTag() when the eJSTL D. The Container callsnam th in e declared the tag using the

SXEOLF YRLG GR7DJ WKURZV -VS([FHSWLRQ ,2([FHSWLRQ ^ JHW-VS&RQWH[W JHW2XW ZULWH ³+HOOR ³ XVHU ³ EU!´ JHW-VS&RQWH[W JHW2XW ZULWH ³<RXU DGYLFH LV ³ JHW$GYLFH ` SXEOLF YRLG VHW8VHU 6WULQJ XVHU ^ WKLV XVHU XVHU `

The Container lls this method to set the tag attribuca the value conventions to Þtegu. It uses JavaBean property namifrom re ou t th at a serÓ attribu ng should be sent to te the setUser() meÒuth od.

6WULQJ JHW$GYLFH ^ 6WULQJ>@ DGYLFH6WULQJV ^³7KDW FRORUœV QRW ZRUNLQJ IRU \RX ´ ³<RX VKRXOG FDOO LQ VLFN ´ ³<RX PLJKW ZDQW WR UHWKLQN WKDW KDLUFXW ´` LQW UDQGRP LQW 0DWK UDQGRP DGYLFH6WULQJV OHQJWK UHWXUQ DGYLFH6WULQJV>UDQGRP@ hod. ternal met ` Our own in `

Q¡W XVH &XVWRP WDJ KDQGOHUV GR FXVWRP PHWKRG QDPHV LF PHWKRG WHG D -DYD FODVV ZLWK D VWDW :LWK (/ IXQFWLRQV \RX FUHD ZDQWHG WKHQ XVHG WKH 7/' U \RX WHYH ZKD WKRG H PH QDPHG WK XQFWLRQ IXQFWLRQ VLJQDWXUH! WR WKH I RG PHWK WXDO H DF DS WK WR P :$<6 JV WKH PHWKRG QDPH LV $/ QDPH! %XW ZLWK FXVWRP WD FXVWRP WDJ ODUH WKH PHWKRG QDPH IRU D GR7DJ VR \RX QHYHU GHF LQ WKH 7/' WLRQ FODUD UH GH QDWX G VLJ 2QO\ IXQFWLRQV XVH D PHWKR

\RX DUH KHUH

Chapter 9. Custom tags are powerful Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher: O'Reilly Prepared for Stephen Goss, Safari ID: stephengoss@gmx.net Print Publication Date: 8/1/2004 User number: 747221 Copyright 2007, Safari Books Online, LLC. This PDF is exclusively for your use in accordance with the Safari Terms of Service. No part of it may be reproduced or transmitted in any form by any means without the prior written permission for reprints and excerpts from the publisher. Redistribution or other use that violates the fair use priviledge under U.S. copyright laws (see 17 USC107) or that otherwise violates the Safari Terms of Service is strictly prohibited.


Chapter 9. Custom tags are powerful

XQGHUVWDQGLQJ UWH[SUYDOXH!

8Ia I\\MV\QWV \W $Z\M`XZ ^IT]M& 4HE RTEXPRVALUE IS ESPECIALLY IMPORTANT BECAUSE IT TELLS YOU WHETHER THE VALUE OF THE ATTRIBUTE IS EVALUATED AT TRANSLATION OR RUNTIME )F THE RTEXPRVALUE IS FALSE OR THE RTEXPRVALUE ISN T DEl NED YOU CAN USE ONLY A 3TRING LITERAL AS THAT ATTRIBUTE S VALUE ,I \RX VHH WKLV DWWULEXWH! QDPH!UDWH QDPH! UHTXLUHG!WUXH UHTXLUHG! UWH[SUYDOXH!IDOVH UWH[SUYDOXH! DWWULEXWH!

25 WKLV DWWULEXWH! QDPH!UDWH QDPH! UHTXLUHG!WUXH UHTXLUHG! DWWULEXWH!

rvalue>, If thereÕs no <rtexp se. fal is ue val ult fa the de

7KHQ \RX NQRZ 7+,6 :21¡7 :25. KWPO! ERG\!

# WDJOLE SUH¿ [ ´P\´ XUL ´P\7DJV´ ! P\ KDQGOH,W UDWH ´ ^FXUUHQW5DWH`´ ! UHQW5D W5 ERG\! KWPO!

be an NO ! This must NOstT be a mu it .. on. ssi expre String literal.

4

9OU STILL DIDN T ANSWER THE QUESTION ABOUT HOW YOU KNOW WHAT TYPE THE ATTRIBUTE IS

$

7E LL START WITH THE EASY ONE )F THE RTEXPRVALUE IS FALSE OR NOT THERE AT ALL THEN THE ATTRIBUTE TYPE CAN BE /.,9 A 3TRING LITERAL "UT IF YOU CAN USE AN EXPRESSION THEN YOU HAVE TO HOPE THAT IT S EITHER DEAD OBVIOUS FROM THE TAG DESCRIPTION AND ATTRIBUTE NAME /2 THAT THE DEVELOPER INCLUDED THE OPTIONAL TYPE SUBELEMENT OF THE ATTRIBUTE ELEMENT 4HE TYPE TAKES A FULLY QUALIFIED CLASS NAME FOR THE TYPE 7HETHER THE 4,$ DECLARES THE TYPE OR NOT THE #ONTAINER EXPECTS THE TYPE OF THE EXPRESSION TO MATCH THE TYPE OF ARGUMENT IN THE TAG HANDLER S SETTER METHOD FOR THAT ATTRIBUTE )N OTHER WORDS IF THE TAG HANDLER HAS A SET$OG $OG METHOD FOR THE hDOGv ATTRIBUTE THEN THE VALUE OF YOUR EXPRESSION FOR THAT ATTRIBUTE BETTER EVALUATE TO A $OG OBJECT /R SOMETHING THAT CAN BE IMPLICITLY ASSIGNED TO A $OG REFERENCE TYPE

FKDSWHU

Chapter 9. Custom tags are powerful Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher: O'Reilly Prepared for Stephen Goss, Safari ID: stephengoss@gmx.net Print Publication Date: 8/1/2004 User number: 747221 Copyright 2007, Safari Books Online, LLC. This PDF is exclusively for your use in accordance with the Safari Terms of Service. No part of it may be reproduced or transmitted in any form by any means without the prior written permission for reprints and excerpts from the publisher. Redistribution or other use that violates the fair use priviledge under U.S. copyright laws (see 17 USC107) or that otherwise violates the Safari Terms of Service is strictly prohibited.


Chapter 9. Custom tags are powerful

XVLQJ -67/

$Z\M`XZ ^IT]M& Q[ 67< R][\ NWZ -4 M`XZM[[QWV[ 9OU CAN USE THREE KINDS OF EXPRESSIONS FOR THE VALUE OF AN ATTRIBUTE OR TAG BODY THAT ALLOWS RUNTIME EXPRESSIONS

(/ H[SUHVVLRQV PLQH DGYLFH XVHU ´ ^XVHU1DPH`´ !

6FULSWLQJ H[SUHVVLRQV PLQH DGYLFH XVHU œ UHTXHVW JHW$WWULEXWH ³XVHUQDPH´ œ ! !

It has to be an expression, not just a scriplet. So it must have the Ă’=Ă“ sign in there and no semicolon on the end.

MVS DWWULEXWH! VWDQGDUG DFWLRQV PLQH DGYLFH! MVS DWWULEXWH QDPH ´XVHU´! ^XVHU1DPH` MVS DWWULEXWH! PLQH DGYLFH!

What is this?? I thought this tag didnÕt have a body...

%2'< RI X SXW DWWULEXWHV LQ WKH MVS DWWULEXWH! OHWV \R FODUHG DJ ERG\ LV H[SOLFLWO\ GH D WDJ HYHQ ZKHQ WKH W ´HPSW\¾ LQ WKH 7/' DJ 7KH NH\ SRLQW WR GH¿ QH DWWULEXWHV WR D W R ! LV VLPSO\ DQ DOWHUQDWH ZD\ EXWH DWWUL 7KH MVS EXWH LQ WKH HQFORVLQJ WDJ 6 DWWUL $&+ RU ( WH! I WWULEX MVS D WKH LV WKHUH PXVW EH RQO\ 21( 1 WKH WDJ DV RSSRVHG WR LQ WHV , WWULEX HH D V WKU WDNH DOO\ DW LI \RX KDYH D WDJ WKDW QRUP WWULEXWH! WDJV RQH IRU HDFK \RXœOO QRZ KDYH WKUHH MVS D PH ZKHUH \RX ERG\ WKHQ LQVLGH WKH ERG\ V DQ DWWULEXWH RI LWV RZQ QD ! KD EXWH DWWUL MVS WKH WULEXWH $OVR QRWLFH WKDW RXœUH VHWWLQJ D YDOXH U WDJœV DWWULEXWH IRU ZKLFK \ VSHFLI\ WKH QDPH RI WKH RXWH QH[W SDJH Q WKH KLV R RXW W H DE PRU 7KHUHœV D OLWWOH

\RX DUH KHUH

Chapter 9. Custom tags are powerful Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher: O'Reilly Prepared for Stephen Goss, Safari ID: stephengoss@gmx.net Print Publication Date: 8/1/2004 User number: 747221 Copyright 2007, Safari Books Online, LLC. This PDF is exclusively for your use in accordance with the Safari Terms of Service. No part of it may be reproduced or transmitted in any form by any means without the prior written permission for reprints and excerpts from the publisher. Redistribution or other use that violates the fair use priviledge under U.S. copyright laws (see 17 USC107) or that otherwise violates the Safari Terms of Service is strictly prohibited.


Chapter 9. Custom tags are powerful

WDJ ERGLHV

?PI\ KIV JM QV I \IO JWLa ! TAG CAN HAVE A BODY ONLY IF THE BODY CONTENT ELEMENT FOR THIS TAG IS NOT CONlGURED WITH A VALUE OF EMPTY 4HE BODY CONTENT ELEMENT CAN BE ONE OF EITHER THREE OR FOUR VALUES DEPENDING ON THE TYPE OF TAG ERG\ FRQWHQW!HPSW\ ERG\ FRQWHQW!

ERG\ FRQWHQW!VFULSWOHVV ERG\ FRQWHQW!

s, ts (scriptletha ve ripting elemenbu sc N ve CA ha it T t NO The tag mustpressions, and declarations),d standard actions. scripting ex and EL and custom an template text

ERG\ FRQWHQW!WDJGHSHQGHQW ERG\ FRQWHQW!

ERG\ FRQWHQW!-63 ERG\ FRQWHQW!

.

T have a body

NO The tag must

The tag body is treated as plain text, so the EL is NOT evaluated and tags/actions are not triggered.

The tag body can have anything that can go inside a JSP.

7+5(( ZD\V WR LQYRNH D WDJ WKDW FDQ¡W KDYH D ERG\ %ACH OF THESE ARE ACCEPTABLE WAYS TO INVOKE A TAG CONlGURED IN THE 4,$ WITH BODY CONTENT EMPTY BODY CONTENT

$Q HPSW\ WDJ PLQH DGYLFH XVHU ´ ^XVHU1DPH`´ !

slash u put a When yoopening tag, youg. in the se a closing ta donÕt u

$ WDJ ZLWK QRWKLQJ EHWZHHQ WKH RSHQLQJ DQG FORVLQJ WDJV PLQH DGYLFH XVHU ´ ^XVHU1DPH`´! PLQH DGYLFH!

We have an tag, but NOTopening and closing HING in betwee n.

$ WDJ ZLWK RQO\ MVS DWWULEXWH! WDJV EHWZHHQ WKH RSHQLQJ DQG FORVLQJ WDJV PLQH DGYLFH! MVS DWWULEXWH QDPH ´XVHU´! ^XVHU1DPH` MVS DWWULEXWH! PLQH DGYLFH!

The <jsp:attribute> tag is the ONLY thing the opening and closing tags of a tag with you can put between a <body-content> of empty! ItÕs just an alternate way to put <jsp:attribute> tags donÕt count as Òbodythe attributes in, but contentÓ.

FKDSWHU

Chapter 9. Custom tags are powerful Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher: O'Reilly Prepared for Stephen Goss, Safari ID: stephengoss@gmx.net Print Publication Date: 8/1/2004 User number: 747221 Copyright 2007, Safari Books Online, LLC. This PDF is exclusively for your use in accordance with the Safari Terms of Service. No part of it may be reproduced or transmitted in any form by any means without the prior written permission for reprints and excerpts from the publisher. Redistribution or other use that violates the fair use priviledge under U.S. copyright laws (see 17 USC107) or that otherwise violates the Safari Terms of Service is strictly prohibited.


Chapter 9. Custom tags are powerful

XVLQJ -67/

<PM \IO PIVLTMZ \PM <4, IVL \PM 2;8 These three handler class,piecesÑthe tag the JSP are the TLD, and all you need to deploy and ru that uses the n a web app tag.

4HE TAG HANDLER DEVELOPER CREATES THE 4,$ TO TELL BOTH THE #ONTAINER AND THE *30 DEVELOPER HOW TO USE THE TAG ! *30 DEVELOPER DOESN T CARE ABOUT THE TAG CLASS ELEMENT IN THE 4,$ THAT S FOR THE #ONTAINER TO WORRY ABOUT 4HE *30 DEVELOPER CARES MOST ABOUT THE URI THE TAG NAME AND THE TAG SYNTAX #AN THE TAG HAVE A BODY $OES THIS ATTRIBUTE HAVE TO BE A 3TRING LITERAL OR CAN IT BE AN EXPRESSION )S THIS ATTRIBUTE OPTIONAL 7HAT TYPE DOES THE EXPRESSION NEED TO EVALUATE TO 4HINK OF THE 4,$ AS THE !0) FOR CUSTOM TAGS 9OU HAVE TO KNOW HOW TO CALL IT AND WHAT ARGUMENTS IT NEEDS

$GYLVRU7DJ+DQGOH U FODVV YRLG GR7DJ ^ WDJ ORJLF `

V WKH WDJ -63 WKDW XVH \! KWPO! ERG

QJV´ ! ´UDQGRP7KL ´PLQH´ XUL [ ¿ UH S LE # WDJO JH EU! $GYLVRU 3D

YRLG VHW8VHU 6 WUL

QJ QJ XVHU ^

WKLV XVHU HU XVHU `

´ ! ^XVHU1DPH` FH XVHU ´ PLQH DGYL W O! WP ERG\! K

7/' À OH WD WDJOLE !

XUL!UDQGRP7KLQJV XUL! L!U WD WDJ! GHVFULSWLRQ!UDQGRP DGYLFH GHVFULSWLRQ! GHVFULSWL YL HV QDPH! !DG DGYLFH LF QDPH! WDJ FODVV! !I IRR $GYLVRU7DJ+DQGOHU YLV + WDJ FODVV! ERG\ FRQWHQW!HPSW\ ERG\ FRQWHQW! QW SW\ DWWULEXWH! QDPH!XVHU QDPH! UHTXLUHG!WUXH UHTXLUHG! UWH[SUYDOXH!WUXH UWH[SUYDOXH! DWWULEXWH! WDJ!

\RX DUH KHUH

Chapter 9. Custom tags are powerful Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher: O'Reilly Prepared for Stephen Goss, Safari ID: stephengoss@gmx.net Print Publication Date: 8/1/2004 User number: 747221 Copyright 2007, Safari Books Online, LLC. This PDF is exclusively for your use in accordance with the Safari Terms of Service. No part of it may be reproduced or transmitted in any form by any means without the prior written permission for reprints and excerpts from the publisher. Redistribution or other use that violates the fair use priviledge under U.S. copyright laws (see 17 USC107) or that otherwise violates the Safari Terms of Service is strictly prohibited.


Chapter 9. Custom tags are powerful

WKH WDJOLE XUL!

<PM \IOTQJ $]ZQ& Q[ R][\ I VIUM VW\ I TWKI\QWV 4HE URI ELEMENT IN THE 4,$ IS A UNIQUE NAME FOR THE TAG LIBRARY 4HAT S IT )T DOES ./4 NEED TO REPRESENT ANY ACTUAL LOCATION PATH OR 52, FOR EXAMPLE )T SIMPLY HAS TO BE A NAMEˆTHE SAME NAME YOU USE IN THE TAGLIB DIRECTIVE h"UT v YOU RE ASKING hHOW COME WITH THE *34, IT GIVES THE FULL 52, TO THE LIBRARY v 4HE TAGLIB DIRECTIVE FOR THE *34, IS # WDJOLE SUHÂż[ ´F´ XUL ´KWWS MDYD VXQ FRP MVS MVWO FRUH´ !

4HE WEB #ONTAINER DOESN T NORMALLY TRY TO REQUEST SOMETHING FROM THE URI IN THE TAGLIB DIRECTIVE )T DOESN T NEED TO USE THE URI AS A LOCATION )F YOU TYPE THAT AS A 52, INTO YOUR BROWSER YOU LL BE REDIRECTED TO A DIFFERENT 52, ONE THAT HAS INFORMATION ABOUT *34, 4HE #ONTAINER COULD CARE LESS THAT THIS PARTICULAR URI HAPPENS TO ALSO BE A VALID 52, THE WHOLE hHTTP v THING )T S JUST THE CONVENTION 3UN USES FOR THE URI TO HELP ENSURE THAT IT S A UNIQUE NAME 3UN COULD HAVE NAMED THE *34, URI hJAVA?FOO?TAGSv AND IT WOULD HAVE WORKED IN EXACTLY THE SAME WAY !LL THAT MATTERS IS THAT THE URI IN THE 4,$ AND THE URI IN THE TAGLIB DIRECTIVE MATCH

URL to This LOOKS likebuat itÕs not. , rce ou res b we a happens ItÕs just a name thasata URL. d te at rm fo to be

!S A DEVELOPER THOUGH YOU DO WANT TO WORK OUT A SCHEME TO GIVE YOUR LIBRARIES UNIQUE URI VALUES BECAUSE URI NAMES NEED TO BE UNIQUE FOR ANY GIVEN WEB APP 9OU CAN T FOR EXAMPLE HAVE TWO 4,$ lLES IN THE SAME WEB APP WITH THE SAME URI 3O THE DOMAIN NAME CONVENTION IS A GOOD ONE BUT YOU DON T NECESSARILY NEED TO USE THAT FOR ALL OF YOUR IN HOUSE DEVELOPMENT (AVING SAID ALL THAT THERE IS ONE WAY IN WHICH THE URI COULD BE USED AS A LOCATION BUT IT S CONSIDERED A REALLY BAD PRACTICEˆIF YOU DON T SPECIFY A URI INSIDE THE 4,$ THE #ONTAINER WILL ATTEMPT TO USE THE URI ATTRIBUTE IN THE TAGLIB DIRECTIVE AS A PATH TO THE ACTUAL 4,$ "UT TO HARD CODE THE LOCATION OF YOUR 4,$ IS OBVIOUSLY A BAD IDEA SO JUST PRETEND YOU DON T KNOW IT S POSSIBLE

V IRU D PDWFK N R R O HU LQ WD Q R & 7KH LQ WKH 7/' DQG L! XU KH W Q HH Z HW E E GLUHFWLYH OL DJ W KH W LQ H OX YD WKH XUL DYH WR EH WKH K 7 2 1 HV R G UL X 7KH WXDO WDJ KDQGOHU DF H WK I R Q R WL FD OR

FKDSWHU

Chapter 9. Custom tags are powerful Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher: O'Reilly Prepared for Stephen Goss, Safari ID: stephengoss@gmx.net Print Publication Date: 8/1/2004 User number: 747221 Copyright 2007, Safari Books Online, LLC. This PDF is exclusively for your use in accordance with the Safari Terms of Service. No part of it may be reproduced or transmitted in any form by any means without the prior written permission for reprints and excerpts from the publisher. Redistribution or other use that violates the fair use priviledge under U.S. copyright laws (see 17 USC107) or that otherwise violates the Safari Terms of Service is strictly prohibited.


Chapter 9. Custom tags are powerful

XVLQJ -67/

<PM +WV\IQVMZ J]QTL[ I UIX "EFORE *30 THE DEVELOPER HAD TO SPECIFY A MAPPING BETWEEN THE URI IN THE 4,$ AND THE ACTUAL LOCATION OF THE 4,$ lLE 3O WHEN A *30 PAGE HAD A TAGLIB DIRECTIVE LIKE THIS # WDJOLE SUH¿[ ´PLQH´ XUL ´UDQGRP7KLQJV´ ! 4HE $EPLOYMENT $ESCRIPTOR WEB XML HAD TO TELL THE #ONTAINER WHERE THE 4,$ lLE WITH A MATCHING URI WAS LOCATED 9OU DID THAT WITH A TAGLIB ELEMENT IN THE $$

7KH 2/' EHIRUH -63 ZD\ WR PDS D WDJOLE XUL WR D 7/' ÀOH ZHE DSS! MVS FRQ¿J! WDJOLE! WDJOLE XUL!UDQGRP7KLQJV WDJOLE XUL! WDJOLE ORFDWLRQ! :(% ,1) P\)XQFWLRQV WOG WDJOLE ORFDWLRQ! WDJOLE! MVS FRQ¿J! ZHE DSS!

ap the <uri> In the DD, mto an actual D L T in the D Ăžle. path to a TL

7KH 1(: -63 ZD\ WR PDS D WDJOLE XUL WR D 7/' ÀOH

1R WDJOLE! HQWU\ LQ WKH '' 4HE #ONTAINER AUTOMATICALLY BUILDS A MAP BETWEEN 4,$ lLES AND URI NAMES SO THAT WHEN A *30 INVOKES A TAG THE #ONTAINER KNOWS EXACTLY WHERE TO lND THE 4,$ THAT DESCRIBES THE TAG (OW "Y LOOKING THROUGH A SPECIlC SET OF LOCATIONS WHERE 4,$S ARE ALLOWED TO LIVE 7HEN YOU DEPLOY A WEB APP AS LONG AS YOU PUT THE 4,$ IN A PLACE THE #ONTAINER WILL SEARCH THE #ONTAINER WILL lND THE 4,$ AND BUILD A MAP FOR THAT TAG LIBRARY )F YOU DO SPECIFY AN EXPLICIT TAGLIB LOCATION IN THE $$ WEB XML A *30 #ONTAINER WILL USE IT )N FACT WHEN THE #ONTAINER BEGINS TO BUILD THE URI TO 4,$ MAP THE #ONTAINER WILL LOOK lRST IN YOUR $$ TO SEE IF YOU VE MADE ANY TAGLIB ENTRIES AND IF YOU HAVE IT LL USE THOSE TO HELP CONSTRUCT THE MAP &OR THE EXAM YOU RE EXPECTED TO KNOW ABOUT TAGLIB LOCATION EVEN THOUGH IT S NO LONGER REQUIRED FOR *30 3O THE NEXT STEP IS FOR US TO SEE WHERE THE #ONTAINER LOOKS FOR 4,$S AND ALSO WHERE IT LOOKS FOR THE TAG HANDLER CLASSES DECLARED IN THE 4,$S

\RX DUH KHUH

Chapter 9. Custom tags are powerful Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher: O'Reilly Prepared for Stephen Goss, Safari ID: stephengoss@gmx.net Print Publication Date: 8/1/2004 User number: 747221 Copyright 2007, Safari Books Online, LLC. This PDF is exclusively for your use in accordance with the Safari Terms of Service. No part of it may be reproduced or transmitted in any form by any means without the prior written permission for reprints and excerpts from the publisher. Redistribution or other use that violates the fair use priviledge under U.S. copyright laws (see 17 USC107) or that otherwise violates the Safari Terms of Service is strictly prohibited.


Chapter 9. Custom tags are powerful

7/' ORFDWLRQV

.W]Z XTIKM[ \PM +WV\IQVMZ TWWS[ NWZ <4,[ 4HE #ONTAINER SEARCHES IN SEVERAL PLACES TO l ND 4,$ l LESˆYOU DON T NEED TO DO ANYTHING EXCEPT MAKE SURE YOUR 4,$S ARE IN ONE OF THE RIGHT LOCATIONS

The JSP that invokes the tag

'LUHFWO\ LQVLGH :(% ,1)

'LUHFWO\ LQVLGH D VXE GLUHFWRU\ RI :(% ,1)

,QVLGH WKH 0(7$ ,1) GLUHFWRU\ LQVLGH D -$5 À OH WKDW·V LQVLGH :(% ,1) OLE

,QVLGH D VXE GLUHFWRU\ RI 0(7$ ,1) LQVLGH D -$5 À OH WKDW·V LQVLGH :(% ,1) OLE

# WDJO SUH¿ [ ´P XUL ´ : P\)XQFWLRQV WOG´ !

KWPO! ERG\!

:(% ,1)

^PLQH UROO,W `

ERG\! KWPO!

XVH7DJ MVS

"[PO VLRQ HQFRG ´87) ´"!

IXQFWLRQ! QDPH! UROO,W QDPH! IXQFWLRQ FODVV!

'2&7<3(

WOGV

IRR 'LFH5ROOHU

OLE

IXQFWLRQ

ZHE [PO

P\)XQFWLRQV WOG

IXQFWLRQ! QDPH! UROO,W QDPH! IXQFWLRQ FODVV!

-$5

IRR 'LFH5ROOHU

IXQFWLRQ

RWKHU7DJV WOG

0(7$ ,1)

$GYLVRU7DJ+DQGOHU FODVV PRUH7/'V

A Java class thatom the handles a tag fr library myFunctions.tld

IXQFWLRQ! QDPH! UROO,W QDPH! IXQFWLRQ FODVV! IRR 'LFH5ROOHU

IXQFWLRQ

IXQFWLRQ! QDPH! UROO,W QDPH! IXQFWLRQ FODVV!

VKRSSLQJ7DJV WOG

IRR 'LFH5ROOHU

IXQFWLRQ

FDWDORJ7DJV WOG

FKDSWHU

Chapter 9. Custom tags are powerful Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher: O'Reilly Prepared for Stephen Goss, Safari ID: stephengoss@gmx.net Print Publication Date: 8/1/2004 User number: 747221 Copyright 2007, Safari Books Online, LLC. This PDF is exclusively for your use in accordance with the Safari Terms of Service. No part of it may be reproduced or transmitted in any form by any means without the prior written permission for reprints and excerpts from the publisher. Redistribution or other use that violates the fair use priviledge under U.S. copyright laws (see 17 USC107) or that otherwise violates the Safari Terms of Service is strictly prohibited.


Chapter 9. Custom tags are powerful

XVLQJ -67/

?PMV I 2;8 ][M[ UWZM \PIV WVM \IO TQJZIZa )F YOU WANT TO USE MORE THAN ONE TAG LIBRARY IN A *30 DO A SEPARATE TAGLIB DIRECTIVE FOR EACH 4,$ 4HERE A FEW ISSUES TO KEEP IN MIND

-AKE SURE THE TAGLIB URI NAMES ARE UNIQUE )N OTHER WORDS DON T PUT IN MORE THAN ONE DIRECTIVE WITH THE SAME URI VALUE

$O ./4 USE A PRElX THAT S ON THE RESERVED LIST 4HE RESERVED PRElXES ARE MVS

MVS[

MDYD

MDYD[

VHUYOHW

VXQ

VXQZ

6KDUSHQ \RXU SHQFLO (PSW\ WDJV

:ULWH LQ H[DPSOHV RI WKH 7+5(( GLIIHUHQW ZD\V WR LQYRNH D WDJ WKDW PXVW KDYH DQ HPSW\ ERG\ &KHFN \RXU DQVZHUV E\ ORRNLQJ EDFN WKURXJK WKH FKDSWHU 1R ZH·UH QRW JRLQJ WR WHOO \RX WKH SDJH QXPEHU

\RX DUH KHUH

Chapter 9. Custom tags are powerful Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher: O'Reilly Prepared for Stephen Goss, Safari ID: stephengoss@gmx.net Print Publication Date: 8/1/2004 User number: 747221 Copyright 2007, Safari Books Online, LLC. This PDF is exclusively for your use in accordance with the Safari Terms of Service. No part of it may be reproduced or transmitted in any form by any means without the prior written permission for reprints and excerpts from the publisher. Redistribution or other use that violates the fair use priviledge under U.S. copyright laws (see 17 USC107) or that otherwise violates the Safari Terms of Service is strictly prohibited.


Chapter 9. Custom tags are powerful

7/' H[HUFLVH

6KDUSHQ \RXU SHQFLO +RZ WKH -63 WKH 7/' DQG WKH EHDQ DWWULEXWH FODVV UHODWH )LOO LQ WKH VSDFHV EDVHG RQ WKH LQIRUPDWLRQ WKDW \RX FDQ VHH LQ WKH 7/' 'UDZ DUURZV WR LQGLFDWH ZKHUH WKH GLIIHUHQW SLHFHV RI LQIRUPDWLRQ DUH WLHG WRJHWKHU ,Q RWKHU ZRUGV IRU HDFK EODQN VKRZ H[DFWO\ ZKHUH \RX IRXQG WKH LQIRUPDWLRQ QHHGHG WR ILOO LQ WKH EODQN $GYLVRU7DJ+DQGOH U FODVV YRLG GR7DJ ^ WDJ ORJLF `

V WKH WDJ -63 WKDW XVH \! KWPO! ERG

´ ! XUL ´ UH¿ [ ´PLQH´ S LE JO WD # JH EU! $GYLVRU 3D

YRLG VHW 6W

ULQJ [ ^

FRGH KHUH `

^IRR`´ ! ´ WPO! ERG\! K

7/' À OH WDJOLE !

XUL!UDQGRP7KLQJV XUL! WDJ! GHVFULSWLRQ!UDQGRP DGYLFH GHVFULSWLRQ! QDPH!DGYLFH QDPH! WDJ FODVV!IRR $GYLVRU7DJ+DQGOHU WDJ FODVV! ERG\ FRQWHQW!HPSW\ ERG\ FRQWHQW! DWWULEXWH! QDPH!XVHU QDPH! UHTXLUHG!WUXH UHTXLUHG! UWH[SUYDOXH! UWH[SUYDOXH! DWWULEXWH! WDJ!

FKDSWHU

Chapter 9. Custom tags are powerful Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher: O'Reilly Prepared for Stephen Goss, Safari ID: stephengoss@gmx.net Print Publication Date: 8/1/2004 User number: 747221 Copyright 2007, Safari Books Online, LLC. This PDF is exclusively for your use in accordance with the Safari Terms of Service. No part of it may be reproduced or transmitted in any form by any means without the prior written permission for reprints and excerpts from the publisher. Redistribution or other use that violates the fair use priviledge under U.S. copyright laws (see 17 USC107) or that otherwise violates the Safari Terms of Service is strictly prohibited.


Chapter 9. Custom tags are powerful

XVLQJ -67/

6KDUSHQ \RXU SHQFLO

7HVW \RXU 7DJ PHPRU\ $16:(56

The attribute that names the loop counter variable.

)LOO LQ WKH QDPH RI WKH RSWLRQDO DWWULEXWH F IRU(DFK YDU ´PRYLH´ LWHPV ´ ^PRYLH/LVW`´ ^PRYLH` F IRU(DFK!

´IRR´ !

)LOO LQ WKH PLVVLQJ DWWULEXWH QDPH

test ´ ^XVHU3UHI œVDIHW\œ`´ ! F LI 0D\EH \RX VKRXOG MXVW ZDON F LI!

varStatus

)LOO LQ WKH PLVVLQJ DWWULEXWH QDPH

value, but you The <c:set> tag must havevaluae in the body could choose to put the an attribute. of the tag instead of as

value ´IRR´ ! F VHW YDU ´XVHU/HYHO´ VFRSH ´VHVVLRQ´

)LOO LQ WKH PLVVLQJ WDJ QDPHV WZR GLIIHUHQW WDJ W\SHV DQG WKH PLVVLQJ DWWULEXWH QDPH F FKRRVH! F when test ´ ^XVHU3UHI ¾SHUIRUPDQFHœ`´! 1RZ \RX FDQ VWRS HYHQ LI \RX HP!GR HP! GULYH LQVDQHO\ IDVW F ! when F ! otherwise 2XU EUDNHV DUH WKH EHVW F ! otherwise F FKRRVH!

l. The <c:otherwise> tag is optiona \RX DUH KHUH

Chapter 9. Custom tags are powerful Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher: O'Reilly Prepared for Stephen Goss, Safari ID: stephengoss@gmx.net Print Publication Date: 8/1/2004 User number: 747221 Copyright 2007, Safari Books Online, LLC. This PDF is exclusively for your use in accordance with the Safari Terms of Service. No part of it may be reproduced or transmitted in any form by any means without the prior written permission for reprints and excerpts from the publisher. Redistribution or other use that violates the fair use priviledge under U.S. copyright laws (see 17 USC107) or that otherwise violates the Safari Terms of Service is strictly prohibited.


Chapter 9. Custom tags are powerful

7/' H[HUFLVH DQVZHUV

6KDUSHQ \RXU SHQFLO +RZ WKH -63 WKH 7/' DQG WKH EHDQ DWWULEXWH FODVV UHODWH $16:(56

$GYLVRU7DJ+DQGOH U FODVV YRLG GR7DJ ^ WDJ ORJLF `

V WKH WDJ -63 WKDW XVH \! KWPO! ERG

ings´ !

´randomTh L H´ XUL SUH¿ [ ´PLQ # WDJOLE U 3DJH EU! RU VR LV $GYL

minee :advice user

YRLG VHWUser 6W ULQ

J XVHU

^

WKLV X XV VHU XVHU `

H`´ ! ´ ^XVHU1DP

WPO! ERG\! K

7/' À 7 ÀOH OH WDJOLE ! JOL !

XUL!UDQGRP7KLQJV XUL! XUL! QGRP KLQ ! WDJ! GHVFULSWLRQ!UDQGRP DGYLFH GHVFULSWLRQ! LSW Q! GRP DG QDPH!DGYLFH H QDPH! H! ! WDJ FODVV!IRR $GYLVRU7DJ+DQGOHU RR YL YL WDJ FODVV! ERG\ FRQWHQW!HPSW\ ERG\ FRQWHQW! !H W\ \ DWWULEXWH! QDPH!XVHU QDPH! PH UHTXLUHG!WUXH UHTXLUHG! UWH[SUYDOXH!true UWH[SUYDOXH! DWWULEXWH! WDJ!

FKDSWHU

Chapter 9. Custom tags are powerful Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher: O'Reilly Prepared for Stephen Goss, Safari ID: stephengoss@gmx.net Print Publication Date: 8/1/2004 User number: 747221 Copyright 2007, Safari Books Online, LLC. This PDF is exclusively for your use in accordance with the Safari Terms of Service. No part of it may be reproduced or transmitted in any form by any means without the prior written permission for reprints and excerpts from the publisher. Redistribution or other use that violates the fair use priviledge under U.S. copyright laws (see 17 USC107) or that otherwise violates the Safari Terms of Service is strictly prohibited.


Chapter 9. Custom tags are powerful

XVLQJ -67/

0RFN ([DP &KDSWHU

7HICH IS TRUE ABOUT 4,$ lLES

R ! 4,$ lLES MAY BE PLACED IN ANY SUBDIRECTORY OF :(% ,1) R " 4,$ lLES ARE USED TO CONlGURE *30 ENVIRONMENT ATTRIBUTES SUCH AS VFULSWLQJ LQYDOLG

R # 4,$ lLES MAY BE PLACED IN THE 0(7$ ,1) DIRECTORY OF THE 7!2 lLE

R $ 4,$ lLES CAN DECLARE BOTH 3IMPLE AND #LASSIC TAGS BUT 4,$ lLES ARE ./4 USED TO DECLARE 4AG &ILES

!SSUMING THE STANDARD *34, PRElX CONVENTIONS ARE USED WHICH *34, TAGS WOULD YOU USE TO ITERATE OVER A COLLECTION OF OBJECTS #HOOSE ALL THAT APPLY

R ! [ IRU(DFK! R " F LWHUDWH! R # F IRU(DFK! R $ F IRU7RNHQV! R % ORJLF LWHUDWH! R & ORJLF IRU(DFK!

\RX DUH KHUH

Chapter 9. Custom tags are powerful Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher: O'Reilly Prepared for Stephen Goss, Safari ID: stephengoss@gmx.net Print Publication Date: 8/1/2004 User number: 747221 Copyright 2007, Safari Books Online, LLC. This PDF is exclusively for your use in accordance with the Safari Terms of Service. No part of it may be reproduced or transmitted in any form by any means without the prior written permission for reprints and excerpts from the publisher. Redistribution or other use that violates the fair use priviledge under U.S. copyright laws (see 17 USC107) or that otherwise violates the Safari Terms of Service is strictly prohibited.


Chapter 9. Custom tags are powerful

PRFN H[DP

! *30 PAGE CONTAINS A WDJOLE DIRECTIVE WHOSE XUL ATTRIBUTE HAS THE VALUE P\7DJV 7HICH DEPLOYMENT DESCRIPTOR ELEMENT DElNES THE ASSOCIATED 4,$

R ! WDJOLE! XUL!P\7DJV XUL! ORFDWLRQ! :(% ,1) P\7DJV WOG ORFDWLRQ! WDJOLE!

R " WDJOLE! XUL!P\7DJV XUL! WOG ORFDWLRQ! :(% ,1) P\7DJV WOG WOG ORFDWLRQ! WDJOLE!

R # WDJOLE! WOG XUL!P\7DJV WOG XUL! WOG ORFDWLRQ! :(% ,1) P\7DJV WOG WOG ORFDWLRQ! WDJOLE!

R $ WDJOLE! WDJOLE XUL!P\7DJV WDJOLE XUL! WDJOLE ORFDWLRQ! :(% ,1) P\7DJV WOG WDJOLE ORFDWLRQ! WDJOLE!

! *AVA"EAN 3HUVRQ HAS A PROPERTY CALLED DGGUHVV 4HE VALUE OF THIS PROPERTY IS ANOTHER *AVA"EAN $GGUHVV WITH THE FOLLOWING STRING PROPERTIES VWUHHW VWUHHW FLW\ VWDWH&RGH AND ]LS&RGH ! CONTROLLER SERVLET CREATES A SESSION SCOPED ATTRIBUTE CALLED FXVWRPHU THAT IS AN INSTANCE OF THE 3HUVRQ BEAN 7HICH *30 CODE STRUCTURES WILL SET THE FLW\ PROPERTY OF THE FXVWRPHU ATTRIBUTE TO THE FLW\ REQUEST PARAMETER #HOOSE ALL THAT APPLY

R ! ^VHVVLRQ6FRSH FXVWRPHU DGGUHVV FLW\ SDUDP FLW\` R " F VHW WDUJHW ´ ^VHVVLRQ6FRSH FXVWRPHU DGGUHVV`´ SURSHUW\ ´FLW\´ YDOXH ´ ^SDUDP FLW\`´ !

R # F VHW VFRSH ´VHVVLRQ´ YDU ´ ^FXVWRPHU DGGUHVV`´ SURSHUW\ ´FLW\´ YDOXH ´ ^SDUDP FLW\`´ !

R $ F VHW WDUJHW ´ ^VHVVLRQ6FRSH FXVWRPHU DGGUHVV`´ SURSHUW\ ´FLW\´! ^SDUDP FLW\` F VHW!

FKDSWHU

Chapter 9. Custom tags are powerful Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher: O'Reilly Prepared for Stephen Goss, Safari ID: stephengoss@gmx.net Print Publication Date: 8/1/2004 User number: 747221 Copyright 2007, Safari Books Online, LLC. This PDF is exclusively for your use in accordance with the Safari Terms of Service. No part of it may be reproduced or transmitted in any form by any means without the prior written permission for reprints and excerpts from the publisher. Redistribution or other use that violates the fair use priviledge under U.S. copyright laws (see 17 USC107) or that otherwise violates the Safari Terms of Service is strictly prohibited.


Chapter 9. Custom tags are powerful

XVLQJ -67/

7HICH ERG\ FRQWHQW! ELEMENT COMBINATIONS IN THE 4,$ ARE VALID FOR THE FOLLOWING *30 SNIPPET #HOOSE ALL THAT APPLY P\ WDJ ! P\ WDJ D ´ ´ ! D ! P\ WDJ ! YDOXH ^D` P\ WDJ ! P\ WDJ !

R ! TAG BODY CONTENT IS HPSW\ TAG BODY CONTENT IS -63 TAG BODY CONTENT IS VFULSWOHVV

R " TAG BODY CONTENT IS -63 TAG BODY CONTENT IS HPSW\ TAG BODY CONTENT IS VFULSWOHVV

R # TAG BODY CONTENT IS -63 TAG BODY CONTENT IS -63 TAG BODY CONTENT IS -63

R $ TAG BODY CONTENT IS VFULSWOHVV TAG BODY CONTENT IS -63 TAG BODY CONTENT IS -63

R % TAG BODY CONTENT IS -63 TAG BODY CONTENT IS VFULSWOHVV TAG BODY CONTENT IS VFULSWOHVV

!SSUMING THE APPROPRIATE WDJOLE DIRECTIVES WHICH ARE VALID EXAMPLES OF CUSTOM TAG USAGE #HOOSE ALL THAT APPLY

R ! IRR EDU ! R " P\ WDJ! P\ WDJ! R # P\WDJ YDOXH ´[´ ! R $ F RXW YDOXH ´[´ ! R % MVS VHW3URSHUW\ QDPH ´D´ SURSHUW\ ´E´ YDOXH ´F´ !

\RX DUH KHUH

Chapter 9. Custom tags are powerful Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher: O'Reilly Prepared for Stephen Goss, Safari ID: stephengoss@gmx.net Print Publication Date: 8/1/2004 User number: 747221 Copyright 2007, Safari Books Online, LLC. This PDF is exclusively for your use in accordance with the Safari Terms of Service. No part of it may be reproduced or transmitted in any form by any means without the prior written permission for reprints and excerpts from the publisher. Redistribution or other use that violates the fair use priviledge under U.S. copyright laws (see 17 USC107) or that otherwise violates the Safari Terms of Service is strictly prohibited.


Chapter 9. Custom tags are powerful

PRFN H[DP

'IVEN THE FOLLOWING SCRIPTLET CODE VHOHFW QDPH ¶VW\OH,G¶! %HHU6W\OHV>@ VW\OHV EHHU6HUYLFH JHW6W\OHV IRU LQW L L VW\OHV OHQJWK L ^ %HHU6W\OH VW\OH VW\OHV>L@ ! RSWLRQ YDOXH ¶ VW\OH JHW2EMHFW,' !¶! VW\OH JHW7LWOH ! RSWLRQ! ` ! VHOHFW! 7HICH *34, CODE SNIPPET PRODUCES THE SAME RESULT

R ! VHOHFW QDPH ¶VW\OH,G¶! F IRU DUUD\ ¶ ^EHHU6HUYLFH VW\OHV`¶! RSWLRQ YDOXH ¶ ^LWHP REMHFW,'`¶! ^LWHP WLWOH` RSWLRQ! F IRU! VHOHFW! R " VHOHFW QDPH ¶VW\OH,G¶! F IRU(DFK YDU ¶VW\OH¶ LWHPV ¶ ^EHHU6HUYLFH VW\OHV`¶! RSWLRQ YDOXH ¶ ^VW\OH REMHFW,'`¶! ^VW\OH WLWOH` RSWLRQ! F IRU(DFK! VHOHFW!

R # VHOHFW QDPH ¶VW\OH,G¶! F IRU YDU ¶VW\OH¶ DUUD\ ¶ ^EHHU6HUYLFH VW\OHV`¶! RSWLRQ YDOXH ¶ ^VW\OH REMHFW,'`¶! ^VW\OH WLWOH` RSWLRQ! F IRU! VHOHFW!

R $ VHOHFW QDPH ¶VW\OH,G¶! F IRU(DFK YDU ¶VW\OH¶ DUUD\ ¶ ^EHHU6HUYLFH VW\OHV`¶! RSWLRQ YDOXH ¶ ^VW\OH REMHFW,'`¶! ^VW\OH WLWOH` RSWLRQ! F IRU! VHOHFW!

FKDSWHU

Chapter 9. Custom tags are powerful Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher: O'Reilly Prepared for Stephen Goss, Safari ID: stephengoss@gmx.net Print Publication Date: 8/1/2004 User number: 747221 Copyright 2007, Safari Books Online, LLC. This PDF is exclusively for your use in accordance with the Safari Terms of Service. No part of it may be reproduced or transmitted in any form by any means without the prior written permission for reprints and excerpts from the publisher. Redistribution or other use that violates the fair use priviledge under U.S. copyright laws (see 17 USC107) or that otherwise violates the Safari Terms of Service is strictly prohibited.


Chapter 9. Custom tags are powerful

XVLQJ -67/

&KDSWHU $QVZHUV

(JSP v2.01-160) pgs 3-16,

7HICH IS TRUE ABOUT 4,$ lLES

R ! 4,$ lLES MAY BE PLACED IN ANY SUBDIRECTORY OF :(% ,1)

-Option B is invalid because TLD the JSP environment.

R " 4,$ lLES ARE USED TO CONlGURE *30 ENVIRONMENT ATTRIBUTES Ăžles conĂžgure tag handlers not SUCH AS VFULSWLQJ LQYDOLG

-Option C is invalid because TLD Ăžles are not recognized in the META-INF of the WAR Ăžle.

R # 4,$ lLES MAY BE PLACED IN THE 0(7$ ,1) DIRECTORY OF THE 7!2 lLE

R $ 4,$ lLES CAN DECLARE BOTH 3IMPLE AND #LASSIC TAGS BUT 4,$ -Option D is invalid because lLES ARE ./4 USED TO DECLARE 4AG &ILES

Tag Files may be declared in a TLD (but it is rare).

!SSUMING THE STANDARD *34, PRElX CONVENTIONS ARE USED WHICH *34, TAGS WOULD YOU USE TO ITERATE OVER A COLLECTION OF OBJECTS #HOOSE ALL THAT APPLY

R ! [ IRU(DFK! R " F LWHUDWH!

2)

(JSTL v1.1 pg. 4

-Option A is incorrect as this is the tag used for iterating over XPath expressions.

-Option B is incorrect because no such tag exists.

R # F IRU(DFK! R $ F IRU7RNHQV! R % ORJLF LWHUDWH! R & ORJLF IRU(DFK!

-Option D is incorrect because this tag is used for iterating over tokens within a single string.

-Options E and F are incorrect because the preÞx ÔlogicÕ is not a standard JSTL preÞx (this preÞx is typically used by tags in the Jakarta Struts package). \RX DUH KHUH

Chapter 9. Custom tags are powerful Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher: O'Reilly Prepared for Stephen Goss, Safari ID: stephengoss@gmx.net Print Publication Date: 8/1/2004 User number: 747221 Copyright 2007, Safari Books Online, LLC. This PDF is exclusively for your use in accordance with the Safari Terms of Service. No part of it may be reproduced or transmitted in any form by any means without the prior written permission for reprints and excerpts from the publisher. Redistribution or other use that violates the fair use priviledge under U.S. copyright laws (see 17 USC107) or that otherwise violates the Safari Terms of Service is strictly prohibited.


Chapter 9. Custom tags are powerful

PRFN DQVZHUV

12,13) (JSP v2.0 pgs 3-

! *30 PAGE CONTAINS A WDJOLE DIRECTIVE WHOSE XUL ATTRIBUTE HAS THE VALUE P\7DJV 7HICH DEPLOYMENT DESCRIPTOR ELEMENT DElNES THE ASSOCIATED 4,$

R ! WDJOLE! XUL!P\7DJV XUL! ORFDWLRQ! :(% ,1) P\7DJV WOG ORFDWLRQ! WDJOLE!

R " WDJOLE! XUL!P\7DJV XUL! WOG ORFDWLRQ! :(% ,1) P\7DJV WOG WOG ORFDWLRQ! WDJOLE!

R # WDJOLE! WOG XUL!P\7DJV WOG XUL! WOG ORFDWLRQ! :(% ,1) P\7DJV WOG WOG ORFDWLRQ! WDJOLE!

R $ WDJOLE!

- Option D speciĂžes elements.

valid tag WDJOLE XUL!P\7DJV WDJOLE XUL! WDJOLE ORFDWLRQ! :(% ,1) P\7DJV WOG WDJOLE ORFDWLRQ! WDJOLE!

! *AVA"EAN 3HUVRQ HAS A PROPERTY CALLED DGGUHVV 4HE VALUE OF THIS PROPERTY IS ANOTHER *AVA"EAN $GGUHVV WITH THE FOLLOWING STRING PROPERTIES VWUHHW VWUHHW FLW\ VWDWH&RGH AND ]LS&RGH ! CONTROLLER SERVLET CREATES A SESSION SCOPED ATTRIBUTE CALLED FXVWRPHU THAT IS AN INSTANCE OF THE 3HUVRQ BEAN

-28)

(JSTL v1.1 pg 4

7HICH *30 CODE STRUCTURES WILL SET THE FLW\ PROPERTY OF THE FXVWRPHU ATTRIBUTE TO THE FLW\ REQUEST PARAMETER #HOOSE ALL THAT APPLY

R ! ^VHVVLRQ6FRSH FXVWRPHU DGGUHVV FLW\ SDUDP FLW\` R " F VHW WDUJHW ´ ^VHVVLRQ6FRSH FXVWRPHU DGGUHVV`´

-Option A is invalid because EL does not permit assignment.

SURSHUW\ ´FLW\´ YDOXH ´ ^SDUDP FLW\`´ !

R # F VHW VFRSH ´VHVVLRQ´ YDU ´ ^FXVWRPHU DGGUHVV`´ SURSHUW\ ´FLW\´ YDOXH ´ ^SDUDP FLW\`´ !

R $ F VHW WDUJHW ´ ^VHVVLRQ6FRSH FXVWRPHU DGGUHVV`´ SURSHUW\ ´FLW\´! ^SDUDP FLW\` F VHW!

-Option C is invalid because the var attribute does not accept a runtime value, nor does it work with the property attribute.

FKDSWHU

Chapter 9. Custom tags are powerful Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher: O'Reilly Prepared for Stephen Goss, Safari ID: stephengoss@gmx.net Print Publication Date: 8/1/2004 User number: 747221 Copyright 2007, Safari Books Online, LLC. This PDF is exclusively for your use in accordance with the Safari Terms of Service. No part of it may be reproduced or transmitted in any form by any means without the prior written permission for reprints and excerpts from the publisher. Redistribution or other use that violates the fair use priviledge under U.S. copyright laws (see 17 USC107) or that otherwise violates the Safari Terms of Service is strictly prohibited.


Chapter 9. Custom tags are powerful

XVLQJ -67/

7HICH ERG\ FRQWHQW! ELEMENT COMBINATIONS IN THE 4,$ ARE VALID FOR THE FOLLOWING *30 SNIPPET #HOOSE ALL THAT APPLY P\ WDJ ! P\ WDJ D ´ ´ ! D ! P\ WDJ ! YDOXH ^D` P\ WDJ ! P\ WDJ !

pendix JSP.C3-30) (JSP v2.0 Ap 21 and s pg speciĂžcally 3-

so it must have at -Tag1 includes scripting code only shown least ÔJSPÕ body-content. Tag2alsois cont ÔJSPÕ as an empty tag, but it could. Tag3 containains no tent -con body Õ tless or Ôscrip Õ or scripting code so it may have either ÔJSP . tent -con body Õ tless Ôscrip

R ! TAG BODY CONTENT IS HPSW\ TAG BODY CONTENT IS -63 TAG BODY CONTENT IS VFULSWOHVV

-Option A is invalid because tag1 cannot be ÔemptyÕ.

R " TAG BODY CONTENT IS -63 TAG BODY CONTENT IS HPSW\ TAG BODY CONTENT IS VFULSWOHVV

R # TAG BODY CONTENT IS -63 TAG BODY CONTENT IS -63 TAG BODY CONTENT IS -63

R $ TAG BODY CONTENT IS VFULSWOHVV TAG BODY CONTENT IS -63 TAG BODY CONTENT IS -63

-Option D is invalid because tag1 cannot be ÔscriptlessÕ.

R % TAG BODY CONTENT IS -63 TAG BODY CONTENT IS VFULSWOHVV TAG BODY CONTENT IS VFULSWOHVV

!SSUMING THE APPROPRIATE WDJOLE DIRECTIVES WHICH ARE VALID EXAMPLES OF CUSTOM TAG USAGE #HOOSE ALL THAT APPLY

(JSP v2.0 section

7)

R ! IRR EDU ! R " P\ WDJ! P\ WDJ! -Option C is invalid because R # P\WDJ YDOXH ´[´ ! there is no preĂžx. R $ F RXW YDOXH ´[´ ! R % MVS VHW3URSHUW\ QDPH ´D´ SURSHUW\ ´E´ YDOXH ´F´ !

-Option E is invalid because this is an example of a JSP standard action, not a custom tag. \RX DUH KHUH

Chapter 9. Custom tags are powerful Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher: O'Reilly Prepared for Stephen Goss, Safari ID: stephengoss@gmx.net Print Publication Date: 8/1/2004 User number: 747221 Copyright 2007, Safari Books Online, LLC. This PDF is exclusively for your use in accordance with the Safari Terms of Service. No part of it may be reproduced or transmitted in any form by any means without the prior written permission for reprints and excerpts from the publisher. Redistribution or other use that violates the fair use priviledge under U.S. copyright laws (see 17 USC107) or that otherwise violates the Safari Terms of Service is strictly prohibited.


Chapter 9. Custom tags are powerful

PRFN DQVZHUV

48)

'IVEN THE FOLLOWING SCRIPTLET CODE VHOHFW QDPH ¶VW\OH,G¶! %HHU6W\OHV>@ VW\OHV EHHU6HUYLFH JHW6W\OHV IRU LQW L L VW\OHV OHQJWK L ^ %HHU6W\OH VW\OH VW\OHV>L@ ! RSWLRQ YDOXH ¶ VW\OH JHW2EMHFW,' !¶! VW\OH JHW7LWOH ! RSWLRQ! ` ! VHOHFW!

(JSTL v1.1 pg 6-

7HICH *34, CODE SNIPPET PRODUCES THE SAME RESULT

R ! VHOHFW QDPH ¶VW\OH,G¶! F IRU DUUD\ ¶ ^EHHU6HUYLFH VW\OHV`¶! RSWLRQ YDOXH ¶ ^LWHP REMHFW,'`¶! ^LWHP WLWOH` RSWLRQ! F IRU! VHOHFW! -Option B is correct because R " VHOHFW QDPH ¶VW\OH,G¶!

it uses the proper JSTL tag/attribute names.

F IRU(DFK YDU ¶VW\OH¶ LWHPV ¶ ^EHHU6HUYLFH VW\OHV`¶! RSWLRQ YDOXH ¶ ^VW\OH REMHFW,'`¶! ^VW\OH WLWOH` RSWLRQ! F IRU(DFK! VHOHFW!

R # VHOHFW QDPH ¶VW\OH,G¶! F IRU YDU ¶VW\OH¶ DUUD\ ¶ ^EHHU6HUYLFH VW\OHV`¶! RSWLRQ YDOXH ¶ ^VW\OH REMHFW,'`¶! ^VW\OH WLWOH` RSWLRQ! F IRU! VHOHFW!

R $ VHOHFW QDPH ¶VW\OH,G¶! F IRU(DFK YDU ¶VW\OH¶ DUUD\ ¶ ^EHHU6HUYLFH VW\OHV`¶! RSWLRQ YDOXH ¶ ^VW\OH REMHFW,'`¶! ^VW\OH WLWOH` RSWLRQ! F IRU! VHOHFW!

FKDSWHU

Chapter 9. Custom tags are powerful Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher: O'Reilly Prepared for Stephen Goss, Safari ID: stephengoss@gmx.net Print Publication Date: 8/1/2004 User number: 747221 Copyright 2007, Safari Books Online, LLC. This PDF is exclusively for your use in accordance with the Safari Terms of Service. No part of it may be reproduced or transmitted in any form by any means without the prior written permission for reprints and excerpts from the publisher. Redistribution or other use that violates the fair use priviledge under U.S. copyright laws (see 17 USC107) or that otherwise violates the Safari Terms of Service is strictly prohibited.


Chapter 10. When even JSTL is not enough...

FXVWRP WDJ GHYHORSPHQW

:KHQ HYHQ -67/ LV QRW HQRXJK %XW ZK\" ZK\ GLGQ·W \RX WHOO KLP \RX FRXOG GR LW"

, GLGQ·W NQRZ DERXW FXVWRP WDJV , WKRXJKW , ZDV VWXFN ZLWK RQO\ -67/ DQG QRWKLQJ LQ -67/ FRXOG GR ZKDW WKH PDQDJHU ZDQWHG 2K LI RQO\ ,·G NQRZQ , FRXOG EXLOG P\ RZQ EXW LW·V WRR ODWH IRU PH /HDUQ WKLV DQG VDYH \RXUVHOI

6RPHWLPHV -67/ DQG VWDQGDUG DFWLRQV DUHQ·W HQRXJK :KHQ \RX QHHG VRPHWKLQJ FXVWRP DQG \RX GRQ¶W ZDQW WR JR EDFN WR VFULSWLQJ \RX FDQ ZULWH \RXU RZQ WDJ KDQGOHUV 7KDW ZD\ \RXU SDJH GHVLJQHUV FDQ XVH \RXU WDJ LQ WKHLU SDJHV ZKLOH DOO WKH KDUG ZRUN LV GRQH EHKLQG WKH VFHQHV LQ \RXU WDJ KDQGOHU FODVV %XW WKHUH DUH WKUHH GLIIHUHQW ZD\V WR EXLOG \RXU RZQ WDJ KDQGOHUV VR WKHUH¶V D ORW WR OHDUQ 2I WKH WKUHH WZR ZHUH LQWURGXFHG ZLWK -63 WR PDNH \RXU OLIH HDVLHU 6LPSOH 7DJV DQG 7DJ )LOHV %XW \RX VWLOO KDYH WR OHDUQ DERXW &ODVVLF WDJV IRU WKDW ULGLFXORXVO\ UDUH RFFDVLRQ ZKHQ QHLWKHU RI WKH RWKHU WZR ZLOO GR ZKDW \RX ZDQW &XVWRP WDJ GHYHORSPHQW JLYHV \RX YLUWXDOO\ XQOLPLWHG SRZHU LI \RX FDQ OHDUQ WR ZLHOG LW WKLV LV D QHZ FKDSWHU

Chapter 10. When even JSTL is not enough... Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 10. When even JSTL is not enough...

RI¿FLDO 6XQ H[DP REMHFWLYHV

%XLOGLQJ D &XVWRP 7DJ /LEUDU\

&RYHUDJH 1RWHV

Copyright Safari Books Online #729515 'HVFULEH WKH VHPDQWLFV RI WKH ³&ODVVLF´ FXVWRP

!LTHOUGH OBJECTIVE DOESN T EXPLICITLY MENTION THE LIFECYCLE METHODS ASSOCIATED WITH "ODY4AG DO)NIT"ODY AND SET"ODY#ONTEXT YOU CAN EXPECT TO SEE THEM ON THE EXAM %VERYTHING YOU NEED TO KNOW RELATED TO #LASSIC TAGS IS COVERED IN THIS CHAPTER INCLUDING THINGS YOU MIGHT NOT INFER FROM OBJECTIVE

8VLQJ WKH 3DJH&RQWH[W $3, ZULWH WDJ KDQGOHU

/BJECTIVE 0AGE#ONTEXT !0) IS COVERED ONLY VERY BRIEmY IN THIS CHAPTER BECAUSE MOST OF WHAT YOU NEED TO KNOW ABOUT THE 0AGE#ONTEXT !0) HAS ALREADY BEEN COVERED EARLIER IN THE BOOK 6IRTUALLY ALL OF THIS OBJECTIVE IS ABOUT USING 0AGE#ONTEXT TO ACCESS IMPLICIT VARIABLES AND SCOPED ATTRIBUTES BOTH COVERED IN THE h3CRIPTLESS *30v CHAPTER ALTHOUGH WE DO PROVIDE A ONE PAGE SUMMARY AGAIN IN THIS CHAPTER

WDJ HYHQW PRGHO ZKHQ HDFK HYHQW PHWKRG GR6WDUW7DJ GR$IWHU%RG\ DQG GR(QG7DJ

LV H[HFXWHG DQG H[SODLQ ZKDW WKH UHWXUQ YDOXH IRU HDFK HYHQW PHWKRG PHDQV DQG ZULWH D WDJ KDQGOHU FODVV

FRGH WR DFFHVV WKH -63 LPSOLFLW YDULDEOHV DQG DFFHVV ZHE DSSOLFDWLRQ DWWULEXWHV

*LYHQ D VFHQDULR ZULWH WDJ KDQGOHU FRGH WR DFFHVV WKH SDUHQW WDJ DQG DQ DUELWUDU\ WDJ DQFHVWRU

'HVFULEH WKH VHPDQWLFV RI WKH ³6LPSOH´ FXVWRP WDJ HYHQW PRGHO ZKHQ WKH HYHQW PHWKRG GR7DJ

LV H[HFXWHG ZULWH D WDJ KDQGOHU FODVV DQG H[SODLQ WKH FRQVWUDLQWV RQ WKH -63 FRQWHQW ZLWKLQ WKH WDJ

'HVFULEH WKH VHPDQWLFV RI WKH 7DJ )LOH PRGHO GHVFULEH WKH ZHE DSSOLFDWLRQ VWUXFWXUH IRU WDJ ¿OHV ZULWH D WDJ ¿OH DQG H[SODLQ WKH FRQVWUDLQWV RQ WKH -63 FRQWHQW LQ WKH ERG\ RI WKH WDJ

FKDSWHU

Chapter 10. When even JSTL is not enough... Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 10. When even JSTL is not enough...

FXVWRP WDJ GHYHORSPHQW

, OLNH WKH LGHD RI KDYLQJ UHXVDEOH FKXQNV EXW MVS LQFOXGH! DQG F LPSRUW! DUHQ·W SHUIHFW 7KHUH·V QR VWDQGDUG IRU GLUHFWRULHV WR SXW WKH LQFOXGHG ÀOHV LQ WKH -63 LV KDUG WR UHDG DQG WKH IDFW WKDW \RX PDNH QHZ UHTXHVW SDUDPHWHUV WR VHQG VRPHWKLQJ WR WKH LQFOXGHG ÀOH IHHOV ZURQJ

1VKT]LM[ IVL QUXWZ\[ KIV JM UM[[a 5SING JSP INCLUDE OR C IMPORT LETS YOU ADD REUSABLE CHUNKS OF CONTENT DYNAMICALLY TO YOUR PAGES !ND YOU CAN EVEN CUSTOMIZE HOW THE INCLUDED lLE BEHAVES BY SETTING NEW REQUEST PARAMETERS THAT THE INCLUDED lLE CAN USE 3URE IT WORKS lNE "UT SHOULD YOU REALLY HAVE TO CREATE NEW REQUEST PARAMETERS JUST TO GIVE THE INCLUDED lLE SOME CUSTOMIZING INFORMATION !REN T REQUEST PARAMETERS SUPPOSED TO REPRESENT FORM DATA SENT FROM THE CLIENT AS PART OF THE REQUEST 7HILE THERE MIGHT BE GOOD REASONS TO ADD OR CHANGE REQUEST PARAMETERS IN YOUR APP USING THEM TO SEND SOMETHING TO THE INCLUDED lLE ISN T THE CLEANEST APPROACH 5NTIL *30 THERE WASN T A STANDARD WAY TO DEPLOY INCLUDED lLESˆYOU COULD PUT THE INCLUDED PIECES JUST ABOUT ANYWHERE IN THE WEB APP !ND A *30 WITH A BUNCH OF JSP INCLUDE OR C IMPORT TAGS ISN T THE EASIEST THING TO READ 7OULDN T IT BE BETTER IF THE TAG ITSELF TOLD YOU SOMETHING ABOUT THE THING BEING INCLUDED 7OULDN T IT BE NICE TO SAY SOMETHING LIKE X LOGO(EADER OR X NAV"AR 9OU KNOW WHERE THIS IS GOING

\RX DUH KHUH

Chapter 10. When even JSTL is not enough... Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 10. When even JSTL is not enough...

7DJ )LOHV

<IO .QTM[" TQSM QVKT]LM WVTa JM\\MZ 7ITH 4AG &ILES YOU CAN INVOKE REUSABLE CONTENT USING A CUSTOM TAG INSTEAD OF THE GENERIC JSP INCLUDE OR C IMPORT 9OU CAN THINK OF 4AG &ILES AS A KIND OF hTAG HANDLER LITEv BECAUSE THEY LET PAGE DEVELOPERS CREATE CUSTOM TAGS WITHOUT HAVING TO WRITE A COMPLICATED *AVA TAG HANDLER CLASS BUT 4AG &ILES ARE REALLY JUST GLORIl ED INCLUDES

6LPSOHVW ZD\ WR PDNH DQG XVH D 7DJ )LOH 7DNH DQ LQFOXGHG ¿ OH OLNH ³+HDGHU MVS´ DQG UHQDPH LW ZLWK D WDJ H[WHQVLRQ

LPJ VUF ´LPDJHV :HE 6HUYLFHV MSJ´ ! EU!

LPJ VUF ´LPDJHV :HE 6HU YLFHV MSJ´ !

LPJ VUF ´LPDJHV :HE 6HU YLFHV MSJ´

UHQDPH

+HDGHU WDJ

+HDGHU MVS

This is the entire Ăžle... rememb er, we stripped out the opening and closing <html> <body> tags, so they wonĂ•t be duplicated in the Ăžand nal JSP. 3XW WKH WDJ Âż OH Âł+HDGHU WDJ´ LQ D GLUHFWRU\ QDPHG ÂłWDJV´ LQVLGH WKH Âł:(% ,1)´ GLUHFWRU\

:(% ,1)

WDJV 3XW D WDJOLE GLUHFWLYH ZLWK D WDJGLU DWWULEXWH LQ WKH -63 DQG LQYRNH WKH WDJ

LPJ VUF ´LPDJHV :HE 6HUYLFHV MSJ´ !

# WDJOLE SUH¿ [ ´P\7DJV´ WDJGLU ´ :(% ,1) WDJV´ ! KWPO! ERG\!

P\7DJV +HDGHU !

Use the ÒtagdirÓ attribute in th taglib directive e we use with TL, instead of the ÒuriÓ Ds for tag libra ries.

+HDGHU WDJ

The name of th e tag is simply the tag Þle! (m the name of inus the .tag ex So instead of: tension) :HOFRPH WR RXU VLWH <jsp:include page=ÓHeader.jspÓ/> ERG\! KWPO! we now have: <myTags:Header/>

FKDSWHU

Chapter 10. When even JSTL is not enough... Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 10. When even JSTL is not enough...

FXVWRP WDJ GHYHORSPHQW

*]\ PW_ LW aW] [MVL Q\ XIZIUM\MZ[' 7HEN WE INCLUDED A l LE USING JSP INCLUDE WE USED THE JSP PARAM TAG INSIDE THE JSP INCLUDE TO PASS INFORMATION TO THE INCLUDED l LE 4O REFRESH YOUR MEMORY ON HOW IT WORKS WITH JSP INCLUDE

7KH ROG ZD\ $Q LQFOXGHG À OH WKDW XVHV D SDUDP FRPLQJ IURP D MVS SDUDP! LQ WKH FDOOLQJ -63

TE the COMPLE Again, this leis, not a snippet. included Ăž

LPJ VUF ´LPDJHV :HE 6HUYLFHV MSJ´ ! EU! HP! VWURQJ! ^SDUDP VXE7LWOH` UD VWURQJ! HP!

7KH ROG ZD\ 7KH -63 ZLWK WKH MVS LQFOXGH! 3 Z DQG MVS SDUDP!

eter request param Sets a newcluded page can use like in that the R request param. any OTHE

KWPO! ERG\! !

MVS LQFOXGH SDJH ´+HDGHU MVS´! GH MVS SDUDP QDPH U ´VXE7LWOH´ YDOXH ´:H WDNH WKH VWLQJ RXW RI 62$3 ´ ! MVS LQFOXGH! EU! &RQWDFW XV DW ^LQLW3DUDP PDLQ(PDLO` ERG\! KWPO!

7KH UHVXOW KWWS ORFDOKRVW WHVWV &RQWDFW MVS

:H WDNH WKH VWLQJ RXW RI 62$3

This is from the included Ăžle. was passed This subtitle lling JSP. in by the ca

&RQWDFW XV DW OLNHZHFDUH#ZLFNHGO\VPDUW FRP

This is in the calling JSP.

\RX DUH KHUH

Chapter 10. When even JSTL is not enough... Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 10. When even JSTL is not enough...

7DJ )LOH DWWULEXWHV

<W I <IO .QTM aW] LWVÂź\ [MVL ZMY]M[\ XIZIUM\MZ[ aW] [MVL \IO I\\ZQJ]\M[ 9OU INVOKE A 4AG &ILE WITH A TAG AND TAGS CAN HAVE ATTRIBUTES 3O IT S ONLY NATURAL THAT THE 4AG &ILE DEVELOPER MIGHT WANT TO INVOKE THE TAG WITH ATTRIBUTES ATTRIBUTES THAT GET SENT TO THE 4AG &ILE

,QYRNLQJ WKH WDJ IURP WKH -63 %HIRUH XVLQJ MVS SDUDP! WR VHW D UHTXHVW SDUDPHWHU

MVS LQFOXGH SDJH ´+HDGHU MVS´! MVS SDUDP QDPH ´VXE7LWOH´ YDOXH ´:H WDNH WKH VWLQJ RXW RI 62$3 ´ ! MVS LQFOXGH! $IWHU XVLQJ D 7DJ ZLWK DQ DWWULEXWH

P\7DJV +HDGHU VXE7LWOH ´:H WDNH WKH 6WULQJ RXW RI 62$3´ !

8VLQJ WKH DWWULEXWH LQ WKH 7DJ )LOH %HIRUH XVLQJ D UHTXHVW SDUDP YDOXH

HP! VWURQJ! ^SDUDP VXE7LWOH` VWURQJ! HP! $IWHU XVLQJ D 7DJ )LOH DWWULEXWH

e actual This is inside thher words, Tag File (in otĂžle). the included

HP! VWURQJ! ^VXE7LWOH` VWURQJ! HP! EU!

MXVW $* VFRSH 7KDW¡V ULJKW $OO WDJ DWWULEXWHV KDYH 7 KH WDJ DWWULEXWHV JR G W RVH V FO DJ L KH W WKH WDJ 2QFH W RXW RI VFRSH S SDUDP! YDOXH JRHV LQ DV KHVH²WKH MVS LQFOXGH! MV PHPEHU <RX KDYH WR EH FOHDU DERXW W UHTXHVW VFRSHG DWWULEXWH UH DV D DPH KH V QRW W DWœV FDPH D UHTXHVW SDUDPHWHU 7K WR WKH ZHE DSS DV WKRXJK LW RRNV P! O SDUD MVS U WKH XVLQJ LW²WKH 7KH QDPH YDOXH SDLU IR WKH UHDVRQV ZH '21œ7 OLNH H RI œV RQ 7KDW LRQ R PLVV LQ ZLWK D IRUP VXE QGV XS YLVLEOH WR DQ\ FRPS 1/< WR WKH LQFOXGHG ¿ OH H V RU -63V WR ZKLFK UYOHW YDOXH \RX PHDQW WR SDVV 2 V VH FK D W VX TXHV SDUW RI WKLV UH QHQW LQ WKH ZHE DSS WKDW LV D WR WKH UHTXHVW LV IRUZDUGHG LOHV LV WKDW WKH\œUH VFRSHG ERXW WDJ DWWULEXWHV IRU 7DJ ) %XW WKH QLFH FOHDQ WKLQJ D 7KLV ZLOO 127 ZRUN WLRQV SOLFD H LP Z WK NQR \RX WKH WDJ LWVHOI -XVW EH VXUH

,1) WDJV´ ! 7DJV´ WDJGLU ´ :(% # WDJOLE SUHÂż [ ´P\ KWPO! ERG\! J RXW RI 62$3´ ! OH ´:H WDNH WKH 6WULQ P\7DJV +HDGHU VXE7LW he T k! EU! ope. s wonĂ•t wor

^VXE7LWOH`

ERG\! KWPO!

Thi out of sc attribute is

FKDSWHU

Chapter 10. When even JSTL is not enough... Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 10. When even JSTL is not enough...

FXVWRP WDJ GHYHORSPHQW

:DLW VRPHWKLQJ·V QRW ULJKW KHUH +RZ GRHV WKH SHUVRQ ZULWLQJ WKH -63 HYHQ .12: WKDW WKH WDJ KDV WKDW DWWULEXWH" :KHUH·V WKH 7/' WKDW GHVFULEHV WKH DWWULEXWH W\SH"

)ZMV¼\ \IO I\\ZQJ]\M[ LMKTIZML QV \PM <4,' 7ITH CUSTOM TAGS INCLUDING THE *34, THE TAG ATTRIBUTES ARE DElNED IN THE 4,$ 2EMEMBER 4HIS IS THE 4,$ FROM THE CUSTOM MY ADVICE TAG FROM THE LAST CHAPTER WDJ! GHVFULSWLRQ!UDQGRP DGYLFH GHVFULSWLRQ! QDPH!DGYLFH QDPH! WDJ FODVV!IRR $GYLVRU7DJ+DQGOHU WDJ FODVV! ERG\ FRQWHQW!HPSW\ ERG\ FRQWHQW! DWWULEXWH! QDPH!XVHU QDPH! UHTXLUHG!WUXH UHTXLUHG! UWH[SUYDOXH!WUXH UWH[SUYDOXH! DWWULEXWH! WDJ!

3O THESE ARE THE THINGS THE DEVELOPER WHO IS USING A TAG NEEDS TO KNOW 7HAT S THE ATTRIBUTE NAME )S IT OPTIONAL OR REQUIRED #AN IT BE AN EXPRESSION OR MUST IT BE ONLY A 3TRING LITERAL "UT WHILE YOU DO SPECIFY CUSTOM TAG ATTRIBUTES IN A 4,$ YOU DO ./4 SPECIFY TAG lLE ATTRIBUTES IN A 4,$ 4HAT MEANS WE STILL HAVE A PROBLEMˆHOW DOES THE PAGE DEVELOPER KNOW WHAT ATTRIBUTES THE TAG ACCEPTS AND OR REQUIRES 4URN THE PAGE

\RX DUH KHUH

Chapter 10. When even JSTL is not enough... Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 10. When even JSTL is not enough...

DWWULEXWH GLUHFWLYH

<IO .QTM[ ][M \PM I\\ZQJ]\M LQZMK\Q^M 4HERE S A SHINY NEW TYPE OF DIRECTIVE AND IT S JUST FOR 4AG &ILES .OTHING ELSE CAN USE IT )T S JUST LIKE THE ATTRIBUTE SUB ELEMENT IN THE TAG SECTION OF THE 4,$ FOR A CUSTOM TAG

ribute the att s n a e m This optional. is not

,QVLGH WKH 7DJ )LOH +HDGHU WDJ

It can be a String literal OR an expression.

# DWWULEXWH QDPH ´VXE7LWOH´ UHTXLUHG ´WUXH´ UWH[SUYDOXH ´WUXH´ ! LPJ VUF ´LPDJHV :HE 6HUYLFHV MSJ´ ! EU! E 6H HV HP! VWURQJ! ^VXE7LWOH` VWURQJ! HP! EU! WOH U

,QVLGH WKH -63 WKDW XVHV WKH WDJ # WDJOLE SUH¿ [ ´P\7DJV´ WDJGLU 7D ´ :(% ,1) WDJV´ ! KWPO! ERG\! P\7DJV +HDGHU VXE7LWOH ´:H WDNH WKH 6WULQJ RXW RI 62$3´ ! LW EU! &RQWDFW XV DW ^LQLW3DUDP PDLQ(PDLO` ERG\! KWPO!

:KDW KDSSHQV LI \RX GR 127 KDYH WKH DWWULEXWH ZKHQ \RX XVH WKH WDJ

KWWS ORFDOKRVW WHVWV &RQWDFW MVS

+773 6WDWXV P\7DJV +HDGHU !

7\SH ([FHSWLRQ UHSRUW 'HVFULSWLRQ 7KH VHUYHU HQFRXQWHUHG DQ LQWHUQDO HUURU WKDW SUHYHQWHG LW IURP IXOILOOLQJ WKLV UHTXHVW

You canÕt you canÕt ledo this... the subT ave out le attribut because tit e attribute he tag ÞleÕs d ir ec says require tive d=ÓtrueÓ.

([FHSWLRQ

:H WDNH WKH VWLQJ RXW RI 62$3

RUJ DSDFKH MDVSHU -DVSHU([FHSWLRQ &RQWDFW MVS $FFRUGLQJ WR WKH 7/' RU WKH WDJ Âż OH DWWULEXWH VXE7LWOH LV PDQGDWRU\ IRU WDJ &RQWDFW XV DW OLNHZHFDUH#ZLFNHGO\VPDUW FRP +HDGHU RUJ DSDFKH MDVSHU FRPSLOHU 'HIDXOW(UURU+DQGOHU MVS(UURU 'HIDXOW(UURUDQGOHU MDYD

RUJ DSDFKH MDVSHU FRPSLOHU (UURU'LVSDWFKHU GLVSDWFK (UURU'LVSDWFKHU

FKDSWHU

Chapter 10. When even JSTL is not enough... Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 10. When even JSTL is not enough...

FXVWRP WDJ GHYHORSPHQW

?PMV IV I\\ZQJ]\M ^IT]M Q[ ZMITTa JQO )MAGINE YOU HAVE A TAG ATTRIBUTE THAT MIGHT BE AS LONG AS SAY A PARAGRAPH 3TICKING THAT IN THE OPENING TAG COULD GET UGLY 3O YOU CAN CHOOSE TO PUT CONTENT IN THE BODY OF THE TAG AND THEN USE THAT AS A KIND OF ATTRIBUTE 4HIS TIME WE LL TAKE THE SUB4ITLE ATTRIBUTE OUT OF THE TAG AND INSTEAD MAKE IT THE BODY OF THE MY4AGS (EADER TAG

,QVLGH WKH 7DJ )LOH +HDGHU WDJ

7UXVW PH RQ WKLV 6RPHWLPHV LW¡V JRRG WR KDYH D %2'<

ed the We no longer netiv e! attribute direc

LPJ VUF ´LPDJHV :HE 6HUYLFHV MSJ´ ! EU! HP! VWURQJ! MVS GR%RG\ ! VWURQJ! HP! EU!

This says, Ă’Take whatever is body of the tag used to in the tag Ăžle, and stick it here.Ă“invoke this

,QVLGH WKH -63 WKDW XVHV WKH WDJ # WDJOLE SUH¿[ ´P\7DJV´ WDJGLU ´ :(% ,1) WDJV´ ! KWPO! ERG\!

P\7DJV +HDGHU! :H WDNH WKH VWLQJ RXW RI 62$3 2. VR LWÂśV QRW -LQL EU! EXW ZHÂśOO KHOS \RX JHW WKURXJK LW ZLWK WKH OHDVW EU! IUXVWUDWLRQ DQG KDLU ORVV

P\7DJV +HDGHU!

Now we just give the tag of putting all this as the avalubody, instead attribute in the opening tag. e of an

EU! &RQWDFW XV DW ^LQLW3DUDP PDLQ(PDLO` ERG\! KWPO!

%XW ZH¡UH EDFN WR WKH VDPH SUREOHP ZH KDG EHIRUH³ZLWKRXW D 7/' ZKHUH GR \RX GHFODUH WKH ERG\ FRQWHQW W\SH"

\RX DUH KHUH

Chapter 10. When even JSTL is not enough... Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 10. When even JSTL is not enough...

WDJ GLUHFWLYH ERG\ FRQWHQW

,MKTIZQVO J WLa KWV\MV\ NWZ I <IO .QTM 4HE ONLY WAY TO DECLARE BODY CONTENT TYPE FOR A 4AG &ILE IS WITH ANOTHER NEW 4AG &ILE DIRECTIVE THE TAG DIRECTIVE 4HE TAG DIRECTIVE IS THE 4AG &ILE EQUIVALENT OF THE PAGE DIRECTIVE IN A *30 PAGE AND IT HAS A LOT OF THE SAME ATTRIBUTES PLUS AN IMPORTANT ONE YOU WON T l ND IN PAGE DIRECTIVEˆBODY CONTENT &OR A CUSTOM TAG THE BODY CONTENT ELEMENT INSIDE THE TAG ELEMENT OF A 4,$ IS MANDATORY "UT A 4AG &ILE DOES NOT HAVE TO DECLARE BODY CONTENT IF THE DEFAULTˆSCRIPTLESSˆIS ACCEPTABLE ! VALUE OF SCRIPTLESS MEANS YOU CAN T HAVE SCRIPTING ELEMENTS !ND SCRIPTING ELEMENTS REMEMBER ARE SCRIPTLETS SCRIPTLET EXPRESSIONS AND DECLARATIONS )N FACT 4AG &ILE BODIES ARE NEVER ALLOWED TO HAVE SCRIPTING SO IT S NOT AN OPTION "UT YOU CAN DECLARE BODY CONTENT USING THE TAG DIRECTIVE WITH A BODY CONTENT ATTRIBUTE IF YOU WANT ONE OF THE OTHER TWO OPTIONS EMPTY OR TAGDEPENDENT ,QVLGH WKH 7DJ )LOH ZLWK D WDJ GLUHFWLYH +HDGHU WDJ

<RX &$1127 XVH VFULSWLQJ FRGH LQ WKH ERG\ RI D 7DJ )LOH WDJ 7KH ERG\ FRQWHQW RI D 7DJ )LOH GHIDXOWV WR ´VFULSWOHVV¾ VR \RX GRQ¡W KDYH WR GHFODUH ERG\ FRQWHQW XQOHVV \RX ZDQW RQH RI WKH 27+(5 WZR RSWLRQV ´HPSW\¾ QRWKLQJ LQ WKH WDJ ERG\ RU ´WDJGHSHQGHQW¾ WUHDWV WKH ERG\ DV SODLQ WH[W

# DWWULEXWH QDPH ´IRQW&RORU´ UHTXLUHG ´WUXH´ !

n text, which ent will be treated likeed.plaiThe only other This means the body-cont luat eva be T NO s will ). means EL, tags, and script Ó or ÒscriptlessÓ (the default legal values here are Òempty

# WDJ ERG\ FRQWHQW QW ´WDJGHSHQGHQW´ !

LPJ VUF ´LPDJHV :HE 6HUYLFHV MSJ´ ! EU! JH HU HP! VWURQJ! IRQW FRORU IR U ´ ^IRQW&RORU`´! MVS GR%RG\ ! IRQW! VWURQJ! HP! EU!

,QVLGH WKH -63 WKDW WK XVHV WKH WDJ # WDJOLE SUH¿ SU [ ´P\7DJV´ WDJGLU V´ ´ :(% ,1) WDJV´ ! KWPO!

P\7DJV +HDGHU IRQW&RORU +HDGH RO ´ ´!

h an attribute ÒfontColorÓ is declared wit directive in the Tag File.

:H WDNH WKH VWLQJ RXW RI 62$3 2. VR LWÂśV QRW -LQL EU! H WKH EXW ZHÂśOO KHOS \RX JHW WKURXJK LW ZLWK WKH OHDVW EU! IUXVWUDWLRQ DQG KDLU ORVV

P\7DJV +HDGHU! EU! &RQWDFW XV DW ^LQLW3DUDP PDLQ(PDLO` ERG\! KWPO!

The type for this body-cont declared in the Tag File usin ent is g a tag directive with a body-cont ent attribute.

FKDSWHU

Chapter 10. When even JSTL is not enough... Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 10. When even JSTL is not enough...

FXVWRP WDJ GHYHORSPHQW

7DJ )LOH ORFDWLRQV

?PMZM \PM +WV\IQVMZ TWWS[ NWZ <IO .QTM[ 4HE #ONTAINER SEARCHES FOR TAG l LES IN FOUR LOCATIONS ! TAG l LE -534 HAVE A 4,$ IF IT S DEPLOYED IN A *!2 BUT IF IT S PUT DIRECTLY INTO THE WEB APP IN h7%" ).& TAGSv OR A SUB DIRECTORY IT DOES NOT NEED A 4,$

'LUHFWO\ LQVLGH :(% ,1) WDJV ,QVLGH D VXE GLUHFWRU\ RI :(% ,1) WDJV

,QVLGH WKH 0(7$ ,1) WDJV

GLUHFWRU\ LQVLGH D -$5 Ă€ OH WKDW¡V LQVLGH :(% ,1) OLE

,QVLGH D VXE GLUHFWRU\ RI

The JSP that invokes the tag.

0(7$ ,1) WDJV LQVLGH D -$5 Ă€ OH WKDW¡V LQVLGH :(% ,1) OLE

# WDJO SUH¿ [ ´P XUL ´ : P\)XQFWLRQV WOG´ !

KWPO! ERG\!

,) WKH WDJ À OH LV GHSOR\HG LQ

:(% ,1)

^PLQH UROO,W `

ERG\! KWPO!

D -$5 WKHUH 0867 EH D 7/' IRU WKH WDJ À OH

XVH7DJ MVS "[PO VLRQ HQFRG ´87) ´"! '2&7<3(

WDJV

# DWWUL EXWH QDPH ´IRQW&RORU´ UHTXLUHG ´WUXH´ ! # WDJ ERG\

OLE

PRUH7DJV

ZHE [PO

-$5

1DY%DU WDJ

# DWWULEXWH QDPH ´IRQW&RORU´ UHTXLUHG ´WUXH´ ! # WDJ ERG\

FODVV!

+HDGHU WDJ

0(7$ ,1)

$GYLVRU7DJ+DQGOHU FODVV

7/'V

IXQFWLRQ! QDPH! UROO,W QDPH! IXQFWLRQ FODVV! IRR 'LFH5ROOHU

IXQFWLRQ

WDJV

# DWWUL EXWH QDPH ´IRQW&RORU´ UHTXLUHG ´WUXH´ ! # WDJ ERG\

The ÒFooter.tag an d ÒCatalogHead.tagÓÓ MU a TLD, since these St have are deployed in a JAtag Þles R.

P\7DJV

FODVV!

FDWDORJ7DJV WOG

A Java class thatom the handles a tag fr library. catalogTags tag

&DWDORJ+HDG WDJ

# DW WULEXWH QDPH ´IRQW&RORU´ UHTXLUHG ´WUXH´ ! # WDJ ERG\

)RRWHU WDJ

\RX DUH KHUH

Chapter 10. When even JSTL is not enough... Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 10. When even JSTL is not enough...

WDJ ¿OH TXHVWLRQV

WKHUH DUH QR

'XPE 4XHVWLRQV

4

$OES THE 4AG &ILE HAVE ACCESS TO THE REQUEST AND RESPONSE IMPLICIT OBJECTS

4,$ ENTRIES FOR A 4AG &ILE DESCRIBE ONLY THE LOCATION OF THE ACTUAL 4AG &ILE 4HE 4,$ FOR A 4AG &ILE LOOKS LIKE THIS

$

9ES 2EMEMBER EVEN THOUGH IT S A TAG FILE IT S GONNA END UP AS PART OF A *30 9OU CAN USE THE IMPLICIT REQUEST AND RESPONSE OBJECTS IF YOU DO SCRIPTING THE NORMAL %, IMPLICIT OBJECTS ARE ALWAYS THERE AS WELL AND YOU HAVE ACCESS TO A *SP#ONTEXT AS WELL 9OU DON T HAVE A 3ERVLET#ONTEXT THOUGHˆA 4AG &ILE USES A *SP#ONTEXT INSTEAD OF A 3ERVLET#ONTEXT

TAGLIB TLIB VERSION TLIB VERSION URI MY4AG,IBRARY URI TAG FILE NAME (EADER NAME PATH -%4! ).& TAGS (EADER TAG PATH TAG FILE

4

TAGLIB

) THOUGHT ON THE OPPOSITE PAGE YOU JUST SAID WE COULD NOT DO SCRIPTING IN A 4AG &ILE

$

.O THAT S NOT EXACTLY WHAT WE SAID 9OU CAN DO SCRIPTING IN A 4AG &ILE BUT YOU CAN T DO SCRIPTING INSIDE THE BODY OF THE TAG USED TO INVOKE THE 4AG &ILE

4

#AN YOU COMBINE 4AG &ILES AND 4,$S FOR CUSTOM TAGS IN THE SAME DIRECTORY

$

.OTICE THAT DECLARING A TAG FILE IS QUITE DIFFERENT FROM DECLARING AN ACTUAL TAG

4

7HY DID THEY DO IT THIS WAY 7OULDN T IT BE SO MUCH SIMPLER TO JUST HAVE CUSTOM TAGS AND 4AG &ILES DECLARED THE SAME WAY IN A 4,$ "UT ./ INSTEAD THEY HAD TO COME UP WITH THIS WHOLE OTHER THING WHERE YOU HAVE TO USE NEW DIRECTIVES FOR DElNING THE ATTRIBUTES AND BODY CONTENT 3O WHY ARE TAGS AND 4AG &ILES DONE DIFFERENTLY

$

9ES )N FACT IF YOU MAKE A 4,$ THAT REFERENCES YOUR 4AG &ILES THE #ONTAINER WILL CONSIDER BOTH 4AG &ILES AND CUSTOM TAGS MENTIONED IN THE SAME 4,$ AS BELONGING TO THE SAME LIBRARY

/N ONE HAND YES IT WOULD HAVE BEEN SIMPLER IF CUSTOM TAGS AND 4AG &ILES WERE DECLARED IN THE SAME WAY USING A 4,$ 4HE QUESTION IS SIMPLER FOR WHOM &OR A CUSTOM TAG DEVELOPER SURE "UT 4AG &ILES WERE ADDED TO THE SPEC WITH SOMEONE ELSE IN MINDˆPAGE DESIGNERS

4

4AG &ILES GIVE NON *AVA DEVELOPERS A WAY TO BUILD CUSTOM TAGS WITHOUT WRITING A *AVA CLASS TO HANDLE THE TAG S FUNCTIONALITY !ND NOT HAVING TO BUILD A 4,$ FOR THE 4AG &ILE JUST MAKES LIFE EASIER FOR THE 4AG &ILE DEVELOPER 2EMEMBER 4AG &ILES DO NEED A 4,$ IF THE 4AG &ILE IS DEPLOYED IN THE *!2 BUT A NON *AVA PROGRAMMER MIGHT NOT BE USING *!2S ANYWAY

(OLD ONˆ) THOUGHT YOU SAID 4AG &ILES DIDN T HAVE A 4,$ )SN T THAT WHY YOU HAVE TO USE AN ATTRIBUTE DIRECTIVE 3INCE YOU CAN T DECLARE THE ATTRIBUTE IN A 4,$

$

4RICK QUESTION )F YOU DEPLOY YOUR 4AG &ILES IN A *!2 THEY -534 HAVE A 4,$ THAT DESCRIBES THEIR LOCATION "UT IT DOESN T DESCRIBE ATTRIBUTE BODY CONTENT ETC 4HE

4HE BOTTOM LINE CUSTOM TAGS MUST HAVE A 4,$ BUT 4AG &ILES CAN DECLARE ATTRIBUTES AND BODY CONTENT DIRECTLY INSIDE THE 4AG &ILE AND NEED 4,$S ONLY IF THE 4AG &ILE IS IN A *!2

FKDSWHU

Chapter 10. When even JSTL is not enough... Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 10. When even JSTL is not enough...

FXVWRP WDJ GHYHORSPHQW

6KDUSHQ \RXU SHQFLO

0HPRUL]LQJ 7DJ )LOHV %HIRUH ZH PRYH RQ WR D QHZ WRSLF PDNH VXUH \RX FDQ ZULWH RQH \RXUVHOI DQVZHUV DUH DW WKH HQG RI WKH FKDSWHU

)LOO LQ ZKDW ZRXOG \RX PXVW SXW LQWR D 7DJ )LOH WR GHFODUH WKDW WKH 7DJ KDV RQH UHTXLUHG DWWULEXWH QDPHG ³WLWOH´ WKDW FDQ XVH DQ (/ H[SUHVVLRQ DV WKH YDOXH RI WKH DWWULEXWH

!

#

)LOO LQ ZKDW ZRXOG \RX PXVW SXW LQWR D 7DJ )LOH WR GHFODUH WKDW WKH 7DJ PXVW 127 KDYH D ERG\

!

#

0\7HVW$SS

'UDZ D 7DJ )LOH GRFXPHQW LQ HDFK RI WKH ORFDWLRQV ZKHUH WKH &RQWDLQHU ZLOO ORRN IRU 7DJ )LOHV

:(% ,1)

WDJV

PRUH7DJV

OLE

-$5

FODVVHV

IRR

0(7$ ,1)

7/'V

WDJV

P\7DJV \RX DUH KHUH

Chapter 10. When even JSTL is not enough... Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 10. When even JSTL is not enough...

FXVWRP WDJ KDQGOHUV

?PMV aW] VMML UWZM \PIV <IO .QTM[ ;WUM\QUM[ aW] VMML 2I^I 4AG &ILES ARE lNE WHEN YOU RE DOING AN INCLUDEˆWHEN ALL YOU NEED TO HANDLE THE TAG YOU CAN DO FROM ANOTHER *30 RENAMED WITH A TAG EXTENSION AND WITH THE APPROPRIATE DIRECTIVES ADDED "UT SOMETIMES YOU NEED MORE 3OMETIMES YOU NEED GOOD OLD *AVA CODE AND YOU DON T WANT TO DO IT FROM SCRIPTLETS SINCE THAT S WHAT YOU RE TRYING TO PREVENT BY USING TAGS

7DJ ILOHV LPSOHPHQW WKH WDJ IXQFWLRQDOLW\ ZLWK DQRWKHU SDJH XVLQJ -63

7HEN YOU NEED *AVA YOU NEED A CUSTOM TAG HANDLER ! TAG HANDLER AS OPPOSED TO A TAG lLE IS SIMPLY A *AVA CLASS THAT DOES THE WORK OF THE TAG )T S A LITTLE LIKE AN %, FUNCTION EXCEPT MUCH MORE POWERFUL AND mEXIBLE 7HERE %, FUNCTIONS ARE NOTHING MORE THAN STATIC METHODS A TAG HANDLER CLASS HAS ACCESS TO TAG ATTRIBUTES THE TAG BODY AND EVEN THE PAGE CONTEXT SO IT CAN GET SCOPED ATTRIBUTES AND THE REQUEST AND RESPONSE

7DJ KDQGOHUV LPSOHPHQW WKH WDJ IXQFWLRQDOLW\ ZLWK D VSHFLDO -DYD FODVV

#USTOM TAG HANDLERS COME IN TWO mAVORS #LASSIC AND 3IMPLE #LASSIC TAGS WERE ALL YOU HAD IN THE PREVIOUS VERSION OF *30 BUT WITH *30 A NEW AND MUCH SIMPLER MODEL WAS ADDED 9OU LL HAVE A HARD TIME COMING UP WITH REASONS TO USE THE CLASSIC MODEL WHEN YOU NEED A CUSTOM TAG HANDLER BECAUSE THE SIMPLE MODEL ESPECIALLY COMBINED WITH *34, AND TAG lLES CAN HANDLE NEARLY ANYTHING YOU D WANT TO DO "UT WE CAN T DUMP THE CLASSIC MODEL FOR TWO REASONS AND THESE TWO REASONS ARE WHY YOU STILL HAVE TO LEARN IT FOR THE EXAM

7DJ KDQGOHUV FRPH LQ WZR IODYRUV 6LPSOH DQG &ODVVLF

,IKE SCRIPTING #LASSIC TAG HANDLERS ARE OUT THERE AND YOU MIGHT NEED TO READ AND SUPPORT THEM EVEN IF YOU NEVER CREATE ONE YOURSELF 4HERE ARE THOSE RARE SCENARIOS FOR WHICH A CLASSIC TAG HANDLER IS THE BEST CHOICE 4HIS IS PRETTY OBSCURE THOUGH 3O POINT IS BY FAR THE MOST IMPORTANT REASON TO LEARN ABOUT #LASSIC TAGS

FKDSWHU

Chapter 10. When even JSTL is not enough... Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 10. When even JSTL is not enough...

FXVWRP WDJ GHYHORSPHQW

5ISQVO I ;QUXTM \IO PIVLTMZ &OR THE SIMPLEST OF 3IMPLE TAGS THE PROCESS IS SIMPLE

:ULWH D FODVV WKDW H[WHQGV 6LPSOH7DJ6XSSRUW SDFNDJH IRR LPSRUW MDYD[ VHUYOHW MVS WDJH[W 6LPSOH7DJ6XSSRUW PRUH LPSRUWV QHHGHG SXEOLF FODVV 6LPSOH7DJ7HVW H[WHQGV 6LPSOH7DJ6XSSRUW ^ WDJ KDQGOHU FRGH KHUH `

,PSOHPHQW WKH GR7DJ PHWKRG SXEOLF YRLG GR7DJ WKURZV -VS([FHSWLRQ ,2([FHSWLRQ ^ JHW-VS&RQWH[W JHW2XW SULQW ³7KLV LV WKH ODPHVW XVH RI D FXVWRP WDJ´ `

&UHDWH D 7/' IRU WKH WDJ

The doTag() method declares an IOEx you donÕt have to wrap the print in a ception, so try/catch.

WDJOLE ! WOLE YHUVLRQ! WOLE YHUVLRQ! XUL!VLPSOH7DJV XUL! WDJ!

GHVFULSWLRQ!ZRUVW XVH RI D FXVWRP WDJ GHVFULSWLRQ! QDPH!VLPSOH QDPH! WDJ FODVV!IRR 6LPSOH7DJ7HVW WDJ FODVV! ERG\ FRQWHQW!HPSW\ ERG\ FRQWHQW! WDJ! WDJOLE!

7HVW$SS

# WDJOLE SUH¿ [ ´PLQH´ XUL ´ :(% ,1) P\)XQFWLRQV WOG´ !

KWPO! ERG\! ^PLQH UROO,W `

:(% ,1)

ERG\! KWPO!

XVH7DJ MVS

'HSOR\ WKH WDJ KDQGOHU DQG 7/' 0UT THE 4,$ IN 7%" ).& AND PUT THE TAG HANDLER INSIDE 7%" ).& CLASSES USING THE PACKAGE DIRECTORY STRUCTURE OF COURSE )N OTHER WORDS TAG HANDLER CLASSES GO IN THE SAME PLACE ALL OTHER WEB APP *AVA CLASSES GO

FODVVHV

IXQFWLRQ! QDPH! UROO,W QDPH! IXQFWLRQ FODVV! IRR 'LFH5ROOHU

IXQFWLRQ

VLPSOH WOG

IRR

:ULWH D -63 WKDW XVHV WKH WDJ # WDJOLE SUH¿ [ ´P\7DJV´ XUL ´VLPSOH7DJV´ ! KWPO! ERG\!

P\7DJV VLPSOH ! ERG\! KWPO!

6LPSOH7DJ7HVW FODVV

\RX DUH KHUH

Chapter 10. When even JSTL is not enough... Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 10. When even JSTL is not enough...

JHW-VS%RG\ LQYRNH

) ;QUXTM \IO _Q\P I JWLa )F THE TAG NEEDS A BODY THE 4,$ BODY CONTENT NEEDS TO REmECT THAT AND YOU NEED A SPECIAL STATEMENT IN THE DO4AG METHOD 7KH -63 WKDW XVHV WKH WDJ # WDJOLE SUH¿[ ´P\7DJV´ XUL ´VLPSOH7DJV´ ! KWPO! ERG\! 6LPSOH 7DJ

P\7DJV VLPSOH ! 7KLV LV WKH ERG\ P\7DJV VLPSOH !

e invoke This time, wITH a body... the tag W

ERG\! KWPO!

7KH WDJ KDQGOHU FODVV SDFNDJH IRR LPSRUW MDYD[ VHUYOHW MVS -VS([FHSWLRQ LPSRUW MDYD[ VHUYOHW MVS WDJH[W 6LPSOH7DJ6XSSRUW LPSRUW MDYD LR ,2([FHSWLRQ SXEOLF FODVV 6LPSOH7DJ7HVW H[WHQGV 6LPSOH7DJ6XSSRUW ^ SXEOLF YRLG GR7DJ WKURZV -VS([FHSWLRQ ,2([FHSWLRQ ^ g and JHW-VS%RG\ LQYRNH QXOO the body of the taum ` This says, ÒProcess pon arg ent l nul e Th . seÓ res ` print it to the response rather

7KH 7/' IRU WKH WDJ

s to the means the output goe iter you pass in. wr R HE OT e som an th

"[PO YHUVLRQ ´ ´ HQFRGLQJ ´,62 ´ "! WDJOLE [POQV ´KWWS MDYD VXQ FRP [PO QV M HH´ [POQV [VL ´KWWS ZZZ Z RUJ ;0/6FKHPD LQVWDQFH´ [VL VFKHPD/RFDWLRQ ´KWWS MDYD VXQ FRP [PO QV M HH ZHE MVSWDJOLEUDU\B B [VG´ YHU VLRQ ´ ´! WOLE YHUVLRQ! WOLE YHUVLRQ! XUL!VLPSOH7DJV XUL! WDJ! GHVFULSWLRQ!PDUJLQDOO\ EHWWHU XVH RI D FXVWRP WDJ GHVFULSWLRQ! QDPH!VLPSOH QDPH! have a body, but ts, WDJ FODVV!IRR 6LPSOH7DJ7HVW WDJ FODVV! This says the tag can riptle ERG\ FRQWHQW!VFULSWOHVV ERG\ FRQWHQW! y cannot have scripting (sc the bod ions). rat cla de WDJ! or ns, ssio scripting expre WDJOLE!

FKDSWHU

Chapter 10. When even JSTL is not enough... Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 10. When even JSTL is not enough...

FXVWRP WDJ GHYHORSPHQW

<PM ;QUXTM \ IO )81 ! 3IMPLE TAG HANDLER MUST IMPLEMENT THE 3IMPLE4AG INTERFACE 4HE EASIEST WAY TO DO THAT IS TO EXTEND 3IMPLE4AG3UPPORT AND OVERRIDE JUST THE METHOD YOU NEED DO4AG 9OU DON T HAVE TO USE 3IMPLE4AG3UPPORT BUT WE RECKON OF SIMPLE TAG DEVELOPERS DO -VS7DJ LQWHUIDFH MDYD[ VHUYOHW MVS WDJH[W -VS7DJ

LQWHUIDFH!!

-VS7DJ QR PHWKRGV WKLV LQWHUIDFH LV IRU RUJDQL]DWLRQ DQG SRO\PRUSKLVP

6LPSOH7DJ LQWHUIDFH MDYD[ VHUYOHW MVS WDJH[W 6LPSOH7DJ

LQWHUIDFH!!

6LPSOH7DJ YRLG GR7DJ

-VS7DJ JHW3DUHQW

YRLG VHW-VS%RG\ -VS)UDJPHQW

YRLG VHW-VS&RQWH[W -VS&RQWH[W

YRLG VHW3DUHQW -VS7DJ SDUHQW

6LPSOH7DJ6XSSRUW

These are the lifecyclener calls methods... the Contai is invoked. these whenever a tag er in Can you guess the ordare called? which these methods

You extend this!

MDYD[ VHUYOHW MVS WDJH[W 6LPSOH7DJ6XSSRUW

6LPSOH7DJ6XSSRUW YRLG GR7DJ

-VS7DJ ILQG$QFHVWRU:LWK&ODVV -VS7DJ &ODVV

-VS)UDJPHQW JHW-VS%RG\

-VS&RQWH[W JHW-VS&RQWH[W

-VS7DJ JHW3DUHQW

YRLG VHW-VS%RG\ -VS)UDJPHQW

YRLG VHW-VS&RQWH[W -VS&RQWH[W

SimpleTagSupp of SimpleTag (bort implements the methods anything, so yo ut the doTag() doesnÕt do tag handler). Itu must override it in your convenience me also adds three more useful oneÑgetJthods, including the most spBody().

YRLG VHW3DUHQW -VS7DJ SDUHQW

\RX DUH KHUH

Chapter 10. When even JSTL is not enough... Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 10. When even JSTL is not enough...

6LPSOH WDJ KDQGOHU OLIHF\FOH

<PM TQNM WN I ;QUXTM \IO PIVLTMZ 7HEN A *30 INVOKES A TAG A NEW INSTANCE OF THE TAG HANDLER CLASS IS INSTANTIATED TWO OR MORE METHODS ARE CALLED ON THE HANDLER AND WHEN THE DO4AG METHOD COMPLETES THE HANDLER OBJECT GOES AWAY )N OTHER WORDS THESE HANDLER OBJECTS ARE NOT REUSED :HE &RQWDLQHU

6LPSOH7DJ FODVV

7DJ +DQGOHU 2EMHFW

&RQWDLQHU

/RDG FODVV

6LPSOH+DQGOHU FODVV

lerÕs no-arg Your tag toharndruns. uc constr

,QVWDQWLDWH FODVV QR DUJ FRQVWUXFWRU UXQV

&DOO WKH VHW-VS&RQWH[W -VS&RQWH[W PHWKRG

,I WKH WDJ LV QHVWHG LQYRNHG IURP ZLWKLQ DQRWKHU WDJ FDOO WKH VHW3DUHQW -VS7DJ PHWKRG

You will write these in your class: ,I WKH WDJ KDV DWWULEXWHV FDOO DWWULEXWH VHWWHUV

,I WKH WDJ LV 127 GHFODUHG WR KDYH D ERG\ FRQWHQW! RI HPSW\ $1' WKH WDJ KDV D ERG\ FDOO WKH VHW-VS%RG\ -VS)UDJPHQW PHWKRG

You will ALWAYS override this: &DOO WKH GR7DJ PHWKRG

This gives the handler a reference to a PageContext (a subclass of JspContext ).

A nested tag canh the other communicate wit nested ! tags in which itÕs If the tag is invoked attributes, the setterwith each attribute is called, usingfor JavaBean naming. (ThereÕs a special exception to this that weÕll see later.) y, the body If the tag has a bod s method, as comes in through thi nt. an instance of JspFragme

Now weÕre Þnally rea DO what the tag is meantdytotodo!

FKDSWHU

Chapter 10. When even JSTL is not enough... Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 10. When even JSTL is not enough...

FXVWRP WDJ GHYHORSPHQW

%( WKH &RQWDLQHU /RRN DW HDFK RI WKH 7/' -63 SDLUV $VVXPH WKDW WKH WDJ KDQGOHU GRHVQ·W DFWXDOO\ '2 DQ\WKLQJ 7KHQ DQVZHU WKH IROORZLQJ TXHVWLRQV DERXW HDFK RQH ZKDW·V WKH UHVXOW" ,I LW ZRUNV ZKDW SULQWV RXW" :KLFK PHWKRGV LQ WKH FXVWRP WDJ FODVV DUH LQYRNHG"

WDJ! GHVFULSWLRQ! GHVFULSWLRQ! QDPH!VLPSOH QDPH! WDJ FODVV!IRR 6LPSOH7DJ7HVW WDJ FODVV! ERG\ FRQWHQW!HPSW\ ERG\ FRQWHQW! WDJ!

6LPSOH 7DJ P\7DJV VLPSOH! 7KLV LV WKH ERG\ RI WKH WDJ P\7DJV VLPSOH!

:KDW GR \RX VHH LQ WKH EURZVHU"

,I LW ZRUNV ZKLFK 6LPSOH7DJ OLIHF\FOH PHWKRGV DUH FDOOHG LQ WKH KDQGOHU"

R YRLG GR7DJ R -VS7DJ JHW3DUHQW R YRLG VHW-VS%RG\ R YRLG VHW-VS&RQWH[W R YRLG VHW3DUHQW

WDJ! GHVFULSWLRQ! GHVFULSWLRQ! QDPH!VLPSOH QDPH! WDJ FODVV!IRR 6LPSOH7DJ7HVW WDJ FODVV! ERG\ FRQWHQW!VFULSWOHVV ERG\ FRQWHQW! WDJ!

6LPSOH 7DJ P\7DJV VLPSOH! ^ ` P\7DJV VLPSOH!

:KDW GR \RX VHH LQ WKH EURZVHU"

,I LW ZRUNV ZKLFK 6LPSOH7DJ OLIHF\FOH PHWKRGV DUH FDOOHG LQ WKH KDQGOHU"

R YRLG GR7DJ R -VS7DJ JHW3DUHQW R YRLG VHW-VS%RG\ R YRLG VHW-VS&RQWH[W R YRLG VHW3DUHQW

\RX DUH KHUH

Chapter 10. When even JSTL is not enough... Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 10. When even JSTL is not enough...

6LPSOH 7DJ H[HUFLVH DQVZHUV

%( WKH &RQWDLQHU $QVZHUV

WDJ! GHVFULSWLRQ! GHVFULSWLRQ! QDPH!VLPSOH QDPH! WDJ FODVV!IRR 6LPSOH7DJ7HVW WDJ FODVV! ERG\ FRQWHQW!HPSW\ ERG\ FRQWHQW! WDJ!

6LPSOH 7DJ P\7DJV VLPSOH! 7KLV LV WKH ERG\ RI WKH WDJ P\7DJV VLPSOH!

:KDW GR \RX VHH LQ WKH EURZVHU"

It doesnÕt work because it is supposed to have an empty body. RUJ DSDFKH MDVSHU -DVSHU([FHSWLRQ VLPSOH7DJ MVS

$FFRUGLQJ WR 7/' WDJ P\7DJV VLPSOH PXVW EH HPSW\ EXW LV QRW ,I LW ZRUNV ZKLFK 6LPSOH7DJ OLIHF\FOH PHWKRGV DUH FDOOHG LQ WKH KDQGOHU"

None, because it doesnÕt work.

R YRLG GR7DJ R -VS7DJ JHW3DUHQW R YRLG VHW-VS%RG\ R YRLG VHW-VS&RQWH[W R YRLG VHW3DUHQW

WDJ! GHVFULSWLRQ! GHVFULSWLRQ! QDPH!VLPSOH QDPH! WDJ FODVV!IRR 6LPSOH7DJ7HVW WDJ FODVV! ERG\ FRQWHQW!VFULSWOHVV ERG\ FRQWHQW! WDJ!

6LPSOH 7DJ P\7DJV VLPSOH! ^ ` P\7DJV VLPSOH!

:KDW GR \RX VHH LQ WKH EURZVHU"

6LPSOH 7DJ

,I LW ZRUNV ZKLFK 6LPSOH7DJ OLIHF\FOH PHWKRGV DUH FDOOHG LQ WKH KDQGOHU"

) method The setParent(when the ly on d lle ca is from tag is invoked her tag. ot an N HI WIT g was not Since this taar ent() is tP se , nested d. lle NOT ca

R YRLG GR7DJ R -VS7DJ JHW3DUHQW R YRLG VHW-VS%RG\ R YRLG VHW-VS&RQWH[W R YRLG VHW3DUHQW

FKDSWHU

Chapter 10. When even JSTL is not enough... Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 10. When even JSTL is not enough...

FXVWRP WDJ GHYHORSPHQW

?PI\ QN \PM \IO JWLa ][M[ IV M`XZM[[QWV' )MAGINE YOU HAVE A TAG WITH A BODY THAT USES AN %, EXPRESSION FOR AN ATTRIBUTE .OW IMAGINE THAT THE ATTRIBUTE DOESN T EXIST AT THE TIME YOU INVOKE THE TAG )N OTHER WORDS THE TAG BODY DEPENDS ON THE TAG HANDLER TO SET THE ATTRIBUTE 4HE EXAMPLE DOESN T DO ANYTHING VERY USEFUL BUT IT S HERE TO SHOW YOU HOW IT WORKS IN PREPARATION FOR A BIGGER EXAMPLE 7KH -63 WDJ LQYRFDWLRQ P\7DJV VLPSOH ! 0HVVDJH LV ^PHVVDJH` P\7DJV VLPSOH !

the tag is invoked, At the point where sco ped attribute ! a T NO is Ó age ess Òm sion out of the res exp is th k too you If l. nul urn ret uld wo it tag,

7KH WDJ KDQGOHU GR7DJ PHWKRG SXEOLF YRLG GR7DJ WKURZV -VS([FHSWLRQ ,2([FHSWLRQ ^ JHW-VS&RQWH[W VHW$WWULEXWH ³PHVVDJH´ ³:HDU VXQVFUHHQ ´

JHW-VS%RG\ LQYRNH QXOO `

an attribute The tag handler setths e body. and THEN invokes

6KDUSHQ \RXU SHQFLO ,PDJLQH \RX KDYH D WDJ WKDW ORRNV OLNH WKLV WDEOH! P\7DJV VLPSOH ! WU! WG! ^PRYLH` WG! WU! P\7DJV VLPSOH ! WDEOH!

:ULWH WKH WDJ KDQGOHU GR7DJ PHWKRG WR VXSSRUW WKDW JRDO

SXEOLF YRLG GR7DJ WKURZV -VS([FHSWLRQ ,2([FHSWLRQ ^

,PDJLQH WKDW WKH WDJ KDQGOHU KDV DFFHVV WR DQ DUUD\ RI 6WULQJ PRYLH QDPHV DQG \RX ZDQW WR SULQW RQH URZ IRU HDFK PRYLH QDPH LQ WKH DUUD\ ,Q WKH EURZVHU \RX¶OO VHH VRPHWKLQJ OLNH

0RQVRRQ :HGGLQJ 6DYHG )DKUHQKHLW

:H WDNH WKH VWLQJ RXW RI 62$3

`

\RX DUH KHUH

Chapter 10. When even JSTL is not enough... Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 10. When even JSTL is not enough...

LWHUDWLQJ WKH ERG\

) \IO _Q\P LaVIUQK ZW_ LI\I" Q\MZI\QVO \PM JWLa )N THIS EXAMPLE THE %, EXPRESSION IN THE BODY OF THE TAG REPRESENTS A SINGLE VALUE IN A COLLECTION AND THE GOAL IS TO HAVE THE TAG GENERATE ONE ROW FOR EACH ELEMENT IN THE COLLECTION )T S SIMPLEˆTHE DO4AG METHOD SIMPLY DOES THE WORK IN A LOOP INVOKING THE BODY ON EACH ITERATION OF THE LOOP 7KH -63 WDJ LQYRFDWLRQ WDEOH! P\7DJV VLPSOH ! WU! WG! ^PRYLH` WG! WU! P\7DJV VLPSOH ! WDEOH!

at the time ute doesnÕt exist The movie attrokibed. It will be set by the tagedly. the tag is invthe body will be called repeat handler, and

7KH WDJ KDQGOHU GR7DJ PHWKRG 6WULQJ>@ PRYLHV ^³0RQVRRQ :HGGLQJ´ ³6DYHG ´ ³)DKUHQKHLW ´`

lue to be array.

e va SXEOLF YRLG GR7DJ WKURZV -VS([FHSWLRQ ,2([FHSWLRQ ^ Set the attribut in the nt me IRU LQW L L PRYLHV OHQJWK L ^ ele xt ne e th JHW-VS&RQWH[W VHW$WWULEXWH ³PRYLH´ PRYLHV>L@ JHW-VS%RG\ LQYRNH QXOO ` ` Invo ke the body again.

7DJ KDQGOHU

-63 P\7DJV VLPSOH ! WU! WG! ^PRYLH` WG! WU! P\7DJV VLPSOH !

IRU LQW L L PRYLHV OHQJWK L ^ JHW-VS&RQWH[W VHW$WWULEXWH ³PRYLH´ PRYLHV>L@ JHW-VS%RG\ LQYRNH QXOO ` `

Each loop of the Tag dle r resets the ÒmovieÓ attribute han value and calls getJspBody().invoke() aga in.

FKDSWHU

Chapter 10. When even JSTL is not enough... Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 10. When even JSTL is not enough...

FXVWRP WDJ GHYHORSPHQW

) ;QUXTM \IO _Q\P IV I\\ZQJ]\M )F THE TAG NEEDS AN ATTRIBUTE YOU DECLARE IT IN THE 4,$ AND PROVIDE A BEAN STYLE SETTER METHOD IN THE TAG HANDLER CLASS FOR EACH ATTRIBUTE )F THE TAG INVOCATION INCLUDES ATTRIBUTES THE #ONTAINER INVOKES A SETTER METHOD FOR EACH ATTRIBUTE 7KH -63 WDJ LQYRFDWLRQ WDEOH! P\7DJV VLPSOH PRYLH/LVW ´ ^PRYLH&ROOHFWLRQ`´! WU! WG! ^PRYLH QDPH` WG! W WG! ^PRYLH JHQUH` WG! H` WU! P\7DJV VLPSOH ! WDEOH! owing

7KH WDJ KDQGOHU FODVV

ItÕs just an attribute like any other tag attribute. It doesnÕt that itÕs a Simple Tag han matter dler taking care of the tag.

sh WeÕre notrts... the impo

SXEOLF FODVV 6LPSOH7DJ7HVW H[WHQGV 6LPSOH7DJ6XSSRUW ^ HV SULYDWH /LVW PRYLH/LVW VW

Declare a variable

SXEOLF YRLG VHW0RYLH/LVW /LVW PRYLH/LVW ^

WKLV PRYLH/LVW PRYLH/LVW P `

to hold the attribu

te.

Write a bean-style setter method for the attribute. Th e method name MUST match the attrib the TLD (minus the Òse ute name in tÓ preÞx and changing the case of the Þrst letter).

SXEOLF YRLG GR7DJ WKURZV -VS([FHSWLRQ ,2([FHSWLRQ ^ KU ,WHUDWRU L PRYLH/LVW LWHUDWRU H/ ZKLOH L KDV1H[W

^ 0RYLH PRYLH 0RYLH L QH[W JHW-VS&RQWH[W VHW$WWULEXWH ³PRYLH´ PRYLH

JHW-VS%RG\ LQYRNH QXOO LQ ` ` `

7KH 7/' IRU WKH WDJ WDJ! GHVFULSWLRQ!WDNHV DQ DWWULEXWH DQG LWHUDWHV RYHU ERG\ GHVFULSWLRQ! HV QDPH!VLPSOH QDPH! DP WDJ FODVV!IRR 6LPSOH7DJ7HVW WDJ FODVV! LP ERG\ FRQWHQW! VFULSWOHVV ERG\ FRQWHQW! FULS ribute> DWWULEXWH! gular <tag> <att

QDPH!PRYLH/LVW QDPH! L UHTXLUHG!WUXH UHTXLUHG! UWH[SUYDOXH!WUXH UWH[SUYDOXH! DWWULEXWH!

WDJ!

Use a re TLD, just declaration in thme tags (with the sto cu r he like ot Files). exception of Tag

\RX DUH KHUH

Chapter 10. When even JSTL is not enough... Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 10. When even JSTL is not enough...

D -VS)UDJPHQW

?PI\ M`IK\Ta 1; I 2[X.ZIOUMV\' ! *SP&RAGMENT IS AN OBJECT THAT REPRESENTS *30 CODE )TS SOLE PURPOSE IN LIFE IS TO BE INVOKED )N OTHER WORDS IT S SOMETHING THAT S MEANT TO RUN AND GENERATE OUTPUT 4HE BODY OF A TAG THAT INVOKES A SIMPLE TAG HANDLER IS ENCAPSULATED IN THE *SP&RAGMENT OBJECT THEN SENT TO THE TAG HANDLER IN THE SET*SP"ODY METHOD 4HE CRUCIAL THING YOU MUST REMEMBER ABOUT *SP&RAGMENT IS THAT IT MUST ./4 CONTAIN ANY SCRIPTING ELEMENTS )T CAN CONTAIN TEMPLATE TEXT STANDARD AND CUSTOM ACTIONS AND %, EXPRESSIONS BUT NO SCRIPTLETS DECLARATIONS OR SCRIPTING EXPRESSIONS /NE COOL THING IS THAT SINCE IT S AN OBJECT YOU CAN EVEN PASS THE FRAGMENT AROUND TO OTHER HELPER OBJECTS !ND THOSE OBJECTS IN TURN CAN GET INFORMATION FROM IT BY INVOKING THE *SP&RAGMENT S OTHER METHODˆGET*SP#ONTEXT !ND OF COURSE ONCE YOU VE GOT A CONTEXT YOU CAN ASK FOR ATTRIBUTES 3O THE GET*SP#ONTEXT METHOD IS REALLY A WAY FOR THE TAG BODY TO GET INFORMATION TO OTHER OBJECTS -OST OF THE TIME THOUGH YOU LL USE *SP&RAGMENT SIMPLY TO OUTPUT THE BODY OF THE TAG TO THE RESPONSE 9OU MIGHT HOWEVER WANT TO GET ACCESS TO THE CONTENTS OF THE BODY .OTICE THAT *SP&RAGMENT DOESN T HAVE AN ACCESS METHOD LIKE GET#ONTENTS OR GET"ODY 9OU CAN WRITE THE BODY TO SOMETHING BUT YOU CAN T DIRECTLY GET THE BODY )F YOU DO WANT ACCESS TO THE BODY YOU CAN USE THE ARGUMENT TO THE INVOKE METHOD TO PASS IN A JAVA IO 7RITER THEN USE METHODS ON THAT 7RITER TO PROCESS THE CONTENTS OF THE TAG BODY

-VS)UDJP

HQW

-VS&RQWH [W JHW-VS& RQWH[W

YRLG LQYR NH MDYD LR :ULWHU

takes a The invoke() methl od send the to nul ss Writer... pa output, or se pon res body to the direct nt wa u a Writer if yo ual body access to the act contents.

&OR THE EXAM AND REAL LIFE THIS IS PROBABLY ALL YOU WILL EVER NEED TO KNOW ABOUT THE DETAILS OF *SP&RAGMENT SO WE WON T SPEND ANY MORE TIME ON IT IN THE BOOK

:ULWHU ,I NHV D MDYD LR RQVH PHWKRG WD Q WR WKH UHVS WH ULW 7KH LQYRNH Z H E \ WR RG E G KH KR W W HW \RX ZDQ H LQYRNH P V QXOO WR WK RXWSXW SDV RX GR %XW LI \ ZKDW \RX·OO WLPH WKDW·V FRQWHQWV RI WKH ERG\ KH I W W R RV 0 WXDO V WR WKH DF DW :ULWHU WR WK H XV Q KH ZDQW DFFHV HU W VV LQ D :ULW D\ Z \RX FDQ SD H RP H ERG\ LQ V SURFHVV WK

FKDSWHU

Chapter 10. When even JSTL is not enough... Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 10. When even JSTL is not enough...

FXVWRP WDJ GHYHORSPHQW

; SQX8IOM-`KMX\QWV" [\WX[ XZWKM[[QVO \PM XIOM )MAGINE YOU RE IN A PAGE THAT INVOKES THE TAG AND THE TAG DEPENDS ON SPECIl C REQUEST ATTRIBUTES THAT IT GETS FROM THE *SP#ONTEXT AVAILABLE TO THE TAG HANDLER .OW IMAGINE THE TAG CAN T l ND THE ATTRIBUTES IT NEEDS AND THAT THE TAG KNOWS THE REST OF THE PAGE WILL NEVER WORK IF THE TAG CAN T SUCCEED 7HAT DO YOU DO 9OU COULD HAVE THE TAG THROW A *SP%XCEPTION AND THAT WOULD KILL THE PAGE BUT WHAT IF IT S ONLY THE REST OF THE PAGE THAT WON T WORK )N OTHER WORDS WHAT IF YOU STILL WANT THE l RST PART OF THE PAGEˆTHE PART OF THE PAGE THAT S EVALUATED BEFORE THE TAG INVOCATIONˆTO STILL APPEAR AS THE RESPONSE BUT YOU DON T WANT THE RESPONSE TO INCLUDE ANYTHING STILL LEFT TO BE PROCESSED AFTER THE TAG THROWS AN EXCEPTION .O PROBLEM 4HAT S EXACTLY WHY 3KIP0AGE%XCEPTION EXISTS 7KH WDJ KDQGOHU GR7DJ PHWKRG SXEOLF YRLG GR7DJ WKURZV -VS([FHSWLRQ ,2([FHSWLRQ ^ JHW-VS&RQWH[W JHW2XW SULQW ³0HVVDJH IURP ZLWKLQ GR7DJ EU!´ JHW-VS&RQWH[W JHW2XW SULQW ³$ERXW WR WKURZ D 6NLS3DJH([FHSWLRQ´ LI WKLQJV'RQW:RUN ^ At this point WKURZ QHZ 6NLS3DJH([FHSWLRQ tag AND the, rewe decided that the rest ` the part of st of the page should `

7KH -63 WKDW LQYRNHV WKH WDJ

of the stop. Only th e pa ge an d th the exception wi ll appear in the etag BEFORE response.

# WDJOLE SUH¿ [ ´P\7DJV´ XUL ´VLPSOH7DJV´ ! KWPO! ERG\! $ERXW WR LQYRNH D WDJ WKDW WKURZV 6NLS3DJH([FHSWLRQ EU! P\7DJV VLPSOH ! The tag handled in the doTag() method EU!%DFN LQ WKH SDJH DIWHU LQYRNLQJ WKH WDJ above (that throws SkipPageException). ERG\! KWPO!

6KDUSHQ \RXU SHQFLO

:KDW LV WKH UHVXOW LI WKH WKLQJV'RQW:RUN WHVW LV IDOVH" )LOO LQ ZKDW \RX¶OO VHH LQ WKH EURZVHU KWWS ORFDOKRVW WHVWV EDG7DJ MVS

:H WDNH WKH VWLQJ RXW RI 62$3 &RQWDFW XV DW OLNHZHFDUH#ZLFNHGO\VPDUW FRP

\RX DUH KHUH

Chapter 10. When even JSTL is not enough... Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 10. When even JSTL is not enough...

WKH 6NLS3DJH([FHSWLRQ

;SQX8IOM-`KMX\QWV [PW_[ M^MZa\PQVO ]X \W \PM XWQV\ WN \PM M`KMX\QWV %VERYTHING IN THE DO4AG METHOD UP TO THE POINT OF THE 3KIP0AGE%XCEPTION STILL SHOWS UP IN THE RESPONSE "UT AFTER THE EXCEPTION ANYTHING STILL LEFT IN EITHER THE TAG OR THE PAGE WON T BE EVALUATED

,Q WKH -63 # WDJOLE SUH¿ [ ´P\7DJV´ XUL ´VLPSOH7DJV´ ! KWPO! ERG\! $ERXW WR LQYRNH D WDJ WKDW WKURZV 6NLS3DJH([FHSWLRQ EU! P\7DJV VLPSOH ! EU!%DFN LQ WKH SDJH DIWHU LQYRNLQJ WKH WDJ

This doesnÕt print out !

ERG\! KWPO! KWWS ORFDOKRVW WHVWV EDG7DJ MVS

$ERXW WR LQYRNH D WDJ WKDW WKURZV 6NLS3DJH([FHSWLRQ 0HVVDJH IURP ZLWKLQ GR7DJ :H WDNH WKH VWLQJ RXW RI 62$3 $ERXW WR WKURZ D 6NLS3DJH([FHSWLRQ &RQWDFW XV DW OLNHZHFDUH#ZLFNHGO\VPDUW FRP

,Q WKH WDJ KDQGOHU SXEOLF YRLG GR7DJ WKURZV -VS([FHSWLRQ ,2([FHSWLRQ ^ JHW-VS&RQWH[W JHW2XW SULQW ³0HVVDJH IURP ZLWKLQ GR7DJ EU!´ JHW-VS&RQWH[W JHW2XW SULQW ³$ERXW WR WKURZ D 6NLS3DJH([FHSWLRQ´ LI WKLQJV'RQW:RUN ^ WKURZ QHZ 6NLS3DJH([FHSWLRQ ` `

FKDSWHU

Chapter 10. When even JSTL is not enough... Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 10. When even JSTL is not enough...

FXVWRP WDJ GHYHORSPHQW

*]\ _PI\ PIXXMV[ _PMV \PM \IO Q[ QV^WSML NZWU IV QVKT]LML XIOM' 6KDUSHQ \RXU SHQFLO

/RRN DW WKH FRGH EHORZ DQG ¿ JXUH RXW ZKDW SULQWV ZKHQ \RX EULQJ XS 3DJH$ +LQW ORRN LQ WKH $3, IRU MDYD[ VHUYOHW MVS 6NLS3DJH([FHSWLRQ )LOO LQ ZKDW \RX¶OO VHH LQ WKH EURZVHU KWWS ORFDOKRVW WHVWV 3DJH$ MVS

:H WDNH WKH VWLQJ RXW RI 62$3 &RQWDFW XV DW OLNHZHFDUH#ZLFNHGO\VPDUW FRP

3DJH$ -63 WKDW LQFOXGHV 3DJH% KWPO! ERG\! 7KLV LV SDJH $ WKDW LQFOXGHV DQRWKHU SDJH % EU! 'RLQJ WKH LQFOXGH QRZ EU! MVS LQFOXGH SDJH ´EDG7DJ,QFOXGH MVS´ ! EU!%DFN LQ SDJH $ DIWHU WKH LQFOXGH ERG\! KWPO!

3DJH% WKH LQFOXGHG À OH -63 WKDW LQYRNHV WKH EDG WDJ # WDJOLE SUH¿ [ ´P\7DJV´ XUL ´VLPSOH7DJV´ ! 7KLV LV SDJH % WKDW LQYRNHV WKH WDJ WKDW WKURZV 6NLS3DJH([FHSWLRQ ,QYRNLQJ WKH WDJ QRZ EU! P\7DJV VLPSOH ! EU!6WLOO LQ SDJH % DIWHU WKH WDJ LQYRFDWLRQ

7KH WDJ KDQGOHU GR7DJ PHWKRG SXEOLF YRLG GR7DJ WKURZV -VS([FHSWLRQ ,2([FHSWLRQ ^ JHW-VS&RQWH[W JHW2XW SULQW ³0HVVDJH IURP ZLWKLQ GR7DJ EU!´ JHW-VS&RQWH[W JHW2XW SULQW ³$ERXW WR WKURZ D 6NLS3DJH([FHSWLRQ´ WKURZ QHZ 6NLS3DJH([FHSWLRQ ` \RX DUH KHUH

Chapter 10. When even JSTL is not enough... Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 10. When even JSTL is not enough...

6NLS3DJH([FHSWLRQ EHKDYLRU

;SQX8IOM-`KMX\QWV [\WX[ WVTa \PM XIOM \PI\ LQZMK\Ta QV^WSML \PM \IO )F THE PAGE THAT INVOKES THE TAG WAS INCLUDED FROM SOME OTHER PAGE ONLY THE PAGE THAT INVOKES THE TAG STOPS PROCESSING 4HE ORIGINAL PAGE THAT DID THE INCLUDE KEEPS GOING AFTER THE 3KIP0AGE%XCEPTION

KWWS ORFDOKRVW WHVWV 3DJH$ MVS

7KLV LV SDJH $ WKDW LQFOXGHV DQRWKHU SDJH % 'RLQJ WKH LQFOXGH QRZ 7KLV LV SDJH % WKDW LQYRNHV WKH WDJ WKDW WKURZV :H WDNH WKH VWLQJ RXW RI 62$3 6NLS3DJH([FHSWLRQ ,QYRNLQJ WKH WDJ QRZ

0HVVDJH IURP ZLWKLQ GR7DJ

&RQWDFW XV DW OLNHZHFDUH#ZLFNHGO\VPDUW FRP

$ERXW WR WKURZ D 6NLS3DJH([FHSWLRQ %DFN LQ SDJH $ DIWHU WKH LQFOXGH

B stopped, Whoa! PageA didnÕt... ge pa but

3DJH$ -63 WKDW LQFOXGHV 3DJH% KWPO! ERG\! 7KLV LV SDJH $ WKDW LQFOXGHV DQRWKHU SDJH % EU! 'RLQJ WKH LQFOXGH QRZ EU! MVS LQFOXGH SDJH ´EDG7DJ,QFOXGH MVS´ ! EU!%DFN LQ SDJH $ DIWHU WKH LQFOXGH ERG\! KWPO!

Were you surprised to see this line from page A print

out?

3DJH% WKH LQFOXGHG Ă€ OH -63 WKDW LQYRNHV WKH EDG WDJ # WDJOLE SUHÂż [ ´P\7DJV´ XUL ´VLPSOH7DJV´ ! 7KLV LV SDJH % WKDW LQYRNHV WKH WDJ WKDW WKURZV 6NLS3DJH([FHSWLRQ ,QYRNLQJ WKH WDJ QRZ EU! P\7DJV VLPSOH ! EU!6WLOO LQ SDJH % DIWHU WKH WDJ LQYRFDWLRQ

This didnÕt pr in

t, just as we

7KH WDJ KDQGOHU GR7DJ PHWKRG

expected.

SXEOLF YRLG GR7DJ WKURZV -VS([FHSWLRQ ,2([FHSWLRQ ^ JHW-VS&RQWH[W JHW2XW SULQW ³0HVVDJH IURP ZLWKLQ GR7DJ EU!´ JHW-VS&RQWH[W JHW2XW SULQW ³$ERXW WR WKURZ D 6NLS3DJH([FHSWLRQ´ WKURZ QHZ 6NLS3DJH([FHSWLRQ page A keeps going. This stops page B, but `

FKDSWHU

Chapter 10. When even JSTL is not enough... Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 10. When even JSTL is not enough...

FXVWRP WDJ GHYHORSPHQW

WKHUH DUH QR

'XPE 4XHVWLRQV

4

7HAT HAPPENS TO A 3IMPLE4AG HANDLER AFTER IT COMPLETES DO4AG $OES THE #ONTAINER KEEP IT AROUND AND REUSE IT

$

.O 3IMPLE4AG HANDLERS ARE NEVER REUSED %ACH TAG HANDLER INSTANCE TAKES CARE OF A SINGLE INVOCATION 3O YOU NEVER HAVE TO WORRY FOR EXAMPLE THAT INSTANCE VARIABLES IN A 3IMPLE4AG HANDLER WON T HAVE THE CORRECT INITIAL VALUES ! 3IMPLE4AG HANDLER OBJECT WILL ALWAYS BE INITIALIZED BEFORE ANY OF ITS METHODS ARE CALLED

4

$O THE ATTRIBUTE METHODS IN A 3IMPLE4AG HANDLER HAVE TO BE OF A TYPE THAT CAN BE AUTOMATICALLY CONVERTED TO AND FROM A 3TRING )N OTHER WORDS ARE YOU STUCK WITH JUST PRIMITIVES AND 3TRING VALUES

$

7EREN T YOU PAYING ATTENTION A FEW PAGES BACK 4HE ATTRIBUTE WE SENT TO THE 3IMPLE4AG HANDLER WAS AN !RRAY,IST OF MOVIES 3O THAT WOULD BE hNOv TO ANSWER YOUR QUESTION "UT IF THE ATTRIBUTE WHICH YOU CAN THINK OF AS A PROPERTY IF YOU THINK OF THE 3IMPLE4AG HANDLER AS A BEAN IS ./4 A 3TRING OR PRIMITIVE THEN THE RTEXPRVALUE VALUE IN THE 4,$ HAD BETTER BE SET TO TRUE "ECAUSE THAT S

THE ONLY WAY YOU CAN SET AN ATTRIBUTE VALUE FOR SOMETHING THAT CAN T BE EXPRESSED AS A 3TRING IN THE TAG )N OTHER WORDS YOU CAN T SEND A $OG INTO THE TAG IF YOU RE FORCED TO REPRESENT THE $OG AS A 3TRING LITERAL "UT IF YOU CAN USE AN EXPRESSION FOR THE VALUE OF THE ATTRIBUTE THEN THAT EXPRESSION CAN EVALUATE TO WHATEVER OBJECT TYPE YOU NEED TO MATCH THE ARGUMENT TO THE HANDLER S CORRESPONDING SETTER METHOD

4

)N A 3IMPLE4AG HANDLER IF THE TAG IS DECLARED TO HAVE A BODY BUT IT IS INVOKED USING AN EMPTY TAG SINCE THERE S NO WAY TO SAY THAT A BODY IS REQUIRED IS THE SET*SP"ODY STILL INVOKED

$

.O 4HE SET*SP"ODY IS INVOKED /.,9 IF THESE TWO THINGS ARE TRUE 4HE TAG IS ./4 DECLARED IN THE 4,$ TO HAVE AN EMPTY BODY 4HE TAG IS INVOKED WITH A BODY 4HAT MEANS THAT EVEN IF THE TAG IS DECLARED TO HAVE A NON EMPTY BODY THE SET*SP"ODY METHOD WILL NOT BE CALLED IF THE TAG IS INVOKED IN EITHER OF THESE TWO WAYS FOO BAR EMPTY TAG FOO BAR FOO BAR NO BODY

\RX DUH KHUH

Chapter 10. When even JSTL is not enough... Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 10. When even JSTL is not enough...

6LPSOH 7DJ EXOOHW SRLQWV

:MDD=L HGAFLK

7DJ )LOHV LPSOHPHQW WDJ IXQFWLRQDOLW\ XVLQJ D SDJH ZKLOH WDJ KDQGOHUV LPSOHPHQW WDJ IXQFWLRQDOLW\ XVLQJ D -DYD WDJ KDQGOHU FODVV

7DJ KDQGOHUV FRPH LQ WZR W\SHV &ODVVLF DQG 6LPSOH 6LPSOH WDJV DQG 7DJ )LOHV ZHUH DGGHG LQ -63 7R PDNH D 6LPSOH WDJ KDQGOHU H[WHQG 6LPSOH7DJ6XSSRUW ZKLFK LPSOHPHQWV WKH 6LPSOH7DJ LQWHUIDFH

7R GHSOR\ D 6LPSOH WDJ KDQGOHU \RX PXVW FUHDWH D 7/' WKDW GHVFULEHV WKH WDJ XVLQJ WKH VDPH WDJ! HOHPHQW XVHG E\ -67/ DQG RWKHU FXVWRP WDJ OLEUDULHV

7R XVH D 6LPSOH WDJ ZLWK D ERG\ PDNH VXUH WKH 7/' WDJ! IRU WKLV WDJ GRHV QRW GHFODUH ERG\ FRQWHQW! HPSW\ 7KHQ FDOO JHW-VS%RG\ LQYRNH WR FDXVH WKH ERG\ WR EH SURFHVVHG

7KH 6LPSOH7DJ6XSSRUW FODVV LQFOXGHV LPSOHPHQWDWLRQ PHWKRGV IRU HYHU\WKLQJ LQ WKH 6LPSOH7DJ LQWHUIDFH SOXV WKUHH FRQYHQLHQFH PHWKRGV LQFOXGLQJ JHW-VS%RG\ ZKLFK \RX FDQ XVH WR JHW DFFHVV WR WKH FRQWHQWV RI WKH ERG\ RI WKH WDJ

7KH 6LPSOH WDJ OLIHF\FOH 6LPSOH WDJV DUH QHYHU UHXVHG E\ WKH &RQWDLQHU VR HDFK WLPH D WDJ LV LQYRNHG WKH WDJ KDQGOHU LV LQVWDQWLDWHG DQG LWV VHW-VS&RQWH[W PHWKRG LV LQYRNHG ,I WKH WDJ LV FDOOHG IURP ZLWKLQ DQRWKHU WDJ WKH VHW3DUHQW PHWKRG LV FDOOHG ,I WKH WDJ LV LQYRNHG ZLWK DWWULEXWHV D EHDQ VW\OH VHWWHU PHWKRG LV LQYRNHG IRU HDFK DWWULEXWH ,I WKH WDJ LV LQYRNHG ZLWK D ERG\ DVVXPLQJ LWV 7/' GRHV 127 GHFODUH LW WR KDYH DQ HPSW\ ERG\ WKH VHW-VS%RG\ PHWKRG LV LQYRNHG )LQDOO\ WKH GR7DJ PHWKRG LV LQYRNHG DQG ZKHQ LW FRPSOHWHV WKH WDJ KDQGOHU LQVWDQFH LV GHVWUR\HG

P\ WDJ ! RU ZLWK QRWKLQJ EHWZHHQ WKH RSHQLQJ DQG FORVLQJ WDJV P\ WDJ! P\ WDJ! WKH VHW-VS%RG\ PHWKRG ZLOO 127 EH FDOOHG 5HPHPEHU LI WKH WDJ KDV D ERG\ WKH 7/' PXVW UHIOHFW WKDW DQG WKH ERG\ FRQWHQW! PXVW QRW KDYH D YDOXH RI ´HPSW\µ

7KH 6LPSOH WDJ·V GR7DJ PHWKRG FDQ VHW DQ DWWULEXWH XVHG E\ WKH ERG\ RI WKH WDJ E\ FDOOLQJ JHW-VS&RQWH[W VHW$WWULEXWH IROORZHG E\ JHW-VS%RG\ LQYRNH

7KH GR7DJ PHWKRG GHFODUHV D -VS([FHSWLRQ DQG DQ ,2([FHSWLRQ VR \RX FDQ ZULWH WR WKH -VS:ULWHU ZLWKRXW ZUDSSLQJ LW LQ D WU\ FDWFK

<RX FDQ LWHUDWH RYHU WKH ERG\ RI D 6LPSOH WDJ E\ LQYRNLQJ WKH ERG\ JHW-VS%RG\ LQYRNH

LQ D ORRS

,I WKH WDJ KDV DQ DWWULEXWH GHFODUH WKH DWWULEXWH LQ WKH 7/' XVLQJ DQ DWWULEXWH! HOHPHQW DQG SURYLGH D EHDQ VW\OH VHWWHU PHWKRG LQ WKH WDJ KDQGOHU FODVV :KHQ WKH WDJ LV LQYRNHG WKH VHWWHU PHWKRG ZLOO EH FDOOHG EHIRUH GR7DJ

7KH JHW-VS%RG\ PHWKRG UHWXUQV D -VS)UDJPHQW ZKLFK KDV WZR PHWKRGV LQYRNH MDYD LR :ULWHU DQG JHW-VS&RQWH[W WKDW UHWXUQV D -VS&RQWH[W WKH WDJ KDQGOHU FDQ XVH WR JHW DFFHVV WR WKH 3DJH&RQWH[W $3, WR JHW DFFHVV WR LPSOLFLW YDULDEOHV DQG VFRSHG DWWULEXWHV

3DVVLQJ QXOO WR LQYRNH ZULWHV WKH HYDOXDWHG ERG\ WR WKH UHVSRQVH RXWSXW EXW \RX FDQ SDVV DQRWKHU :ULWHU LQ LI \RX ZDQW GLUHFW DFFHVV WR WKH ERG\ FRQWHQWV

7KURZ D 6NLS3DJH([FHSWLRQ LI \RX ZDQW WKH FXUUHQW SDJH WR VWRS SURFHVVLQJ ,I WKH SDJH WKDW LQYRNHG WKH WDJ ZDV LQFOXGHG IURP DQRWKHU SDJH WKH LQFOXGLQJ SDJH NHHSV JRLQJ HYHQ WKRXJK WKH LQFOXGHG SDJH VWRSV SURFHVVLQJ IURP WKH PRPHQW WKH H[FHSWLRQ LV WKURZQ

7KH VHW-VS%RG\ PHWKRG ZLOO EH LQYRNHG 21/< LI WKH WDJ LV DFWXDOO\ FDOOHG ZLWK D ERG\ ,I WKH WDJ LV LQYRNHG ZLWKRXW D ERG\ HLWKHU ZLWK DQ HPSW\ WDJ

FKDSWHU

Chapter 10. When even JSTL is not enough... Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 10. When even JSTL is not enough...

FXVWRP WDJ GHYHORSPHQW

,W·V MXVW ZRQGHUIXO WKDW -63 VSHF GHVLJQHUV JDYH XV 6LPSOH 7DJV DQG 7DJ )LOHV EXW XP WKH\ ZDLWHG XQWLO $)7(5 P\ FRPSDQ\ ZURWH DERXW PLOOLRQ FXVWRP WDJV XVLQJ WKH &ODVVLF PRGHO

AW] [\QTT PI^M \W SVW_ IJW]\ +TI[[QK \IO PIVLTMZ[ 9OU MIGHT GET LUCKY -AYBE THE PLACE YOU WORK IS STARTING OUT WITH *30 AND CAN USE 4AG &ILES AND 3IMPLE4AG HANDLERS FROM THE START 4HAT COULD HAPPEN "UT IT PROBABLY WON T #HANCES ARE YOU RE WORKING OR WILL WORK IN THE FUTURE SOMEWHERE THAT S BEEN USING *30S SINCE THE PRE DAYS USING THE #LASSIC TAG MODEL FOR WRITING CUSTOM TAG HANDLERS 9OU PROBABLY NEED TO AT LEAST BE ABLE TO READ THE SOURCE CODE FOR A #LASSIC TAG HANDLER 9OU MIGHT BE CALLED ON TO MAINTAIN OR REFACTOR A #LASSIC TAG HANDLER CLASS "UT EVEN IF YOU DON T EVER HAVE TO READ OR WRITE A #LASSIC TAG HANDLER THEY RE STILL COVERED VERY LIGHTLY BY ONE OF THE EXAM OBJECTIVES "E GRATEFULˆON THE PREVIOUS VERSION OF THE EXAM YOU MIGHT HAVE SEEN AT LEAST SEVEN OR EIGHT #LASSIC TAG HANDLER QUESTIONS ON THE EXAM 4ODAY EXAM CANDIDATES WILL SEE ONLY A COUPLE OF QUESTIONS ON #LASSIC TAG HANDLERS

\RX DUH KHUH

Chapter 10. When even JSTL is not enough... Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 10. When even JSTL is not enough...

7DJ $3,

<IO PIVLTMZ )81 %VERYTHING IN A GREY BOX IS FROM THE ORIGINAL #LASSIC TAG MODEL FOR CUSTOM TAG HANDLERS

-VS7DJ LQWHUIDFH LQWHUIDFH!!

the greyag API. t e (with This sid is the Classic boxes)

-VS7DJ QR PHWKRGV WKLV LQWHUIDFH LV IRU RUJDQL]DWLRQ DQG SRO\PRUSKLVP

6LPSOH7DJ LQWHUIDFH

7DJ LQWHUIDFH

LQWHUIDFH!!

LQWHUIDFH!!

7DJ

6LPSOH7DJ YRLG GR7DJ

LQW GR(QG7DJ

-VS7DJ JHW3DUHQW

7DJ JHW3DUHQW

YRLG VHW-VS%RG\ -VS)UDJPHQW

LQW GR6WDUW7DJ

YRLG VHW-VS&RQWH[W -VS&RQWH[W

YRLG VHW3DJH&RQWH[W 3DJH&RQWH[W

YRLG VHW3DUHQW -VS7DJ

YRLG VHW3DUHQW 7DJ

YRLG UHOHDVH

6LPSOH7DJ6XSSRUW FODVV

7KHUH¡V YLUWXDOO\ 12 UHDVRQ WR LPSOHPHQW WKH LQWHUIDFHV GLUHFWO\ VR \RX¡OO SUREDEO\ DOZD\V H[WHQG D VXSSRUW FODVV

,WHUDWLRQ7DJ LQWHUIDFH LQWHUIDFH!!

6LPSOH7DJ6XSSRUW YRLG GR7DJ

-VS7DJ ILQG$QFHVWRU:LWK&ODVV -VS7DJ &ODVV

7KH WDJ KDQGOHU $3, KDV ILYH LQWHUIDFHV DQG WKUHH VXSSRUW FODVVHV

,WHUDWLRQ7DJ LQW GR$IWHU%RG\

7DJ6XSSRUW FODVV

-VS)UDJPHQW JHW-VS%RG\

%RG\7DJ LQWHUIDFH

-VS&RQWH[W JHW-VS&RQWH[W

LQWHUIDFH!!

-VS7DJ JHW3DUHQW

%RG\7DJ

YRLG VHW-VS%RG\ -VS)UDJPHQW

YRLG VHW-VS&RQWH[W -VS&RQWH[W

YRLG GR,QLW%RG\

YRLG VHW3DUHQW -VS7DJ

YRLG VHW%RG\&RQWHQW %RG\&RQWHQW

7DJ6XSSRUW YRLG GR$IWHU%RG\

LQW GR6WDUW7DJ

LQW GR(QG7DJ

YRLG VHW3DJH&RQWH[W 3DJH&RQWH[W

PRUH PHWKRGV

This side (with the is the SimpleTag white boxes) I. The JspTag superinterfAP was added with JSP 2.0, butace it doesnÕt affect the Classic ta g API.

%RG\7DJ6XSSRUW FODVV %RG\7DJ6XSSRUW LQW GR6WDUW7DJ

%RG\&RQWHQW JHW%RG\&RQWHQW

YRLG GR,QLW%RG\

YRLG VHW%RG\&RQWHQW %RG\&RQWHQW

PRUH PHWKRGV

FKDSWHU

Chapter 10. When even JSTL is not enough... Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 10. When even JSTL is not enough...

FXVWRP WDJ GHYHORSPHQW

) ^MZa [UITT +TI[[QK \IO PIVLTMZ 4HIS EXAMPLE IS SO BASIC THAT IT S NOT MUCH DIFFERENT FROM A 3IMPLE4AG HANDLER S DO4AG METHOD )N FACT THE DIFFERENCES WON T BECOME PAINFUL UNTIL YOU TRY TO PROCESS A TAG WITH A BODY BUT YOU LL JUST HAVE TO WAIT FOR THAT $ -63 WKDW LQYRNHV D &ODVVLF WDJ # WDJOLE SUH¿[ ´PLQH´ XUL ´.DWK\&ODVVLF7DJV´ ! KWPO! ERG\! &ODVVLF 7DJ 2QH EU! ssic tag This tag uses a Cla looks PLQH FODVVLF2QH ! t to the JSP, it at Bu . ler nd ha . ERG\! KWPO! other tag invoc ion

just like any

7KH 7/' WDJ! HOHPHQW IRU WKH &ODVVLF WDJ WDJ! GHVFULSWLRQ!OXGLFURXV XVH RI D &ODVVLF WDJ GHVFULSWLRQ! QDPH!FODVVLF2QH QDPH! is <tag> for certain that thyou know WDJ FODVV!IRR &ODVVLF WDJ FODVV! ereÕs no way to knssiow unless , ler nd ha g ta ERG\ FRQWHQW!HPSW\ ERG\ FRQWHQW! Th c is handled by a Claclass implements the Tag interface WDJ! sic1 lace

ely rep that foo.Clas g). We could complet (instead of SimplecoTade to have it use a SimpleTag, the foo.Classic1 uld not change. and the TLD wo

7KH &ODVVLF WDJ KDQGOHU SDFNDJH IRR LPSRUW MDYD[ VHUYOHW MVS LPSRUW MDYD[ VHUYOHW MVS WDJH[W LPSRUW MDYD LR

enting upport, weÕre implem overriding Õre By extending TagSrat we re He g. ionTa both Tag and Ite, doStartTag(). ly one method SXEOLF FODVV &ODVVLF H[WHQGV 7DJ6XSSRUW ^ on The methods declare JspExc NOT an IOException! (Th eption, but SXEOLF LQW GR6WDUW7DJ WKURZV -VS([FHSWLRQ ^ e SimpleTag doTag() declares IOExce ption.)

-VS:ULWHU RXW SDJH&RQWH[W JHW2XW

Classic tags inherit a pageCo

ntext member the

variable from TagSuppor WU\ ^ getJspContext() methodt (in contrast to RXW SULQWOQ ³FODVVLF WDJ RXWSXW´ of SimpleTag). ` FDWFK ,2([FHSWLRQ H[ ^ WKURZ QHZ -VS([FHSWLRQ ³,2([FHSWLRQ ³ H[ WR6WULQJ

` UHWXUQ 6.,3B%2'< ` ` We have

to return an int to tell the Container what to do next. Much more on this coming up...

Here we must use a try tch, because we canÕt declare/cathe IOException.

\RX DUH KHUH

Chapter 10. When even JSTL is not enough... Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 10. When even JSTL is not enough...

&ODVVLF WDJ

) +TI[[QK \IO PIVLTMZ _Q\P <?7 UM\PWL[ 4HIS EXAMPLE OVERRIDES BOTH THE DO3TART4AG AND DO%ND4AG METHODS ALTHOUGH IT COULD ACCOMPLISH THE SAME OUTPUT ALL WITHIN DO3TART4AG 4HE POINT OF DO%ND4AG IS THAT IT S CALLED AFTER THE BODY IS EVALUATED 7E DON T SHOW THE 4,$ HERE BECAUSE IT S VIRTUALLY IDENTICAL TO THE PREVIOUS ONE EXCEPT FOR SOME OF THE NAMES 4HE TAG IS DECLARED TO HAVE NO ATTRIBUTES AND AN EMPTY BODY $ -63 WKDW LQYRNHV D &ODVVLF WDJ # WDJOLE SUH¿ [ ´PLQH´ XUL ´.DWK\&ODVVLF7DJV´ ! KWPO! ERG\! &ODVVLF 7DJ 7ZR EU! PLQH FODVVLF7ZR ! ERG\! KWPO!

rts unless we

impo the package or We wonÕt showom a new package. something fr

7KH &ODVVLF WDJ KDQGOHU

add

SXEOLF FODVV &ODVVLF H[WHQGV 7DJ6XSSRUW ^ -VS:ULWHU RXW SXEOLF LQW GR6WDUW7DJ WKURZV -VS([FHSWLRQ ^ RXW SDJH&RQWH[W JHW2XW WU\ ^ RXW SULQWOQ ³LQ GR6WDUW7DJ ´ ` FDWFK ,2([FHSWLRQ H[ ^ WKURZ QHZ -VS([FHSWLRQ ³,2([FHSWLRQ ³ H[ WR6WULQJ

` y if there is one- UHWXUQ 6.,3B%2'< ÒDonÕt evaluate the bod s, say is Th method.Ó ag( ` ht to the doEndT )

just go straig

SXEOLF LQW GR(QG7DJ WKURZV -VS([FHSWLRQ ^ WU\ ^ RXW SULQWOQ ³LQ GR(QG7DJ ´ ` FDWFK ,2([FHSWLRQ H[ ^ WKURZ QHZ -VS([FHSWLRQ ³,2([FHSWLRQ ³ H[ WR6WULQJ

` UHWXUQ (9$/B3$*( This says, ÒEvaluat ` to SKIP_PAGE, whe the rest of the pageÓ (as opposed ich would be just ` SkipP

ageException from

like rowing a a SimpleTag handth ler).

&ODVVLF 7DJ 7ZR LQ GR6WDUW7DJ LQ GR(QG7DJ :H WDNH WKH VWLQJ RXW RI 62$3

&RQWDFW XV DW OLNHZHFDUH#ZLFNHGO\VPDUW FRP

FKDSWHU

Chapter 10. When even JSTL is not enough... Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 10. When even JSTL is not enough...

FXVWRP WDJ GHYHORSPHQW

?PMV I \IO PI[ I JWLa" KWUXIZQVO ;QUXTM ^[ +TI[[QK .OW IT STARTS TO LOOK DIFFERENT FROM A 3IMPLE4AG 2EMEMBER 3IMPLE4AG BODIES ARE EVALUATED WHEN AND IF YOU WANT BY CALLING INVOKE ON THE *SP&RAGMENT THAT ENCAPSULATES THE BODY "UT IN #LASSIC TAGS THE BODY IS EVALUATED IN BETWEEN THE DO3TART4AG AND DO%ND4AG METHODS "OTH OF THE EXAMPLES BELOW HAVE THE EXACT SAME BEHAVIOR 7KH -63 WKDW XVHV WKH WDJ # WDJOLE SUH¿[ ´P\7DJV´ XUL ´P\7DJV´ ! KWPO! ERG\!

P\7DJV VLPSOH%RG\! 7KLV LV WKH ERG\ P\7DJV VLPSOH%RG\! ERG\! KWPO!

$ 6LPSOH7DJ KDQGOHU FODVV SDFNDJH DQG LPSRUWV SXEOLF FODVV 6LPSOH7DJ7HVW H[WHQGV 6LPSOH7DJ6XSSRUW ^ SXEOLF YRLG GR7DJ WKURZV -VS([FHSWLRQ ,2([FHSWLRQ ^ JHW-VS&RQWH[W JHW2XW SULQW ³%HIRUH ERG\ ´ JHW-VS%RG\ LQYRNH QXOO This causes the body to be JHW-VS&RQWH[W JHW2XW SULQW ³$IWHU ERG\ ´ ` `

evaluated.

$ &ODVVLF WDJ KDQGOHU WKDW GRHV WKH VDPH WKLQJ SDFNDJH DQG LPSRUWV SXEOLF FODVV &ODVVLF7HVW H[WHQGV 7DJ6XSSRUW ^ -VS:ULWHU RXW SXEOLF LQW GR6WDUW7DJ WKURZV -VS([FHSWLRQ ^ RXW SDJH&RQWH[W JHW2XW WU\ ^ RXW SULQWOQ ³%HIRUH ERG\ ´ ` FDWFK ,2([FHSWLRQ H[ ^ WKURZ QHZ -VS([FHSWLRQ ³,2([FHSWLRQ ³ H[ WR6WULQJ

` UHWXUQ (9$/B%2'<B,1&/8'( THIS is what causes the body to be ` evaluated in a Classic tag handler! SXEOLF LQW GR(QG7DJ WKURZV -VS([FHSWLRQ ^ WU\ ^ RXW SULQWOQ ³$IWHU ERG\ ´ ` FDWFK ,2([FHSWLRQ H[ ^ WKURZ QHZ -VS([FHSWLRQ ³,2([FHSWLRQ ³ H[ WR6WULQJ

` UHWXUQ (9$/B3$*( ` `

\RX DUH KHUH

Chapter 10. When even JSTL is not enough... Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 10. When even JSTL is not enough...

LWHUDWLQJ ZLWK &ODVVLF WDJV"

%XW KRZ GR \RX ORRS RYHU WKH ERG\" ,W ORRNV OLNH GR6WDUW7DJ LV FDOOHG WRR HDUO\ DQG GR(QG7DJ LV WRR ODWH DQG , GRQ¡W KDYH DQ\ ZD\ WR NHHS UH LQYRNLQJ WKH ERG\ HYDOXDWLRQ

6LPSOH WDJ SDFNDJH DQG LPSRUWV SXEOLF FODVV 6LPSOH7DJ7HVW H[WHQGV 6LPSOH7DJ6XSSRUW ^ SXEOLF YRLG GR7DJ WKURZV -VS([FHSWLRQ ,2([FHSWLRQ ^ IRU LQW L L L ^ JHW-VS%RG\ LQYRNH QXOO ` ItÕs easy to loop the body of ` a Simple tag; you just keep calling invoke() ` on the body,

from within doTag().

&ODVVLF WDJ SDFNDJH DQG LPSRUWV SXEOLF FODVV &ODVVLF7HVW H[WHQGV 7DJ6XSSRUW ^ SXEOLF LQW GR6WDUW7DJ WKURZV -VS([FHSWLRQ ^ UHWXUQ (9$/B%2'<B,1&/8'( `

But where do you loop over body is evaluated in between the body, if the the methods instead of IN a method like doT ag()?

SXEOLF LQW GR(QG7DJ WKURZV -VS([FHSWLRQ ^ UHWXUQ (9$/B3$*( ` `

FKDSWHU

Chapter 10. When even JSTL is not enough... Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 10. When even JSTL is not enough...

FXVWRP WDJ GHYHORSPHQW

+TI[[QK \IO[ PI^M I LQNNMZMV\ TQNMKaKTM 3IMPLE TAGS ARE SIMPLEˆIT S ALL ABOUT DO4AG "UT WITH CLASSIC TAGS THERE S A DO3TART4AG AND A DO%ND4AG !ND THAT BRINGS UP AN INTERESTING PROBLEMˆWHEN AND HOW IS THE BODY EVALUATED 4HERE S NO DO"ODY METHOD BUT THERE IS A DO!FTER"ODY METHOD THAT S CALLED AFTER THE BODY IS EVALUATED AND BEFORE THE DO%ND4AG RUNS :HE &RQWDLQHU

&RQWDLQHU

/RDG FODVV

&ODVVLF WDJ FODVV

7DJ +DQGOHU 2EMHFW

&ODVVLF+DQGOHU FODVV

,QVWDQWLDWH FODVV QR DUJ FRQVWUXFWRU UXQV

&DOO WKH VHW3DJH&RQWH[W 3DJH&RQWH[W PHWKRG ,I WKH WDJ LV QHVWHG LQYRNHG IURP ZLWKLQ DQRWKHU WDJ FDOO WKH VHW3DUHQW 7DJ PHWKRG

,I WKH WDJ KDV DWWULEXWHV FDOO DWWULEXWH VHWWHUV

&DOO WKH GR6WDUW7DJ PHWKRG

,I WKH WDJ LV 127 GHFODUHG WR KDYH DQ HPSW\ ERG\ $1' WKH WDJ LV 127 LQYRNHG ZLWK DQ HPSW\ ERG\ $1' WKH GR6WDUW7DJ PHWKRG UHWXUQV (9$/B%2'<B,1&/8'( WKH ERG\ LV HYDOXDWHG ,I WKH ERG\ FRQWHQW ZDV HYDOXDWHG FDOO WKH GR$IWHU%RG\ PHWKRG

&DOO WKH GR(QG7DJ PHWKRG

t time en the Ăžrs e These happ bu d, voke t th the tag is inmay (depending on thice Containerances) reuse the Class circumst after this. tag object This gives the handler a reference to a PageContext. municate with A nested tag canin com its nested. the other tags which

If the tag is invoked with att ributes, the JavaBean-style sett for each attribute is called (just aser with SimpleTag handlers).

The body is evaluated betwee doStartTag() and doEndTag( n the ) met

hods.

s you do things doAfterBody() letrun s, and unlike the y bod the R AFTE be invoked more can it s hod met er oth e. onc n tha

doEndTag() is ay s called once, either after doalw artTag() or after doAfterBSt ody(). \RX DUH KHUH

Chapter 10. When even JSTL is not enough... Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 10. When even JSTL is not enough...

&ODVVLF WDJ OLIHF\FOH

<PM +TI[[QK TQNMKaKTM LMXMVL[ WV ZM\]ZV ^IT]M[ 4HE DO3TART4AG AND DO%ND4AG METHODS RETURN AN INT 4HAT INT TELLS THE #ONTAINER WHAT TO DO NEXT 7ITH DO3TART4AG THE QUESTION THE #ONTAINER ASKS IS h3HOULD ) EVALUATE THE BODY v ASSUMING THERE IS ONE AND ASSUMING THE 4,$ DOESN T DECLARE THE BODY AS EMPTY 7ITH DO%ND4AG THE #ONTAINER ASKS h3HOULD ) KEEP EVALUATING THE REST OF THE CALLING PAGE v 4HE RETURN VALUES ARE REPRESENTED BY CONSTANTS DECLARED IN THE 4AG AND )TERATION4AG INTERFACES 3RVVLEOH UHWXUQ YDOXHV ZKHQ \RX H[WHQG 7DJ6XSSRUW

GR6WDUW7DJ

UHWXUQ 6.,3B%2'< UHWXUQ (9$/B%2'<B,1&/8'(

GR6WDUW7DJ

6.,3B%2'< (YDOXDWH %2'<

(9$/B%2'<B,1&/8'(

UHWXUQ (9$/B%2'<B$*$,1

GR$IWHU%RG\

6.,3B%2'<

GR$IWHU%RG\

(9$/B%2'<B$*$,1 GR(QG7DJ

6.,3B3$*( (9$/B3$*(

This is the only value constant dereturn IterationTag (t clared in are all from Tag)he others .

UHWXUQ 6.,3B%2'<

GR(QG7DJ

UHWXUQ 6.,3B3$*( UHWXUQ (9$/B3$*(

UHWXUQ 7KH FRQVWDQWV XVHG DV DQG YDOXHV IRU GR6WDUW7DJ

XH FRQVWDQWV GR(QG7DJ UHWXUQ YDO HG DUH LQFRQVLVWHQWO\ QDP DUH OXHV UQ YD UHWX WKH :LWK GR6WDUW7DJ

'<B,1&/8'( %XW ZLWK 6.,3B%2'< DQG (9$/B%2 3B3$*( DQG 6., V DUH DOXH WKH Y J GR(QG7D *( /B3$ (9$ W GR(QG7DJ ZRXOG UHWXUQ ,I WKH QDPHV ZHUH FRQVLVWHQ RSSRVHG WR (9$/B3$*(

(9$/B3$*(B,1&/8'( DV DJ UHWXUQV (9$/B%2'<B WR PDWFK WKH ZD\ GR6WDUW7 GH RQ¶W EH IRROHG LI \RX VHH FR ,1&/8'( %XW LW¶V QRW 6R G QJ UHWXUQ YDOXHV W ZUR J EX RNLQ FW OR RUUH RQ WKH H[DP ZLWK F

(YDOXDWH 3$*(

'RQH

Returning SKIP_PAGE from doEndTag() is exactly like throwing a SkipPageException from a Simple tag! If a page included the page that invoked the tag, the current (included) page stops processing, but the including page continues...

FKDSWHU

Chapter 10. When even JSTL is not enough... Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 10. When even JSTL is not enough...

FXVWRP WDJ GHYHORSPHQW

1 \MZI\QWV<IO TM\[ aW] ZMXMI\ \PM JWLa 7HEN YOU WRITE A TAG HANDLER THAT EXTENDS 4AG3UPPORT YOU GET ALL THE LIFECYCLE METHODS FROM THE 4AG INTERFACE PLUS THE ONE METHOD FROM )TERATION4AGˆDO!FTER"ODY 7ITHOUT DO!FTER"ODY YOU CAN T ITERATE OVER THE BODY BECAUSE DO3TART4AG IS TOO EARLY AND DO%ND4AG IS TOO LATE "UT WITH DO!FTER"ODY YOUR RETURN VALUE TELLS THE #ONTAINER WHETHER IT SHOULD REPEAT THE BODY AGAIN %6!,?"/$9?!'!). OR CALL THE DO%ND4AG METHOD 3+)0?"/$9

6KDUSHQ \RXU SHQFLO 7DJ LQWHUIDFH LQWHUIDFH!!

7DJ LQW GR(QG7DJ

7DJ JHW3DUHQW

LQW GR6WDUW7DJ

YRLG VHW3DJH&RQWH[W 3DJH&RQWH[W

YRLG VHW3DUHQW 7DJ

YRLG UHOHDVH

7U\ WR PSOHPHQW WKH VDPH IXQFWLRQDOLW\ RI WKLV 6LPSOH7DJ GR7DJ LQ D &ODVVLF WDJ KDQGOHU $VVXPH WKH 7/' LV FRQILJXUHG WR DOORZ ERG\ FRQWHQW

SXEOLF YRLG GR7DJ WKURZV -VS([FHSWLRQ ,2([FHSWLRQ ^ 6WULQJ>@ PRYLHV ^³6SLGHUPDQ´ ³6DYHG ´ ³$PHOLH´` IRU LQW L L PRYLHV OHQJWK L ^ JHW-VS&RQWH[W VHW$WWULEXWH ³PRYLH´ PRYLHV>L@ JHW-VS%RG\ LQYRNH QXOO ` `

// package and imports public class MyIteratorTag extends TagSupport {

,WHUDWLRQ7DJ LQWHUIDFH LQWHUIDFH!!

public int doStartTag() throws JspException {

,WHUDWLRQ7DJ

LQW GR$IWHU%RG\

7DJ6XSSRUW FODVV 7DJ6XSSRUW

public int doAfterBody() throws JspException {

YRLG GR$IWHU%RG\

LQW GR6WDUW7DJ

LQW GR(QG7DJ

YRLG VHW3DJH&RQWH[W 3DJH&RQWH[W

PRUH PHWKRGV

public int doEndTag() throws JspException {

} \RX DUH KHUH

Chapter 10. When even JSTL is not enough... Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 10. When even JSTL is not enough...

&ODVVLF WDJ H[HUFLVH

%( WKH &RQWDLQHU /RRN DW WKH OHJDO WDJ KDQGOHU FRGH EHORZ DQG ILJXUH RXW ZKHWKHU LW ZRXOG JLYH \RX WKH UHVXOW VKRZQ JLYHQ WKH -63 WDJ LQYRFDWLRQ OLVWHG EHORZ 7KLV LV DOVR WKH VDPH UHVXOW SURGXFHG E\ WKH &ODVVLF7DJ KDQGOHU IURP WKH SUHYLRXV SDJH <HV ZH·UH DQVZHULQJ WKH 6KDUSHQ <RXU 3HQFLO ZLWK \HW DQRWKHU H[HUFLVH 7KH WDJ KDQGOHU FODVV SDFNDJH DQG LPSRUWV SXEOLF FODVV 0\,WHUDWRU7DJ H[WHQGV 7DJ6XSSRUW ^ 6WULQJ>@ PRYLHV QHZ 6WULQJ>@ ^³6SLGHUPDQ´ ³6DYHG ´ ³$PHOLH´` LQW PRYLH&RXQWHU SXEOLF LQW GR6WDUW7DJ WKURZV -VS([FHSWLRQ ^ PRYLH&RXQWHU UHWXUQ (9$/B%2'<B,1&/8'( ` SXEOLF LQW GR$IWHU%RG\ WKURZV -VS([FHSWLRQ ^ LI PRYLH&RXQWHU PRYLHV OHQJWK ^ SDJH&RQWH[W VHW$WWULEXWH ³PRYLH´ PRYLHV>PRYLH&RXQWHU@ PRYLH&RXQWHU UHWXUQ (9$/B%2'<B$*$,1 ` HOVH ^ UHWXUQ 6.,3B%2'< ` ` SXEOLF LQW GR(QG7DJ WKURZV -VS([FHSWLRQ ^ UHWXUQ (9$/B3$*( ` `

-63 WKDW LQYRNHV WKH WDJ # WDJOLE SUH¿ [ ´PLQH´ XUL ´.DWK\&ODVVLF7DJV´ ! KWPO! ERG\! WDEOH ERUGHU ´ ´! PLQH LWHUDWH0RYLHV! WU! WG! ^PRYLH` WG! WU! PLQH LWHUDWH0RYLHV! WDEOH! ERG\! KWPO!

'HVLUHG UHVXOW KWWS ORFDOKRVW WHVWV 3DJH$ MVS

6SLGHUPDQ :H WDNH WKH VWLQJ RXW RI 62$3

6DYHG

&RQWDFW XV DW OLNHZHFDUH#ZLFNHGO\VPDUW FRP

$PHOLH

FKDSWHU

Chapter 10. When even JSTL is not enough... Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 10. When even JSTL is not enough...

FXVWRP WDJ GHYHORSPHQW

,MNI]T\ ZM\]ZV ^IT]M[ NZWU <IO;]XXWZ\ )F YOU DON T OVERRIDE THE 4AG3UPPORT LIFECYCLE METHODS THAT RETURN AN INTEGER BE AWARE OF THE DEFAULT VALUES THE 4AG3UPPORT METHOD IMPLEMENTATIONS RETURN 4HE 4AG3UPPORT CLASS ASSUMES THAT YOUR TAG DOESN T HAVE A BODY BY RETURNING 3+)0?"/$9 FROM DO3TART4AG AND THAT IF YOU $/ HAVE A BODY THAT S EVALUATED YOU WANT IT EVALUATED ONLY ONCE BY RETURNING 3+)0?"/$9 FROM DO!FTER"ODY )T ALSO ASSUMES THAT YOU WANT THE REST OF THE PAGE TO EVALUATE BY RETURNING %6!, 0!'% FROM DO%NDTAG

'HIDXOW UHWXUQ YDOXHV ZKHQ \RX GRQ·W RYHUULGH WKH 7DJ6XSSRUW PHWKRG LPSOHPHQWDWLRQ

7KH 7DJ6XSSRUW FODVV DVVXPHV \RXU WDJ GRHVQ·W KDYH D ERG\ RU WKDW LI WKH ERG\ ,6 HYDOXDWHG WKDW WKH ERG\ VKRXOG EH HYDOXDWHG RQO\ 21&(

GR6WDUW7DJ

6.,3B%2'< (9$/B%2'<B,1&/8'( GR$IWHU%RG\

6.,3B%2'<

,W DOVR DVVXPHV WKDW \RX DOZD\V ZDQW WKH UHVW RI WKH SDJH WR EH HYDOXDWHG

(9$/B%2'<B$*$,1 GR(QG7DJ

6.,3B3$*( (9$/B3$*(

GR6WDUW7DJ DQG GR(QG7DJ UXQ H[DFWO\ RQFH RZ WKLV OLIHF\FOH IRU WKH VW NQ \ PX <RX UHDOO WKDW GR6WDUW7DJ DQG UJHW Q¶W IR 'R H[DP OOHG DQG WKH\¶UH GR(QG7DJ DUH DOZD\V FD V RI DQ\WKLQJ FDOOHG RQO\ RQFH UHJDUGOHV IWHU%RG\ HOVH WKDW KDSSHQV %XW GR$ HV GHSHQGLQJ FDQ UXQ IURP WR PDQ\ WLP UW7DJ DQG RQ WKH UHWXUQ YDOXH RI GR6WD OV SUHYLRXV GR$IWHU%RG\ FDO

<RX 0867 RYHUULGH GR6WDUW7DJ LI \RX ZDQW WKH WDJ ERG\ WR E H HYDOXDWHG

7KLQN DERXW LW 7KH GHIDXOW UHWXUQ YD OXH IURP GR6WDUW7DJ LV 6.,3B%2'< VR LI \RX ZDQW WKH ERG\ RI \RXU WDJ HYDOXDWHG DQG \RX H[WHQ G 7DJ6XSSRUW \RX 0867 RYHUULGH GR6WDUW7DJ LI I RU QR RWKHU UHDVRQ WKDQ WR UHWXUQ (9$/B%2'<B,1&/8 '( :LWK GR$IWHU%RG\ LW VKRXOG EH REY LRXV WKDW LI \RX ZDQW WR LWHUDWH RYHU WKH ERG\ \RX KD YH WR RYHUULGH WKDW PHWKRG DV ZHOO VLQFH LWV UHWXUQ YDOXH LV 6.,3B%2'<

\RX DUH KHUH

Chapter 10. When even JSTL is not enough... Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 10. When even JSTL is not enough...

&ODVVLF WDJ H[HUFLVH DQVZHUV

%( WKH &RQWDLQHU $QVZHU 'HVLUHG UHVXOW

$FWXDO UHVXOW XQOHVV \RX DGG WKH WZR OLQHV KLJKOLJKWHG EHORZ

KWWS ORFDOKRVW WHVWV 3DJH$ MVS

KWWS ORFDOKRVW WHVWV 3DJH$ MVS

6SLGHUPDQ

6SLGHUPDQ

ThereÕs an empty cell at the top!

:H WDNH WKH VWLQJ RXW RI 62$3

:H WDNH WKH VWLQJ RXW RI 62$3

&RQWDFW XV DW OLNHZHFDUH#ZLFNHGO\VPDUW FRP

6DYHG &RQWDFW XV DW OLNHZHFDUH#ZLFNHGO\VPDUW FRP

6DYHG

$PHOLH

$PHOLH

7KH WDJ KDQGOHU FODVV SXEOLF FODVV 0\,WHUDWRU7DJ H[WHQGV 7DJ6XSSRUW ^ 6WULQJ>@ PRYLHV QHZ 6WULQJ>@ ^³6SLGHUPDQ´ ³6DYHG ´ ³$PHOLH´` LQW PRYLH&RXQWHU UST add SXEOLF LQW GR6WDUW7DJ WKURZV -VS([FHSWLRQ ^ PRYLH&RXQWHU

these two linesse. You M rrect respon co to produce the

SDJH&RQWH[W VHW$WWULEXWH ³PRYLH´ PRYLHV>PRYLH&RXQWHU@ PRYLH&RXQWHU UHWXUQ (9$/B%2'<B,1&/8'( ` SXEOLF LQW GR$IWHU%RG\ WKURZV -VS([FHSWLRQ ^ LI PRYLH&RXQWHU PRYLHV OHQJWK ^ SDJH&RQWH[W VHW$WWULEXWH ³PRYLH´ PRYLHV>PRYLH&RXQWHU@ PRYLH&RXQWHU UHWXUQ (9$/B%2'<B$*$,1 This doAfterBody() me ` HOVH ^ correct, but it runs onl thod was y TER UHWXUQ 6.,3B%2'< the body has already beenAF ` processed onc e! Wit hout the two extra line ` doS tar tTag(), the body is proces s in SXEOLF LQW GR(QG7DJ WKURZV -VS([FHSWLRQ ^ sed once without there being UHWXUQ (9$/B3$*( ` attribute, so you get the a movie ` empty

cell.

-63 WKDW LQYRNHV WKH WDJ # WDJOLE SUH¿ [ ´PLQH´ XUL ´.DWK\&ODVVLF7DJV´ ! KWPO! ERG\! WDEOH ERUGHU ´ ´! PLQH LWHUDWH0RYLHV! WU! WG! ^PRYLH` WG! WU! PLQH LWHUDWH0RYLHV! WDEOH! ERG\! KWPO!

FKDSWHU

Chapter 10. When even JSTL is not enough... Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 10. When even JSTL is not enough...

FXVWRP WDJ GHYHORSPHQW

WKHUH DUH QR

'XPE 4XHVWLRQV

4

4HIS SEEMS STUPIDˆTHERE S DUPLICATE CODE IN DO3TART4AG AND DO!FTER"ODY

$

9ES THERE S DUPLICATE CODE )N THIS CASE IF YOU RE IMPLEMENTING 4AG3UPPORT AND YOU WANT TO SET VALUES THE BODY CAN USE THEN YOU -534 SET THOSE ATTRIBUTE VALUES IN DO3TART4AG 9OU CAN T WAIT UNTIL DO!FTER"ODY BECAUSE BY THE TIME YOU GET TO DO!FTER"ODY THE BODY HAS ALREADY BEEN PROCESSED ONCE 9ES IT S KIND OF STUPID 7HICH IS WHY 3IMPLE4AG IS SO MUCH BETTER /F COURSE IF YOU WERE WRITING THE CODE YOU D MAKE A PRIVATE METHOD IN YOUR TAG HANDLER SAY SET-OVIE AND YOU D CALL THAT METHOD FROM BOTH DO3TART4AG AND DO!FTER"ODY "UT IT S STILL AN AWKWARD APPROACH

7KH &RQWDLQHU FDQ UHXVH &ODVVLF WDJ KDQGOHUV WHO\ GLIIHUHQW :DWFK RXW²WKLV LV FRPSOH ZKLFK DUH IURP 6LPSOH7DJ KDQGOHUV W PHDQV \RX GH¿ QLWHO\ 127 UHXVHG 7KD XW LQVWDQFH KDYH WR EH YHU\ FDUHIXO DER W WKHP LQ YDULDEOHV²\RX VKRXOG UHVH GR6WDUW7DJ YH D UHOHDVH 7KH 7DJ LQWHUIDFH GRHV KD O\ ZKHQ PHWKRG EXW WKDW¶V FDOOHG RQ DERXW WR EH WKH WDJ KDQGOHU LQVWDQFH LV R GRQ¶W UHPRYHG E\ WKH &RQWDLQHU 6 ZD\ WR UHVHW DVVXPH WKDW UHOHDVH LV D HWZHHQ WDJ WKH WDJ KDQGOHU¶V VWDWH LQ E LQYRFDWLRQV

4

7(9 ARE YOU SETTING THE INSTANCE VARIABLE VALUE FOR MOVIE#OUNTER ).3)$% THE DO3TART4AG METHOD 7HY CAN T YOU JUST INITIALIZE IT WHEN YOU DECLARE IT

$

9IKES 5NLIKE 3IMPLE4AG HANDLERS WHICH ARE NEVER REUSED A #LASSIC TAG HANDLER CAN BE POOLED AND REUSED BY THE #ONTAINER 4HAT MEANS YOU D BETTER RESET YOUR INSTANCE VARIABLE VALUES WITH EACH NEW TAG INVOCATION WHICH MEANS IN DO3TART4AG /THERWISE THIS CODE WORKS THE FIRST TIME BUT THE NEXT TIME A *30 INVOKES IT THE MOVIE#OUNTER VARIABLE WILL STILL HAVE ITS LAST VALUE INSTEAD OF

\RX DUH KHUH

Chapter 10. When even JSTL is not enough... Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 10. When even JSTL is not enough...

%RG\7DJ LQWHUIDFH

*]\ _PI\ QN aW] ,7 VMML IKKM[[ \W \PM JWLa KWV\MV\[' 9OU LL PROBABLY l ND THAT MOST OF THE TIME THE LIFECYCLE METHODS FROM THE 4AG AND )TERATION4AG INTERFACES AS PROVIDED BY 4AG3UPPORT ARE ENOUGH "ETWEEN THE THREE KEY METHODS DO3TART4AG DO!FTER"ODY AND DO%ND4AG YOU CAN DO JUST ABOUT ANYTHING %XCEPT YOU DON T HAVE DIRECT ACCESS TO THE CONTENTS OF THE BODY )F YOU NEED ACCESS TO THE ACTUAL BODY CONTENTS SO THAT YOU CAN SAY USE IT IN AN EXPRESSION OR PERHAPS l LTER OR ALTER IT IN SOME WAY THEN EXTEND "ODY4AG3UPPORT INSTEAD OF 4AG3UPPORT AND YOU LL HAVE ACCESS TO THE "ODY4AG INTERFACE METHODS LQWHUIDFH!!

7DJ LQW GR(QG7DJ

7DJ JHW3DUHQW

LQW GR6WDUW7DJ

YRLG VHW3DJH&RQWH[W 3DJH&RQWH[W

YRLG VHW3DUHQW 7DJ

YRLG UHOHDVH

,WHUDWLRQ7DJ LQWHUIDFH LQWHUIDFH!!

([WHQGLQJ %RG\7DJ6XSSRUW JLYHV \RX WZR PRUH OLIHF\FOH PHWKRGV IURP WKH %RG\7DJ LQWHUIDFH³VHW%RG\&RQWHQW DQG GR,QLW%RG\ <RX FDQ XVH WKHVH WR GR VRPHWKLQJ ZLWK WKH DFWXDO &217(176 RI WKH ERG\ RI WKH WDJ XVHG WR LQYRNH WKH KDQGOHU

,WHUDWLRQ7DJ LQW GR$IWHU%RG\

7DJ6XSSRUW FODVV

%RG\7DJ LQWHUIDFH LQWHUIDFH!!

%RG\7DJ YRLG GR,QLW%RG\

YRLG VHW%RG\&RQWHQW %RG\&RQWHQW

7DJ6XSSRUW YRLG GR$IWHU%RG\

LQW GR6WDUW7DJ

LQW GR(QG7DJ

YRLG VHW3DJH&RQWH[W 3DJH&RQWH[W

PRUH PHWKRGV

%RG\7DJ6XSSRUW FODVV %RG\7DJ6XSSRUW LQW GR6WDUW7DJ

%RG\&RQWHQW JHW%RG\&RQWHQW

YRLG GR,QLW%RG\

YRLG VHW%RG\&RQWHQW %RG\&RQWHQW

PRUH PHWKRGV

FKDSWHU

Chapter 10. When even JSTL is not enough... Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 10. When even JSTL is not enough...

FXVWRP WDJ GHYHORSPHQW

?Q\P *WLa<IO aW] OM\ \ _W VM_ UM\PWL[ 7HEN YOU IMPLEMENT "ODY4AG BY EXTENDING "ODY4AG3UPPORT YOU GET TWO MORE LIFECYCLE METHODSˆSET"ODY#ONTENT AND DO)NIT"ODY 9OU ALSO GET ONE NEW RETURN VALUE FOR DO3TART4AG %6!,?"/$9?"5&&%2%$ 4HAT MEANS THERE ARE NOW THREE POSSIBLE RETURN VALUES FOR DO3TART4AG INSTEAD OF THE TWO YOU GET WHEN YOU EXTEND 4AG3UPPORT /LIHF\FOH IRU D WDJ WKDW LPSOHPHQWV %RG\7DJ GLUHFWO\ RU E\ H[WHQGLQJ %RG\7DJ6XSSRUW

UHWXUQ (9$/B%2'<B%8))(5('

VHW%RG\&RQWHQW

GR6WDUW7DJ

UHWXUQ 6. XUQ 6 ,3B%2'< UHWXUQ (9$/B%2'<B,1&/8'( 2

GR,QLW%RG\

(YDOXDWH %2'< UHWXUQ (9 9$ $/B%2'<B$*$,1

GR$IWHU%RG\

UHWXUQ 6.,3B%2'< ,

GR(QG7DJ

$ FKDQJH LQ WKH GHIDXOW UHWXUQ YDOXH IRU %RG\7DJ6XSSRUW

UHWXUQ 6.,3B3$*( UQ 6 UHWXUQ (9$/B3$*( $

GR6WDUW7DJ

6.,3B%2'<

(YDOXDWH 3$*(

(9$/B%2'<B,1&/8'( (9$/B%2'<B%8))(5('

the New return value, and itÕs rt. ppo gSu yTa Bod for default (Instead of SKIP_BODY, the default for TagSupport.)

'RQH

\RX DUH KHUH

Chapter 10. When even JSTL is not enough... Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 10. When even JSTL is not enough...

%RG\7DJ DQG %RG\7DJ6XSSRUW

?Q\P *WLa<IO aW] KIV J]NNMZ \PM JWLa 4HE "ODY#ONTENT ARGUMENT TO SET"ODY#ONTENT IS ACTUALLY A TYPE OF JAVA IO 7RITER 9ES IT S /+ TO l ND THAT DISTURBING FROM AN // PERSPECTIVE "UT THAT MEANS YOU CAN PROCESS THE BODY BY SAY CHAINING IT TO ANOTHER )/ STREAM OR GETTING THE RAW BYTES

4

7HAT HAPPENS IF ) RETURN %6!,?"/$9?"5&&%2%$ EVEN THOUGH THE INVOKING TAG IS EMPTY

$

4HE SET"ODY#ONTENT AND DO)NIT"ODY METHOD WILL NOT BE CALLED IF THE TAG INVOKING THE HANDLER IS EMPTY !ND BY EMPTY WE MEAN THAT THE TAG WAS INVOKED USING AN EMPTY TAG MY TAG OR WITH NO CONTENT BETWEEN THE OPENING AND CLOSING TAGS MY TAG MY TAG 4HE #ONTAINER KNOWS THERE S NO BODY THIS TIME AND IT JUST SKIPS TO THE DO%ND4AG METHOD SO THIS IS USUALLY NOT A PROBLEM 5NLESS THE 4,$ DECLARES THE TAG TO HAVE AN EMPTY BODY )F THE 4,$ SAYS BODY CONTENT EMPTY BODY CONTENT YOU DON T HAVE A CHOICE AND YOU MUST ./4 RETURN %6!,?"/$9?"5&&%2%$ OR %6!,?"/$9?).#,5$% FROM DO3TART4AG

WKH UHVW QG SUREDEO\ IRU )RU WKH H[DP D QHHG RSPHQW OLIH \RX RI \RXU -63 GHYHO DJ6XSSRUW G\7 %R RU OH I F\F WR NQRZ WKH OLIH <RX IURP 7DJ6XSSRUW DQG KRZ LW GLIIHUV SOH WKDW LI \RX [DP U H IR RZ QHHG WR NQ G\7DJ6XSSRUW RU GR 127 H[WHQG %R 127 J WKHQ \RX PXVW \7D RG W % HQ OHP LPS P <B%8))(5(' IUR 2' B% $/ (9 XUQ UHW Z WKH G \RX VKRXOG NQR GR6WDUW7DJ $Q J V IURP WKH %RG\7D WZR QHZ PHWKRG DERXW LW LQWHUIDFH EXW WKDW¶V

4

7HAT ABOUT ATTRIBUTES IN A #LASSIC TAG !RE THEY HANDLED THE SAME WAY AS WITH 3IMPLE TAGS

$

9ES ON THE SEQUENCE DIAGRAM FOR BOTH 3IMPLE TAG HANDLERS AND #LASSIC TAG HANDLERS THERE WAS A PLACE WHERE BEAN STYLE SETTER METHODS ARE CALLED FOR EACH ATTRIBUTE 4HIS HAPPENS BEFORE A 3IMPLE TAG S DO4AG OR A #LASSIC TAG S DO3TART4AG )N OTHER WORDS TAG ATTRIBUTES WORK IN EXACTLY THE SAME WAY FOR BOTH #LASSIC AND 3IMPLE TAGS INCLUDING THE WAY IN WHICH THEY RE DECLARED IN THE 4,$

R <RX GRQ¶W QHHG W LOV RI NQRZ DOO WKH GHWD 6XSSRUW XVLQJ %RG\7DJ

,I WKH 7/' IRU D WDJ GHFODUHV DQ HPSW\ ERG\ GR6WDU W7DJ 0867 UHWXUQ 6.,3B% 2'< 7KDW PLJKW EH RE YLRXV EXW LW PHDQ V \RX KDYH WR EH NHHS \RXU WDJ K FDUHIXO WR DQGOHU DQG 7/' L Q V\QF 6R LI \RX WDJ LQ WKH 7/' WR K GHFODUH D DYH ERG\ FRQWHQ W!HPSW\ ERG\ WKHQ WKHUH LV DEVR FRQWHQW! OXWHO\ 12 SRLQW LQ LPSOHPHQWLQJ % H[WHQGLQJ %RG\7D RG\7DJ RU J6XSSRUW 7KDW DOVR PHDQV WKHUH LQ LPSOHPHQWLQJ LV QR SRLQW ,WHUDWLRQ7DJ EXW \RX JHW WKDW DXWRP H[WHQGLQJ 7DJ6X DWLFDOO\ E\ SSRUW 7KH SRLQW LV \RX Q HHG WR UHWXUQ 6. ,3B%2'< IURP LI \RXU 7/' GHFOD GR6WDUW7DJ UHV DQ HPSW\ ER G\ IRU WKH WDJ H LPSOHPHQW ,WHUDW YHQ ,) \RX LRQ7DJ RU %RG\7 DJ

FKDSWHU

Chapter 10. When even JSTL is not enough... Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 10. When even JSTL is not enough...

FXVWRP WDJ GHYHORSPHQW

/LIHF\FOH PHWKRGV IRU &ODVVLF WDJ PHWKRGV

([HUFLVH

)LOO LQ WKH FKDUW EHORZ :H·YH FRYHUHG DOPRVW HYHU\WKLQJ \RX QHHG WR GR WKLV FRUUHFWO\ EXW \RX·OO KDYH WR JXHVV LQ D IHZ SODFHV 'RQ·W WXUQ WKH SDJH

%RG\7DJ6XSSRUW

7DJ6XSSRUW

GR6WDUW7DJ SRVVLEOH UHWXUQ YDOXHV

GHIDXOW UHWXUQ YDOXH IURP WKH LPSOHPHQWDWLRQ FODVV 1XPEHU RI WLPHV LW FDQ EH FDOOHG SHU WDJ LQYRFDWLRQ IURP D -63

GR$IWHU%RG\ SRVVLEOH UHWXUQ YDOXHV

GHIDXOW UHWXUQ YDOXH IURP WKH LPSOHPHQWDWLRQ FODVV 1XPEHU RI WLPHV LW FDQ EH FDOOHG SHU WDJ LQYRFDWLRQ IURP D -63

GR(QG7DJ

SRVVLEOH UHWXUQ YDOXHV

GHIDXOW UHWXUQ YDOXH IURP WKH LPSOHPHQWDWLRQ FODVV 1XPEHU RI WLPHV LW FDQ EH FDOOHG SHU WDJ LQYRFDWLRQ IURP D -63

GR,QLW%RG\ DQG VHW%RG\&RQWHQW

&LUFXPVWDQFHV XQGHU ZKLFK WKH\ FDQ EH FDOOHG DQG QXPEHU RI WLPHV SHU WDJ LQYRFDWLRQ \RX DUH KHUH

Chapter 10. When even JSTL is not enough... Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 10. When even JSTL is not enough...

&ODVVLF WDJ OLIHF\FOH UHWXUQ YDOXHV

/LIHF\FOH UHWXUQ YDOXHV IRU &ODVVLF WDJ PHWKRGV

([HUFLVH $QVZHUV

<RX·UH H[SHFWHG WR NQRZ DOO RI WKLV IRU WKH H[DP

%RG\7DJ6XSSRUW

7DJ6XSSRUW

SKIP_BODY EVAL_BODY_INCLUDE EVAL_BODY_BUFFERED

SKIP_BODY EVAL_BODY_INCLUDE

GHIDXOW UHWXUQ YDOXH IURP WKH LPSOHPHQWDWLRQ FODVV

EVAL_BODY_BUFFERED

SKIP_BODY

1XPEHU RI WLPHV LW FDQ EH FDOOHG SHU WDJ LQYRFDWLRQ IURP D -63

Exactly once

Exactly once

GR$IWHU%RG\

SKIP_BODY EVAL_BODY_AGAIN

SKIP_BODY EVAL_BODY_AGAIN

GHIDXOW UHWXUQ YDOXH IURP WKH LPSOHPHQWDWLRQ FODVV

SKIP_BODY

SKIP_BODY

1XPEHU RI WLPHV LW FDQ EH FDOOHG SHU WDJ LQYRFDWLRQ IURP D -63

Zero to many

Zero to many

GR(QG7DJ

SKIP_PAGE EVAL_PAGE

SKIP_PAGE EVAL_PAGE

GHIDXOW UHWXUQ YDOXH IURP WKH LPSOHPHQWDWLRQ FODVV

EVAL_PAGE

EVAL_PAGE

1XPEHU RI WLPHV LW FDQ EH FDOOHG SHU WDJ LQYRFDWLRQ IURP D -63

Exactly once

GR,QLW%RG\ DQG VHW%RG\&RQWHQW

Exactly once, and ONLY if doStartTag() returns EVAL_BODY_BUFFERED

GR6WDUW7DJ SRVVLEOH UHWXUQ YDOXHV

SRVVLEOH UHWXUQ YDOXHV

SRVVLEOH UHWXUQ YDOXHV

&LUFXPVWDQFHV XQGHU ZKLFK WKH\ FDQ EH FDOOHG DQG QXPEHU RI WLPHV SHU WDJ LQYRFDWLRQ

Exactly once NEVER!

FKDSWHU

Chapter 10. When even JSTL is not enough... Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 10. When even JSTL is not enough...

FXVWRP WDJ GHYHORSPHQW

?PI\ QN aW] PI^M \IO[ \PI\ _WZS \WOM\PMZ' )MAGINE THIS SCENARIO YOU HAVE A MY -ENU TAG THAT BUILDS A CUSTOM NAVIGATION BAR )T NEEDS MENU ITEMS 3O YOU USE A MY -ENU)TEM TAG NESTED WITHIN THE MY -ENU TAG AND THE MENU TAG GETS AHOLD SOMEHOW OF THE MENU ITEMS AND USES THOSE ITEMS TO BUILD THE NAVIGATION BAR PLQH 0HQX ! PLQH 0HQX,WHP LWHP9DOXH ´'RJV´ ! PLQH 0HQX,WHP LWHP9DOXH ´&DWV´ ! PLQH 0HQX,WHP LWHP9DOXH ´+RUVHV´ ! PLQH 0HQX!

tribute g needs the atenuItem tags... The Menu tath M ed st e ne values from

4HE BIG QUESTION IS HOW DO THE TAGS TALK TO ONE ANOTHER )N OTHER WORDS HOW DOES THE -ENU TAG THE ENCLOSING TAG GET THE ATTRIBUTE VALUES FROM THE -ENU)TEMS THE INNER NESTED TAGS .ESTED TAGS ARE USED IN SEVERAL PLACES IN THE *34, THE C CHOOSE TAG WITH ITS NESTED C WHEN AND C OTHERWISE TAGS IS A GOOD EXAMPLE !ND YOU MIGHT NEED TO USE hCOOPERATING TAGSv THAT S HOW THE SPEC SAYS IT IN YOUR OWN CUSTOM DEVELOPMENT AS WELL &ORTUNATELY THERE S A MECHANISM FOR GETTING INFO TO AND FROM OUTER AND INNER TAGS REGARDLESS OF THE DEPTH OF NESTING 4HAT MEANS YOU CAN GET INFO FROM A DEEPLY NESTED TAG OUT TO NOT JUST THE TAG S IMMEDIATE ENCLOSING TAG BUT TO ANY ARBITRARY TAG UP THE TAG NESTING HIERARCHY

6KDUSHQ \RXU SHQFLO /RRN DW WKH 7DJ $3, UHYLHZ WKH SUHYLRXV WDJ KDQGOHU FRGH DQG WKLQN DERXW KRZ FRRSHUDWLQJ WDJV PLJKW JHW LQIR WR DQG IURP RQH DQRWKHU

LQWHUIDFH!!

7DJ LQW GR(QG7DJ

7DJ JHW3DUHQW

LQW GR6WDUW7DJ

YRLG VHW3DJH&RQWH[W 3DJH&RQWH[W

YRLG VHW3DUHQW 7DJ

YRLG UHOHDVH

\RX DUH KHUH

Chapter 10. When even JSTL is not enough... Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 10. When even JSTL is not enough...

WKH JHW3DUHQW PHWKRG

) <IO KIV KITT Q\[ 8IZMV\ <IO "OTH 3IMPLE4AG AND 4AG HAVE A GET0ARENT METHOD 4HE GET0ARENT IN 4AG RETURNS A 4AG BUT THE GET0ARENT IN 3IMPLE4AG RETURNS AN INSTANCE OF *SP4AG 7E LL SEE THE IMPLICATIONS OF THOSE RETURN TYPES IN A MINUTE LQWHUIDFH!!

-VS7DJ

LQWHUIDFH!!

LQWHUIDFH!!

6LPSOH7DJ

7DJ

YRLG GR7DJ

LQW GR(QG7DJ

-VS7DJ JHW3DUHQW

7DJ JHW3DUHQW

YRLG VHW-VS%RG\ -VS)UDJPHQW

LQW GR6WDUW7DJ

YRLG VHW-VS&RQWH[W -VS&RQWH[W

YRLG VHW3DJH&RQWH[W 3DJH&RQWH[W

YRLG VHW3DUHQW -VS7DJ SDUHQW

YRLG VHW3DUHQW 7DJ

YRLG UHOHDVH

$ QHVWHG WDJ FDQ DFFHVV LWV SDUHQW HQFORVLQJ WDJ PLQH 2XWHU7DJ! PLQH ,QQHU7DJ ! PLQH 2XWHU7DJ!

In this relationship, ÒOuterTagÓ is the parent of ÒInnerTagÓ.

*HWWLQJ WKH SDUHQW WDJ LQ D &ODVVLF WDJ KDQGOHU SXEOLF LQW GR6WDUW7DJ WKURZV -VS([FHSWLRQ ^ 2XWHU7DJ SDUHQW 2XWHU7DJ JHW3DUHQW GR VRPHWKLQJ ZLWK LW UHWXUQ (9$/B%2'<B,1&/8'( ` orget

DonÕt f it ! to cast

*HWWLQJ WKH SDUHQW WDJ LQ D 6LPSOH WDJ KDQGOHU SXEOLF YRLG GR7DJ WKURZV -VS([FHSWLRQ ,2([FHSWLRQ ^ 2XWHU7DJ SDUHQW 2XWHU7DJ JHW3DUHQW GR VRPHWKLQJ ZLWK LW `

Again, donÕt fo

the same as ItÕs exactly ta g handler. ic ss la C in a

rget the cast.

FKDSWHU

Chapter 10. When even JSTL is not enough... Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 10. When even JSTL is not enough...

FXVWRP WDJ GHYHORSPHQW

.QVL W]\ R][\ PW_ LMMX \PM VM[\QVO OWM[ 9OU CAN WALK YOUR WAY UP THE ANCESTOR TAG CHAIN BY CONTINUING TO CALL GET0ARENT ON WHATEVER IS RETURNED BY GET0ARENT "ECAUSE GET0ARENT RETURNS EITHER ANOTHER TAG ON WHICH YOU CAN CALL GET0ARENT OR NULL ,Q D -63 PLQH 1HVWHG/HYHO! PLQH 1HVWHG/HYHO! PLQH 1HVWHG/HYHO ! PLQH 1HVWHG/HYHO! PLQH 1HVWHG/HYHO!

,Q D &ODVVLF WDJ KDQGOHU SDFNDJH IRR LPSRUW MDYD[ VHUYOHW MVS LPSRUW MDYD[ VHUYOHW MVS WDJH[W LPSRUW MDYD LR SXEOLF FODVV 1HVWHG/HYHO7DJ H[WHQGV 7DJ6XSSRUW ^ SULYDWH LQW QHVW/HYHO SXEOLF LQW GR6WDUW7DJ WKURZV -VS([FHSWLRQ ^ QHVW/HYHO

t() method. ted getParen Call the inheri If itÕs null, then weÕre at the top level, ZKLOH SDUHQW QXOO ^ and we donÕt have a parent. SDUHQW SDUHQW JHW3DUHQW QHVW/HYHO parent of the ` But if itÕs not null, get the nt the counter. eme incr ` and , got just parent we 7DJ SDUHQW JHW3DUHQW

WU\ ^ SDJH&RQWH[W JHW2XW SULQWOQ Âł EU!7DJ QHVWHG OHYHO Âł QHVW/HYHO ` FDWFK ,2([FHSWLRQ H[ ^ WKURZ QHZ -VS([FHSWLRQ Âł,2([FHSWLRQ Âł H[ WR6WULQJ

` UHWXUQ (9$/B%2'<B,1&/8'( ` `

5HVXOW

7DJ QHVWHG OHYHO 7DJ QHVWHG OHYHO 7DJ QHVWHG OHYHO &RQWDFW XV DW OLNHZHFDUH#ZLFNHGO\VPDUW FRP :H WDNH WKH VWLQJ RXW RI 62$3

\RX DUH KHUH

Chapter 10. When even JSTL is not enough... Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 10. When even JSTL is not enough...

6LPSOH DQG &ODVVLF LQWHUDFWLRQ

;QUXTM \IO[ KIV PI^M +TI[[QK XIZMV\[ 4HIS IS NOT A PROBLEM BECAUSE A 3IMPLE4AG S GET0ARENT RETURNS TYPE *SP4AG AND #LASSIC TAGS AND 3IMPLE TAGS NOW SHARE THE *SP4AG SUPER INTERFACE !CTUALLY #LASSIC TAGS CAN HAVE 3IMPLE PARENTS BUT IT TAKES A SLIGHT HACK TO MAKE THAT WORK BECAUSE YOU CAN T CAST A 3IMPLE4AG TO THE 4AG RETURN VALUE OF THE 4AG INTERFACE GET0ARENT 7E WON T GO INTO HOW TO ACCESS A 3IMPLE TAG PARENT FROM A #LASSIC CHILD TAG

BUT ALL YOU NEED TO KNOW FOR THE EXAM AND ALMOST CERTAINLY REAL WEB APP LIFE IS THAT BY USING GET0ARENT A #LASSIC TAG CAN ACCESS #LASSIC TAG PARENTS AND A 3IMPLE TAG CAN ACCESS EITHER A #LASSIC OR 3IMPLE PARENT LQWHUIDFH!!

-VS7DJ

LQWHUIDFH!!

LQWHUIDFH!!

6LPSOH7DJ

7DJ

-VS7DJ JHW3DUHQW

YRLG VHW3DUHQW -VS7DJ SDUHQW

7DJ JHW3DUHQW

YRLG VHW3DUHQW 7DJ

PRUH

PRUH

,Q D -63 PLQH &ODVVLF3DUHQW QDPH ´&ODVVLF3DUHQW7DJ´! PLQH 6LPSOH,QQHU ! PLQH &ODVVLF3DUHQW!

,Q WKH 6LPSOH,QQHU WDJ KDQGOHU

8VLQJ WKH JHW3DUHQW PHWKRG D &ODVVLF WDJ FDQ DFFHVV &ODVVLF WDJ SDUHQWV DQG D 6LPSOH WDJ FDQ DFFHVV HLWKHU D &ODVVLF RU 6LPSOH SDUHQW

wants What if the child (SimpleInner) ibute? attr eÓ Ònam ntÕs pare the to access ItÕs OK for a SimpleTag to ask for a Classic parent...

SXEOLF YRLG GR7DJ WKURZV -VS([FHSWLRQ ,2([FHSWLRQ ^ 0\&ODVVLF3DUHQW SDUHQW 0\&ODVVLF3DUHQW JHW3DUHQW JHW-VS&RQWH[W JHW2XW SULQW Âł3DUHQW DWWULEXWH LV Âł SDUHQW JHW1DPH

`

Once you have a parent, you call methods on it like any other can object, so you can get attribuJava tes of the parent tag!

,Q WKH &ODVVLF3DUHQW WDJ KDQGOHU

SXEOLF FODVV 0\&ODVVLF3DUHQW H[WHQGV 7DJ6XSSRUW ^ SULYDWH 6WULQJ QDPH SXEOLF YRLG VHW1DPH 6WULQJ QDPH ^ WKLV QDPH QDPH attribute, so ` Provide a getter method forthetheattribute value. SXEOLF 6WULQJ JHW1DPH ^ get can tag child the that UHWXUQ QDPH ` SXEOLF LQW GR6WDUW7DJ WKURZV -VS([FHSWLRQ ^ ,I \RX¡UH UHDOO\ FXULRXV ORRN DW WKH UHWXUQ (9$/B%2'<B,1&/8'( the ` If you return SKIP_BODY,esse 7DJ$GDSWHU FODVV LQ WKH - (( $3, d! ` proc be will never

inner tag

FKDSWHU

Chapter 10. When even JSTL is not enough... Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 10. When even JSTL is not enough...

FXVWRP WDJ GHYHORSPHQW

AW] KIV _ITS ]X J]\ aW] KIV¼\ _ITS LW_V 4HERE S A GET0ARENT METHOD BUT THERE S NO GET#HILD 9ET THE SCENARIO WE SHOWED EARLIER WAS FOR AN OUTER MY -ENU TAG THAT NEEDED ACCESS TO ITS NESTED MY -ENU)TEM TAGS 7HAT CAN WE DO (OW CAN THE PARENT TAG GET INFORMATION ABOUT THE CHILD TAGS WHEN A CHILD CAN GET A REFERENCE TO THE PARENT BUT THE PARENT CAN T ASK FOR A REFERENCE TO THE CHILD

7KDW LV VR VDG

,W·V WUDJLF 0\ FKLOG FDQ À QG PH KLV SDUHQW EXW , KDYH QR ZD\ WR À QG P\ FKLOG , MXVW KDYH WR ZDLW IRU KLP WR FDOO 0(

6KDUSHQ \RXU SHQFLO +RZ FRXOG D SDUHQW WDJ JHW DWWULEXWH YDOXHV IURP D FKLOG WDJ" 'HVFULEH KRZ \RX ZRXOG LPSOHPHQW WKH IXQFWLRQDOLW\ RI WKH FRRSHUDWLQJ 0HQX DQG 0HQX,WHP WDJV

\RX DUH KHUH

Chapter 10. When even JSTL is not enough... Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 10. When even JSTL is not enough...

VHQGLQJ LQIR WR WKH SDUHQW

/M\\QVO QVNW NZWU KPQTL \W XIZMV\ 7E HAVE TWO MAIN WAYS IN WHICH TAGS CAN COOPERATE WITH ONE ANOTHER 4HE CHILD TAG NEEDS INFO LIKE AN ATTRIBUTE VALUE FROM ITS PARENT TAG 4HE PARENT TAG NEEDS INFO FROM EACH OF ITS CHILD TAGS 7E VE ALREADY SEEN HOW THE l RST SCENARIO WORKSˆTHE CHILD TAG GETS A REFERENCE TO ITS PARENT USING GET0ARENT THEN CALLS GETTER METHODS ON THE PARENT "UT WHAT HAPPENS WHEN THE PARENT NEEDS INFO FROM THE CHILD 7E HAVE TO DO THE SAME THING )N OTHER WORDS IF THE PARENT NEEDS INFO FROM THE CHILD IT S THE CHILD S JOB TO GIVE IT TO THE PARENT 3INCE THERE S NO AUTOMATIC MECHANISM FOR THE PARENT TO l ND OUT ABOUT ITS CHILD TAGS YOU SIMPLY HAVE TO USE THE SAME DESIGN APPROACH TO GET INFO TO THE PARENT FROM THE CHILD AS YOU DO TO GET INFO FROM THE PARENT TO THE CHILD 9OU GET A REFERENCE TO THE PARENT TAG AND CALL METHODS /NLY INSTEAD OF GETTERS THIS TIME YOU LL CALL SOME KIND OF SET OR ADD METHOD ,Q D -63 # WDJOLE SUHÂż [ ´PLQH´ XUL ´.DWK\&ODVVLF7DJV´ ! KWPO! ERG\! PLQH 0HQX ! PLQH 0HQX,WHP LWHP9DOXH ´'RJV´ ! PLQH 0HQX,WHP LWHP9DOXH ´&DWV´ ! PLQH 0HQX,WHP LWHP9DOXH ´+RUVHV´ ! PLQH 0HQX! ERG\! KWPO!

5HVXOW KWWS ORFDOKRVW WHVWV 3DJH$ MVS

0HQX LWHPV DUH >'RJV &DWV +RUVHV@ :H WDNH WKH VWLQJ RXW RI 62$3 &RQWDFW XV DW OLNHZHFDUH#ZLFNHGO\VPDUW FRP

didnÕt actually DOprove In this example we me nu items except anything with the , but you can imagine that we got them the items to build a that you might use example... navigation bar, for

FKDSWHU

Chapter 10. When even JSTL is not enough... Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 10. When even JSTL is not enough...

FXVWRP WDJ GHYHORSPHQW

5MV] IVL 5MV]1\MU \IO PIVLTMZ[ ,Q WKH FKLOG WDJ 0HQX,WHP SXEOLF FODVV 0HQX,WHP H[WHQGV 7DJ6XSSRUW ^ SULYDWH 6WULQJ LWHP9DOXH SXEOLF YRLG VHW,WHP9DOXH 6WULQJ YDOXH ^ LWHP9DOXH YDOXH `

ribute declared in e MenuItem has an att mValue. This is th ... ite e th the TLD for to the parent tag d sen value we need to

SXEOLF LQW GR6WDUW7DJ WKURZV -VS([FHSWLRQ ^ UHWXUQ (9$/B%2'<B,1&/8'( ` SXEOLF LQW GR(QG7DJ WKURZV -VS([FHSWLRQ ^ 0HQX SDUHQW 0HQX JHW3DUHQW

SDUHQW DGG0HQX,WHP LWHP9DOXH UHWXUQ (9$/B3$*( ` `

SimpleÑget a tag and call itsreference to the parent addMenuItem() method.

,Q WKH SDUHQW WDJ 0HQX

d! setter metho child an attribute This is NOTd exists ONLY so that athe This metho ll the parent tag about in between tag can te ibute value. (ItÕs called SXEOLF YRLG DGG0HQX,WHP 6WULQJ LWHP ^ childÕs attr () and doEndTag()).) LWHPV DGG LWHP ` doStartTag artTag(), SXEOLF LQW GR6WDUW7DJ WKURZV -VS([FHSWLRQ ^ ayList in dothSte Container. rr A e th t se by to re LWHPV QHZ $UUD\/LVW DonÕt forgetg handler might be reused since the ta UHWXUQ (9$/B%2'<B,1&/8'( If you do no ` the child tagÕts return EVAL_BODY_INCL will never be pr UDE, ocessed! SXEOLF LQW GR(QG7DJ WKURZV -VS([FHSWLRQ ^ SXEOLF FODVV 0HQX H[WHQGV 7DJ6XSSRUW ^ SULYDWH $UUD\/LVW LWHPV

WU\ ^ SDJH&RQWH[W JHW2XW SULQWOQ Âł0HQX LWHPV DUH Âł LWHPV ` FDWFK ([FHSWLRQ H[ ^ WKURZ QHZ -VS([FHSWLRQ Âł([FHSWLRQ Âł H[ WR6WULQJ

` LPDJLQH FRPSOH[ PHQX EXLOGLQJ FRGH KHUH UHWXUQ (9$/B3$*( ` ` \RX DUH KHUH

Chapter 10. When even JSTL is not enough... Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 10. When even JSTL is not enough...

¿QGLQJ DQ DQFHVWRU

/M\\QVO IV IZJQ\ZIZa IVKM[\WZ 4HERE IS ANOTHER MECHANISM YOU CAN USE IF YOU WANT TO SAY SKIP SOME NESTING LEVELS AND GO STRAIGHT TO A GRANDPARENT OR SOMETHING EVEN FURTHER UP THE TAG NESTING HIERARCHY 4HE METHOD IS IN BOTH 4AG3UPPORT AND 3IMPLE4AG3UPPORT ALTHOUGH THEY HAVE SLIGHTLY DIFFERENT BEHAVIOR AND IT S CALLED lND!NCESTOR7ITH#LASS *HWWLQJ DQ LPPHGLDWH SDUHQW XVLQJ JHW3DUHQW

2XWHU7DJ SDUHQW 2XWHU7DJ JHW3DUHQW

*HWWLQJ DQ DUELWUDU\ DQFHVWRU XVLQJ ÀQG$QFHVWRU:LWK&ODVV

:D\2XWHU7DJ DQFHVWRU :D\2XWHU7DJ ¿QG$QFHVWRU:LWK&ODVV WKLV :D\2XWHU7DJ FODVV

¿QG$QFHVWRU:LWK&ODVV WKLV :D\2XWHU7DJ FODVV

g starting ta

the class of the

tag you want

4HE #ONTAINER WALKS THE TAG NESTING HIEARARCHY UNTIL IT lNDS A TAG THAT S AN INSTANCE OF THIS CLASS )T RETURNS THE lRST ONE SO THERE S NO WAY TO SAY hSKIP THE lRST TAG YOU SEE THAT S AN INSTANCE OF 7AY/UTER4AG CLASS AND GIVE ME THE SECOND INSTANCE INSTEAD v 3O IF YOU REALLY KNOW FOR A FACT THAT YOU WANTED THE SECOND INSTANCE OF A TAG ANCESTOR OF THAT TYPE YOU LL JUST HAVE TO GET THE RETURN VALUE OF lND!NCESTOR7ITH#LASS AND THEN CALL GET0ARENT OR lND!NCESTOR7ITH#LASS ON IT 9OU WILL NOT BE TESTED ON ANY DETAILS OF USING lND!NCESTOR7ITH#LASS !LL YOU NEED TO KNOW FOR THE EXAM IS THAT IT EXISTS

FKDSWHU

Chapter 10. When even JSTL is not enough... Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 10. When even JSTL is not enough...

FXVWRP WDJ GHYHORSPHQW

([HUFLVH

.H\ GLIIHUHQFHV EHWZHHQ 6LPSOH DQG &ODVVLF WDJV

6LPSOH WDJV

&ODVVLF WDJV

7DJ LQWHUIDFHV

6XSSRUW LPSOHPHQWDWLRQ FODVVHV

.H\ OLIHF\FOH PHWKRGV WKDW <28 PLJKW LPSOHPHQW

+RZ \RX ZULWH WR WKH UHVSRQVH RXWSXW

+RZ \RX DFFHVV LPSOLFLW YDULDEOHV DQG VFRSHG DWWULEXWHV IURP D VXSSRUW LPSOHPHQWDWLRQ

+RZ \RX FDXVH WKH ERG\ WR EH SURFHVVHG

+RZ \RX FDXVH WKH FXUUHQW SDJH HYDOXDWLRQ WR 6723

\RX DUH KHUH

Chapter 10. When even JSTL is not enough... Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 10. When even JSTL is not enough...

GLIIHUHQFHV EHWZHHQ 6LPSOH DQG &ODVVLF

([HUFLVH $QVZHUV

.H\ GLIIHUHQFHV EHWZHHQ 6LPSOH DQG &ODVVLF WDJV

6LPSOH WDJV

7DJ LQWHUIDFHV

SimpleTag (extends JspTag)

6XSSRUW LPSOHPHQWDWLRQ FODVVHV

SimpleTagSupport (implements SimpleTag)

.H\ OLIHF\FOH PHWKRGV WKDW <28 PLJKW LPSOHPHQW

+RZ \RX ZULWH WR WKH UHVSRQVH RXWSXW

+RZ \RX DFFHVV LPSOLFLW YDULDEOHV DQG VFRSHG DWWULEXWHV IURP D VXSSRUW LPSOHPHQWDWLRQ

+RZ \RX FDXVH WKH ERG\ WR EH SURFHVVHG

+RZ \RX FDXVH WKH FXUUHQW SDJH HYDOXDWLRQ WR 6723

doTag()

getJspContext().getOut().println (no try/catch needed because SimpleTag methods declare IOException) With the getJspContext() method that returns a JspContext (which is usually a PageContext) getJspBody().invoke(null)

Throw a SkipPageException

&ODVVLF WDJV

Tag (extends JspTag) IterationTag (extends Tag) BodyTag (extends IterationTag) TagSupport (implements IterationTag) BodyTagSupport (extends TagSupport, implements BodyTag) doStartTag() doEndTag() doAfterBody() (and for BodyTagÑ doInitBody() and setBodyContent()) pageContext.getOut().println (wrapped in a try/catch because Classic tag methods do NOT declare the IOException!) With the pageContext implicit variable--NOT a method like it is with SimpleTag! Return EVAL_BODY_INCLUDE from doStartTag(), or EVAL_BODY_BUFFERED if the class implements BodyTag. Return SKIP_PAGE from doEndTag()

FKDSWHU

Chapter 10. When even JSTL is not enough... Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 10. When even JSTL is not enough...

FXVWRP WDJ GHYHORSPHQW

=[QVO \PM 8IOM+WV\M`\ )81 NWZ \IO PIVLTMZ[ 4HIS PAGE IS JUST A REVIEW FROM WHAT YOU SAW IN THE 3CRIPT FREE *30S CHAPTER BUT IT COMES UP AGAIN HERE BECAUSE IT S CRUCIAL FOR A TAG HANDLER ! TAG HANDLER CLASS REMEMBER IS NOT A SERVLET OR A *30 SO IT DOESN T HAVE AUTOMATIC ACCESS TO A BUNCH OF IMPLICIT OBJECTS "UT IT DOES GET A REFERENCE TO A 0AGE#ONTEXT AND WITH IT IT CAN GET TO ALL KINDS OF THINGS IT MIGHT NEED 2EMEMBER THAT WHILE 3IMPLE TAGS GET A REFERENCE TO A *SP#ONTEXT AND #LASSIC TAGS GET A REFERENCE TO A 0AGE#ONTEXT THE 3IMPLE TAG S *SP#ONTEXT IS USUALLY A 0AGE#ONTEXT INSTANCE 3O IF YOUR 3IMPLE TAG HANDLER NEEDS ACCESS TO 0AGE#ONTEXT SPECIl C METHODS OR l ELDS YOU LL HAVE TO CAST IT FROM A *SP#ONTEXT TO THE 0AGE#ONTEXT IT REALLY IS ON THE HEAP

-VS&RQWH[W JHW$WWULEXWH 6WULQJ QDPH

JHW$WWULEXWH 6WULQJ QDPH LQW VFRSH

JHW$WWULEXWH1DPHV,Q6FRSH LQW VFRSH

ILQG$WWULEXWH 6WULQJ QDPH

JHW2XW

PRUH PHWKRGV LQFOXGLQJ VLPLODU PHWKRGV WR VHW DQG UHPRYH DWWULEXWHV IURP DQ\ VFRSH

7KH RQH DUJ JHW$WWULEXWH 6WULQJ LV IRU SDJH VFRSH 21/<

JHW$WWULEXWH 7KHUH DUH 7:2 RYHUORDGHG DJH&RQWH[W PHWKRGV \RX FDQ FDOO RQ S QJ DQG D WZR DUJ D RQH DUJ WKDW WDNHV D 6WUL QW 7KH RQH DUJ WKDW WDNHV D 6WULQJ DQG DQ L KH RWKHUV²LWœV IRU YHUVLRQ ZRUNV MXVW OLNH DOO W JH&RQWH[W REMHFW DWWULEXWHV ERXQG 72 WKH SD EH XVHG WR JHW %XW WKH WZR DUJ YHUVLRQ FDQ IRXU VFRSHV WKH < RI P $1 WH IUR DQ DWWULEX

3DJH&RQWH[W $33/,&$7,21B6&23( 3$*(B6&23( 5(48(67B6&23( 6(66,21B6&23( PRUH ILHOGV JHW5HTXHVW

JHW6HUYOHW&RQILJ

JHW6HUYOHW&RQWH[W

JHW6HVVLRQ

s static Ăželd

methods get any imto object plicit

Ă€ QG$WWULEXWH ORRNV LQ ($&+ VFRSH VWDUWLQJ ZLWK 3$*(B6&23(

<RX FDQ H[SHFW WR EH WHVW HG RQ WKLV 7KH GLIIHUHQFH EHWZHHQ JHW$WWU LEXWH 6WULQJ DQG ¿ QG$WWULEXWH 6WULQJ FDQ EH G UDPDWLF²WKH JHW$WWULEXWH 6WULQJ PHWKRG ORRNV 21/< LQ SDJH VFRSH ZKLOH WKH ¿ QG$WWULEX WH 675,1* ZLOO VHDUFK DOO IRXU VFRSHV WR ¿ QG D PDW FKLQJ DWWULEXWH LQ WKH RUGHU RI SDJH UHTXHVW VHV VLRQ DQG DSSOLFDWLRQ ,W UHWXUQV WKH ¿ UVW RQH LW ¿ QGV WKDW PDWFKHV WKH ¿ QG$WWULEXWH 6WULQJ DUJXPH QW

PRUH PHWKRGV

\RX DUH KHUH

Chapter 10. When even JSTL is not enough... Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 10. When even JSTL is not enough...

WDJ Âż OHV H[HUFLVH DQVZHUV

6KDUSHQ \RXU SHQFLO

0HPRUL]LQJ 7DJ )LOHV $16:(56

)LOO LQ ZKDW ZRXOG \RX PXVW SXW LQWR D 7DJ )LOH WR GHFODUH WKDW WKH 7DJ KDV RQH UHTXLUHG DWWULEXWH QDPHG ³WLWOH´ WKDW FDQ XVH DQ (/ H[SUHVVLRQ DV WKH YDOXH RI WKH DWWULEXWH

attribute name=ÓtitleÓ required=ÓtrueÓ rtexprvalue=ÓtrueÓ !

#

)LOO LQ ZKDW ZRXOG \RX PXVW SXW LQWR D 7DJ )LOH WR GHFODUH WKDW WKH 7DJ PXVW 127 KDYH D ERG\

tag body-content=ÓtagdependentÓ !

#

'UDZ D 7DJ )LOH GRFXPHQW LQ HDFK RI WKH ORFDWLRQV ZKHUH WKH &RQWDLQHU ZLOO ORRN IRU 7DJ )LOHV

0\7HVW$SS

'LUHFWO\ LQVLGH :(% ,1) WDJV :(% ,1)

WDJV

PRUH7DJV

OLE

-$5

,QVLGH D VXE GLUHFWRU\ RI :(% ,1) WDJV

FODVVHV

,QVLGH WKH 0(7$ ,1) WDJV GLUHFWRU\ LQVLGH D -$5 ILOH WKDW¡V LQVLGH :(% ,1) OLE

IRR

,QVLGH D VXE GLUHFWRU\ RI 0(7$ ,1) WDJV LQVLGH D -$5 ILOH WKDW¡V LQVLGH :(% ,1) OLE

foo.tag

,) WKH WDJ ILOH LV GHSOR\HG LQ D -$5 WKHUH 0867 EH D 7/' IRU WKH WDJ ILOH 0(7$ ,1)

foo.tag 7/'V

WDJV

P\7DJV

This wasnÕt part of the exercise, but it needs to be in here.

bar.tld

foo.tag foo.tag

FKDSWHU

Chapter 10. When even JSTL is not enough... Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 10. When even JSTL is not enough...

FXVWRP WDJ GHYHORSPHQW

0RFN ([DP &KDSWHU

(OW CAN A #LASSIC TAG HANDLER TO INSTRUCT THE CONTAINER TO IGNORE THE REMAINDER OF THE *30 THAT INVOKED THE TAG #HOOSE ALL THAT APPLY

R ! 4HE GR(QG7DJ METHOD SHOULD RETURN 7DJ 6.,3B%2'<

R " 4HE GR(QG7DJ METHOD SHOULD RETURN 7DJ 6.,3B3$*( R # 4HE GR6WDUW7DJ METHOD SHOULD RETURN 7DJ 6.,3B%2'< R $ 4HE GR6WDUW7DJ METHOD SHOULD RETURN 7DJ 6.,3B3$*(

7HICH DIRECTIVES AND OR STANDARD ACTIONS ARE APPLICABLE /.,9 WITHIN TAG lLES #HOOSE ALL THAT APPLY

R ! WDJ R " SDJH R # MVS ERG\ R $ MVS GR%RG\ R % MVS LQYRNH R & WDJOLE

\RX DUH KHUH

Chapter 10. When even JSTL is not enough... Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 10. When even JSTL is not enough...

PRFN H[DP

'IVEN A *30 PAGE P\ WDJ ! P\ WDJ ! P\ WDJ ! P\ WDJ ! P\ WDJ ! 4HE TAG HANDLER FOR P\ WDJ IS 7DJ +DQGOHU AND EXTENDS 4AG3UPPORT 4HE TAG HANDLER FOR P\ WDJ IS 7DJ +DQGOHU AND EXTENDS 3IMPLE4AG3UPPORT 4HE TAG HANDLER FOR P\ WDJ IS 7DJ +DQGOHU AND EXTENDS 4AG3UPPORT 7HICH IS TRUE #HOOSE ALL THAT APPLY

R ! 7DJ +DQGOHU #!../4 ACCESS THE INSTANCE OF 7DJ +DQGOHU BECAUSE 3IMPLE TAGS DO ./4 SUPPORT ACCESS TO THE TAG PARENT R " /NLY #LASSIC TAGS ARE CONSIDERED IN COMPOSING THE PARENT CHILD TAG HIEARCHY THEREFORE 7DJ +DQGOHU MAY USE THE JHW3DUHQW METHOD ONLY ONCE TO GAIN ACCESS TO THE INSTANCE OF 7DJ +DQGOHU

R # 7DJ +DQGOHU MAY USE THE JHW3DUHQW METHOD TWICE TO GAIN ACCESS TO THE INSTANCE OF 7DJ +DQGOHU

R $ /NLY "ODY4AG HANDLERS CAN ACCESS THE PARENT CHILD TAG HIEARCHY THEREFORE 7DJ +DQGOHU #!../4 GAIN ACCESS TO THE INSTANCE OF 7DJ +DQGOHU

7HICH 3IMPLE TAG MECHANISM WILL TELL A *30 PAGE TO STOP PROCESSING

R ! 2ETURN 6.,3B3$*( FROM THE GR7DJ METHOD R " 2ETURN 6.,3B3$*( FROM THE GR(QG7DJ METHOD R # 4HROW A 6NLS3DJH([FHSWLRQ FROM THE GR7DJ METHOD R $ 4HROW A 6NLS3DJH([FHSWLRQ FROM THE GR(QG7DJ METHOD

FKDSWHU

Chapter 10. When even JSTL is not enough... Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 10. When even JSTL is not enough...

FXVWRP WDJ GHYHORSPHQW

7HICH ARE TRUE ABOUT THE #LASSIC TAG MODEL #HOOSE ALL THAT APPLY

R ! 4HE 7DJ INTERFACE CAN ONLY BE USED TO CREATE EMPTY TAGS

R " 4HE 6.,3B3$*( CONSTANT IS A VALID RETURN VALUE OF THE GR(QG7DJ METHOD

R # 4HE (9$/B%2'<B%8))(5(' CONSTANT IS A VALID RETURN VALUE OF THE GR$IWHU%RG\ METHOD

R $ 4HE 7DJ INTERFACE ONLY PROVIDES TWO VALUES FOR THE RETURN VALUE OF THE GR6WDUW7DJ METHOD 6.,3B%2'< AND (9$/B%2'<

R % 4HERE ARE THREE TAG INTERFACES 7DJ ,WHUDWLRQ7DJ AND %RG\7DJ BUT ONLY TWO BUILT IN BASE CLASSES 7DJ6XSSRUW AND %RG\7DJ6XSSRUW

7HICH ABOUT THE ¿QG$QFHVWRU:LWK&ODVV METHOD ARE TRUE #HOOSE ALL THAT APPLY

R ! )T REQUIRES ONE PARAMETER ! &ODVV R " )T IS A STATIC METHOD IN THE 7DJ6XSSRUW CLASS R # )T IS A NON STATIC METHOD IN THE 7DJ6XSSRUW CLASS R $ )T IS ./4 DElNED BY ANY OF THE STANDARD *30 TAG INTERFACES R % )T REQUIRES TWO PARAMETERS ! 7DJ AND A &ODVV R & )T REQUIRES ONE PARAMETER ! 6WULQJ REPRESENTING THE NAME OF THE TAG TO BE FOUND

R ' )T REQUIRES TWO PARAMETERS ! 7DJ AND A 6WULQJ REPRESENTING THE NAME OF THE TAG TO BE FOUND

\RX DUH KHUH

Chapter 10. When even JSTL is not enough... Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 10. When even JSTL is not enough...

PRFN H[DP

7HICH MUST BE TRUE IF YOU WANT TO USE DYNAMIC ATTRIBUTES FOR A 3IMPLE TAG HANDLER #HOOSE ALL THAT APPLY

R ! 9OUR 3IMPLE TAG MUST ./4 DECLARE ANY STATIC TAG ATTRIBUTES

R " 9OUR 3IMPLE TAG MUST USE THE G\QDPLF DWWULEXWHV! ELEMENT IN THE 4,$

R # 9OUR 3IMPLE TAG HANDLER MUST IMPLEMENT THE '\QDPLF$WWULEXWHV INTERFACE

R $ 9OUR 3IMPLE TAG SHOULD EXTEND THE '\QDPLF6LPSOH7DJ6XSSRUW CLASS WHICH PROVIDES DEFAULT SUPPORT FOR DYNAMIC ATTRIBUTES

R % 9OUR 3IMPLE TAG #!../4 BE USED WITH THE MVS DWWULEXWH STANDARD ACTION BECAUSE THIS ACTION WORKS ONLY WITH STATIC ATTRIBUTES

7HICH IS TRUE ABOUT TAG lLES #HOOSE ALL THAT APPLY

R ! ! TAG lLE MAY BE PLACED IN ANY SUBDIRECTORY OF :(% ,1) R " ! TAG lLE MUST HAVE THE lLE EXTENSION OF WDJ OR WDJ[ R # ! 4,$ lLE MUST BE USED TO MAP THE SYMBOLIC TAG NAME TO THE ACTUAL TAG lLE

R $ ! TAG lLE MAY ./4 BE PLACED IN A *!2 lLE IN THE :(% ,1) OLE DIRECTORY

FKDSWHU

Chapter 10. When even JSTL is not enough... Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 10. When even JSTL is not enough...

FXVWRP WDJ GHYHORSPHQW

'IVEN SXEOLF FODVV %XI7DJ H[WHQGV %RG\7DJ6XSSRUW ^ SXEOLF LQW GR6WDUW7DJ WKURZV -VS([FHSWLRQ ^ LQVHUW FRGH KHUH ` ` !SSUME THAT THE TAG HAS BEEN PROPERLY CONlGURED TO ALLOW BODY CONTENT 7HICH IF INSERTED AT LINE WOULD CAUSE THE *30 CODE P\WDJV P\WDJ!%RG\&RQWHQW P\WDJV P\WDJ! TO OUTPUT %RG\&RQWHQW

R ! UHWXUQ 6.,3B%2'< R " UHWXUQ (9$/B%2'<B,1&/8'( R # UHWXUQ (9$/B%2'<B%8))(5(' R $ UHWXUQ %2'<B&217(17

7HICH ABOUT GR$IWHU%RG\ IS TRUE #HOOSE ALL THAT APPLY

R ! GR$IWHU%RG\ IS ONLY CALLED ON TAGS THAT EXTEND 7DJ6XSSRUW

R " GR$IWHU%RG\ IS ONLY CALLED ON TAGS THAT EXTEND ,WHUDWLRQ7DJ6XSSRUW

R # !SSUMING NO EXCEPTIONS OCCUR GR$IWHU%RG\ IS ALWAYS CALLED AFTER GR6WDUW7DJ FOR ANY TAG THAT IMPLEMENTS ,WHUDWLRQ7DJ

R $ !SSUMING NO EXCEPTIONS OCCUR GR$IWHU%RG\ IS CALLED AFTER GR6WDUW7DJ FOR ANY TAG THAT IMPLEMENTS ,WHUDWLRQ7DJ AND RETURNS 6.,3B%2'< FROM GR6WDUW7DJ

R % !SSUMING NO EXCEPTIONS OCCUR GR$IWHU%RG\ IS CALLED AFTER GR6WDUW7DJ FOR ANY TAG THAT IMPLEMENTS ,WHUDWLRQ7DJ AND RETURNS (9$/B%2'<B,1&/8'( FROM GR6WDUW7DJ \RX DUH KHUH

Chapter 10. When even JSTL is not enough... Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 10. When even JSTL is not enough...

PRFN H[DP

'IVEN A *30 PAGE

# WDJOLE SUH¿[ ´P\´ XUL ´ :(% ,1) P\7DJV WOG´ ! P\ WDJ ! -63 FRQWHQW ! P\ WDJ ! 4HE TAG HANDLER FOR P\ WDJ IS 7DJ +DQGOHU AND EXTENDS 4AG3UPPORT 7HAT HAPPENS WHEN THE INSTANCE OF 7DJ +DQGOHU CALLS THE JHW3DUHQW METHOD #HOOSE ALL THAT APPLY

R ! ! -VS([FHSWLRQ IS THROWN R " 4HE QXOO VALUE IS RETURNED R # ! 1XOO3RLQWHU([FHSWLRQ IS THROWN R $ !N ,OOHJDO6WDWH([FHSWLRQ IS THROWN

7HICH IS TRUE ABOUT THE LIFECYCLE OF A 3IMPLE TAG #HOOSE ALL THAT APPLY

R ! 4HE UHOHDVH METHOD IS CALLED AFTER THE GR7DJ METHOD R " 4HE VHW-VS%RG\ METHOD IS ALWAYS CALLED BEFORE THE GR7DJ METHOD

R # 4HE VHW3DUHQW AND VHW-VS&RQWH[W METHODS ARE CALLED IMMEDIATELY BEFORE THE TAG ATTRIBUTES ARE SET

R $ 4HE -VS)UDJPHQW OF THE TAG BODY IS INVOKED BY THE #ONTAINER BEFORE THE TAG HANDLER S GR7DJ METHOD IS CALLED 4HIS VALUE A %RG\&RQWHQW OBJECT IS PASSED TO THE TAG HANDLER USING THE VHW-VS%RG\ METHOD

FKDSWHU

Chapter 10. When even JSTL is not enough... Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 10. When even JSTL is not enough...

FXVWRP WDJ GHYHORSPHQW

(JSP v2.0 pg 2-27)

'IVEN SXEOLF FODVV ([DPSOH7DJ H[WHQGV 7DJ6XSSRUW ^ SULYDWH 6WULQJ SDUDP SXEOLF YRLG VHW3DUDP 6WULQJ S ^ SDUDP S ` SXEOLF LQW GR6WDUW7DJ WKURZV -VS([FHSWLRQ ^ LQVHUW FRGH KHUH PRUH FRGH KHUH ` `

7HICH INSERTED AT LINE WOULD BE GUARANTEED TO ASSIGN THE VALUE OF THE REQUEST SCOPED ATTRIBUTE SDUDP TO THE LOCAL VARIABLE S #HOOSE ALL THAT APPLY

-Option A is invalid because there is no such method. -Option B is invalid because there is UHTXHVW JHW$WWULEXWH ³SDUDP´ no request instance variable.

R ! 6WULQJ S ¿QG$WWULEXWH ³SDUDP´ R " 6WULQJ S

-Option C is invalid because an found before checking request scope.

R # 6WULQJ S SDJH&RQWH[W ¿QG$WWULEXWH ³SDUDP´ attribute in page scope would be

R $ 6WULQJ S JHW3DJH&RQWH[W ¿QG$WWULEXWH ³SDUDP´ -Option D is invalid because

there is no getPageContext() method.

R % 6WULQJ S SDJH&RQWH[W JHW5HTXHVW JHW$WWULEXWH ³SDUDP´

7HICH ARE VALID METHOD CALLS ON A 3DJH&RQWH[W OBJECT #HOOSE ALL THAT APPLY

(JSP v2.0 pg. 2-

23)

R ! JHW$WWULEXWH1DPHV

R " JHW$WWULEXWH ³NH\´

-Options A and D are invalid because there are no methods R # ¿QG$WWULEXWH ³NH\´ with these names. R $ JHW6HVVLRQ$WWULEXWH

R % JHW$WWULEXWHV6FRSH ³NH\´

R & ÂżQG$WWULEXWH ÂłNH\´ 3DJH&RQWH[W 6(66,21B6&23( -Option F is invalid because ĂžndAttribute() does not R ' JHW$WWULEXWH ÂłNH\´ 3DJH&RQWH[W 6(66,21B6&23( have a scope parameter.

\RX DUH KHUH

Chapter 10. When even JSTL is not enough... Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 10. When even JSTL is not enough...

PRFN H[DP

7HICH IS THE MOST EFlCIENT -VS&RQWH[W METHOD TO CALL TO ACCESS AN ATTRIBUTE THAT IS KNOWN TO BE IN APPLICATION SCOPE

R ! JHW3DJH&RQWH[W

R " JHW$WWULEXWH 6WULQJ

R # ¿QG$WWULEXWH 6WULQJ R $ JHW$WWULEXWH 6WULQJ LQW

R % JHW$WWULEXWHV6FRSH ³NH\´

R & JHW$WWULEXWH1DPHV,Q6FRSH LQW

7HAT IS THE BEST STRATEGY WHEN IMPLEMENTING A CUSTOM TAG FOR lNDING THE VALUE OF AN ATTRIBUTE WHOSE SCOPE IS UNKNOWN

R ! #HECK ALL SCOPES WITH A SINGLE SDJH&RQWH[W JHW$WWULEXWH 6WULQJ CALL

R " #HECK ALL SCOPES WITH A SINGLE SDJH&RQWH[W ¿QG$WWULEXWH 6WULQJ CALL

R # #HECK EACH SCOPE WITH CALLS TO SDJH&RQWH[W JHW$WWULEXWH 6WULQJ LQW

R $ #ALL SDJH&RQWH[W JHW5HTXHVW JHW$WWULEXWH 6WULQJ

THEN CALL SDJH&RQWH[W JHW6HVVLRQ JHW$WWULEXWH 6WULQJ

AND SO ON

R % .ONE OF THESE WILL WORK

FKDSWHU

Chapter 10. When even JSTL is not enough... Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 10. When even JSTL is not enough...

FXVWRP WDJ GHYHORSPHQW

'IVEN A TAG VLPSOH7DJ WHOSE HANDLER IS IMPLEMENTED USING THE 3IMPLE TAG MODEL AND A TAG FRPSOH[7DJ WHOSE HANDLER IS IMPLEMENTED USING THE #LASSIC TAG MODEL "OTH TAGS ARE DECLARED TO BE NON EMPTY IN THE 4,$ 7HICH *30 CODE SNIPPETS ARE VALID USES OF THESE TAG #HOOSE ALL THAT APPLY

R ! P\ VLPSOH7DJ! P\ FRPSOH[7DJ ! P\ VLPSOH7DJ!

R " P\ VLPSOH7DJ! GLVSOD\7H[W ! P\ VLPSOH7DJ!

R # P\ VLPSOH7DJ! # LQFOXGH ¿OH ´ :(% ,1) ZHE FRPPRQ KHDGHU0HQX KWPO´ ! P\ VLPSOH7DJ!

R $ P\ VLPSOH7DJ! P\ FRPSOH[7DJ! L ! P\ FRPSOH[7DJ! P\ VLPSOH7DJ!

7HICH ARE TRUE ABOUT THE 4AG &ILE MODEL #HOOSE ALL THAT APPLY

R ! %ACH TAG lLE MUST HAVE A CORRESPONDING ENTRY IN A 4,$ lLE R " !LL DIRECTIVES ALLOWED IN *30 PAGES ARE ALLOWED IN 4AG &ILES

R # !LL DIRECTIVES ALLOWED IN 4AG &ILES ARE ALLOWED IN *30 PAGES

R $ 4HE MVS GR%RG\! STANDARD ACTION CAN ONLY BE USED IN 4AG &ILES

R % 4HE ALLOWABLE lLE EXTENSIONS FOR 4AG &ILES ARE WDJ AND WDJ[

R & &OR EACH ATTRIBUTE DECLARED AND SPECIlED IN A 4AG &ILE THE CONTAINER CREATES A PAGE SCOPED ATTRIBUTE WITH THE SAME NAME \RX DUH KHUH

Chapter 10. When even JSTL is not enough... Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 10. When even JSTL is not enough...

PRFN H[DP

7HICH ARE VALID IN TAG lLES #HOOSE ALL THAT APPLY

R ! MVS GR%RG\ ! R " MVS LQYRNH IUDJPHQW ´IUDJ´ ! R # # SDJH LPSRUW ´MDYD XWLO 'DWH´ ! R $ # YDULDEOH QDPH JLYHQ ´GDWH´ YDULDEOH FODVV ´MDYD XWLO 'DWH´ !

R % # DWWULEXWH QDPH ´QDPH´ YDOXH ´EODQN´ W\SH ´MDYD ODQJ 6WULQJ´ !

7HICH RETURNS THE ENCLOSING TAG WHEN CALLED FROM WITHIN A TAG HANDLER CLASS #HOOSE ALL THAT APPLY

R ! JHW3DUHQW

R " JHW$QFHVWRU

R # ¿QG$QFHVWRU R $ JHW(QFORVLQJ7DJ

'IVEN A WEB APPLICATION STURCUTRE :(% ,1) WDJV P\WDJV WDJ WDJ :(% ,1) WDJV WDJ WDJ :(% ,1) WDJ WDJ WDJ WDJ 7HICH TAGS COULD BE USED BY AN APPROPRIATE WDJOLE DIRECTIVE #HOOSE ALL THAT APPLY

R ! WDJ WDJ R " WDJ WDJ R # WDJ WDJ R $ WDJ WDJ

FKDSWHU

Chapter 10. When even JSTL is not enough... Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 10. When even JSTL is not enough...

FXVWRP WDJ GHYHORSPHQW

&KDSWHU $QVZHUV

(OW CAN A #LASSIC TAG HANDLER TO INSTRUCT THE CONTAINER TO IGNORE THE REMAINDER OF THE *30 THAT INVOKED THE TAG #HOOSE ALL THAT APPLY

R ! 4HE GR(QG7DJ METHOD SHOULD RETURN 7DJ 6.,3B%2'<

56)

(JSP v2.0 pg 2-

alid because thr is -Option A is invret urn value fo id val a t no is (). ag dT En do

R " 4HE GR(QG7DJ METHOD SHOULD RETURN 7DJ 6.,3B3$*( R # 4HE GR6WDUW7DJ METHOD SHOULD RETURN 7DJ 6.,3B%2'<

-Option C is invalid because it only causes the body of the tag to be skipped.

R $ 4HE GR6WDUW7DJ METHOD SHOULD RETURN 7DJ 6.,3B3$*( -Option D is invalid becaus

e this is not a valid ret doStartTag(). urn value for

7HICH DIRECTIVES AND OR STANDARD ACTIONS ARE APPLICABLE /.,9 WITHIN TAG lLES #HOOSE ALL THAT APPLY

R ! WDJ R " SDJH

-Option A is valid (pg 1-179).

(JSP v2.0 8.5 (pg 1-179) JSP v2.0 section 5.11 JSP v2.0 section 5.12 JSP v2.0 section 5.13)

-Option B is invalid because the page directive is never allowed in a tag Ăžle (pg 1-179).

R # MVS ERG\

-Option C is invalid because the jsp:body action can appear in EITHER a tag Ăžle or JSP.

R $ MVS GR%RG\

- Option D is valid (pg 1-121).

R % MVS LQYRNH

-Option E is valid (pg 1-119).

R & WDJOLE

-Option F is invalid because the taglib directive can appear in EITHER a tag Ăžle or JSP.

\RX DUH KHUH

Chapter 10. When even JSTL is not enough... Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 10. When even JSTL is not enough...

PRFN DQVZHUV

'IVEN A *30 PAGE P\ WDJ ! P\ WDJ ! P\ WDJ ! P\ WDJ ! P\ WDJ !

(JSP v2.0 SimpleTagSupport API pg 2-86 JSP v2.0 TagSupport API pg 2-64)

4HE TAG HANDLER FOR P\ WDJ IS 7DJ +DQGOHU AND EXTENDS 4AG3UPPORT 4HE TAG HANDLER FOR P\ WDJ IS 7DJ +DQGOHU AND EXTENDS 3IMPLE4AG3UPPORT 4HE TAG HANDLER FOR P\ WDJ IS 7DJ +DQGOHU AND EXTENDS 4AG3UPPORT 7HICH IS TRUE #HOOSE ALL THAT APPLY

-Option A is invalid because getParent method.

R ! 7DJ +DQGOHU #!../4 ACCESS THE INSTANCE OF 7DJ +DQGOHU Simple tags do have a

BECAUSE 3IMPLE TAGS DO ./4 SUPPORT ACCESS TO THE TAG PARENT

R " /NLY #LASSIC TAGS ARE CONSIDERED IN COMPOSING THE PARENT CHILD TAG HIEARCHY THEREFORE 7DJ +DQGOHU MAY USE THE JHW3DUHQW METHOD ONLY ONCE TO GAIN ACCESS TO THE INSTANCE OF 7DJ +DQGOHU

-Option B is invalid because Simple tags do participate in the parent/child tag hierarchy along with Classic tags.

R # 7DJ +DQGOHU MAY USE THE JHW3DUHQW METHOD TWICE TO GAIN ACCESS TO THE INSTANCE OF 7DJ +DQGOHU

R $ /NLY "ODY4AG HANDLERS CAN ACCESS THE PARENT CHILD TAG HIEARCHY -Option D is invalid because THEREFORE 7DJ +DQGOHU #!../4 GAIN ACCESS TO THE INSTANCE OF 7DJ +DQGOHU

7HICH 3IMPLE TAG MECHANISM WILL TELL A *30 PAGE TO STOP PROCESSING

R ! 2ETURN 6.,3B3$*( FROM THE GR7DJ METHOD

every JspTag has access to its parent tag.

(JSP v2.0 section

13.6.1)

-Option A is invalid because the doTag method dies return a value.

R " 2ETURN 6.,3B3$*( FROM THE GR(QG7DJ METHOD -Option B is invalid because a Simple

tag does not have the doEndTag event method.

R # 4HROW A 6NLS3DJH([FHSWLRQ FROM THE GR7DJ METHOD R $ 4HROW A 6NLS3DJH([FHSWLRQ FROM THE GR(QG7DJ METHOD

-Option D is invalid because a Simple tag does not have the doEndTag event method.

FKDSWHU

Chapter 10. When even JSTL is not enough... Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 10. When even JSTL is not enough...

FXVWRP WDJ GHYHORSPHQW

sections (JSP v2.0 .2 13.1 and 13 ) ce -Option A is invalid because the Tag interfa can support tags with a body, but you canÕt iterate or gain access to the body content.

7HICH ARE TRUE ABOUT THE #LASSIC TAG MODEL #HOOSE ALL THAT APPLY

R ! 4HE 7DJ INTERFACE CAN ONLY BE USED TO CREATE EMPTY TAGS

R " 4HE 6.,3B3$*( CONSTANT IS A VALID RETURN VALUE OF THE GR(QG7DJ METHOD

-Option C is invalid because doAfterBody can only return SKIP_BODY or EVAL_BODY_AGAIN.

R # 4HE (9$/B%2'<B%8))(5(' CONSTANT IS A VALID RETURN VALUE OF THE GR$IWHU%RG\ METHOD

R $ 4HE 7DJ INTERFACE ONLY PROVIDES TWO VALUES FOR THE

-Option D is invalid because doStartTag returns SKIP_BODY and EVAL_BODY_INCLUDE.

RETURN VALUE OF THE GR6WDUW7DJ METHOD 6.,3B%2'< AND (9$/B%2'<

R % 4HERE ARE THREE TAG INTERFACES 7DJ ,WHUDWLRQ7DJ AND %RG\7DJ BUT ONLY TWO BUILT IN BASE CLASSES 7DJ6XSSRUW AND %RG\7DJ6XSSRUW

7HICH ABOUT THE ÂżQG$QFHVWRU:LWK&ODVV METHOD ARE TRUE #HOOSE ALL THAT APPLY

64) (JSP v2.0 pg. 2-

R ! )T REQUIRES ONE PARAMETER ! &ODVV R " )T IS A STATIC METHOD IN THE 7DJ6XSSRUW CLASS -Option C is invalid because the R # )T IS A NON STATIC METHOD IN THE 7DJ6XSSRUW CLASS method is static. R $ )T IS ./4 DElNED BY ANY OF THE STANDARD *30 TAG INTERFACES R % )T REQUIRES TWO PARAMETERS ! 7DJ AND A &ODVV R & )T REQUIRES ONE PARAMETER ! 6WULQJ REPRESENTING THE -Options A and F are invalid because NAME OF THE TAG TO BE FOUND

R ' )T REQUIRES TWO PARAMETERS ! 7DJ AND A 6WULQJ REPRESENTING THE NAME OF THE TAG TO BE FOUND

the method takes two parameters.

-Option G is invalid because the second argument is a Class.

\RX DUH KHUH

Chapter 10. When even JSTL is not enough... Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 10. When even JSTL is not enough...

PRFN DQVZHUV

7HICH MUST BE TRUE IF YOU WANT TO USE DYNAMIC ATTRIBUTES FOR A 3IMPLE TAG HANDLER #HOOSE ALL THAT APPLY

(JSP v2.0 section 13.3 pgs 2-74,75)

you -Option A is invalid becausedyna mic can have both static and attributes in a Simple tag.

R ! 9OUR 3IMPLE TAG MUST ./4 DECLARE ANY STATIC TAG ATTRIBUTES

R " 9OUR 3IMPLE TAG MUST USE THE G\QDPLF DWWULEXWHV! ELEMENT IN THE 4,$

R # 9OUR 3IMPLE TAG HANDLER MUST IMPLEMENT THE '\QDPLF$WWULEXWHV INTERFACE

R $ 9OUR 3IMPLE TAG SHOULD EXTEND THE

-Option D is invalid because there is no such helper class in the builtin APIs.

'\QDPLF6LPSOH7DJ6XSSRUW CLASS WHICH PROVIDES DEFAULT SUPPORT FOR DYNAMIC ATTRIBUTES

R % 9OUR 3IMPLE TAG #!../4 BE USED WITH THE

-Option E is invalid because you are allowed to use the jsp:attribute action with dynamic tags.

MVS DWWULEXWH STANDARD ACTION BECAUSE THIS ACTION WORKS ONLY WITH STATIC ATTRIBUTES

(JSP v2.0 section

7HICH IS TRUE ABOUT TAG lLES #HOOSE ALL THAT APPLY

R ! ! TAG lLE MAY BE PLACED IN ANY SUBDIRECTORY OF :(% ,1)

8.4)

-Option A is invalid because tag Ăžles must be placed under the WEB-INF/ tags directory.

R " ! TAG lLE MUST HAVE THE lLE EXTENSION OF WDJ OR WDJ[ -Option B is correct (pg 1-176, 8.4.1). R # ! 4,$ lLE MUST BE USED TO MAP THE SYMBOLIC TAG NAME TO THE ACTUAL TAG lLE

-Option C is invalid because tag Ăžles may be discovered by the container in several well-known locations. This container feature is optional.

R $ ! TAG lLE MAY ./4 BE PLACED IN A *!2 lLE IN THE :(% ,1) OLE DIRECTORY

FKDSWHU

Chapter 10. When even JSTL is not enough... Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 10. When even JSTL is not enough...

FXVWRP WDJ GHYHORSPHQW

(JSP v2.0 pg. 2-68)

'IVEN SXEOLF FODVV %XI7DJ H[WHQGV %RG\7DJ6XSSRUW ^ SXEOLF LQW GR6WDUW7DJ WKURZV -VS([FHSWLRQ ^ LQVHUW FRGH KHUH ` ` !SSUME THAT THE TAG HAS BEEN PROPERLY CONlGURED TO ALLOW BODY CONTENT 7HICH IF INSERTED AT LINE WOULD CAUSE THE *30 CODE P\WDJV P\WDJ!%RG\&RQWHQW P\WDJV P\WDJ! TO OUTPUT %RG\&RQWHQW

-Option A is invalid because it causes the

R ! UHWXUQ 6.,3B%2'< body of the tag to be skipped. R " UHWXUQ (9$/B%2'<B,1&/8'( - Option C is invalid because it directs the body of R # UHWXUQ (9$/B%2'<B%8))(5(' the tag to a buffer which this tag does not process. R $ UHWXUQ %2'<B&217(17 -Option

D is invalid because you can store tag Ăžles in JAR Ăžles, under the META-INF/ta gs directory.

(JSP v2.0 pg. 1-152)

7HICH ABOUT GR$IWHU%RG\ IS TRUE #HOOSE ALL THAT APPLY

doAfterBody() R ! GR$IWHU%RG\ IS ONLY CALLED ON TAGS -Option A is invalid because tag that implements the THAT EXTEND 7DJ6XSSRUW

R " GR$IWHU%RG\ IS ONLY CALLED ON TAGS THAT EXTEND ,WHUDWLRQ7DJ6XSSRUW

can be called on any IteratorTag interface.

-Option B is invalid because there is no such class.

R # !SSUMING NO EXCEPTIONS OCCUR GR$IWHU%RG\ IS ALWAYS CALLED AFTER GR6WDUW7DJ FOR ANY TAG THAT IMPLEMENTS ,WHUDWLRQ7DJ

R $ !SSUMING NO EXCEPTIONS OCCUR GR$IWHU%RG\ IS

-Options C and D are invalid because doAfterBody() is only called when doStartTag() returns EVAL_BODY_INCLUDE.

CALLED AFTER GR6WDUW7DJ FOR ANY TAG THAT IMPLEMENTS ,WHUDWLRQ7DJ AND RETURNS 6.,3B%2'< FROM GR6WDUW7DJ

R % !SSUMING NO EXCEPTIONS OCCUR GR$IWHU%RG\ IS CALLED AFTER GR6WDUW7DJ FOR ANY TAG THAT IMPLEMENTS ,WHUDWLRQ7DJ AND RETURNS (9$/B%2'<B,1&/8'( FROM GR6WDUW7DJ \RX DUH KHUH

Chapter 10. When even JSTL is not enough... Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 10. When even JSTL is not enough...

PRFN DQVZHUV

(JSP v2.0 TagSupport API pg 2-64)

'IVEN A *30 PAGE

# WDJOLE SUH¿[ ´P\´ XUL ´ :(% ,1) P\7DJV WOG´ ! P\ WDJ ! -63 FRQWHQW ! P\ WDJ ! 4HE TAG HANDLER FOR P\ WDJ IS 7DJ +DQGOHU AND EXTENDS 4AG3UPPORT 7HAT HAPPENS WHEN THE INSTANCE OF 7DJ +DQGOHU CALLS THE JHW3DUHQW METHOD #HOOSE ALL THAT APPLY

R ! ! -VS([FHSWLRQ IS THROWN

-Option B is the correct answer. The ent method does not throw any

getPar R " 4HE QXOO VALUE IS RETURNED exceptions. R # ! 1XOO3RLQWHU([FHSWLRQ IS THROWN R $ !N ,OOHJDO6WDWH([FHSWLRQ IS THROWN

7HICH IS TRUE ABOUT THE LIFECYCLE OF A 3IMPLE TAG #HOOSE ALL THAT APPLY

R ! 4HE UHOHDVH METHOD IS CALLED AFTER THE GR7DJ METHOD R " 4HE VHW-VS%RG\ METHOD IS ALWAYS CALLED BEFORE THE GR7DJ METHOD

(JSP v2.0 section 13.6 pgs 2-80/83) -Option A is invalid because a Simple tag has no release method.

-Option B is invalid because the setJspBody is not called if the Simple tag is an empty tag.

R # 4HE VHW3DUHQW AND VHW-VS&RQWH[W METHODS ARE CALLED IMMEDIATELY BEFORE THE TAG ATTRIBUTES ARE SET

R $ 4HE -VS)UDJPHQW OF THE TAG BODY IS INVOKED BY THE #ONTAINER BEFORE THE TAG HANDLER S GR7DJ METHOD IS CALLED 4HIS VALUE A %RG\&RQWHQW OBJECT IS PASSED TO THE TAG HANDLER USING THE VHW-VS%RG\ METHOD

-Option D is invalid because the fragment is invoked by the doTag implementation, NOT before the doTag is called.

FKDSWHU

Chapter 10. When even JSTL is not enough... Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 10. When even JSTL is not enough...

FXVWRP WDJ GHYHORSPHQW

(JSP v2.0 pg 2-27)

'IVEN SXEOLF FODVV ([DPSOH7DJ H[WHQGV 7DJ6XSSRUW ^ SULYDWH 6WULQJ SDUDP SXEOLF YRLG VHW3DUDP 6WULQJ S ^ SDUDP S ` SXEOLF LQW GR6WDUW7DJ WKURZV -VS([FHSWLRQ ^ LQVHUW FRGH KHUH PRUH FRGH KHUH ` `

7HICH INSERTED AT LINE WOULD BE GUARANTEED TO ASSIGN THE VALUE OF THE REQUEST SCOPED ATTRIBUTE SDUDP TO THE LOCAL VARIABLE S #HOOSE ALL THAT APPLY

-Option A is invalid because there is no such method. -Option B is invalid because there is UHTXHVW JHW$WWULEXWH ³SDUDP´ no request instance variable.

R ! 6WULQJ S ¿QG$WWULEXWH ³SDUDP´ R " 6WULQJ S

-Option C is invalid because an found before checking request scope.

R # 6WULQJ S SDJH&RQWH[W ¿QG$WWULEXWH ³SDUDP´ attribute in page scope would be

R $ 6WULQJ S JHW3DJH&RQWH[W ¿QG$WWULEXWH ³SDUDP´ -Option D is invalid because

there is no getPageContext() method.

R % 6WULQJ S SDJH&RQWH[W JHW5HTXHVW JHW$WWULEXWH ³SDUDP´

7HICH ARE VALID METHOD CALLS ON A 3DJH&RQWH[W OBJECT #HOOSE ALL THAT APPLY

(JSP v2.0 pg. 2-

23)

R ! JHW$WWULEXWH1DPHV

R " JHW$WWULEXWH ³NH\´

-Options A and D are invalid because there are no methods R # ¿QG$WWULEXWH ³NH\´ with these names. R $ JHW6HVVLRQ$WWULEXWH

R % JHW$WWULEXWHV6FRSH ³NH\´

R & ÂżQG$WWULEXWH ÂłNH\´ 3DJH&RQWH[W 6(66,21B6&23( -Option F is invalid because ĂžndAttribute() does not R ' JHW$WWULEXWH ÂłNH\´ 3DJH&RQWH[W 6(66,21B6&23( have a scope parameter.

\RX DUH KHUH

Chapter 10. When even JSTL is not enough... Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 10. When even JSTL is not enough...

PRFN DQVZHUV

23)

(JSP v2.0 pg. 2-

7HICH IS THE MOST EFlCIENT -VS&RQWH[W METHOD TO CALL TO ACCESS AN ATTRIBUTE THAT IS KNOWN TO BE IN APPLICATION SCOPE

R ! JHW3DJH&RQWH[W -Option A is invalid because there is no such method. R " JHW$WWULEXWH 6WULQJ -Option B is invalid because this method only

looks in page scope.

R # ÂżQG$WWULEXWH 6WULQJ

-Option C is invalid because this method would be less efĂžcient than Option D because it Ăžrst checks the other three scopes.

R $ JHW$WWULEXWH 6WULQJ LQW

R % JHW$WWULEXWHV6FRSH ³NH\´

-Option E is invalid because it would be only the Ăžrst step in a process that would be much less efĂžcient than Option D.

R & JHW$WWULEXWH1DPHV,Q6FRSH LQW -Option F is invalid because no

such method exists.

(JSP v2.0 pg. 2-

7HAT IS THE BEST STRATEGY WHEN IMPLEMENTING A CUSTOM TAG FOR lNDING THE VALUE OF AN ATTRIBUTE WHOSE SCOPE IS UNKNOWN

R ! #HECK ALL SCOPES WITH A SINGLE SDJH&RQWH[W JHW$WWULEXWH 6WULQJ CALL

23)

-Option A is invalid because this method only checks the page scope.

R " #HECK ALL SCOPES WITH A SINGLE SDJH&RQWH[W ÂżQG$WWULEXWH 6WULQJ CALL

R # #HECK EACH SCOPE WITH CALLS TO SDJH&RQWH[W JHW$WWULEXWH 6WULQJ LQW

R $ #ALL SDJH&RQWH[W JHW5HTXHVW JHW$WWULEXWH 6WULQJ

-Options C and D are invalid because they are less efĂžcient than simply calling ĂžndAttribute().

THEN CALL SDJH&RQWH[W JHW6HVVLRQ JHW$WWULEXWH 6WULQJ

AND SO ON

R % .ONE OF THESE WILL WORK

FKDSWHU

Chapter 10. When even JSTL is not enough... Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 10. When even JSTL is not enough...

FXVWRP WDJ GHYHORSPHQW

'IVEN A TAG VLPSOH7DJ WHOSE HANDLER IS IMPLEMENTED USING THE 3IMPLE TAG MODEL AND A TAG FRPSOH[7DJ WHOSE HANDLER IS IMPLEMENTED USING THE #LASSIC TAG MODEL

(JSP v2.0 7.1.6 pg 1-156)

"OTH TAGS ARE DECLARED TO BE NON EMPTY IN THE 4,$ 7HICH *30 CODE SNIPPETS ARE VALID USES OF THESE TAG #HOOSE ALL THAT APPLY

R ! P\ VLPSOH7DJ! P\ FRPSOH[7DJ ! P\ VLPSOH7DJ!

R " P\ VLPSOH7DJ! GLVSOD\7H[W ! P\ VLPSOH7DJ!

include -Option A is correct; a Simple tag maythat tag a Complex tag in the body as long as contains no scripting code. -Option B is invalid because simple tags cannot have a body that includes a JSP expression tag.

R # P\ VLPSOH7DJ! # LQFOXGH ¿OH ´ :(% ,1) ZHE FRPPRQ KHDGHU0HQX KWPO´ ! P\ VLPSOH7DJ!

-Option C is correct because the include directive is processed before the body of the simpleTag is converted into a JspFragment; however, the included content must also be non-scripting (which is why this example includes an HTML segment).

R $ P\ VLPSOH7DJ! P\ FRPSOH[7DJ! L ! P\ FRPSOH[7DJ! P\ VLPSOH7DJ!

-Option D is not invalid because of the complexTag usage (as in Option A), but because the complexTag body has scripting code in it.

173) (JSP v2.0 pg. 1need -Option A is invalid because tag Ăžles locatio n only to be placed in the appropriate in order to be used. -Option B is invalid because the page directive is not available in Tag Files.

7HICH ARE TRUE ABOUT THE 4AG &ILE MODEL #HOOSE ALL THAT APPLY

R ! %ACH TAG lLE MUST HAVE A CORRESPONDING ENTRY IN A 4,$ lLE R " !LL DIRECTIVES ALLOWED IN *30 PAGES ARE ALLOWED IN 4AG &ILES

R # !LL DIRECTIVES ALLOWED IN 4AG &ILES ARE ALLOWED IN *30 PAGES

R $ 4HE MVS GR%RG\! STANDARD ACTION CAN ONLY BE

-Option C is invalid because the tag, attribute, and variable directives are not available in JSP pages.

USED IN 4AG &ILES

R % 4HE ALLOWABLE lLE EXTENSIONS FOR 4AG &ILES ARE WDJ AND WDJ[

R & &OR EACH ATTRIBUTE DECLARED AND SPECIlED IN A 4AG &ILE THE CONTAINER CREATES A PAGE SCOPED ATTRIBUTE WITH THE SAME NAME \RX DUH KHUH

Chapter 10. When even JSTL is not enough... Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 10. When even JSTL is not enough...

PRFN DQVZHUV

(JSP v2.0 pg. 1-

7HICH ARE VALID IN TAG lLES #HOOSE ALL THAT APPLY

174)

R ! MVS GR%RG\ ! R " MVS LQYRNH IUDJPHQW ´IUDJ´ ! R # # SDJH LPSRUW ´MDYD XWLO 'DWH´ ! R $ # YDULDEOH QDPH JLYHQ ´GDWH´

-Option C is invalid because the page directive is not valid in tag Ăžles.

YDULDEOH FODVV ´MDYD XWLO 'DWH´ !

R % # DWWULEXWH QDPH ´QDPH´ YDOXH ´EODQN´ -Option E is invalid because there is W\SH ´MDYD ODQJ 6WULQJ´ !

no value attribute deĂžned for the attribute directive.

7HICH RETURNS THE ENCLOSING TAG WHEN CALLED FROM WITHIN A TAG HANDLER CLASS #HOOSE ALL THAT APPLY

(JSP v2.0 pg. 2-

53)

R ! JHW3DUHQW

-Option A is correct; it is the only one of the methods R " JHW$QFHVWRU

shown that exists. R # ÂżQG$QFHVWRU R $ JHW(QFORVLQJ7DJ

'IVEN A WEB APPLICATION STURCUTRE

(JSP v2.0 pg. 1-

176)

:(% ,1) WDJV P\WDJV WDJ WDJ :(% ,1) WDJV WDJ WDJ :(% ,1) WDJ WDJ WDJ WDJ 7HICH TAGS COULD BE USED BY AN APPROPRIATE WDJOLE DIRECTIVE #HOOSE ALL THAT APPLY

R ! WDJ WDJ R " WDJ WDJ R # WDJ WDJ R $ WDJ WDJ

-Options C and D are invalid because tagagsĂžles must be placed under the /WEB-INF/tINF/tags. directory or a subdirectory of /WEB-

FKDSWHU

Chapter 10. When even JSTL is not enough... Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 11. Deploying your web app

ZHE DSS GHSOR\PHQW

'HSOR\LQJ \RXU ZHE DSS :HOO" +RZ GRHV LW ORRN"

,·P SURXG RI \RX IDWKHU <RXU GHSOR\PHQW GHVFULSWRU ORRNV SHUIHFW³ \RX·YH FRQÀ JXUHG HUURU SDJHV ZHOFRPH À OHV VHUYOHW PDSSLQJV EXW ,·P QRW VXUH RXU FOLHQWV ZLOO DSSUHFLDWH WKH VXEWOH LURQ\ RI \RXU ´ GLHµ DQG ´ NLFNDVVµ H[WHQVLRQV

)LQDOO\ \RXU ZHE DSS LV UHDG\ IRU SULPH WLPH <RXU SDJHV DUH SROLVKHG \RXU FRGH LV WHVWHG DQG WXQHG DQG \RXU GHDGOLQH ZDV WZR ZHHNV DJR %XW ZKHUH GRHV HYHU\WKLQJ JR" 6R PDQ\ GLUHFWRULHV VR PDQ\ UXOHV :KDW GR \RX QDPH \RXU GLUHFWRULHV" :KDW GRHV WKH FOLHQW WKLQN WKH\¶UH QDPHG" :KDW GRHV WKH FOLHQW DFWXDOO\ UHTXHVW DQG KRZ GRHV WKH &RQWDLQHU NQRZ ZKHUH WR ORRN" +RZ GR \RX PDNH FHUWDLQ WKDW \RX GRQ¶W DFFLGHQWDOO\ OHDYH RXW D GLUHFWRU\ ZKHQ \RX PRYH WKH ZKROH ZHE DSS WR D GLIIHUHQW PDFKLQH" :KDW KDSSHQV LI WKH FOLHQW UHTXHVWV D GLUHFWRU\ LQVWHDG RI D VSHFL¿ F ¿ OH" +RZ GR \RX FRQ¿ JXUH WKH '' IRU HUURU SDJHV ZHOFRPH ¿ OHV DQG 0,0( W\SHV" ,W¶V QRW DV EDG DV LW VRXQGV

WKLV LV D QHZ FKDSWHU

Chapter 11. Deploying your web app Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher: O'Reilly Prepared for Stephen Goss, Safari ID: stephengoss@gmx.net Print Publication Date: 8/1/2004 User number: 747221 Copyright 2007, Safari Books Online, LLC. This PDF is exclusively for your use in accordance with the Safari Terms of Service. No part of it may be reproduced or transmitted in any form by any means without the prior written permission for reprints and excerpts from the publisher. Redistribution or other use that violates the fair use priviledge under U.S. copyright laws (see 17 USC107) or that otherwise violates the Safari Terms of Service is strictly prohibited.


Chapter 11. Deploying your web app

RI¿FLDO 6XQ H[DP REMHFWLYHV

:HE $SSOLFDWLRQ 'HSOR\PHQW

&RYHUDJH 1RWHV

Copyright Safari Books Online #747221 &RQVWUXFW WKH ¿OH DQG GLUHFWRU\ VWUXFWXUH RI D ZHE

4HIS OBJECTIVE HAS BEEN COVERED THROUGHOUT THE BOOK IN OTHER CHAPTERS SO MOST OF THE CONTENT IN THIS CHAPTER RELATED TO THIS OBJECTIVE IS EITHER FOR REVIEW OR TO LOOK AT SOMETHING IN A LITTLE MORE DETAIL

'HVFULEH WKH SXUSRVH DQG VHPDQWLFV IRU HDFK RI

/BJECTIVES AND FOCUS MAINLY ON PICKY 8-, TAG DETAILS RELATED TO THE $EPLOYMENT $ESCRIPTOR 7HILE THIS IS PROBABLY THE LEAST FUN PART OF THE BOOK AND THE EXAM MOST OF THIS CONTENT IS EASY TO UNDERSTAND AND IT S JUST A MATTER OF MEMORIZING THE TAGS 4HERE IS ONE TRICKY PART THOUGH AND WE LL SPEND MOST OF OUR TIME ON ITˆSERVLET MAPPING

DSSOLFDWLRQ WKDW PD\ FRQWDLQ D VWDWLF FRQWHQW E -63 SDJHV F VHUYOHW FODVVHV G WKH GHSOR\PHQW GHVFULSWRU H WDJ OLEUDULHV I -$5 ¿OHV DQG J -DYD FODVV ¿OHV 'HVFULEH KRZ WR SURWHFW UHVRXUFH ¿OHV IURP +773 DFFHVV

WKH IROORZLQJ GHSOR\PHQW GHVFULSWRU HOHPHQWV HUURU SDJH LQLW SDUDP PLPH PDSSLQJ VHUYOHW VHUYOHW FODVV VHUYOHW PDSSLQJ VHUYOHW QDPH DQG ZHOFRPH ¿OH

&RQVWUXFW WKH FRUUHFW VWUXFWXUH IRU HDFK RI WKH IROORZLQJ GHSOR\PHQW GHVFULSWRU HOHPHQWV HUURU SDJH LQLW SDUDP PLPH PDSSLQJ VHUYOHW VHUYOHW FODVV VHUYOHW QDPH DQG ZHOFRPH ¿OH

([SODLQ WKH SXUSRVH RI D :$5 ¿OH DQG GHVFULEH WKH FRQWHQWV RI D :$5 ¿OH DQG KRZ RQH PD\ EH FRQVWUXFWHG

:ULWH D -63 'RFXPHQW ;0/ EDVHG V\QWD[ WKDW XVHV WKH FRUUHFW V\QWD[

FKDSWHU

7E DECIDED TO STICK THIS OBJECTIVE INTO THIS CHAPTER FOR TWO REASONS MOST OF THIS CHAPTER HAS TO DO WITH 8-, AND WE DIDN T WANT TO ADD ANYTHING ELSE INTO THE *30 CHAPTERS 7E DECIDED IT WAS BETTER FOR YOU TO CONCENTRATE MORE ON THE SYNTAX AND BEHAVIOR OF ALL THE OTHER PARTS OF *30 RATHER THAN ALSO WORRYING ABOUT THE 8-, VERSIONS OF EVERYTHING "UT NOW THAT YOU RE YOU KNOW AN EXPERT WE lGURE YOU CAN HANDLE IT

Chapter 11. Deploying your web app Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher: O'Reilly Prepared for Stephen Goss, Safari ID: stephengoss@gmx.net Print Publication Date: 8/1/2004 User number: 747221 Copyright 2007, Safari Books Online, LLC. This PDF is exclusively for your use in accordance with the Safari Terms of Service. No part of it may be reproduced or transmitted in any form by any means without the prior written permission for reprints and excerpts from the publisher. Redistribution or other use that violates the fair use priviledge under U.S. copyright laws (see 17 USC107) or that otherwise violates the Safari Terms of Service is strictly prohibited.


Chapter 11. Deploying your web app

ZHE DSS GHSOR\PHQW

<PM 2Wa WN ,MXTWaUMV\ 7E VE COVERED MOST OF THE FUN STUFF BUT NOW IT S TIME FOR A MORE DETAILED LOOK AT DEPLOYMENT )N THIS CHAPTER YOU NEED TO THINK ABOUT THREE MAIN ISSUES

:KHUH GR <28 SXW WKLQJV LQ WKH ZHE DSS"

:KHUH GR \RX SXW VWDWLF UHVRXUFHV" -63 SDJHV" 6HUYOHW FODVV ILOHV" -DYD%HDQ FODVV ILOHV" /LVWHQHU FODVV ILOHV" 7DJ )LOHV" 7DJ KDQGOHU FODVVHV" 7/'V" -$5 ILOHV" 7KH ZHE [PO ''" :KHUH GR \RX SXW WKLQJV WKDW \RX GRQ·W ZDQW WKH &RQWDLQHU WR VHUYH" ,Q RWKHU ZRUGV ZKLFK SDUWV RI WKH ZHE DSS DUH SURWHFWHG IURP GLUHFW FOLHQW DFFHVV" :KHUH GR \RX SXW ´ZHOFRPHµ ILOHV"

:KHUH ZLOO WKH &217$,1(5 ORRN IRU WKLQJV LQ WKH ZHE DSS"

:KHUH ZLOO WKH &RQWDLQHU ORRN ZKHQ WKH FOLHQW UHTXHVWV DQ +70/ SDJH" $ -63 SDJH" $ VHUYOHW" 6RPHWKLQJ WKDW GRHVQ·W H[LVW DV DQ DFWXDO ILOH OLNH %HHU7HVW GR " :KHUH ZLOO WKH &RQWDLQHU ORRN IRU WDJ KDQGOHU FODVVHV" :KHUH ZLOO WKH &RQWDLQHU ORRN IRU 7/'V" 7DJ )LOHV" -$5 ILOHV" 7KH 'HSOR\PHQW 'HVFULSWRU" 2WKHU FODVVHV P\ VHUYOHWV GHSHQG RQ" :KHUH GRHV WKH &RQWDLQHU ORRN IRU ´ZHOFRPHµ ILOHV " 2EYLRXVO\ RQFH \RX NQRZ DOO RI WKLV WKHQ HYHU\WKLQJ LQ QXPEHU ´ µ EHFRPHV D QR EUDLQHU

+RZ GRHV WKH &/,(17 UHTXHVW WKLQJV LQ WKH ZHE DSS"

:KDW GRHV WKH FOLHQW W\SH LQWR WKH EURZVHU WR DFFHVV DQ +70/ SDJH" $ -63 SDJH" $ VHUYOHW" 6RPHWKLQJ WKDW GRHVQ·W DFWXDOO\ H[LVW DV D ILOH" ,Q ZKLFK SODFHV FDQ WKH FOLHQW PDNH D GLUHFW UHTXHVW DQG LQ ZKLFK SODFHV LV WKH FOLHQW UHVWULFWHG IURP GLUHFW DFFHVV WR D UHVRXUFH" :KDW KDSSHQV LI WKH FOLHQW W\SHV LQ D SDWK WR RQO\ D GLUHFWRU\ QRW D VSHFLILF ILOH"

\RX DUH KHUH

Chapter 11. Deploying your web app Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher: O'Reilly Prepared for Stephen Goss, Safari ID: stephengoss@gmx.net Print Publication Date: 8/1/2004 User number: 747221 Copyright 2007, Safari Books Online, LLC. This PDF is exclusively for your use in accordance with the Safari Terms of Service. No part of it may be reproduced or transmitted in any form by any means without the prior written permission for reprints and excerpts from the publisher. Redistribution or other use that violates the fair use priviledge under U.S. copyright laws (see 17 USC107) or that otherwise violates the Safari Terms of Service is strictly prohibited.


Chapter 11. Deploying your web app

ZKHUH WR SXW WKLQJV

?PI\ OWM[ _PMZM QV I _MJ IXX )N SEVERAL CHAPTERS OF THIS BOOK WE VE LOOKED AT THE LOCATIONS IN WHICH THE VARIOUS lLES MUST BE PLACED )N THE CHAPTER ON CUSTOM TAGS FOR EXAMPLE YOU SAW THAT 4AG &ILES MUST BE DEPLOYED IN 7%" ).& TAGS OR A SUBDIRECTORY OR IN A *!2 lLE UNDER -%4! ).& TAGS OR A SUBDIRECTORY )F YOU PUT A 4AG &ILE ANYWHERE ELSE THE #ONTAINER WILL EITHER IGNORE IT OR TREAT IT AS STATIC CONTENT READY TO BE SERVED 4HE 3ERVLET AND *30 SPECS HAVE A LOT OF PICKY RULES ABOUT WHERE THINGS GO AND YOU REALLY DO NEED TO KNOW MOST OF THEM 3INCE WE VE ALREADY COVERED MOST OF THIS IN ONE WAY OR ANOTHER WE USE THESE lRST FEW PAGES AS A TEST OF YOUR MEMORY AND UNDERSTANDING $ON T SKIP IT 4REAT THESE NEXT FEW PAGES AS PRACTICE EXAM QUESTIONS

WKHUH DUH QR

'XPE 4XHVWLRQV

4

7HY SHOULD ) HAVE TO KNOW WHERE EVERYTHING GOES ISN T THAT WHAT DEPLOYMENT TOOLS ARE FOR /R EVEN AN !.4 BUILD SCRIPT

$

)F YOU RE LUCKY YOU RE USING A * %% DEPLOYMENT TOOL THAT LETS YOU POINT AND CLICK YOUR WAY THROUGH A SERIES OF WIZARD SCREENS 4HEN YOUR #ONTAINER USES THAT INFO TO BUILD THE 8-, $EPLOYMENT $ESCRIPTOR WEB XML BUILD OUT THE NECESSARY DIRECTORY STRUCTURES AND COPY YOUR FILES INTO THE APPROPRIATE LOCATIONS "UT EVEN IF YOU ARE LUCKY DON T YOU THINK YOU NEED TO KNOW WHAT THE TOOL IS DOING 9OU MIGHT NEED TO TWEAK WHAT THE TOOL DOES 9OU MIGHT NEED TO TROUBLESHOOT 9OU MIGHT SWITCH TO A DIFFERENT VENDOR THAT DOESN T HAVE AN AUTOMATED DEPLOYMENT TOOL ! LOT OF DEVELOPERS USE A BUILD TOOL LIKE !.4 BUT EVEN THEN YOU STILL NEED TO TELL !.4 WHAT TO DO

4

"UT ) JUST GOT AN !.4 BUILD SCRIPT OFF THE INTERNET AND IT S ALREADY CONlGURED TO DO IT ALL FOR ME

$

!GAIN THAT S GREATˆBUT YOU STILL NEED TO KNOW WHAT S REALLY HAPPENING )F YOU RE COMPLETELY AT THE MERCY OF YOUR TOOL YOU RE IN TROUBLE IF SOMETHING GOES WRONG +NOWING HOW TO STRUCTURE A WEB APP IS LIKE KNOWING HOW TO CHANGE A TIREˆ MAYBE YOU LL NEVER NEED TO DO IT YOURSELF BUT IF IT S !- AND YOU RE IN THE MIDDLE OF NOWHERE ISN T IT NICE TO KNOW YOU CAN !ND FOR THOSE OF YOU TAKING THE EXAM WELL YOU DON T HAVE A CHOICE 6IRTUALLY EVERYTHING IN THIS CHAPTER IS COVERED ON THE EXAM

FKDSWHU

Chapter 11. Deploying your web app Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher: O'Reilly Prepared for Stephen Goss, Safari ID: stephengoss@gmx.net Print Publication Date: 8/1/2004 User number: 747221 Copyright 2007, Safari Books Online, LLC. This PDF is exclusively for your use in accordance with the Safari Terms of Service. No part of it may be reproduced or transmitted in any form by any means without the prior written permission for reprints and excerpts from the publisher. Redistribution or other use that violates the fair use priviledge under U.S. copyright laws (see 17 USC107) or that otherwise violates the Safari Terms of Service is strictly prohibited.


Chapter 11. Deploying your web app

ZHE DSS GHSOR\PHQW

1DPH WKH GLUHFWRULHV

6KDUSHQ \RXU SHQFLO

:ULWH WKH FRUUHFW GLUHFWRU\ QDPHV LQ JLYHQ WKH ILOHV VKRZQ ZLWKLQ WKRVH GLUHFWRULHV (YHU\WKLQJ LQ KHUH KDV EHHQ FRYHUHG LQ DQ HDUOLHU FKDSWHU EXW GRQ·W ZRUU\ LI \RX KDYHQ·W FRPSOHWHO\ PHPRUL]HG WKHP DOO \HW 7KLV LV WKH FKDSWHU ZKHUH \RX KDYH WR EXUQ LW LQ

ZHEDSSV

0\7HVW$SS

# WDJOLE SUH¿ [ ´PLQH´ XUL ´ :(% ,1) P\)XQFWLRQV WOG´ !

KWPO! ERG\! ^PLQH UROO,W `

ERG\! KWPO!

XVH7DJ MVS "[PO YHU VLRQ ´ ´ HQFRGLQJ ´87) ´"! '2&7<3(

ZHE [PO

# DWWUL EXWH QDPH ´IRQW&RORU´ UHTXLUHG ´WUXH´ ! # WDJ ERG\

IRR

-$5

1DY%DU WDJ

0(7$ ,1)

IRR 0\7DJ+DQGOHU FODVV

7/'V

EDU 0\+DQGOHU FODVV IXQFWLRQ! QDPH! UROO,W QDPH! IXQFWLRQ FODVV! IRR 'LFH5ROOHU

IXQFWLRQ

FDWDORJ7DJV WOG

\RX DUH KHUH

Chapter 11. Deploying your web app Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher: O'Reilly Prepared for Stephen Goss, Safari ID: stephengoss@gmx.net Print Publication Date: 8/1/2004 User number: 747221 Copyright 2007, Safari Books Online, LLC. This PDF is exclusively for your use in accordance with the Safari Terms of Service. No part of it may be reproduced or transmitted in any form by any means without the prior written permission for reprints and excerpts from the publisher. Redistribution or other use that violates the fair use priviledge under U.S. copyright laws (see 17 USC107) or that otherwise violates the Safari Terms of Service is strictly prohibited.


Chapter 11. Deploying your web app

H[HUFLVH RQ GHSOR\PHQW

6KDUSHQ \RXU SHQFLO

'UDZ WKH GLUHFWRU\ DQG ¿OH VWUXFWXUH /RRN DW WKH IROORZLQJ ZHE DSS GHVFULSWLRQ DQG GUDZ D GLUHFWRU\ VWUXFWXUH WKDW VXSSRUWV WKDW ZHE DSS %H VXUH WR LQFOXGH WKH ILOHV WRR 7KHUH PD\ EH PRUH WKDQ RQH ZD\ WR VWUXFWXUH WKLV ZH UHFRPPHQG XVLQJ WKH VLPSOHVW L H OHDVW QXPEHU RI GLUHFWRULHV WR RUJDQL]H LW

$SSOLFDWLRQ QDPH 'DWLQJ 6WDWLF FRQWHQW DQG -63V ZHOFRPH KWPO VLJQXS MVS VHDUFK MVS 6HUYOHWV GDWLQJ (QUROO FODVV GDWLQJ 6HDUFK FODVV &XVWRP WDJ KDQGOHU FODVV WDJ&ODVVHV 7DJ2QH FODVV 7/' 'DWLQJ7DJV WOG -DYD%HDQV GDWLQJ &OLHQW FODVV '' ZHE [PO

tomcat

6XSSRUW -$5 ¿OHV 'DWLQJ-DU MDU

webapps

FKDSWHU

Chapter 11. Deploying your web app Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher: O'Reilly Prepared for Stephen Goss, Safari ID: stephengoss@gmx.net Print Publication Date: 8/1/2004 User number: 747221 Copyright 2007, Safari Books Online, LLC. This PDF is exclusively for your use in accordance with the Safari Terms of Service. No part of it may be reproduced or transmitted in any form by any means without the prior written permission for reprints and excerpts from the publisher. Redistribution or other use that violates the fair use priviledge under U.S. copyright laws (see 17 USC107) or that otherwise violates the Safari Terms of Service is strictly prohibited.


Chapter 11. Deploying your web app

ZHE DSS GHSOR\PHQW

%( WKH &RQWDLQHU :KDW·V ZURQJ ZLWK WKLV GHSOR\PHQW" 7KHUH DUH VHYHUDO WKLQJV KHUH WKDW GR QRW IROORZ WKH 6HUYOHW RU -63 VSHFLILFDWLRQ IRU ZKHUH WKH\ VKRXOG EH SODFHG $VVXPH WKDW DOO ILOHV KDYH WKH FRUUHFW QDPHV DQG H[WHQVLRQV ZHEDSSV

/LVW HYHU\WKLQJ WKDW·V ZURQJ ZLWK WKLV SLFWXUH 0\7HVW$SS

# WDJOLE SUH¿ [ ´PLQH´ XUL ´ :(% ,1)

"[PO YHU VLRQ ´ ´ HQFRGLQJ ´87) ´"!

P\)XQFWLRQV WOG´ !

KWPO! ERG\! ^PLQH UROO,W `

ERG\! KWPO!

:(% ,1)

XVH7DJ MVS

'2&7<3(

ZHE [PO

7/'V

# DWWUL EXWH QDPH ´IRQW&RORU´ UHTXLUHG ´WUXH´ ! # WDJ ERG\

OLE IXQFWLRQ! QDPH! UROO,W QDPH! IXQFWLRQ FODVV!

1DY%DU WDJ

IRR 'LFH5ROOHU

IXQFWLRQ

KWPO!

ERG\! ERG\! KWPO!

FODVVHV

# DW WULEXWH QDPH ´IRQW&RORU´ UHTXLUHG ´WUXH´ ! # WDJ ERG\

+HDGHU WDJ

FDWDORJ7DJV WOG

IRR KWPO

IRR

IRR $GYLVRU7DJ+DQGOHU FODVV

\RX DUH KHUH

Chapter 11. Deploying your web app Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher: O'Reilly Prepared for Stephen Goss, Safari ID: stephengoss@gmx.net Print Publication Date: 8/1/2004 User number: 747221 Copyright 2007, Safari Books Online, LLC. This PDF is exclusively for your use in accordance with the Safari Terms of Service. No part of it may be reproduced or transmitted in any form by any means without the prior written permission for reprints and excerpts from the publisher. Redistribution or other use that violates the fair use priviledge under U.S. copyright laws (see 17 USC107) or that otherwise violates the Safari Terms of Service is strictly prohibited.


Chapter 11. Deploying your web app

H[HUFLVH RQ GHSOR\PHQW

6KDUSHQ \RXU SHQFLO $16:(56

1DPH WKH GLUHFWRULHV 7R GHSOR\ D ZHE DSS VXFFHVVIXOO\ \RX 0867 IROORZ WKLV VWUXFWXUH :(% ,1) PXVW EH LPPHGLDWHO\ XQGHU WKH DSSOLFDWLRQ FRQWH[W ´0\7HVW$SS¾ LQ WKLV H[DPSOH 7KH ´FODVVHV¾ GLUHFWRU\ PXVW EH LPPHGLDWHO\ LQVLGH ´:(% ,1)¾ 7KH SDFNDJH VWUXFWXUH IRU WKH FODVVHV PXVW EH LPPHGLDWHO\ LQVLGH ´FODVVHV¾ 7KH ´OLE¾ GLUHFWRU\ PXVW EH LPPHGLDWHO\ LQVLGH ´:(% ,1)¾ DQG WKH -$5 ILOH PXVW EH LPPHGLDWHO\ LQVLGH ´OLE¾ 7KH ´0(7$ ,1)¾ GLUHFWRU\ PXVW EH LPPHGLDWHO\ LQVLGH WKH -$5 DQG 7/' ILOHV LQ D -$5 PXVW EH VRPHZKHUH XQGHU ´0(7$ ,1)¾ WKH\ FDQ EH LQ DQ\ VXEGLUHFWRU\ DQG ´7/'V¾ LV QRW UHTXLUHG DV D GLUHFWRU\ QDPH 7/'V WKDW DUH 127 LQ D -$5 PXVW EH VRPHZKHUH XQGHU ´:(% ,1)¾ 7DJ )LOHV ILOHV ZLWK D WDJ RU WDJ[ H[WHQVLRQ PXVW EH VRPHZKHUH XQGHU ´:(% ,1) WDJV¾ XQOHVV WKH\¡UH GHSOR\HG LQ D -$5 LQ ZKLFK FDVH WKH\ PXVW EH VRPHZKHUH XQGHU ´0(7$ ,1) WDJV¾

ZHEDSSV

0\7HVW$SS

Static content and JSPs can be at the we app root level OR in b subdirectory, includinga under WEB-INF, although that affects their accessibility as youÕll see later.

MUST Tag Files (.tagEB) -INF/ ÒW e sid in be irectory. tagsÓ or a subd

# WDJOLE SUH¿ [ ´PLQH´ XUL ´ :(% ,1)

named Òweb.xmlÓ and FÓ The DD MUST be ely inside ÒWEB-IN iat ed imm it MUST be directory). sub a in T NO s, rd (in other wo

:(% ,1)

P\)XQFWLRQV WOG´ !

KWPO! ERG\! ^PLQH UROO,W `

ERG\! KWPO!

XVH7DJ MVS

WDJV

# DWWUL EXWH QDPH ´IRQW&RORU´ UHTXLUHG ´WUXH´ ! # WDJ ERG\

"[PO YHU VLRQ ´ ´ HQFRGLQJ ´87) ´"! '2&7<3(

FODVVHV

OLE

ZHE [PO

IRR

-$5

1DY%DU WDJ

ructure for The package stR must be JA a in es class Y inside the IMMEDIATEL R must be JA e th d an JAR, /libÓ. NF -I EB inside ÒW

EDU

0(7$ ,1)

IRR 0\7DJ+DQGOHU FODVV

EDU 0\+DQGOHU FODVV

for ALL The package structs,ure eners, list et rvl (se les Þ ss cla lers, nd ha g ta ns, bea s, helper ely under iat ed imm be st mu etc.) Ò/WEB-INF/classesÓ.

7/'V IXQFWLRQ! QDPH! UROO,W QDPH! IXQFWLRQ FODVV! IRR 'LFH5ROOHU

Ă’META-INFĂ“ JAR Ăžle. TLDmust be immediately inside th s in a JAR Ăžle somewhere insid MUST be e NOT in a JAR e Ă’META-INFĂ“. (TLD Ăžles Ă’WEB-INFĂ“.) must be somewhere under

IXQFWLRQ

FDWDORJ7DJV WOG

FKDSWHU

Chapter 11. Deploying your web app Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher: O'Reilly Prepared for Stephen Goss, Safari ID: stephengoss@gmx.net Print Publication Date: 8/1/2004 User number: 747221 Copyright 2007, Safari Books Online, LLC. This PDF is exclusively for your use in accordance with the Safari Terms of Service. No part of it may be reproduced or transmitted in any form by any means without the prior written permission for reprints and excerpts from the publisher. Redistribution or other use that violates the fair use priviledge under U.S. copyright laws (see 17 USC107) or that otherwise violates the Safari Terms of Service is strictly prohibited.


Chapter 11. Deploying your web app

ZHE DSS GHSOR\PHQW

6KDUSHQ \RXU SHQFLO $16:(56

'UDZ WKH GLUHFWRU\ DQG ¿OH VWUXFWXUH 7KH RQO\ WKLQJV WKDW FRXOG EH GLIIHUHQW LQ WKLV SLFWXUH DUH WKH VWDWLF FRQWHQW DQG -63V FRXOG EH LQ D VXEGLUHFWRU\ XQGHU ´'DWLQJ¾ RU KLGGHQ XQGHU ´:(% ,1)¾ DQG WKH 'DWLQJ7DJV WOG FRXOG EH LQ D VXEGLUHFWRU\ RI :(% ,1)

$SSOLFDWLRQ QDPH 'DWLQJ 6WDWLF FRQWHQW DQG -63V ZHOFRPH KWPO VLJQXS MVS VHDUFK MVS 6HUYOHWV GDWLQJ (QUROO FODVV GDWLQJ 6HDUFK FODVV &XVWRP WDJ KDQGOHU FODVV WDJ&ODVVHV 7DJ2QH FODVV

tomcat

7/' 'DWLQJ7DJV WOG -DYD%HDQV FODVV GDWLQJ &OLHQW FODVV '' ZHE [PO

webapps

6XSSRUW -$5 ÂżOHV 'DWLQJ-DU MDU

Dating

WEB-INF search.jsp lib

DatingTags.tld

signup.jsp

welcome.html

web.xml

classes

tagClasses

dating

DatingJar.jar TagOne.class

Enroll.class

Search.class Client.class

\RX DUH KHUH

Chapter 11. Deploying your web app Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher: O'Reilly Prepared for Stephen Goss, Safari ID: stephengoss@gmx.net Print Publication Date: 8/1/2004 User number: 747221 Copyright 2007, Safari Books Online, LLC. This PDF is exclusively for your use in accordance with the Safari Terms of Service. No part of it may be reproduced or transmitted in any form by any means without the prior written permission for reprints and excerpts from the publisher. Redistribution or other use that violates the fair use priviledge under U.S. copyright laws (see 17 USC107) or that otherwise violates the Safari Terms of Service is strictly prohibited.


Chapter 11. Deploying your web app

H[HUFLVH RQ GLUHFWRULHV DQG Âż OHV

%( WKH &RQWDLQHU $QVZHUV

Several things are wrong with this picture!

ZHEDSSV

0\7HVW$SS

# WDJOLE SUH¿ [ ´PLQH´ XUL ´ :(% ,1)

:(% ,1)

^PLQH UROO,W `

ERG\! KWPO!

XVH7DJ MVS

WRONG !! Tag Files (.tag) must be somewhere under ÒWEB-INF/tagsÓ.

'2&7<3(

ZHE [PO

7/'V

# DWWUL EXWH QDPH ´IRQW&RORU´ UHTXLUHG ´WUXH´ ! # WDJ ERG\

OLE

# DW WULEXWH QDPH ´IRQW&RORU´ UHTXLUHG ´WUXH´ ! # WDJ ERG\

IXQFWLRQ! QDPH! UROO,W QDPH! IXQFWLRQ FODVV!

1DY%DU WDJ

OK (although accessible only by other parts of the web app... no direct access by clients).

WRONG!! web.xml must be inside Ă’WEB-INFĂ“.

"[PO YHU VLRQ ´ ´ HQFRGLQJ ´87) ´"!

P\)XQFWLRQV WOG´ !

KWPO! ERG\!

IRR 'LFH5ROOHU

+HDGHU WDJ

IXQFWLRQ

KWPO!

ERG\!

FODVVHV

ERG\! KWPO!

WRONG !! Tag Files (.tag) must be somewhere under ÒWEB-INF/tagsÓ.

FDWDORJ7DJV WOG

IRR KWPO

OK

assesÓ directory WRONG !! The Òcler ÒlibÓ, it must und be T NO must . FÓ -IN EB ÒW er be und in the right is ory ect dir Ó The Òlib FÓ). -IN EB ÒW r place (unde

IRR

OK (assuming the ÒclassesÓ directory is moved out of ÒlibÓ and placed directly under ÒWEB-INFÓ).

IRR $GYLVRU7DJ+DQGOHU FODVV

FKDSWHU

Chapter 11. Deploying your web app Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher: O'Reilly Prepared for Stephen Goss, Safari ID: stephengoss@gmx.net Print Publication Date: 8/1/2004 User number: 747221 Copyright 2007, Safari Books Online, LLC. This PDF is exclusively for your use in accordance with the Safari Terms of Service. No part of it may be reproduced or transmitted in any form by any means without the prior written permission for reprints and excerpts from the publisher. Redistribution or other use that violates the fair use priviledge under U.S. copyright laws (see 17 USC107) or that otherwise violates the Safari Terms of Service is strictly prohibited.


Chapter 11. Deploying your web app

ZHE DSS GHSOR\PHQW

2K LI RQO\ WKHUH ZHUH D ZD\ WR GHSOR\ P\ HQWLUH ZHE DSS LQ D -$5 VR WKDW , FRXOG PRYH LW DV D VLQJOH ÀOH LQVWHDG RI WKLV KXJH SLOH RI ÀOHV DQG GLUHFWRULHV DQG

?PI\ [PM ZMITTa _IV\[ Q[ I ?): Ă…TM 4HE DIRECTORY STRUCTURE OF A WEB APP IS INTENSE !ND EVERYTHING HAS TO BE IN EXACTLY THE RIGHT PLACE -OVING A WEB APP CAN HURT "UT THERE S A SOLUTION CALLED A 7!2 lLE WHICH STANDS FOR 7EB !2CHIVE !ND IF THAT SOUNDS SUSPICIOUSLY LIKE A *!2 lLE *AVA !2CHIVE THAT S BECAUSE A 7!2 IS A *!2 ! *!2 WITH A WAR EXTENSION INSTEAD OF JAR

\RX DUH KHUH

Chapter 11. Deploying your web app Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher: O'Reilly Prepared for Stephen Goss, Safari ID: stephengoss@gmx.net Print Publication Date: 8/1/2004 User number: 747221 Copyright 2007, Safari Books Online, LLC. This PDF is exclusively for your use in accordance with the Safari Terms of Service. No part of it may be reproduced or transmitted in any form by any means without the prior written permission for reprints and excerpts from the publisher. Redistribution or other use that violates the fair use priviledge under U.S. copyright laws (see 17 USC107) or that otherwise violates the Safari Terms of Service is strictly prohibited.


Chapter 11. Deploying your web app

GHSOR\LQJ D ZHE DSS LQ D :$5

?): NQTM[ ! 7!2 l LE IS SIMPLY A SNAPSHOT OF YOUR WEB APP STRUCTURE IN A NICE PORTABLE COMPRESSED FORM IT S REALLY JUST A *!2 l LE 9OU JAR UP YOUR ENTIRE WEB APP STRUCTURE MINUS THE WEB APP CONTEXT DIRECTORYˆTHE ONE THAT S ABOVE 7%" ).& AND GIVE IT A WAR EXTENSION "UT THAT DOES LEAVE ONE PROBLEMˆIF YOU DON T INCLUDE THE SPECIl C WEB APP DIRECTORY "EER!PP FOR EXAMPLE HOW DOES THE #ONTAINER KNOW THE NAME CONTEXT OF THIS WEB APP 4HAT DEPENDS ON YOUR #ONTAINER )N 4OMCAT THE NAME OF THE 7!2 l LE BECOMES THE WEB APP NAME )MAGINE YOU DEPLOY "EER!PP AS A NORMAL DIRECTORY STRUCTURE UNDER TOMCAT WEBAPPS "EER!PP 4O DEPLOY IT AS A 7!2 l LE YOU JAR UP EVERYTHING IN THE "EER!PP DIRECTORY BUT NOT THE "EER!PP DIRECTORY ITSELF THEN NAME THE RESULTING *!2 l LE "EER!PP WAR 4HEN YOU DROP THE "EER!PP WAR l LE INTO THE TOMCAT WEBAPPS DIRECTORY 4HAT S IT 4OMCAT UNPACKS THE 7!2 l LE AND CREATES THE WEB APP CONTEXT DIRECTORY USING THE NAME OF THE 7!2 l LE "UT AGAIN YOUR #ONTAINER MAY HANDLE 7!2 DEPLOYMENT AND NAMING DIFFERENTLY 7HAT MATTERS TO US HERE IS WHAT S REQUIRED BY THE SPEC AND THE ANSWER ISˆIT MAKES ALMOST NO DIFFERENCE WHETHER THE APP IS DEPLOYED IN OR OUT OF A 7!2 )N OTHER WORDS YOU STILL NEED 7%" ).& WEB XML ETC %VERYTHING ON THE PREVIOUS PAGES APPLIES !LMOST EVERYTHING 4HERE IS ONE THING YOU CAN DO WHEN YOU USE A 7!2 l LE THAT YOU CAN T DO WHEN YOU DEPLOY WITHOUT ONEˆDECLARE LIBRARY DEPENDENCIES )N A 7!2 l LE YOU CAN DECLARE LIBRARY DEPENDENCIES IN THE -%4! ).& -!.)&%34 -& l LE WHICH GIVES YOU A DEPLOY TIME CHECK FOR WHETHER THE #ONTAINER CAN l ND THE PACKAGES AND CLASSES YOUR APP DEPENDS ON 4HAT MEANS YOU DON T HAVE TO WAIT UNTIL A RESOURCE IS REQUESTED BEFORE THE WHOLE THING BLOWS UP BECAUSE THE #ONTAINER DOESN T HAVE A PARTICULAR CLASS IN ITS CLASSPATH THAT THE REQUESTED RESOURCE NEEDS

WLRQV DERXW 'RQ·W EH IRROHG E\ TXHV GRQ·W FKDQJH :$5 À OHV WKH UXOHV I \RX HG D ¿ OH QDPHG ³ZHE [PO´ L 4XLFN TXL] GR \RX VWLOO QH X VWLOO QHHG D ³:(% ,1)´ R \R H ' RXUV 2I F $5" GHSOR\ DV D : WLOO QHHG :$5" 2I FRXUVH 'R \RX V GLUHFWRU\ LI \RX GHSOR\ DV D FWRU\ XQGHU ³:(% ,1)´" 2I ´ GLUH VVHV ³FOD LQ D VVHV WR SXW FOD FDXVH H UXOHV GRQ¶W FKDQJH MXVW EH FRXUVH <RX JHW WKH LGHD 7K FH LV 7KH RQO\ VLJQL¿ FDQW GLIIHUHQ \RX SXW \RXU DSS LQ D :$5 U WKH ZHE ³0(7$ ,1)´ GLUHFWRU\ XQGH WKDW D :$5 ¿ OH ZLOO KDYH D RU\ LUHFW )´ G % ,1 ³:( WKH DSS FRQWH[W D SHHU WR

FKDSWHU

Chapter 11. Deploying your web app Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher: O'Reilly Prepared for Stephen Goss, Safari ID: stephengoss@gmx.net Print Publication Date: 8/1/2004 User number: 747221 Copyright 2007, Safari Books Online, LLC. This PDF is exclusively for your use in accordance with the Safari Terms of Service. No part of it may be reproduced or transmitted in any form by any means without the prior written permission for reprints and excerpts from the publisher. Redistribution or other use that violates the fair use priviledge under U.S. copyright laws (see 17 USC107) or that otherwise violates the Safari Terms of Service is strictly prohibited.


Chapter 11. Deploying your web app

ZHE DSS GHSOR\PHQW

?PI\ I LMXTWaML ?): NQTM TWWS[ TQSM 7HEN YOU DEPLOY A WEB APP INTO 4OMCAT BY PUTTING THE 7!2 l LE INTO THE WEBAPPS DIRECTORY 4OMCAT UNPACKS IT CREATES THE CONTEXT DIRECTORY -Y4EST!PP IN THIS EXAMPLE AND THE ONLY NEW THING YOU LL SEE IS THE -%4! ).& DIRECTORY WITH THE -!.)&%34 -& l LE INSIDE 9OU WILL PROBABLY NEVER PUT ANYTHING INTO THE -%4! ).& DIRECTORY YOURSELF SO YOU LL PROBABLY NEVER CARE WHETHER YOUR APP IS DEPLOYED AS A 7!2 UNLESS YOU DO NEED TO SPECIFY LIBRARY DEPENDENCIES IN THE -!.)&%34 -& l LE

ZHEDSSV

Ă•ll see in The only new thing you a WAR is as yed plo de app a web ory (and ect dir F -IN TA the ME inside). le Ăž F .M ST FE the MANI

0\7HVW$SS

# WDJO SUH¿ [ ´P XUL ´ : P\)XQFWLRQV WOG´ !

KWPO! ERG\! ^PLQH UROO,W `

ERG\! KWPO!

XVH7DJ MVS

0(7$ ,1)

"[PO VLRQ HQFRG ´87) ´"!

'2&7<3(

ZHE [PO 0$1,)(67 0)

# DW EXWH ´IRQW&RORU´ UHTXLUHG ´WUXH´ ! # WDJ ERG\

1DY%DU WDJ

IRR 0\7DJ+DQGOHU FODVV

EDU 0\+DQGOHU FODVV

IXQF QDPH UROO, QDPH! IXQFWLRQ FODVV! IRR 'LFH5ROOHU

IXQFWLRQ

FDWDORJ7DJV WOG

\RX DUH KHUH

Chapter 11. Deploying your web app Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher: O'Reilly Prepared for Stephen Goss, Safari ID: stephengoss@gmx.net Print Publication Date: 8/1/2004 User number: 747221 Copyright 2007, Safari Books Online, LLC. This PDF is exclusively for your use in accordance with the Safari Terms of Service. No part of it may be reproduced or transmitted in any form by any means without the prior written permission for reprints and excerpts from the publisher. Redistribution or other use that violates the fair use priviledge under U.S. copyright laws (see 17 USC107) or that otherwise violates the Safari Terms of Service is strictly prohibited.


Chapter 11. Deploying your web app

GLUHFWO\ DFFHVVLEOH ORFDWLRQV

5ISQVO [\I\QK KWV\MV\ IVL 2;8[ LQZMK\Ta IKKM[[QJTM 7HEN YOU DEPLOY STATIC (4-, AND *30S YOU CAN CHOOSE WHETHER TO MAKE THEM DIRECTLY ACCESSIBLE FROM OUTSIDE THE WEB APP "Y DIRECTLY ACCESSIBLE WE MEAN THAT A CLIENT CAN ENTER THE PATH TO THE RESOURCE INTO HIS BROWSER AND THE SERVER WILL RETURN THE RESOURCE "UT YOU CAN PREVENT DIRECT ACCESS BY PUTTING l LES UNDER 7%" ).& OR IF YOU RE DEPLOYING AS A 7!2 l LE UNDER -%4! ).&

ctly accessible This is a direwe b app. e th in path

9DOLG UHTXHVW KWWS ZZZ ZLFNHGO\VPDUW FRP 0\7HVW$SS UHJLVWHU VLJQ8S MVS

,QYDOLG UHTXHVW SURGXFHV ³ 1RW )RXQG´ HUURU

KWWS ZZZ ZLFNHGO\VPDUW FRP 0\7HVW$SS :(% ,1) SURFHVV MVS

der WEB-INF No! Nothing unly accessed. ct can be dire

Nothing under META WEB-INF is directly -INF or accessible

0\7HVW$SS

.

&RQWHQW WKDW¡V GLUHFWO\ DFFHVVLEOH 0(7$ ,1) # WDJOLE SUH¿ [ ´PLQH´ XUL ´ :(% ,1) P\)XQFWLRQV WOG´ !

KWPO! ERG\!

UHJLVWHU

^PLQH UROO,W `

P\)XQFWLRQV WOG´ !

KWPO! ERG\!

ZHOFRPH KWPO # WDJOLE SUH¿ [ ´PLQH´ XUL ´ :(% ,1) P\)XQFWLRQV WOG´ !

KWPO! ERG\! ^PLQH UROO,W `

ERG\! KWPO!

VLJQ8S MVS

# WDJOLE SUH¿ [ ´PLQH´ XUL ´ :(% ,1)

ERG\! KWPO!

:(% ,1)

Clients can directly static content and JSaccess at the web app roo Ps OR in subdirectories.t level

^PLQH UROO,W `

ERG\! KWPO!

0$1,)(67 0)

KWPO!

ERG\! ERG\! KWPO!

SURFHVV MVS

YHULI\ MVS

"[PO VLRQ HQFRG ´87) ´"! '2&7<3(

ZHE [PO

y direct ill not serve an The server wr Ăžles anywhere under e) requests fo (more on this in a minut WEB-INF u CAN put Ăžles here. although yo

You CAN put content but it will NOT be here, ilable for direct access byava (this is the same as ita client. Ăžles under WEB-INF).is for

,I WKH VHUYHU JHWV D FOLHQW UHTXHVW IRU DQ\WKLQJ XQGHU :(% ,1) RU 0(7$ ,1) WKH &RQWDLQHU 0867 UHVSRQG ZLWK D 127 )281' HUURU

FKDSWHU

Chapter 11. Deploying your web app Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher: O'Reilly Prepared for Stephen Goss, Safari ID: stephengoss@gmx.net Print Publication Date: 8/1/2004 User number: 747221 Copyright 2007, Safari Books Online, LLC. This PDF is exclusively for your use in accordance with the Safari Terms of Service. No part of it may be reproduced or transmitted in any form by any means without the prior written permission for reprints and excerpts from the publisher. Redistribution or other use that violates the fair use priviledge under U.S. copyright laws (see 17 USC107) or that otherwise violates the Safari Terms of Service is strictly prohibited.


Chapter 11. Deploying your web app

ZHE DSS GHSOR\PHQW

WKHUH DUH QR

'XPE 4XHVWLRQV

4

)F YOU CAN T SERVE CONTENT FROM 7%" ).& OR -%4! ).& WHAT S THE POINT OF PUTTING PAGES THERE

$

4HINK ABOUT THAT 9OU HAVE *AVA CLASSES AND CLASS MEMBERS WITH PACKAGE LEVEL DEFAULT ACCESS RIGHT 4HESE ARE CLASSES AND MEMBERS NOT AVAILABLE TO THE hPUBLICv BUT MEANT FOR INTERNAL USE BY OTHER CLASSES AND MEMBERS THAT ARE PUBLICLY EXPOSED )T S THE SAME WAY FOR THESE NON ACCESSIBLE STATIC CONTENT AND *30S "Y PUTTING THEM UNDER 7%" ).& OR WITH A 7!2 FILE -%4! ).& YOU RE PROTECTING THEM FROM ANY DIRECT ACCESS WHILE STILL ALLOWING OTHER PARTS OF THE WEB APP TO USE THEM 9OU MIGHT FOR EXAMPLE WANT TO FORWARD TO OR INCLUDE A FILE WHILE MAKING SURE THAT NO CLIENT CAN DIRECTLY REQUEST IT #HANCES ARE IF YOU WANT TO PROTECT A RESOURCE FROM DIRECT ACCESS YOU LL USE 7%" ).& AND NOT -%4! ).& BUT FOR THE EXAM YOU HAVE TO KNOW THAT THE RULES APPLY TO BOTH

4

7HAT ABOUT A -%4! ).& DIRECTORY INSIDE A *!2 lLE INSIDE 7%" ).& LIB $OES THAT HAVE THE SAME PROTECTION AS -%4! ).& INSIDE THE 7!2 lLE

$

7ELL YES "UT THE FACT THAT THE CONTENT IS IN -%4! ).& IS NOT THE POINT )N THIS CASE YOU RE TALKING ABOUT A *!2 FILE INSIDE THE LIB DIRECTORY INSIDE 7%" ).& !ND ANYTHING IN 7%" ).& IS PROTECTED FROM DIRECT ACCESS 3O IT DOESN T MATTER WHERE UNDER 7%" ).& THE CONTENT IS IT S STILL PROTECTED 7HEN WE SAY THAT -%4! ).& IS PROTECTED WE RE REALLY TALKING ABOUT -%4! ).& INSIDE A 7!2 FILE BECAUSE THE -%4! ).& INSIDE 7%" ).& LIB *!2 FILES IS ALWAYS PROTECTED ANYWAY BY VIRTUE OF BEING UNDER 7%" ).&

4

/N AN EARLIER PAGE YOU MENTIONED PUTTING LIBRARY DEPENDENCIES IN THE -%4! ).& -!.)&%34 -& lLE !RE YOU REQUIRED TO DO THAT )SN T EVERYTHING IN THE 7%" ).& LIB JAR lLES AND THE 7%" ).& CLASSES DIRECTORY AUTOMATICALLY ON THE CLASSPATH FOR THIS APPLICATION

$

9ES CLASSES YOU DEPLOY IN WITH THE WEB APP BY USING THE 7%" ).& CLASSES DIRECTORY OR A *!2 IN 7%" ).& LIB ARE AVAILABLE AND YOU DON T HAVE TO DO OR SAY

ANYTHING 4HEY JUST WORK "UT YOU MIGHT HAVE A #ONTAINER WITH OPTIONAL PACKAGES ON ITS CLASSPATH AND MAYBE YOU RE DEPENDING ON SOME OF THOSE PACKAGES /R MAYBE YOU RE DEPENDING ON A PARTICULAR VERSION OF A LIBRARY 4HE -!.)&%34 -& FILE GIVES YOU A PLACE TO TELL THE #ONTAINER ABOUT THE OPTIONAL LIBRARIES YOU MUST HAVE ACCESS TO )F THE #ONTAINER CAN T PROVIDE THEM IT WON T LET YOU SUCCESSFULLY DEPLOY THE APPLICATION 7HICH IS A LOT BETTER THAN IF YOU DEPLOY AND THEN FIND OUT LATER AT REQUEST TIME WHEN YOU GET SOME HORRIBLE OR WORSEˆSUBTLE RUNTIME ERROR

4

(OW DOES THE #ONTAINER ACCESS THE CONTENT INSIDE *!2 lLES IN 7%" ).& LIB

$

4HE #ONTAINER AUTOMATICALLY PUTS THE *!2 FILE INTO ITS CLASSPATH SO CLASSES FOR SERVLETS LISTENERS BEANS ETC ARE AVAILABLE EXACTLY AS THEY ARE IF YOU PUT THE CLASSES IN THEIR CORRECT PACKAGE DIRECTORY STRUCTURE OF COURSE WITHIN THE 7%" ).& CLASSES DIRECTORY )N OTHER WORDS IT DOESN T MATTER WHETHER THE CLASSES ARE IN OR OUT OF A *!2 AS LONG AS THEY RE IN THE RIGHT LOCATIONS +EEP IN MIND THOUGH THAT THE #ONTAINER WILL ALWAYS LOOK FOR CLASSES IN THE 7%" ).& CLASSES DIRECTORY BEFORE IT LOOKS INSIDE *!2 FILES IN 7%" ).& LIB

4

/+ THAT EXPLAINS CLASS lLES BUT WHAT ABOUT OTHER KINDS OF lLES 7HAT IF ) NEED TO ACCESS A TEXT lLE THAT S DEPLOYED IN A *!2 IN 7%" ).& LIB

$

4HIS IS DIFFERENT )F YOUR WEB APP CODE NEEDS DIRECT ACCESS TO A RESOURCE TEXT FILE *0%' ETC THAT S INSIDE A *!2 YOU NEED TO USE THE GET2ESOURCE OR GET2ESOURCE!S 3TREAM METHODS OF THE CLASSLOADERˆTHIS IS JUST PLAIN OLD * 3% NOT SPECIFIC TO SERVLETS .OW YOU MIGHT RECOGNIZE THOSE TWO METHODS GET2ESOURCE AND GET2ESOURCE!S3TREAM BECAUSE THEY EXIST ALSO IN THE 3ERVLET#ONTEXT !0) 4HE DIFFERENCE IS THE METHODS INSIDE 3ERVLET#ONTEXT WORK ONLY FOR RESOURCES WITHIN THE WEB APP THAT ARE NOT DEPLOYED WITHIN A *!2 FILE &OR THE EXAM YOU NEED TO KNOW THAT YOU CAN USE THE STANDARD * 3% MECHANISM FOR GETTING RESOURCES FROM *!2 FILES BUT YOU DO NOT NEED TO KNOW ANY DETAILS \RX DUH KHUH

Chapter 11. Deploying your web app Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher: O'Reilly Prepared for Stephen Goss, Safari ID: stephengoss@gmx.net Print Publication Date: 8/1/2004 User number: 747221 Copyright 2007, Safari Books Online, LLC. This PDF is exclusively for your use in accordance with the Safari Terms of Service. No part of it may be reproduced or transmitted in any form by any means without the prior written permission for reprints and excerpts from the publisher. Redistribution or other use that violates the fair use priviledge under U.S. copyright laws (see 17 USC107) or that otherwise violates the Safari Terms of Service is strictly prohibited.


Chapter 11. Deploying your web app

VHUYOHW PDSSLQJ

0W_ [MZ ^TM\ UIXXQVO :-)44A _WZS[ 9OU VE SEEN EXAMPLES OF SERVLET MAPPING IN THE $EPLOYMENT $ESCRIPTORS WE VE USED IN EARLIER CHAPTERS BEGINNING WITH THE TUTORIAL %VERY SERVLET MAPPING HAS TWO PARTSˆTHE SERVLET ELEMENT AND THE SERVLET MAPPING ELEMENT 4HE SERVLET DElNES A SERVLET NAME AND CLASS AND THE SERVLET MAPPING DElNES THE 52, PATTERN THAT MAPS TO A SERVLET NAME DElNED SOMEWHERE ELSE IN THE $$ ZHE DSS [POQV ´KWWS MDYD VXQ FRP [PO QV M HH´ [POQV [VL ´KWWS ZZZ Z RUJ ;0/6FKHPD LQVWDQFH´ [VL VFKHPD/RFDWLRQ ´KWWS MDYD VXQ FRP [PO QV M HH ZHE DSSB B [VG´ YHUVLRQ ´ ´!

use in other This name is mainly. Itforis NOT something DD e th of ts par about. the client will know

VHUYOHW!

VHUYOHW QDPH!%HHU VHUYOHW QDPH!

VHUYOHW FODVV!FRP H[DPSOH %HHU6HOHFW VHUYOHW FODVV! VHUYOHW!

VHUYOHW PDSSLQJ! VHUYOHW QDPH!%HHU VHUYOHW QDPH! XUO SDWWHUQ! %HHU 6HOHFW%HHU GR XUO SDWWHUQ! VHUYOHW PDSSLQJ! ZHE DSS!

,I WKH FOLHQW UHTXHVW FRPHV LQ IRU ´ %HHU 6HOHFW%HHU GR¾ WKDW UHIHUV WR WKH VHUYOHW QDPHG ´%HHU¾

like mes in that looks When a requestaincoer Ăžnds the matching this, the Cont> in a <servlet> element, <servlet-name class is responsible for to know which quest. handling the re

$QG , VHH WKDW WKHUH LV D VHUYOHW! ZLWK WKDW VHUYOHW QDPH! ´%HHU¾ DQG LW WHOOV PH ZKLFK VHUYOHW FODVV ZLOO KDQGOH WKLV UHTXHVW

ZHE DSS ! VHUYOHW! VHUYOHW! VHUYOHW PDSSLQJ! VHUYOHW PDSSLQJ! ZHE DSS!

ZHE [PO &RQWDLQHU

FKDSWHU

Chapter 11. Deploying your web app Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher: O'Reilly Prepared for Stephen Goss, Safari ID: stephengoss@gmx.net Print Publication Date: 8/1/2004 User number: 747221 Copyright 2007, Safari Books Online, LLC. This PDF is exclusively for your use in accordance with the Safari Terms of Service. No part of it may be reproduced or transmitted in any form by any means without the prior written permission for reprints and excerpts from the publisher. Redistribution or other use that violates the fair use priviledge under U.S. copyright laws (see 17 USC107) or that otherwise violates the Safari Terms of Service is strictly prohibited.


Chapter 11. Deploying your web app

ZHE DSS GHSOR\PHQW

%XW , GRQ¡W VHH D GLUHFWRU\ QDPHG ´%HHUÂľ DQG WKHUH¡V QR Ă€ OH QDPHG ´6HOHFW%HHU GRÂľ

This is the contex of this particular t/root web app.

NLY This exists !O in the DD

KWWS ZZZ ZLFNHGO\VPDUW FRP $GYLFH$SS %HHU %HHU6HOHFW GR 7KH $&78$/ SK\VLFDO GLUHFWRU\ VWUXFWXUH

7KH 9,578$/ ORJLFDO GLUHFWRU\ VWUXFWXUH

ZHEDSSV

ZHEDSSV

This does no really exist ! t

$GYLFH$SS

:(% ,1)

FODVVHV

$GYLFH$SS

%HHU

"[PO YHU VLRQ ´ ´ HQFRGLQJ ´87) ´"! '2&7<3(

ZHE [PO

"[PO VLRQ HQFRG ´87) ´"!

"

'2&7<3(

ZHE [PO

%HHU6HOHFW GR

FRP

H[DPSOH

let This is the ses rvthe that handle elect. /Beer/BeerS do request.

%HHU6HOHFW FODVV

%HHU6HOHFW FODVV

\RX DUH KHUH

Chapter 11. Deploying your web app Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher: O'Reilly Prepared for Stephen Goss, Safari ID: stephengoss@gmx.net Print Publication Date: 8/1/2004 User number: 747221 Copyright 2007, Safari Books Online, LLC. This PDF is exclusively for your use in accordance with the Safari Terms of Service. No part of it may be reproduced or transmitted in any form by any means without the prior written permission for reprints and excerpts from the publisher. Redistribution or other use that violates the fair use priviledge under U.S. copyright laws (see 17 USC107) or that otherwise violates the Safari Terms of Service is strictly prohibited.


Chapter 11. Deploying your web app

YLUWXDO YV ORJLFDO

;MZ ^TM\ UIXXQVO[ KIV JM ยนNISMยบ 4HE 52, PATTERN YOU PUT INTO A SERVLET MAPPING CAN BE COMPLETELY MADE UP )MAGINARY &AKE *UST A LOGICAL NAME YOU WANT TO GIVE CLIENTS #LIENTS WHO HAVE NO BUSINESS KNOWING ANYTHING ABOUT THE REAL PHYSICAL STRUCTURE OF YOUR WEB APP 7ITH SERVLET MAPPINGS YOU HAVE TWO STRUCTURES TO ORGANIZE THE REAL PHYSICAL DIRECTORY AND lLE STRUCTURE IN WHICH YOUR WEB APP RESOURCES LIVE AND THE VIRTUAL LOGICAL STRUCTURE 7KH 7+5(( W\SHV RI XUO SDWWHUQ! HOHPHQWV

(;$&7 PDWFK XUO SDWWHUQ! %HHU 6HOHFW%HHU GR XUO SDWWHUQ!

MUST begin with a slash

(/).

nsion, Can have an exte ired. qu re t no s but itร

',5(&725< PDWFK XUO SDWWHUQ! %HHU XUO SDWWHUQ!

th a Always ends wi(/ *). isk er st /a sh sla

MUST begin with a slash (/).

This can be a virtual OR real directory. (;7(16,21 PDWFK

7KH YLUWXDO ORJLFDO VWUXFWXUH H[LVWV VLPSO\ EHFDXVH \RX 6$< LW H[LVWV 7KH 85/ SDWWHUQV LQ WKH '' GRQยทW PDS WR DQ\WKLQJ H[FHSW RWKHU VHUYOHW QDPH! HOHPHQWV LQ WKH '' 7KH VHUYOHW QDPH! HOHPHQWV DUH WKH NH\ WR VHUYOHW PDSSLQJยณWKH\ PDWFK D UHTXHVW XUO SDWWHUQ! WR DQ DFWXDO VHUYOHW FODVV .H\ SRLQW FOLHQWV UHTXHVW VHUYOHWV E\ XUO SDWWHUQ! 127 E\ VHUYOHW QDPH! RU VHUYOHW FODVV!

XUO SDWWHUQ! GR XUO SDWWHUQ!

MUST begin with an asterisk (*) (NEVER with a slash).

, it After the asterisk t do a ve ha T MUS etc.). extension (.do, .jsp,

FKDSWHU

Chapter 11. Deploying your web app Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher: O'Reilly Prepared for Stephen Goss, Safari ID: stephengoss@gmx.net Print Publication Date: 8/1/2004 User number: 747221 Copyright 2007, Safari Books Online, LLC. This PDF is exclusively for your use in accordance with the Safari Terms of Service. No part of it may be reproduced or transmitted in any form by any means without the prior written permission for reprints and excerpts from the publisher. Redistribution or other use that violates the fair use priviledge under U.S. copyright laws (see 17 USC107) or that otherwise violates the Safari Terms of Service is strictly prohibited.


Chapter 11. Deploying your web app

ZHE DSS GHSOR\PHQW

%( WKH &RQWDLQHU :KLFK VHUYOHW ZLOO WKH &RQWDLQHU FKRRVH JLYHQ WKH '' VHUYOHW PDSSLQJV DQG WKH FOLHQW UHTXHVWV VKRZQ" <RX·OO KDYH TXHVWLRQV OLNH WKLV RQ WKH UHDO H[DP

.H\ UXOHV DERXW VHUYOHW PDSSLQJV 7KH &RQWDLQHU ORRNV IRU PDWFKHV LQ WKH RUGHU VKRZQ RQ WKH RSSRVLWH SDJH ,Q RWKHU ZRUGV LW ORRNV ILUVW IRU DQ H[DFW PDWFK ,I LW FDQ·W ILQG DQ H[DFW PDWFK LW ORRNV IRU D GLUHFWRU\ PDWFK ,I LW FDQ·W ILQG D GLUHFWRU\ PDWFK LW ORRNV IRU DQ H[WHQVLRQ PDWFK ,I D UHTXHVW PDWFKHV PRUH WKDQ RQH GLUHFWRU\ XUO SDWWHUQ! WKH &RQWDLQHU FKRRVHV WKH ORQJHVW PDSSLQJ ,Q RWKHU ZRUGV D UHTXHVW IRU IRR EDU P\6WXII GR ZLOO PDS WR WKH XUO SDWWHUQ! IRR EDU HYHQ WKRXJK LW DOVR PDWFKHV WKH XUO SDWWHUQ! IRR 7KH PRVW VSHFLILF PDWFK DOZD\V ZLQV

5HTXHVWV 0DSSLQJV VHUYOHW! VHUYOHW QDPH!2QH VHUYOHW QDPH! VHUYOHW FODVV!IRR 'HSOR\7HVW2QH VHUYOHW FODVV! VHUYOHW! VHUYOHW PDSSLQJ! VHUYOHW QDPH!2QH VHUYOHW QDPH! XUO SDWWHUQ! GR XUO SDWWHUQ! VHUYOHW PDSSLQJ!

VHUYOHW! VHUYOHW QDPH!7ZR VHUYOHW QDPH! VHUYOHW FODVV!IRR 'HSOR\7HVW7ZR VHUYOHW FODVV! VHUYOHW! VHUYOHW PDSSLQJ! VHUYOHW QDPH!7ZR VHUYOHW QDPH! XUO SDWWHUQ! IRR6WXII EDU XUO SDWWHUQ! VHUYOHW PDSSLQJ!

KWWS ORFDOKRVW 0DS7HVW EOXH GR &RQWDLQHU FKRLFH

KWWS ORFDOKRVW 0DS7HVW IRR6WXII EDU &RQWDLQHU FKRLFH

KWWS ORFDOKRVW 0DS7HVW IRR6WXII EDU EOXH GR &RQWDLQHU FKRLFH

KWWS ORFDOKRVW 0DS7HVW IRR6WXII EOXH GR &RQWDLQHU FKRLFH

KWWS ORFDOKRVW 0DS7HVW IUHG EOXH GR &RQWDLQHU FKRLFH

KWWS ORFDOKRVW 0DS7HVW IRR6WXII &RQWDLQHU FKRLFH

VHUYOHW! VHUYOHW QDPH!7KUHH VHUYOHW QDPH! VHUYOHW FODVV!IRR 'HSOR\7HVW7KUHH VHUYOHW FODVV! KWWS ORFDOKRVW 0DS7HVW IRR6WXII EDU IRR IR VHUYOHW!

&RQWDLQHU FKRLFH

VHUYOHW PDSSLQJ! VHUYOHW QDPH!7KUHH VHUYOHW QDPH! XUO SDWWHUQ! IRR6WXII XUO SDWWHUQ! VHUYOHW PDSSLQJ!

KWWS ORFDOKRVW 0DS7HVW IUHG EOXH IR &RQWDLQHU FKRLFH

\RX DUH KHUH

Chapter 11. Deploying your web app Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher: O'Reilly Prepared for Stephen Goss, Safari ID: stephengoss@gmx.net Print Publication Date: 8/1/2004 User number: 747221 Copyright 2007, Safari Books Online, LLC. This PDF is exclusively for your use in accordance with the Safari Terms of Service. No part of it may be reproduced or transmitted in any form by any means without the prior written permission for reprints and excerpts from the publisher. Redistribution or other use that violates the fair use priviledge under U.S. copyright laws (see 17 USC107) or that otherwise violates the Safari Terms of Service is strictly prohibited.


Chapter 11. Deploying your web app

H[HUFLVH RQ VHUYOHW PDSSLQJ

%( WKH &RQWDLQHU $QVZHUV

0DSSLQJV VHUYOHW! VHUYOHW QDPH!2QH VHUYOHW QDPH! VHUYOHW FODVV!IRR 'HSOR\7HVW2QH VHUYOHW FODVV! VHUYOHW! VHUYOHW PDSSLQJ! VHUYOHW QDPH!2QH VHUYOHW QDPH! XUO SDWWHUQ! GR XUO SDWWHUQ! VHUYOHW PDSSLQJ!

VHUYOHW! VHUYOHW QDPH!7ZR VHUYOHW QDPH! VHUYOHW FODVV!IRR 'HSOR\7HVW7ZR VHUYOHW FODVV! VHUYOHW! VHUYOHW PDSSLQJ! VHUYOHW QDPH!7ZR VHUYOHW QDPH! XUO SDWWHUQ! IRR6WXII EDU XUO SDWWHUQ! VHUYOHW PDSSLQJ!

5HTXHVWV

KWWS ORFDOKRVW 0DS7HVW EOXH GR &RQWDLQHU FKRLFH 'HSOR\7HVW2QH PDWFKHG WKH GR H[WHQVLRQ SDWWHUQ

KWWS ORFDOKRVW 0DS7HVW IRR6WXII EDU &RQWDLQHU FKRLFH 'HSOR\7HVW7ZR H[DFW PDWFK ZLWK IRR6WXII EDU SDWWHUQ

KWWS ORFDOKRVW 0DS7HVW IRR6WXII EDU EOXH GR &RQWDLQHU FKRLFH 'HSOR\7HVW7KUHH PDWFKHG WKH IRR6WXII GLUHFWRU\ SDWWHUQ

KWWS ORFDOKRVW 0DS7HVW IRR6WXII EOXH GR &RQWDLQHU FKRLFH 'HSOR\7HVW7KUHH PDWFKHG IRR6WXII GLUHFWRU\ SDWWHUQ

KWWS ORFDOKRVW 0DS7HVW IUHG EOXH GR &RQWDLQHU FKRLFH 'HSOR\7HVW2QH PDWFKHG WKH GR H[WHQVLRQ SDWWHUQ

KWWS ORFDOKRVW 0DS7HVW IRR6WXII VHUYOHW! VHUYOHW QDPH!7KUHH VHUYOHW QDPH! &RQWDLQHU FKRLFH 'HSOR\7HVW7KUHH VHUYOHW FODVV!IRR 'HSOR\7HVW7KUHH VHUYOHW FODVV! PDWFKHG WKH IRR6WXII GLUHFWRU\ SDWWHUQ

VHUYOHW! VHUYOHW PDSSLQJ! VHUYOHW QDPH!7KUHH VHUYOHW QDPH! XUO SDWWHUQ! IRR6WXII XUO SDWWHUQ! VHUYOHW PDSSLQJ!

$QVZHUV WR WKH H[HUFLVH RQ WKH RSSRVLWH SDJH

KWWS ORFDOKRVW 0DS7HVW IRR6WXII EDU IRR IR &RQWDLQHU FKRLFH 'HSOR\7HVW7KUHH PDWFKHG WKH IRR6WXII GLUHFWRU\ SDWWHUQ

KWWS ORFDOKRVW 0DS7HVW IUHG EOXH IR &RQWDLQHU FKRLFH 127 )281' GRHVQ·W PDWFK $1<7+,1*

'HSOR\7HVW)RXU 'HSOR\7HVW7ZR

FKDSWHU

Chapter 11. Deploying your web app Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher: O'Reilly Prepared for Stephen Goss, Safari ID: stephengoss@gmx.net Print Publication Date: 8/1/2004 User number: 747221 Copyright 2007, Safari Books Online, LLC. This PDF is exclusively for your use in accordance with the Safari Terms of Service. No part of it may be reproduced or transmitted in any form by any means without the prior written permission for reprints and excerpts from the publisher. Redistribution or other use that violates the fair use priviledge under U.S. copyright laws (see 17 USC107) or that otherwise violates the Safari Terms of Service is strictly prohibited.


Chapter 11. Deploying your web app

ZHE DSS GHSOR\PHQW

;]J\TM Q[[]M[ *UST TO MAKE SURE YOU UNDERSTAND SERVLET MAPPINGS HERE S ONE MORE LITTLE EXAMPLE $ON T SKIMˆLOOK CLOSELY AT BOTH THE MAPPING AND THE REQUESTS )N THIS MINI h"E THE #ONTAINERv THE ANSWERS ARE AT THE BOTTOM OF THE OPPOSITE PAGE SO DON T PEEK

%( WKH &RQWDLQHU :KLFK VHUYOHW ZLOO WKH &RQWDLQHU FKRRVH" 0DSSLQJV LQ WKH '' VHUYOHW! VHUYOHW QDPH!7ZR VHUYOHW QDPH! VHUYOHW FODVV!IRR 'HSOR\7HVW7ZR VHUYOHW FODVV! VHUYOHW! VHUYOHW PDSSLQJ! VHUYOHW QDPH!7ZR VHUYOHW QDPH! XUO SDWWHUQ! IRR6WXII EDU XUO SDWWHUQ! VHUYOHW PDSSLQJ! VHUYOHW! VHUYOHW QDPH!)RXU VHUYOHW QDPH! VHUYOHW FODVV!IRR 'HSOR\7HVW)RXU VHUYOHW FODVV! VHUYOHW! VHUYOHW PDSSLQJ! VHUYOHW QDPH!)RXU VHUYOHW QDPH! XUO SDWWHUQ! IRR6WXII EDU XUO SDWWHUQ! VHUYOHW PDSSLQJ!

5HTXHVWV

KWWS ORFDOKRVW WHVW IRR6WXII EDU &RQWDLQHU FKRLFH

KWWS ORFDOKRVW WHVW IRR6WXII EDU &RQWDLQHU FKRLFH

\RX DUH KHUH

Chapter 11. Deploying your web app Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher: O'Reilly Prepared for Stephen Goss, Safari ID: stephengoss@gmx.net Print Publication Date: 8/1/2004 User number: 747221 Copyright 2007, Safari Books Online, LLC. This PDF is exclusively for your use in accordance with the Safari Terms of Service. No part of it may be reproduced or transmitted in any form by any means without the prior written permission for reprints and excerpts from the publisher. Redistribution or other use that violates the fair use priviledge under U.S. copyright laws (see 17 USC107) or that otherwise violates the Safari Terms of Service is strictly prohibited.


Chapter 11. Deploying your web app

ZHOFRPH Âż OHV

+WVNQO]ZQVO _MTKWUM NQTM[ QV \PM ,, 9OU ALREADY KNOW THAT IF YOU TYPE IN THE NAME OF A WEB SITE AND YOU DON T SPECIFY A SPECIl C l LE YOU USUALLY STILL GET SOMETHING BACK %NTERING HTTP WWW OREILLY COM INTO YOUR BROWSER TAKES YOU TO THE / 2EILLY WEB SITE AND EVEN THOUGH YOU DIDN T NAME A SPECIl C RESOURCE LIKE hHOME HTMLv FOR EXAMPLE YOU STILL GET A DEFAULT PAGE 9OU CAN CONl GURE YOUR SERVER TO DEl NE A DEFAULT PAGE FOR THE ENTIRE SITE BUT WE RE CONCERNED HERE WITH DEFAULT ALSO KNOWN AS hWELCOMEv PAGES FOR INDIVIDUAL WEB APPS 9OU CONl GURE WELCOME PAGES IN THE $$ AND THAT $$ DETERMINES WHAT THE #ONTAINER CHOOSES WHEN THE CLIENT ENTERS A PARTIAL 52,ˆA 52, THAT INCLUDES A DIRECTORY FOR EXAMPLE BUT NOT A SPECIl C RESOURCE IN THE DIRECTORY )N OTHER WORDS WHAT HAPPENS IF THE CLIENT REQUEST COMES IN FOR HTTP WWW WICKEDLYSMART COM FOO BAR

ÒbarÓ is just a directory

AND hBARv IS SIMPLY A DIRECTORY AND YOU DON T HAVE A SPECIl C SERVLET MAPPED TO THIS 52, PATTERN 7HAT WILL THE CLIENT SEE ,Q WKH '' ZHE DSS ! ZHOFRPH ILOH OLVW! ZHOFRPH ILOH!LQGH[ KWPO ZHOFRPH ILOH! ZHOFRPH ILOH!GHIDXOW MVS ZHOFRPH ILOH! ZHOFRPH ILOH OLVW! ZHE DSS!

They must NOT start or end with a slash!

)MAGINE YOU HAVE A WEB APP WHERE SEVERAL DIFFERENT DIRECTORIES HAVE THEIR OWN DEFAULT (4-, PAGE NAMED hINDEX HTMLv "UT SOME DIRECTORIES USE A hDEFAULT JSPv INSTEAD )T WOULD BE A HUGE PAIN IF YOU HAD TO SPECIFY A SPECIl C DEFAULT PAGE OR *30 FOR EACH DIRECTORY THAT NEEDS ONE )NSTEAD YOU SPECIFY A LIST IN ORDER OF THE PAGES YOU WANT THE #ONTAINER TO LOOK FOR IN WHATEVER DIRECTORY THE PARTIAL REQUEST IS FOR )N OTHER WORDS NO MATTER WHICH DIRECTORY IS REQUESTED THE #ONTAINER ALWAYS LOOKS THROUGH THE SAME LISTˆTHE ONE AND ONLY WELCOME l LE LIST

0XOWLSOH ZHOFRPH À OHV JR LQ D VLQJOH '' HOHPHQW \ ZHOFRPH ¿ OHV PDQ KRZ DWWHU 1R P $// LQWR D \RX PLJKW OLVW \RX SXW WKHP VLQJOH HQWU\ LQ WKH '' WLQJ ZHOFRPH ¿ OH OLVW! ,WœV WHPS JR LQ D WR WKLQN WKDW HDFK ¿ OH PLJKW VW! HOHPHQW VHSDUDWH ZHOFRPH ¿ OH OL (DFK ¿ OH EXW WKDWœV QRW KRZ LW ZRUNV HOHPHQW KDV LWV RZQ ZHOFRPH ¿ OH! LQ D EXW \RX SXW $// RI WKHP ZLWK VLQJOH ZHOFRPH ¿ OH OLVW!

7KH À OHV LQ WKH ZHOFRPH À OH! HOHPHQW GR 127 VWDUW ZLWK D VODVK 'RQœW EH FRQIXVHG 7KH ZD\ LQ ZKLF K WKH &RQWDLQHU PDWFKHV DQG FKRRVH V ZHOFRPH ¿ OHV LV QRW WKH VDPH DV W KH ZD\ LQ ZKLFK LW PDWFKHV 85/ SDWWHU QV ,I \RX SXW WKH VODVK LQ IURQW RI WKH ¿ OH QDPH \RXœOO EH YLRODWLQJ WKH VSHF DQG EDG WKLQJV ZLOO KDSSHQ

4HE #ONTAINER WILL PICK THE l RST MATCH IT l NDS STARTING WITH THE l RST WELCOME l LE LISTED IN THE WELCOME FILE LIST

FKDSWHU

Chapter 11. Deploying your web app Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher: O'Reilly Prepared for Stephen Goss, Safari ID: stephengoss@gmx.net Print Publication Date: 8/1/2004 User number: 747221 Copyright 2007, Safari Books Online, LLC. This PDF is exclusively for your use in accordance with the Safari Terms of Service. No part of it may be reproduced or transmitted in any form by any means without the prior written permission for reprints and excerpts from the publisher. Redistribution or other use that violates the fair use priviledge under U.S. copyright laws (see 17 USC107) or that otherwise violates the Safari Terms of Service is strictly prohibited.


Chapter 11. Deploying your web app

ZHE DSS GHSOR\PHQW

%( WKH &RQWDLQHU :KLFK ZHOFRPH ILOHV ZLOO WKH &RQWDLQHU FKRRVH JLYHQ WKH '' DQG WKH FOLHQW UHTXHVWV VKRZQ" <RX FDQ H[SHFW VRPHWKLQJ OLNH WKLV RQ WKH H[DP

7KH '' ZHOFRPH ILOH OLVW! ZHOFRPH ILOH!LQGH[ KWPO ZHOFRPH ILOH! ZHOFRPH ILOH!GHIDXOW MVS ZHOFRPH ILOH! ZHOFRPH ILOH OLVW!

5HTXHVWV

KWWS ORFDOKRVW 0\7HVW$SS &RQWDLQHU FKRLFH

'LUHFWRU\ VWUXFWXUH

KWWS ORFDOKRVW 0\7HVW$SS UHJLVWUDWLRQ

ZHEDSSV

&RQWDLQHU FKRLFH

KWWS ORFDOKRVW 0\7HVW$SS VHDUFK

0\7HVW$SS

&RQWDLQHU FKRLFH VHDUFK

KWPO! ERG\!

UHJLVWUDWLRQ

ERG\! KWPO!

KWWS ORFDOKRVW 0\7HVW$SS UHJLVWUDWLRQ QHZ0HPEHU

LQGH[ KWPO

&RQWDLQHU FKRLFH

KWPO! ERG\!

KWPO! ERG\!

ERG\! KWPO!

QHZ0HPEHU

GHIDXOW MVS

ERG\! KWPO!

LQGH[ KWPO KWPO! ERG\! ERG\! KWPO!

IRR W[W

\RX DUH KHUH

Chapter 11. Deploying your web app Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher: O'Reilly Prepared for Stephen Goss, Safari ID: stephengoss@gmx.net Print Publication Date: 8/1/2004 User number: 747221 Copyright 2007, Safari Books Online, LLC. This PDF is exclusively for your use in accordance with the Safari Terms of Service. No part of it may be reproduced or transmitted in any form by any means without the prior written permission for reprints and excerpts from the publisher. Redistribution or other use that violates the fair use priviledge under U.S. copyright laws (see 17 USC107) or that otherwise violates the Safari Terms of Service is strictly prohibited.


Chapter 11. Deploying your web app

H[HUFLVH RQ ZHOFRPH ¿ OHV

%( WKH &RQWDLQHU $QVZHUV

5HTXHVWV

KWWS ORFDOKRVW 0\7HVW$SS

7KH '' ZHOFRPH ILOH OLVW! ZHOFRPH ILOH!LQGH[ KWPO ZHOFRPH ILOH! ZHOFRPH ILOH!GHIDXOW MVS ZHOFRPH ILOH! ZHOFRPH ILOH OLVW!

&RQWDLQHU FKRLFH 0\7HVW$SS LQGH[ KWPO

KWWS ORFDOKRVW 0\7HVW$SS UHJLVWUDWLRQ 'LUHFWRU\ VWUXFWXUH

&RQWDLQHU FKRLFH 0\7HVW$SS UHJLVWUDWLRQ LQGH[ KWPO

ZHEDSSV KWWS ORFDOKRVW 0\7HVW$SS VHDUFK &RQWDLQHU FKRLFH 0\7HVW$SS VHDUFK GHIDXOW MVS ,I WKHUH +$' EHHQ ERWK D GHIDXOW MVS DQG DQ LQGH[ KWPO LQ WKH ´VHDUFKµ GLUHFWRU\ WKH &RQWDLQHU ZRXOG KDYH FKRVHQ WKH ´LQGH[ KWPOµ ILOH VLQFH LW LV OLVWHG ILUVW LQ WKH ''

0\7HVW$SS

VHDUFK

KWPO! ERG\!

UHJLVWUDWLRQ

ERG\! KWPO!

KWWS ORFDOKRVW 0\7HVW$SS UHJLVWUDWLRQ QHZ0HPEHU

LQGH[ KWPO KWPO! ERG\! KWPO! ERG\!

ERG\! KWPO!

QHZ0HPEHU

GHIDXOW MVS

ERG\! KWPO!

LQGH[ KWPO

&RQWDLQHU FKRLFH :KHQ QR ILOHV IURP WKH ZHOFRPH ILOH OLVW! DUH IRXQG WKH EHKDYLRU LV YHQGRU VSHFLILF 7RPFDW VKRZV D GLUHFWRU\ OLVW LQJ IRU WKH QHZ0HPEHU GLUHFWRU\ ZKLFK VKRZV ´IRR W[Wµ $QRWKHU &RQWDLQHU PLJKW VKRZ D 1RW )RXQG HUURU

KWPO! ERG\! ERG\! KWPO!

IRR W[W

FKDSWHU

Chapter 11. Deploying your web app Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher: O'Reilly Prepared for Stephen Goss, Safari ID: stephengoss@gmx.net Print Publication Date: 8/1/2004 User number: 747221 Copyright 2007, Safari Books Online, LLC. This PDF is exclusively for your use in accordance with the Safari Terms of Service. No part of it may be reproduced or transmitted in any form by any means without the prior written permission for reprints and excerpts from the publisher. Redistribution or other use that violates the fair use priviledge under U.S. copyright laws (see 17 USC107) or that otherwise violates the Safari Terms of Service is strictly prohibited.


Chapter 11. Deploying your web app

ZHE DSS GHSOR\PHQW

0W_ \PM +WV\IQVMZ KPWW[M[ I _MTKWUM NQTM

&OLHQW UHTXHVWV KWWS ZZZ ZLFNHGO\VPDUW FRP 0\7HVW$SS VHDUFK 0\7HVW$SS VHDUFK &RQWDLQHU

&OLHQW

&RQWDLQHU ORRNV LQ WKH '' IRU D VHUYOHW PDSSLQJ DQG GRHVQ·W À QG D PDWFK 1H[W WKH &RQWDLQHU ORRNV LQ WKH ZHOFRPH À OH OLVW! DQG VHHV ´LQGH[ KWPOµ DW WKH WRS

&RQWDLQHU

ZHOFRPH ILOH OLVW! ZHOFRPH ILOH!LQGH[ KWPO ZHOFRPH ILOH! ZHOFRPH ILOH!GHIDXOW MVS ZHOFRPH ILOH! ZHOFRPH ILOH OLVW!

&OLHQW

&RQWDLQHU ORRNV LQ WKH 0\7HVW$SS VHDUFK GLUHFWRU\ IRU DQ ´LQGH[ KWPOµ À OH EXW GRHV QRW À QG RQH

&RQWDLQHU

HUH"µ KWPO À OH K DQ LQGH[ ´,V WKHUH

VHDUFK

KWPO! ERG\! ERG\! KWPO!

&OLHQW

GHIDXOW MVS

&RQWDLQHU ORRNV DW WKH QH[W ZHOFRPH À OH! LQ WKH ZHOFRPH À OH OLVW! LQ WKH '' DQG VHHV ´GHIDXOW MVSµ

&RQWDLQHU

ZHOFRPH ILOH OLVW! ZHOFRPH ILOH!LQGH[ KWPO ZHOFRPH ILOH! ZHOFRPH ILOH!GHIDXOW MVS ZHOFRPH ILOH! ZHOFRPH ILOH OLVW!

&OLHQW

&RQWDLQHU ORRNV LQ WKH 0\7HVW$SS VHDUFK GLUHFWRU\ IRU D ´GHIDXOW MVSµ À OH À QGV RQH DQG VHUYHV LWV UHVSRQVH WR WKH FOLHQW "µ OW MVS KHUH UH D GHIDX $ ´,V WKH &RQWDLQHU

5HVSRQVH

&

&OLHQW

VHDUFK

KWPO! ERG\!

%

´+HUH LW LV µ

ERG\! KWPO!

GHIDXOW MVS

\RX DUH KHUH

Chapter 11. Deploying your web app Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher: O'Reilly Prepared for Stephen Goss, Safari ID: stephengoss@gmx.net Print Publication Date: 8/1/2004 User number: 747221 Copyright 2007, Safari Books Online, LLC. This PDF is exclusively for your use in accordance with the Safari Terms of Service. No part of it may be reproduced or transmitted in any form by any means without the prior written permission for reprints and excerpts from the publisher. Redistribution or other use that violates the fair use priviledge under U.S. copyright laws (see 17 USC107) or that otherwise violates the Safari Terms of Service is strictly prohibited.


Chapter 11. Deploying your web app

HUURU SDJHV

+WVNQO]ZQVO MZZWZ XIOM[ QV \PM ,, 3URE YOU WANT TO BE FRIENDLY WHEN THE USER DOESN T KNOW THE EXACT RESOURCE TO ASK FOR WHEN THEY GET TO YOUR SITE OR WEB APP SO YOU SPECIFY DEFAULT WELCOME l LES "UT YOU ALSO WANT TO BE FRIENDLY WHEN THINGS GO WRONG 7E ALREADY LOOKED AT THIS IN THE CHAPTER ON 5SING #USTOM 4AGS SO THIS IS JUST A REVIEW 'HFODULQJ D FDWFK DOO HUURU SDJH 4HIS APPLIES TO EVERYTHING IN YOUR WEB APPˆNOT JUST *30S HUURU SDJH! H[FHSWLRQ W\SH!MDYD ODQJ 7KURZDEOH H[FHSWLRQ W\SH! ORFDWLRQ! HUURU3DJH MVS ORFDWLRQ! HUURU SDJH!

&9) YOU CAN OVERRIDE THIS IN INDIVIDUAL *30S BY ADDING A PAGE DIRECTIVE WITH AN ERROR0AGE ATTRIBUTE 'HFODULQJ DQ HUURU SDJH IRU D PRUH H[SOLFLW H[FHSWLRQ 4HIS CONl GURES AN ERROR PAGE THAT S CALLED ONLY WHEN THERE S AN !RITHMETIC%XCEPTION )F YOU HAVE BOTH THIS DECLARATION AND THE CATCH ALL ABOVE THEN ANY EXCEPTION OTHER THAN !RITHMETIC%XCEPTION WILL STILL END UP AT THE hERROR0AGE JSPv HUURU SDJH! H[FHSWLRQ W\SH!MDYD ODQJ $ULWKPHWLF([FHSWLRQ H[FHSWLRQ W\SH! ORFDWLRQ! DULWKPHWLF(UURU MVS ORFDWLRQ! HUURU SDJH!

'HFODULQJ DQ HUURU SDJH EDVHG RQ DQ +773 VWDWXV FRGH 4HIS CONl GURES AN ERROR PAGE THAT S CALLED ONLY WHEN THE STATUS CODE FOR THE RESPONSE IS h v l LE NOT FOUND HUURU SDJH! HUURU FRGH! HUURU FRGH! ORFDWLRQ! QRW)RXQG(UURU MVS ORFDWLRQ! HUURU SDJH!

<RX FDQ·W XVH HU URU FRGH! DQG H[FHSWLRQ W\SH! WRJHWKHU

SDJH <RX FDQ FRQ¿ JXUH DQ HUURU RGH 25 EDVHG RQ WKH +773 VWDWXV F WKURZQ EDVHG RQ WKH H[FHSWLRQ W\SH LQ WKH EXW \RX &$1127 KDYH ERWK VDPH HUURU SDJH! WDJ

FKDSWHU

Chapter 11. Deploying your web app Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher: O'Reilly Prepared for Stephen Goss, Safari ID: stephengoss@gmx.net Print Publication Date: 8/1/2004 User number: 747221 Copyright 2007, Safari Books Online, LLC. This PDF is exclusively for your use in accordance with the Safari Terms of Service. No part of it may be reproduced or transmitted in any form by any means without the prior written permission for reprints and excerpts from the publisher. Redistribution or other use that violates the fair use priviledge under U.S. copyright laws (see 17 USC107) or that otherwise violates the Safari Terms of Service is strictly prohibited.


Chapter 11. Deploying your web app

ZHE DSS GHSOR\PHQW

WKHUH DUH QR

'XPE 4XHVWLRQV

4

7HAT ARE YOU ALLOWED TO DECLARE AS AN EXCEPTION TYPE IN EXCEPTION TYPE

$

!NYTHING THAT S A 4HROWABLE SO THAT INCLUDES JAVA LANG %RROR RUNTIME EXCEPTIONS AND ANY CHECKED EXCEPTION AS LONG AS THE CHECKED EXCEPTION CLASS IS ON THE #ONTAINER S CLASSPATH OF COURSE

4

3PEAKING OF ERROR HANDLING CAN YOU PROGRAMMATICALLY GENERATE ERROR CODES YOURSELF

$

9ES YOU CAN 9OU CAN INVOKE THE SEND%RROR METHOD ON THE (TTP3ERVLET2ESPONSE AND IT LL TELL THE #ONTAINER TO GENERATE THAT ERROR JUST AS IF THE #ONTAINER GENERATED THE ERROR ON ITS OWN !ND IF YOU VE CONFIGURED AN ERROR PAGE TO BE SENT TO THE CLIENT BASED ON THAT ERROR CODE THAT S WHAT THE CLIENT WILL GET !ND BY THE WAY hERRORv CODES ARE ALSO KNOWN AS hSTATUSv CODES SO IF YOU SEE EITHER ONE THEY MEAN THE SAME THINGˆ(440 CODES FOR ERRORS

4 $

<RX PXVW XVH WKH IXOO\ TXDOLÀ HG FODVV QDPH LQ H[FHSWLRQ W\SH!

LQJ OLNH WKLV 'RQ¶W EH IRROHG E\ VRPHWK H[FHSWLRQ W\SH! ,2([FHSWLRQ H[FHSWLRQ W\SH! OL¿ HG FODVV <RX 0867 XVH WKH IXOO\ TXD V DOORZHG QDPH DQG DQ\ 7KURZDEOH L

(OW ABOUT AN EXAMPLE OF GENERATING YOUR OWN ERROR CODE

/+ HERE S AN EXAMPLE

UHVSRQVH VHQG(UURU +WWS6HUYOHW5HVSRQVH 6&B)25%,''(1 WHICH IS THE SAME AS UHVSRQVH VHQG(UURU )F YOU LOOK IN THE (TTP3ERVLET2ESPONSE INTERFACE YOU LL SEE A BUNCH OF CONSTANTS DEFINED FOR THE COMMON (440 ERROR STATUS CODES +EEP IN MIND THAT FOR THE EXAM YOU DON T NEED TO MEMORIZE THE STATUS CODES )T S ENOUGH TO SIMPLY KNOW THAT YOU CAN GENERATE ERROR CODES THAT THE METHOD IS RESPONSE SEND%RROR AND THAT IN TERMS OF THE ERROR PAGES YOU VE DEFINED IN THE $$ OR ANY OTHER ERROR HANDLING YOU DO IN YOUR *30S THERE S NO DIFFERENCE BETWEEN #ONTAINER GENERATED AND PROGRAMMER GENERATED (440 ERRORS ! IS A REGARDLESS OF 7(/ SENDS THE ERROR /H YEAH THERE S ALSO AN OVERLOADED TWO ARGUMENT VERSION OF SEND%RROR THAT TAKES AN INT AND A 3TRING MESSAGE \RX DUH KHUH

Chapter 11. Deploying your web app Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher: O'Reilly Prepared for Stephen Goss, Safari ID: stephengoss@gmx.net Print Publication Date: 8/1/2004 User number: 747221 Copyright 2007, Safari Books Online, LLC. This PDF is exclusively for your use in accordance with the Safari Terms of Service. No part of it may be reproduced or transmitted in any form by any means without the prior written permission for reprints and excerpts from the publisher. Redistribution or other use that violates the fair use priviledge under U.S. copyright laws (see 17 USC107) or that otherwise violates the Safari Terms of Service is strictly prohibited.


Chapter 11. Deploying your web app

ORDG RQ VWDUWXS FRQÂż JXUDWLRQ

+WVNQO]ZQVO [MZ ^TM\ QVQ\QITQbI\QWV QV \PM ,, 9OU ALREADY KNOW THAT SERVLETS BY DEFAULT ARE INITIALIZED AT l RST REQUEST 4HAT MEANS THE l RST CLIENT SUFFERS THE PAIN OF CLASS LOADING INSTANTIATION AND INITIALIZATION SETTING A 3ERVLET#ONTEXT INVOKING LISTENERS ETC BEFORE THE #ONTAINER CAN DO WHAT IT NORMALLY DOESˆ ALLOCATE A THREAD AND INVOKE THE SERVLET S SERVICE METHOD

%HLQJ WKH À UVW FOLHQW WR UHTXHVW D VHUYOHW 68&.6 XQOHVV WKH GHYHORSHU XVHV ORDG RQ VWDUWXS!

)F YOU WANT SERVLETS TO BE LOADED AT DEPLOY TIME OR AT SERVER RESTART TIME RATHER THAN ON l RST REQUEST USE THE LOAD ON STARTUP ELEMENT IN THE $$ !NY VALUE GREATER THAN ZERO FOR LOAD ON STARTUP TELLS THE #ONTAINER TO INITIALIZE THE SERVLET WHEN THE APP IS DEPLOYED OR ANY TIME THE SERVER RESTARTS )F YOU HAVE MULTIPLE SERVLETS THAT YOU WANT PRELOADED AND YOU WANT TO CONTROL THE ORDER IN WHICH THEY RE INITIALIZED THE VALUE OF LOAD ON STARTUP DETERMINES THE ORDER )N OTHER WORDS ANY VALUE GREATER THAN ZERO MEANS LOAD EARLY BUT THE ORDER IN WHICH SERVLETS ARE LOADED IS BASED ON THE VALUE OF THE DIFFERENT LOAD ON STARTUP ELEMENTS )F YOU HAVE TWO OR MORE SERVLETS WITH THE SAME VALUE THE #ONTAINER LOADS THEM IN THE ORDER IN WHICH THE SERVLETS ARE DEl NED IN THE $$ ,Q WKH '' VHUYOHW! VHUYOHW QDPH!.DWK\2QH VHUYOHW QDPH! VHUYOHW FODVV!IRR 'HSOR\7HVW2QH VHUYOHW FODVV! ORDG RQ VWDUWXS! ORDG RQ VWDUWXS! VHUYOHW!

er than zero means or Any number greatvle t at deployment ng ser is th e aliz iti Ă’in rather than waiti e, tim up rt sta ver ser t.Ă“ ues req rst Ăž e for th

4

7OULDN T YOU !,7!93 WANT TO DO THIS 3HOULDN T EVERYONE JUST USE LOAD ON STARTUP LOAD ON STARTUP BY DEFAULT

$

4O ANSWER THAT QUESTION YOU ASK YOURSELF h(OW MANY SERVLETS DO ) HAVE IN MY APP AND HOW LIKELY IS IT THAT THEY LL ALL BE USED v !ND YOU LL ALSO NEED TO ASK h(OW LONG DOES IT TAKE EACH SERVLET TO LOAD v 3OME SERVLETS ARE RARELY USED SO YOU MIGHT WANT TO CONSERVE RESOURCES BY NOT LOADING THE RARELY USED SERVLETS IN ADVANCE "UT SOME SERVLETS TAKE SO PAINFULLY LONG TO INITIALIZE LIKE THE 3TRUTS !CTION3ERVLET THAT YOU DON T WANT EVEN A SINGLE CLIENT TO EXPERIENCE THAT MUCH LATENCY 3O ONLY YOU CAN DECIDE AND YOU LL PROBABLY DECIDE ON A SERVLET BY SERVLET BASIS EVALUATING BOTH THE PAIN LEVEL AND LIKELIHOOD OF USE FOR EACH SERVLET

9DOXHV JUHDWHU WKDQ RQH GR QRW DIIHFW WKH QXPEHU RI VHU YOHW LQVWDQFHV 7KH YDOXH \RX XVH Q VWDUWXS! ORDG RQ VWDUWXS! ORDG R LQVWDQFHV GRHV 127 PHDQ ³ORDG IRXU WKLV RI WKH VHUYOHW´ ,W PHDQV WKDW QO\ $)7(5 VHUYOHW VKRXOG EH ORDGHG R WDUWXS! VHUYOHWV ZLWK D ORDG RQ V ORDGHG QXPEHU OHVV WKDQ IRXU DUH Q RQH $QG ZKDW LI WKHUHœV PRUH WKD WXS! RI " VHUYOHW ZLWK D ORDG RQ VWDU WV ZLWK WKH 7KH &RQWDLQHU ORDGV VHUYOH KLFK WKH VDPH YDOXH LQ WKH RUGHU LQ Z '' VHUYOHWV DUH GHFODUHG LQ WKH

FKDSWHU

Chapter 11. Deploying your web app Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher: O'Reilly Prepared for Stephen Goss, Safari ID: stephengoss@gmx.net Print Publication Date: 8/1/2004 User number: 747221 Copyright 2007, Safari Books Online, LLC. This PDF is exclusively for your use in accordance with the Safari Terms of Service. No part of it may be reproduced or transmitted in any form by any means without the prior written permission for reprints and excerpts from the publisher. Redistribution or other use that violates the fair use priviledge under U.S. copyright laws (see 17 USC107) or that otherwise violates the Safari Terms of Service is strictly prohibited.


Chapter 11. Deploying your web app

ZHE DSS GHSOR\PHQW

5ISQVO IV @54 KWUXTQIV\ 2;8" I 2;8 ,WK]UMV\ 4HIS TOPIC DIDN T lT WELL ANYWHERE ELSE SO WE DECIDED TO STICK IT IN THIS CHAPTER SINCE WE RE TALKING ABOUT 8-, SO MUCH 4HE EXAM DOESN T REQUIRE YOU TO BE AN 8-, EXPERT BUT YOU DO HAVE TO KNOW TWO THINGS THE SYNTAX FOR THE KEY $$ ELEMENTS AND THE BASICS OF MAKING WHAT S KNOWN AS A *30 $OCUMENT h!S OPPOSED TO WHAT )F A NORMAL *30 ISN T A DOCUMENT WHAT IS IT v 4HAT S WHAT YOU RE ASKING RIGHT 4HINK OF IT THIS WAYˆA NORMAL *30 IS A PAGE UNLESS IT S WRITTEN WITH THE 8-, ALTERNATIVES TO NORMAL *30 SYNTAX IN WHICH CASE IT BECOMES A DOCUMENT !LL IT MEANS IS THAT THERE ARE REALLY TWO TYPES OF SYNTAX YOU CAN USE TO MAKE A *30 4HE TEXT IN GREY IS THE SAME ACROSS BOTH TYPES OF SYNTAX 1RUPDO -63 SDJH V\QWD[ # SDJH LPSRUW ´MDYD XWLO ´ !

'LUHFWLYHV

-63 GRFXPHQW V\QWD[ MVS GLUHFWLYH SDJH LPSRUW ´MDYD XWLO ´ !

H[FHSW WDJOLE

'HFODUDWLRQ LQW \ !

MVS GHFODUDWLRQ! LQW \ MVS GHFODUDWLRQ!

6FULSWOHW

OLVW DGG ³)UHG´ !

MVS VFULSWOHW! OLVW DGG ³)UHG´ MVS VFULSWOHW!

7H[W

7KHUH LV QR VSRRQ

MVS WH[W! 7KHUH LV QR VSRRQ MVS WH[W!

6FULSWLQJ ([SUHVVLRQ

LW QH[W !

MVS H[SUHVVLRQ! LW QH[W

MVS H[SUHVVLRQ!

'RFXPHQWV 7KLV LV DOO WKH H[DP FRYHUV RQ -63

OLDQW ERXW LW EHFDXVH ZULWLQJ ;0/ FRPS :H DUHQ¶W JRLQJ WR VD\ DQ\ PRUH D KH ;0/ V\QWD[ LV XVHG PDLQO\ O GR 7 \RX¶O HWKLQJ RW VRP DEO\ Q -63 GRFXPHQWV LV SURE VIRUP \RXU QRUPDO -63 KRZV \RX KRZ WKH WRRO ZRXOG WUDQ G²WKH E\ WRROV DQG WKH WDEOH DERYH MXVW V DYH WR NQRZ LI \RX ZULWH WKLV E\ KDQ \RX K PRUH HUH ,6 QW 7K FXPH V\QWD[ LQWR DQ ;0/ GR K LQFOXGHV VRPH HQFORVHG LQ D MVS URRW! WDJ ZKLF VW EH OH PX [DPS IRU H PHQW ZKROH GRFX J WDJ UDWKHU WKDQ DV D HV JR LQVLGH WKH MVS URRW! RSHQLQ RWKHU VWXII DQG WKH WDJOLE GLUHFWLY EOH DERYH 6R UHOD[ PLJKW EH RQ WKH H[DP LV LQ WKH WD J WKDW U\WKLQ XW HYH H! % LUHFWLY MVS G

\RX DUH KHUH

Chapter 11. Deploying your web app Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher: O'Reilly Prepared for Stephen Goss, Safari ID: stephengoss@gmx.net Print Publication Date: 8/1/2004 User number: 747221 Copyright 2007, Safari Books Online, LLC. This PDF is exclusively for your use in accordance with the Safari Terms of Service. No part of it may be reproduced or transmitted in any form by any means without the prior written permission for reprints and excerpts from the publisher. Redistribution or other use that violates the fair use priviledge under U.S. copyright laws (see 17 USC107) or that otherwise violates the Safari Terms of Service is strictly prohibited.


Chapter 11. Deploying your web app

FRQÂżJXULQJ (-% UHIHUHQFHV

5MUWZQbQVO \PM -2* ZMTI\ML ,, \IO[ 4HIS EXAM IS ABOUT WEB COMPONENTS NOT BUSINESS COMPONENTS ALTHOUGH IN THE 0ATTERNS CHAPTER YOU LL SEE A FEW THINGS ABOUT BUSINESS COMPONENTS "UT IF YOU RE DEPLOYING A * %% APP COMPLETE WITH %NTERPRISE *AVA"EANS %*"S IN THE BUSINESS TIER SOME OF YOUR WEB COMPONENTS WILL PROBABLY NEED TO LOOKUP AND ACCESS THE ENTERPRISE BEANS )F YOU RE DEPLOYING AN APP IN A FULL * %% COMPLIANT #ONTAINER ONE THAT HAS AN %*" #ONTAINER AS WELL YOU CAN DElNE REFERENCES TO %*"S IN THE $$ 9OU DON T HAVE TO KNOW ANYTHING ABOUT %*"S FOR THIS EXAM OTHER THAN WHAT YOU DECLARE IN THE $$ SO WE WON T WASTE YOUR TIME EXPLAINING IT HERE

okup name The JNDI locode. in e us ll uÕ yo

5HIHUHQFH WR D ORFDO EHDQ HME ORFDO UHI!

-90

HME UHI QDPH!HME &XVWRPHU HME UHI QDPH!

6HUYOHW

HME UHI W\SH!(QWLW\ HME UHI W\SH! ORFDO KRPH!FRP ZLFNHGO\VPDUW &XVWRPHU+RPH ORFDO KRPH! ORFDO!FRP ZLFNHGO\VPDUW &XVWRPHU ORFDO!

HME ORFDO UHI!

These must be fully-qua of the beanÕs exposed intliÞed names erfaces.

5HIHUHQFH WR D UHPRWH EHDQ

$ /2&$/ EHDQ PHDQV WKH FOLHQW LQ WKLV FDVH D VHUYOHW DQG WKH EHDQ PXVW EH UXQQLQJ LQ WKH VDPH -90

-90

-90

HME UHI! HME UHI QDPH!HME /RFDO&XVWRPHU HME UHI QDPH! HME UHI W\SH!(QWLW\ HME UHI W\SH!

6HUYOHW

KRPH!FRP ZLFNHGO\VPDUW &XVWRPHU+RPH KRPH! UHPRWH!FRP ZLFNHGO\VPDUW &XVWRPHU UHPRWH!

HME UHI!

(Optional sub-elements for both tags include <description> and <ejb-link>, but you donÕt need to know that for the exam.)

$ 5(027( EHDQ PHDQV WKH FOLHQW LQ WKLV FDVH D VHUYOHW DQG WKH EHDQ FDQ EH UXQQLQJ LQ GLIIHUHQW -90V SRVVLEO\ RQ GLIIHUHQW SK\VLFDO PDFKLQHV DV ZHOO

"UT IF YOU RE INTERESTED IN %*" THERE S THIS REALLY GOOD BOOK

FKDSWHU

Chapter 11. Deploying your web app Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher: O'Reilly Prepared for Stephen Goss, Safari ID: stephengoss@gmx.net Print Publication Date: 8/1/2004 User number: 747221 Copyright 2007, Safari Books Online, LLC. This PDF is exclusively for your use in accordance with the Safari Terms of Service. No part of it may be reproduced or transmitted in any form by any means without the prior written permission for reprints and excerpts from the publisher. Redistribution or other use that violates the fair use priviledge under U.S. copyright laws (see 17 USC107) or that otherwise violates the Safari Terms of Service is strictly prohibited.


Chapter 11. Deploying your web app

ZHE DSS GHSOR\PHQW

7( 7KH /2&$/ DQG 5(02 WDJV DUH LQFRQVLVWHQW

HQWV HDQ '' WDJV KDYH WZR HOHP %RWK WKH ORFDO DQG UHPRWH E WKDW DUH WKH VDPH WV WKH ORJLFDO ORRNXS QDPH 7KH HME UHI QDPH! WKDW OLV NXS RQ DQ HQWHU , ORR -1' P D HUIRU WR S \RXÂśOO XVH LQ FRGH W 'RQÂśW ZRUU\ LI \RX KDYHQÂś SULVH EHDQÂśV KRPH LQWHUIDFH Z ZKDW WKDW ODVW VHQWHQFH W NQR GRQÂś DQG IRUH V EH XVHG (-% % NQRZOHGJH IRU WKLV H[DP

PHDQV²\RX GRQœW QHHG ( RU 6HV HV ZKHWKHU WKLV LV DQ (QWLW\ 7KH HME UHI W\SH! GHVFULE WKH HQWV WKH ORRNXS QDPH DQG VLRQ EHDQ 7KRVH WZR HOHP KHWKHU WKH EHDQ LV ORFDO UXQ EHDQ W\SH GRQœW GHSHQG RQ Z RWH UHP QHQW RU PSR E FR H ZH DV WK 90 QLQJ LQ WKH VDPH IHUHQW -90 SRWHQWLDOO\ UXQQLQJ LQ D GLI U WDJV HQWV VWDUWLQJ ZLWK WKH RXWH %XW ORRN DW WKH RWKHU HOHP PLJKW EH WHPSWHG WR WKLQN <RX UHI! HME DQG O UHI! HME ORFD WKDW LWœV HME ORFDO UHI!

RWH UHI! RW PR HME UHP

yes Wrong!!

LWÂśV MXVW %XW 12 )RU UHPRWH EHDQV

HME UHI!

Right! ThereÕs no ÒremoteÓ in the tag.

H UHQFH VD\V LWœV ORFDO EXW WK ,Q RWKHU ZRUGV WKH ORFDO UHIH XGH WKH ZRUG ³UHPRWH´ LQ LWV LQFO 127 RHV FH G IHUHQ UHPRWH UH ZDV FDXVH DW WKH WLPH HME UHI! WDJ HOHPHQW QDPH :K\" %H QFH FK WKLQJ DV ³ORFDO´ (-%V 6L R VX DV Q UH Z WKH QHG H¿ ¿ UVW G G WR ³UHPRWH´ WKHUH ZDV QR QHH $// HQWHUSULVH EHDQV ZHUH W QG UHPRWH VR QR QHHG WR SX GLIIHUHQWLDWH EHWZHHQ ORFDO D WDJ ³UHPRWH´ LQ WKH QDPH RI WKH F\² VWHQ (5 WDJ QDPLQJ LQFRQVL 7KLV DOVR H[SODLQV WKH 27+ FDO HDQœV KRPH LQWHUIDFH $ OR WKH QDPH RI WKH WDJ IRU WKH E EHDQ XVHV ORFDO KRPH!

Yes

7 XVH EXW D UHPRWH EHDQ GRHV 12

RWH KRPH! RW PR UHP

Wrong !!

)RU UHPRWH EHDQV LWÂśV MXVW

KRPH!

\RX DUH KHUH

Chapter 11. Deploying your web app Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher: O'Reilly Prepared for Stephen Goss, Safari ID: stephengoss@gmx.net Print Publication Date: 8/1/2004 User number: 747221 Copyright 2007, Safari Books Online, LLC. This PDF is exclusively for your use in accordance with the Safari Terms of Service. No part of it may be reproduced or transmitted in any form by any means without the prior written permission for reprints and excerpts from the publisher. Redistribution or other use that violates the fair use priviledge under U.S. copyright laws (see 17 USC107) or that otherwise violates the Safari Terms of Service is strictly prohibited.


Chapter 11. Deploying your web app

FRQÂż JXULQJ WKH HQY HQWU\!

5MUWZQbQVO \PM 26,1 $MV^ MV\Za& ,, \IO )F YOU RE FAMILIAR WITH %*" AND OR *.$) THIS WILL MAKE SENSE )F YOU RE NOT IT DOESN T REALLY MATTER FOR THE EXAM AS LONG AS YOU MEMORIZE THE TAG 4HE DETAILS SURROUNDING *.$) ENVIRONMENT ENTRIES ARE COVERED IN %*" * %% BOOKS LIKE THE LOVELY (EAD &IRST %*" 4HINK OF AN ENVIRONMENT ENTRY AS BEING SOMETHING LIKE A DEPLOY TIME CONSTANT THAT YOUR APP CAN USE MUCH LIKE SERVLET AND CONTEXT INIT PARAMETERS )N OTHER WORDS A WAY FOR THE DEPLOYER TO PASS VALUES INTO THE SERVLET OR IN THIS CASE AN %*" AS WELL IF THIS IS DEPLOYED AS PART OF AN ENTERPRISE APPLICATION IN A FULLY * %% COMPLIANT SERVER !T DEPLOY TIME THE #ONTAINER READS THE $$ AND MAKES A *.$) ENTRY AGAIN ASSUMING THIS IS A FULLY * %% COMPLIANT APP AND NOT JUST A SERVER WITH ONLY A WEB #ONTAINER USING THE NAME AND VALUE YOU SUPPLY IN THIS $$ TAG !T RUNTIME A COMPONENT IN THE APPLICATION CAN LOOK UP THE VALUE IN *.$) USING THE NAME LISTED IN THE $$ 9OU PROBABLY WON T CARE ABOUT ENV ENTRY UNLESS YOU RE ALSO DEVELOPING WITH %*"S SO THE ONLY REASON YOU NEED TO MEMORIZE THIS IS FOR THE EXAM 'HFODULQJ DQ DSS¡V -1', HQYLURQPHQW HQWU\ HQY HQWU\!

The lookup name

. youÕll use in code

HQY HQWU\ QDPH!UDWHV GLVFRXQW5DWH HQY HQWU\ QDPH!

This can be an a single String yastype that takes parameter (or a a constructor HQY HQWU\ YDOXH! HQY HQWU\ YDOXH! single Character it a r if String (o type> Ă•s java.lang.Character). a as in ed HQY HQWU\! ss nv-entry<e This will be pa e th if er single Chara.Cctharacter). is java.lang an n also include Note: you caescription>, which is a ! PXVW optional <dREALLY good idea. 7KH HQY HQWU\ W\SH REALLY 127 EH D SULPLWLYH HQY HQWU\ W\SH!MDYD ODQJ ,QWHJHU HQY HQWU\ W\SH!

WU\ YDOXH! WKDWœV DQ LQWHJHU :KHQ \RX VHH DQ HQY HQ \RX PLJKW WKLQN WKDW WKH YH DER PSOH H[D H WKH YDOXH OLN ULPLWLYH %XW WKDW ZRXOG EH HQY HQWU\ W\SH! FDQ EH D S ZURQJ WR WKLQN WKDW \RX FDQ KDYH <RX DOVR PLJKW EH WHPSWHG EXW WKDWœV ZURQJ WRR²\RX RQO\ 6WULQJV DQG ZUDSSHUV V D VLQJOH 6WULQJ LQ LWV FDQ XVH DQ\ W\SH WKDW WDNH

UDFWHU IRU D &KDUDFWHU W\SH FRQVWUXFWRU RU D VLQJOH &KD

FKDSWHU

Chapter 11. Deploying your web app Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher: O'Reilly Prepared for Stephen Goss, Safari ID: stephengoss@gmx.net Print Publication Date: 8/1/2004 User number: 747221 Copyright 2007, Safari Books Online, LLC. This PDF is exclusively for your use in accordance with the Safari Terms of Service. No part of it may be reproduced or transmitted in any form by any means without the prior written permission for reprints and excerpts from the publisher. Redistribution or other use that violates the fair use priviledge under U.S. copyright laws (see 17 USC107) or that otherwise violates the Safari Terms of Service is strictly prohibited.


Chapter 11. Deploying your web app

ZHE DSS GHSOR\PHQW

5MUWZQbQVO \PM $UQUM UIXXQVO& ,, \IO 9OU CAN CONl GURE A MAPPING BETWEEN AN EXTENSION AND A MIME TYPE IN THE $$ 4HIS WILL PROBABLY BE THE EASIEST TAG TO REMEMBER BECAUSE IT JUST MAKES SENSEˆYOU MAP BETWEEN AN EXTENSION AND A MIME TYPE AND GUESS WHAT )N A RARE MOMENT OF SIMPLICITY AND CLARITY THEY NAMED THE TAG SUB ELEMENTS hEXTENSIONv AND hMIME TYPEv 4HAT MEANS YOU HAVE TO REMEMBER ONLY ONE THINGˆTHAT THE TAG ELEMENTS ARE NAMED FOR EXACTLY WHAT THEY ARE 5NLESS YOU START THINKING OF IT AS hl LE TYPEv AND hCONTENT TYPEv "UT NO YOU WON T DO THAT 9OU LL MEMORIZE IT JUST LIKE THIS 'HFODULQJ D PLPH PDSSLQJ!

Do NOT include the

PLPH PDSSLQJ!

dot Ò.Ó !

H[WHQVLRQ!PSJ H[WHQVLRQ! PLPH W\SH!YLGHR PSHJ PLPH W\SH!

PLPH PDSSLQJ!

'RQ·W LQFOXGH WKH ´ µ LQ WKH H[WHQVLRQ PDNH ,W¶V MXVW WKH FKDUDFWHUV WKDW ´ WKDW XS WKH H[WHQVLRQ QRW WKH ³ WKH VHSDUDWHV WKH ¿ OH QDPH IURP H[WHQVLRQ

,W·V QRW À OH W\SH! DQG FRQWHQW W\SH!

%XUQ LW LQ² H[WHQVLRQ! DQG PLP H W\SH! H[WHQVLRQ! DQG PLPH W\SH! H[WHQVLRQ! DQG PLPH W\SH! H[WHQVLRQ! DQG PLPH W\SH! H[WHQVLRQ! DQG PLPH W\SH!

\RX DUH KHUH

Chapter 11. Deploying your web app Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher: O'Reilly Prepared for Stephen Goss, Safari ID: stephengoss@gmx.net Print Publication Date: 8/1/2004 User number: 747221 Copyright 2007, Safari Books Online, LLC. This PDF is exclusively for your use in accordance with the Safari Terms of Service. No part of it may be reproduced or transmitted in any form by any means without the prior written permission for reprints and excerpts from the publisher. Redistribution or other use that violates the fair use priviledge under U.S. copyright laws (see 17 USC107) or that otherwise violates the Safari Terms of Service is strictly prohibited.


Chapter 11. Deploying your web app

H[HUFLVH RQ GHSOR\PHQW

6KDUSHQ \RXU SHQFLO

:KHUH WKLQJV JR )LOO LQ WKLV WDEOH ZLWK H[SOLFLW QRWHV RQ ZKHUH LQ WKH ZHE DSS WKH JLYHQ UHVRXUFH PXVW EH SODFHG :H GLG WKH ILUVW RQH IRU \RX 7XUQ WKH SDJH IRU WKH DQVZHUV

5HVRXUFH W\SH

'HSOR\PHQW 'HVFULSWRU ZHE [PO

'HSOR\PHQW ORFDWLRQ

Directly inside WEB-INF (which is directly inside the root of the web app).

7DJ )LOHV WDJ RU WDJ[

+70/ DQG -63V 7KDW \RX ZDQW WR EH GLUHFWO\ DFFHVVLEOH

+70/ DQG -63V 7KDW \RX ZDQW WR ´KLGHµ IURP GLUHFW FOLHQW DFFHVV

7/'V WOG

6HUYOHW FODVVHV

7DJ +DQGOHU FODVVHV

-$5 ILOHV

FKDSWHU

Chapter 11. Deploying your web app Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher: O'Reilly Prepared for Stephen Goss, Safari ID: stephengoss@gmx.net Print Publication Date: 8/1/2004 User number: 747221 Copyright 2007, Safari Books Online, LLC. This PDF is exclusively for your use in accordance with the Safari Terms of Service. No part of it may be reproduced or transmitted in any form by any means without the prior written permission for reprints and excerpts from the publisher. Redistribution or other use that violates the fair use priviledge under U.S. copyright laws (see 17 USC107) or that otherwise violates the Safari Terms of Service is strictly prohibited.


Chapter 11. Deploying your web app

ZHE DSS GHSOR\PHQW

6KDUSHQ \RXU SHQFLO

!

!HME &XVWRPHU

!

HME UHI W\SH!(QWLW\ HME UHI W\SH!

0HPRUL]LQJ '' WDJV ,I \RX·UH 127 SODQQLQJ RQ WDNLQJ WKH H[DP GRQ·W ZRUU\ DERXW JHWWLQJ DOO RI WKHVH ULJKW DOWKRXJK WKH ERWWRP WZR HOHPHQWV DUH LPSRUWDQW WR DOPRVW HYHU\RQH ,I \RX $5( JRLQJ WR WDNH WKH H[DP \RX VKRXOG VSHQG VRPH WLPH PHPRUL]LQJ WKHVH

!FRP ZLFNHGO\VPDUW &XVWRPHU+RPH

!

ORFDO!FRP ZLFNHGO\VPDUW &XVWRPHU ORFDO!

!

HME UHI! !HME /RFDO&XVWRPHU

!

HME UHI W\SH!(QWLW\ HME UHI W\SH!

!FRP ZLFNHGO\VPDUW &XVWRPHU+RPH

!FRP ZLFNHGO\VPDUW &XVWRPHU

! !

HME UHI! HQY HQWU\!

!UDWHV GLVFRXQW5DWH

!MDYD ODQJ ,QWHJHU

! !

HQY HQWU\ YDOXH! HQY HQWU\ YDOXH! HQY HQWU\!

HUURU SDJH!

!MDYD LR ,2([FHSWLRQ

! P\HUURU MVS HUURU SDJH!

!

!

! ZHOFRPH ILOH!LQGH[ KWPO ZHOFRPH ILOH!

!

\RX DUH KHUH

Chapter 11. Deploying your web app Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher: O'Reilly Prepared for Stephen Goss, Safari ID: stephengoss@gmx.net Print Publication Date: 8/1/2004 User number: 747221 Copyright 2007, Safari Books Online, LLC. This PDF is exclusively for your use in accordance with the Safari Terms of Service. No part of it may be reproduced or transmitted in any form by any means without the prior written permission for reprints and excerpts from the publisher. Redistribution or other use that violates the fair use priviledge under U.S. copyright laws (see 17 USC107) or that otherwise violates the Safari Terms of Service is strictly prohibited.


Chapter 11. Deploying your web app

H[HUFLVH RQ GHSOR\PHQW

6KDUSHQ \RXU SHQFLO

:KHUH WKLQJV JR )LOO LQ WKLV WDEOH ZLWK H[SOLFLW QRWHV RQ ZKHUH LQ WKH ZHE DSS WKH UHVRXUFH PXVW EH SODFHG :H GLG WKH ILUVW RQH IRU \RX

5HVRXUFH W\SH

'HSOR\PHQW ORFDWLRQ

'HSOR\PHQW 'HVFULSWRU ZHE [PO

Directly inside WEB-INF (which is directly inside the root of the web app).

7DJ )LOHV WDJ RU WDJ[

If NOT deployed inside a JAR, Tag Files must be inside WEB-INF/tags, or a subdirectory of WEB-INF/tags. If deployed in a JAR, Tag Files must be in META-INF/tags, or a subdirectory of META-INF/tags. Note: Tag Files deployed in a JAR must have a TLD in the JAR.

+70/ DQG -63V 7KDW \RX ZDQW WR EH GLUHFWO\ DFFHVVLEOH

Client-accessible HTML and JSPs can be anywhere under the root of the web app or any of its subdirectories, EXCEPT they cannot be under WEB-INF (including subdirectories). In a WAR Þle, they canÕt be under META-INF (including subdirectories).

+70/ DQG -63V 7KDW \RX ZDQW WR ´KLGHµ IURP GLUHFW FOLHQW DFFHVV

Pages under WEB-INF (or META-INF in a WAR Þle) cannot be directly accessed by clients. If NOT inside a JAR, TLD Þles must be somewhere under WEB-INF or a subdirectory of WEB-INF. If deployed in a JAR, TLD Þles must be somewhere under META-INF, or a subdirectory of META-INF.

7/'V WOG

6HUYOHW FODVVHV

7DJ +DQGOHU FODVVHV

-$5 ILOHV

Servlet classes must be in a directory structure matching the package structure, placed directory under WEB-INF/classes (for example, class com. example.Ring would be inside WEB-INF/classes/com/example), or in the appropriate package directories within a JAR inside WEB-INF/lib). Actually ALL classes used by the web-app (unless theyÕre part of the class libraries on the classpath) must follow the same rules as servlet classesÑinside WEB-INF/classes, in a directory structure matching the package (or in the appropriate package directories within a JAR inside WEB-INF/lib). JAR Þles must be inside the WEB-INF/lib directory.

FKDSWHU

Chapter 11. Deploying your web app Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher: O'Reilly Prepared for Stephen Goss, Safari ID: stephengoss@gmx.net Print Publication Date: 8/1/2004 User number: 747221 Copyright 2007, Safari Books Online, LLC. This PDF is exclusively for your use in accordance with the Safari Terms of Service. No part of it may be reproduced or transmitted in any form by any means without the prior written permission for reprints and excerpts from the publisher. Redistribution or other use that violates the fair use priviledge under U.S. copyright laws (see 17 USC107) or that otherwise violates the Safari Terms of Service is strictly prohibited.


Chapter 11. Deploying your web app

ZHE DSS GHSOR\PHQW

6KDUSHQ \RXU SHQFLO

A reference to a bean that has a ÒlocalÓ interface.

ejb-local-ref ! ejb-ref-name !HME &XVWRPHU /ejb-ref-name !

HME UHI W\SH!(QWLW\ HME UHI W\SH!

0HPRUL]LQJ '' WDJV

local-home !FRP ZLFNHGO\VPDUW &XVWRPHU+RPH /local-home !

$16:(56

ORFDO!FRP ZLFNHGO\VPDUW &XVWRPHU ORFDO!

,I \RX DUH JRLQJ WR WDNH WKH H[DP \RX VKRXOG VSHQG VRPH WLPH PHPRUL]LQJ $// RI WKHVH SOXV DQ\ RI WKH RWKHUV IURP IURP WKLV FKDSWHU DQG WKH VHFXULW\ UHODWHG WDJV \RX¡OO VHH LQ WKH QH[W FKDSWHU

/ejb-local-ref ! HME UHI!

ejb-ref-name !HME /RFDO&XVWRPHU /ejb-ref-name !

HME UHI W\SH!(QWLW\ HME UHI W\SH!

A reference to a bean that has a ÒremoteÓ interface.

home !FRP ZLFNHGO\VPDUW &XVWRPHU+RPH /home ! remote !FRP ZLFNHGO\VPDUW &XVWRPHU /remote !

HME UHI! HQY HQWU\!

An environment entry is a way to get deploy-time constants into a J2EE application.

env-entry-name !UDWHV GLVFRXQW5DWH /env-entry-name !

env-entry-type !MDYD ODQJ ,QWHJHU /env-entry-type !

HQY HQWU\ YDOXH! HQY HQWU\ YDOXH! HQY HQWU\!

ch page ontainer whiiÞed Tells the Che ec sp e th n to show w -type> occurs. <exception Tells the Container which page to look for when a request es in that doesnÕt match a speccom resource. There can be more iÞc one <welcome-Þle> speciÞed inthan the <welcome-Þle-list>.

HUURU SDJH!

exception-type !MDYD LR ,2([FHSWLRQ /exception-type ! location /location !

! P\HUURU MVS HUURU SDJH!

welcome-file-list

! ZHOFRPH ILOH!LQGH[ KWPO ZHOFRPH ILOH!

/welcome-file-list !

\RX DUH KHUH

Chapter 11. Deploying your web app Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher: O'Reilly Prepared for Stephen Goss, Safari ID: stephengoss@gmx.net Print Publication Date: 8/1/2004 User number: 747221 Copyright 2007, Safari Books Online, LLC. This PDF is exclusively for your use in accordance with the Safari Terms of Service. No part of it may be reproduced or transmitted in any form by any means without the prior written permission for reprints and excerpts from the publisher. Redistribution or other use that violates the fair use priviledge under U.S. copyright laws (see 17 USC107) or that otherwise violates the Safari Terms of Service is strictly prohibited.


Chapter 11. Deploying your web app

PRFN H[DP

0RFN ([DP &KDSWHU

7HERE CAN LQLW SDUDP! ELEMENTS APPEAR IN THE $$ #HOOSE ALL THAT APPLY

R ! !S CHILD ELEMENTS OF VHUYOHW! R " !S DIRECT DESCENDANTS OF ZHE DSSOLFDWLRQ! ELEMENTS R # *UST AFTER THE $OCUMENT 4YPE $ECLARATION R $ )NSIDE OF FRQWH[W SDUDP! ELEMENTS WHEN YOU WANT TO DECLARE A CONTEXT INITIALIZATION PARAMETER

7HERE DO YOU STORE 4AG ,IBRARY $ESCRIPTORS 4,$S IN A WEB APPLICATION #HOOSE ALL THAT APPLY

R ! /NLY IN :(% ,1) OLE R " /NLY IN :(% ,1) FODVVHV R # )N THE 0(7$ ,1) DIRECTORY OF A *!2 lLE INSIDE :(% ,1) OLE

R $ !T THE APPLICATION S TOP LEVEL DIRECTORY R % )N :(% ,1) OR A SUB DIRECTORY THEREOF

7HICH STATEMENTS ABOUT 7!2 lLES ARE TRUE #HOOSE ALL THAT APPLY

R ! 7!2 STANDS FOR 7EB !PPLICATION 2ESOURCES lLE R " ! VALID 7!2 lLE MUST CONTAIN A DEPLOYMENT DESCRIPTOR R # 3EVERAL 7!2 lLES CAN COMPOSE A WEB APPLICATION R $ ! 7!2 lLE CANNOT CONTAIN EMBEDDED *!2 lLES

FKDSWHU

Chapter 11. Deploying your web app Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher: O'Reilly Prepared for Stephen Goss, Safari ID: stephengoss@gmx.net Print Publication Date: 8/1/2004 User number: 747221 Copyright 2007, Safari Books Online, LLC. This PDF is exclusively for your use in accordance with the Safari Terms of Service. No part of it may be reproduced or transmitted in any form by any means without the prior written permission for reprints and excerpts from the publisher. Redistribution or other use that violates the fair use priviledge under U.S. copyright laws (see 17 USC107) or that otherwise violates the Safari Terms of Service is strictly prohibited.


Chapter 11. Deploying your web app

ZHE DSS GHSOR\PHQW

4HE FOLLOWING SERVLET IS DECLARED IN THE $$ VHUYOHW! VHUYOHW QDPH!0\6HUYOHW VHUYOHW QDPH! VHUYOHW FODVV!FRP P\RUJ 6HUYOHW&ODVV VHUYOHW FODVV! VHUYOHW! 7HERE CAN YOU STORE THE SERVLET CLASS IN THE WEB APPLICATION #HOOSE ALL THAT APPLY

R ! )N 0(7$ ,1) OF A *!2 lLE R " )N THE PACKAGE RELATED DIRECTORY TREE BEGINING AT THE TOP LEVEL OF THE APPLICATION DIRECTORY

R # )N :(% ,1) FODVVHV OR IN A *!2 lLE IN :(% ,1) OLE R $ )N :(% ,1) OLE OUTSIDE OF A *!2 lLE

7HAT IS THE PURPOSE OF THE DEPLOYMENT DESCRIPTOR $$ #HOOSE ALL THAT APPLY

R ! 4O ALLOW CODE GENERATION TOOLS TO DYNAMICALLY CREATE SERVLETS FROM AN 8-, lLE

R " 4O CONVEY THE WEB APPLICATION CONlGURATION INFORMATION FROM DEVELOPERS TO APPLICATION ASSEMBLERS AND DEPLOYERS

R # 4O CONlGURE VENDOR SPECIlC ASPECTS OF THE APPLICATION R $ 4O CONlGURE ONLY DATABASE AND %NTERPRISE *AVA"EAN ACCESS FROM THE WEB APPLICATION

7HERE SHOULD ZHE [PO BE STORED IN A 7!2 lLE #HOOSE ALL THAT APPLY

R ! )N :(% ,1) FODVVHV R " )N :(% ,1) OLE R # )N :(% ,1) R $ )N 0(7$ ,1)

\RX DUH KHUH

Chapter 11. Deploying your web app Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher: O'Reilly Prepared for Stephen Goss, Safari ID: stephengoss@gmx.net Print Publication Date: 8/1/2004 User number: 747221 Copyright 2007, Safari Books Online, LLC. This PDF is exclusively for your use in accordance with the Safari Terms of Service. No part of it may be reproduced or transmitted in any form by any means without the prior written permission for reprints and excerpts from the publisher. Redistribution or other use that violates the fair use priviledge under U.S. copyright laws (see 17 USC107) or that otherwise violates the Safari Terms of Service is strictly prohibited.


Chapter 11. Deploying your web app

PRFN H[DP

'IVEN # SDJH LPSRUW ´MDYD XWLO ´ ! MVS LPSRUW LPSRUW ´MDYD XWLO ´ ! MVS GLUHFWLYH SDJH LPSRUW ´MDYD XWLO ´ ! MVS SDJH LPSRUW ´MDYD XWLO ´ ! !SSUME THE PRElX hJSPv HAS BEEN MAPPED TO THE NAMESPACE KWWS MDYD VXQ FRP -63 3DJH 7HICH ARE TRUE #HOOSE ALL THAT APPLY

R ! ,INES AND ARE EQUIVALENT IN ANY TYPE OF *30 PAGE R " ,INE IS NOT VALID IN A *30 DOCUMENT 8-, BASED DOCUMENT R # ,INE WILL PROPERLY IMPORT THE MDYD XWLO PACKAGE R $ ,INE WILL PROPERLY IMPORT THE MDYD XWLO PACKAGE R % ,INE WILL PROPERLY IMPORT THE MDYD XWLO PACKAGE

7HICH STATEMENTS ABOUT LQLW SDUDP! $$ ELEMENTS ARE TRUE #HOOSE ALL THAT APPLY

R ! 4HEY ARE USED TO DECLARE INITIALIZATION PARAMETERS FOR A SPECIlC SERVLET

R " 4HEY ARE USED TO DECLARE INITIALIZATION PARAMETERS FOR AN ENTIRE WEB APP

R # 4HE METHOD THAT RETRIEVES THESE PARAMETERS RETURNS AN OBJECT

R $ 4HE METHOD THAT RETRIEVES THESE PARAMETERS TAKES A 3TRING

7HICH ARE $$ ELEMENTS THAT PROVIDE *.$) ACCESS TO * %% COMPONENTS #HOOSE ALL THAT APPLY

R ! HME UHI! R " HQWLW\ UHI! R # UHVRXUFH UHI! R $ VHVVLRQ UHI! R % PHVVDJH UHI!

FKDSWHU

Chapter 11. Deploying your web app Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher: O'Reilly Prepared for Stephen Goss, Safari ID: stephengoss@gmx.net Print Publication Date: 8/1/2004 User number: 747221 Copyright 2007, Safari Books Online, LLC. This PDF is exclusively for your use in accordance with the Safari Terms of Service. No part of it may be reproduced or transmitted in any form by any means without the prior written permission for reprints and excerpts from the publisher. Redistribution or other use that violates the fair use priviledge under U.S. copyright laws (see 17 USC107) or that otherwise violates the Safari Terms of Service is strictly prohibited.


Chapter 11. Deploying your web app

ZHE DSS GHSOR\PHQW

4HE FOLLOWING SERVLET IS REGISTERED IN THE $$ VHUYOHW! VHUYOHW QDPH!DFWLRQ VHUYOHW QDPH! VHUYOHW FODVV!FRP P\RUJ $FWLRQ&ODVV VHUYOHW FODVV! VHUYOHW! #HOOSE THE CORRECT MAPPINGS FOR THIS SERVLET #HOOSE ALL THAT APPLY

R ! VHUYOHW PDSSLQJ! VHUYOHW QDPH!DFWLRQ VHUYOHW QDPH! XUO SDWWHUQ! GR XUO SDWWHUQ! VHUYOHW PDSSLQJ!

R " VHUYOHW PDSSLQJ! VHUYOHW QDPH!FRP P\RUJ $FWLRQ&ODVV VHUYOHW QDPH! XUO SDWWHUQ! GR XUO SDWWHUQ! VHUYOHW PDSSLQJ!

R # VHUYOHW PDSSLQJ! VHUYOHW QDPH!DFWLRQ VHUYOHW QDPH! XUO SDWWHUQ! FRQWUROOHU XUO SDWWHUQ! VHUYOHW PDSSLQJ!

R $ VHUYOHW PDSSLQJ! XUO SDWWHUQ! GR XUO SDWWHUQ! VHUYOHW PDSSLQJ!

R % VHUYOHW PDSSLQJ! VHUYOHW QDPH!DFWLRQ VHUYOHW QDPH! VHUYOHW PDSSLQJ!

&OR WHICH TYPE OF WEB APP COMPONENTS CAN DEPENDENCIES BE DElNED #HOOSE ALL THAT APPLY

R ! *30 lLES R " 7!2 lLES R # CLASSES R $ LIBRARIES R % MANIFEST lLES \RX DUH KHUH

Chapter 11. Deploying your web app Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher: O'Reilly Prepared for Stephen Goss, Safari ID: stephengoss@gmx.net Print Publication Date: 8/1/2004 User number: 747221 Copyright 2007, Safari Books Online, LLC. This PDF is exclusively for your use in accordance with the Safari Terms of Service. No part of it may be reproduced or transmitted in any form by any means without the prior written permission for reprints and excerpts from the publisher. Redistribution or other use that violates the fair use priviledge under U.S. copyright laws (see 17 USC107) or that otherwise violates the Safari Terms of Service is strictly prohibited.


Chapter 11. Deploying your web app

PRFN H[DP

7HICH ARE VALID DECLARATIONS IN A *30 $OCUMENT 8-, BASED DOCUMENT #HOOSE ALL THAT APPLY

R ! MVS GHFODUDWLRQ [POQV MVS ´KWWS MDYD VXQ FRP -63 3DJH´! LQW [ MVS GHFODUDWLRQ!

R " MVS GHFODUDWLRQ [POQV MVS ´KWWS MDYD VXQ FRP -63 3DJH´! LQW [ MVS GHFODUDWLRQ!

R # LQW [ ! R $ LQW [ !

7HICH DEPLOYMENT DESCRIPTOR ELEMENTS MAY APPEAR BEFORE THE ZHE DSS! ELEMENT #HOOSE ALL THAT APPLY

R ! OLVWHQHU! R " FRQWH[W SDUDP! R # VHUYOHW! R $ .O 8-, ELEMENTS MAY APPEAR BEFORE THE ZHE DSS! ELEMENT

7HICH STATEMENTS CONCERNING THE CONTAINER CLASS LOADER ARE TRUE #HOOSE ALL THAT APPLY

R ! 7EB APPLICATIONS SHOULD ./4 ATTEMPT TO OVERRIDE CONTAINER IMPLEMENTATION CLASSES

R " ! WEB APPLICATION MUST NOT ATTEMPT TO LOAD RESOURCES FROM WITHIN THE 7!2 lLE USING THE * 3% SEMANTICS OF GET2ESOURCE

R # ! WEB APPLICATION MAY OVERRIDE ANY * %% CLASSES IN THE JAVAX NAMESPACE

R $ ! WEB DEVELOPER MAY OVERRIDE * %% PLATFORM CLASSES PROVIDED THEY ARE CONTAINED IN A LIBRARY *!2 WITHIN A 7!2

FKDSWHU

Chapter 11. Deploying your web app Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher: O'Reilly Prepared for Stephen Goss, Safari ID: stephengoss@gmx.net Print Publication Date: 8/1/2004 User number: 747221 Copyright 2007, Safari Books Online, LLC. This PDF is exclusively for your use in accordance with the Safari Terms of Service. No part of it may be reproduced or transmitted in any form by any means without the prior written permission for reprints and excerpts from the publisher. Redistribution or other use that violates the fair use priviledge under U.S. copyright laws (see 17 USC107) or that otherwise violates the Safari Terms of Service is strictly prohibited.


Chapter 11. Deploying your web app

ZHE DSS GHSOR\PHQW

&KDSWHU $QVZHUV

(Servlet spec pg 107)

7HERE CAN LQLW SDUDP! ELEMENTS APPEAR IN THE $$ #HOOSE ALL THAT APPLY

R ! !S CHILD ELEMENTS OF VHUYOHW! -Option B is incorrect because R " !S DIRECT DESCENDANTS OF ZHE DSSOLFDWLRQ! ELEMENTS web.xml does not contain an tion>. element named <web-applica R # *UST AFTER THE $OCUMENT 4YPE $ECLARATION incorrect because R $ )NSIDE OF FRQWH[W SDUDP! ELEMENTS WHEN YOU WANT TO - Option D is am> elements do DECLARE A CONTEXT INITIALIZATION PARAMETER

<context-par not contain <init-param>.

7HERE DO YOU STORE 4AG ,IBRARY $ESCRIPTORS 4,$S IN A WEB APPLICATION #HOOSE ALL THAT APPLY

R ! /NLY IN :(% ,1) OLE R " /NLY IN :(% ,1) FODVVHV R # )N THE 0(7$ ,1) DIRECTORY OF A *!2 lLE INSIDE :(% ,1) OLE

(JSP spec pg 196)

-The container will not automatically discover TLDs if they are in /WEB-INF/classes or /WEB-INF/lib.

R $ !T THE APPLICATION S TOP LEVEL DIRECTORY R % )N :(% ,1) OR A SUB DIRECTORY THEREOF

7HICH STATEMENTS ABOUT 7!2 lLES ARE TRUE #HOOSE ALL THAT APPLY

R ! 7!2 STANDS FOR 7EB !PPLICATION 2ESOURCES lLE R " ! VALID 7!2 lLE MUST CONTAIN A DEPLOYMENT DESCRIPTOR R # 3EVERAL 7!2 lLES CAN COMPOSE A WEB APPLICATION R $ ! 7!2 lLE CANNOT CONTAIN EMBEDDED *!2 lLES

& (servlet spec 9.5

9.6)

-WAR stands for Web ARchive, and portions of a web application cannot be contained in a WAR Ăžle; only an entire application can reside within a WAR Ăžle.

\RX DUH KHUH

Chapter 11. Deploying your web app Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher: O'Reilly Prepared for Stephen Goss, Safari ID: stephengoss@gmx.net Print Publication Date: 8/1/2004 User number: 747221 Copyright 2007, Safari Books Online, LLC. This PDF is exclusively for your use in accordance with the Safari Terms of Service. No part of it may be reproduced or transmitted in any form by any means without the prior written permission for reprints and excerpts from the publisher. Redistribution or other use that violates the fair use priviledge under U.S. copyright laws (see 17 USC107) or that otherwise violates the Safari Terms of Service is strictly prohibited.


Chapter 11. Deploying your web app

PRFN DQVZHUV

)

(Servlet spec p 70

4HE FOLLOWING SERVLET IS DECLARED IN THE $$ VHUYOHW! VHUYOHW QDPH!0\6HUYOHW VHUYOHW QDPH! VHUYOHW FODVV!FRP P\RUJ 6HUYOHW&ODVV VHUYOHW FODVV! VHUYOHW!

7HERE CAN YOU STORE THE SERVLET CLASS IN THE WEB APPLICATION #HOOSE ALL THAT APPLY

R ! )N 0(7$ ,1) OF A *!2 lLE R " )N THE PACKAGE RELATED DIRECTORY TREE BEGINING AT THE TOP LEVEL OF THE APPLICATION DIRECTORY

R # )N :(% ,1) FODVVHV OR IN A *!2 lLE IN :(% ,1) OLE R $ )N :(% ,1) OLE OUTSIDE OF A *!2 lLE -Option D is not correct because /WEB-INF/lib

is designed as the container for JAR Ăžles.

7HAT IS THE PURPOSE OF THE DEPLOYMENT DESCRIPTOR $$ #HOOSE ALL THAT APPLY

(Servlet spec p 103)

R ! 4O ALLOW CODE GENERATION TOOLS TO DYNAMICALLY CREATE SERVLETS FROM AN 8-, lLE

R " 4O CONVEY THE WEB APPLICATION CONlGURATION INFORMATION FROM DEVELOPERS TO APPLICATION ASSEMBLERS AND DEPLOYERS

-Option D is inaccurate R # 4O CONlGURE VENDOR SPECIlC ASPECTS OF THE APPLICATION because these concerns R $ 4O CONlGURE ONLY DATABASE AND %NTERPRISE *AVA"EAN ACCESS FROM THE are just a subset of the DDĂ•s purpose.

WEB APPLICATION

7HERE SHOULD ZHE [PO BE STORED IN A 7!2 lLE #HOOSE ALL THAT APPLY

(Servlet spec p 70)

R ! )N :(% ,1) FODVVHV R " )N :(% ,1) OLE R # )N :(% ,1) -web.xml should be stored in /WEB-INF regardless of whether the deploymentry R $ )N 0(7$ ,1) involves a WAR or an exploded directo

structure.

FKDSWHU

Chapter 11. Deploying your web app Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher: O'Reilly Prepared for Stephen Goss, Safari ID: stephengoss@gmx.net Print Publication Date: 8/1/2004 User number: 747221 Copyright 2007, Safari Books Online, LLC. This PDF is exclusively for your use in accordance with the Safari Terms of Service. No part of it may be reproduced or transmitted in any form by any means without the prior written permission for reprints and excerpts from the publisher. Redistribution or other use that violates the fair use priviledge under U.S. copyright laws (see 17 USC107) or that otherwise violates the Safari Terms of Service is strictly prohibited.


Chapter 11. Deploying your web app

ZHE DSS GHSOR\PHQW

139)

(JSP v2.0 pg. 1-

'IVEN # SDJH LPSRUW ´MDYD XWLO ´ ! MVS LPSRUW LPSRUW ´MDYD XWLO ´ ! MVS GLUHFWLYH SDJH LPSRUW ´MDYD XWLO ´ ! MVS SDJH LPSRUW ´MDYD XWLO ´ ! !SSUME THE PRElX hJSPv HAS BEEN MAPPED TO THE NAMESPACE KWWS MDYD VXQ FRP -63 3DJH 7HICH ARE TRUE #HOOSE ALL THAT APPLY

-Option A is incorrect because line 10 would be invalid in a JSP Document (XML-based document).

R ! ,INES AND ARE EQUIVALENT IN ANY TYPE OF *30 PAGE R " ,INE IS NOT VALID IN A *30 DOCUMENT 8-, BASED DOCUMENT R # ,INE WILL PROPERLY IMPORT THE MDYD XWLO PACKAGE -Options C and E are invalid as they are not valid elements in the R $ ,INE WILL PROPERLY IMPORT THE MDYD XWLO PACKAGE http://java.sun.com/JSP/Page R % ,INE WILL PROPERLY IMPORT THE MDYD XWLO PACKAGE namespace.

7HICH STATEMENTS ABOUT LQLW SDUDP! $$ ELEMENTS ARE TRUE #HOOSE ALL THAT APPLY

R ! 4HEY ARE USED TO DECLARE INITIALIZATION PARAMETERS FOR A SPECIlC SERVLET

R " 4HEY ARE USED TO DECLARE INITIALIZATION PARAMETERS FOR AN ENTIRE WEB APP

R # 4HE METHOD THAT RETRIEVES THESE PARAMETERS RETURNS AN OBJECT

R $ 4HE METHOD THAT RETRIEVES THESE PARAMETERS TAKES A 3TRING

V.B & API)

(servlet spec SR

-Initialization parameters can have web app scope or servlet scope. Those with servlet scope are named <init-param> in the DD, and take and return a String. Those with web app scope are named <context-param> in the DD and also take and return a String.

7HICH ARE $$ ELEMENTS THAT PROVIDE *.$) ACCESS TO * %% COMPONENTS #HOOSE ALL THAT APPLY

R ! HME UHI! R " HQWLW\ UHI! R # UHVRXUFH UHI! R $ VHVVLRQ UHI! R % PHVVDJH UHI!

(servlet spec 9.11)

s -In addition, <ejb-local-ref> also providece the web app creator with a JNDI referen to J2EE components. \RX DUH KHUH

Chapter 11. Deploying your web app Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher: O'Reilly Prepared for Stephen Goss, Safari ID: stephengoss@gmx.net Print Publication Date: 8/1/2004 User number: 747221 Copyright 2007, Safari Books Online, LLC. This PDF is exclusively for your use in accordance with the Safari Terms of Service. No part of it may be reproduced or transmitted in any form by any means without the prior written permission for reprints and excerpts from the publisher. Redistribution or other use that violates the fair use priviledge under U.S. copyright laws (see 17 USC107) or that otherwise violates the Safari Terms of Service is strictly prohibited.


Chapter 11. Deploying your web app

PRFN DQVZHUV

4HE FOLLOWING SERVLET IS REGISTERED IN THE $$

(servlet spec pg

VHUYOHW!

86)

VHUYOHW QDPH!DFWLRQ VHUYOHW QDPH! VHUYOHW FODVV!FRP P\RUJ $FWLRQ&ODVV VHUYOHW FODVV! VHUYOHW! #HOOSE THE CORRECT MAPPINGS FOR THIS SERVLET #HOOSE ALL THAT APPLY

R ! VHUYOHW PDSSLQJ! VHUYOHW QDPH!DFWLRQ VHUYOHW QDPH! XUO SDWWHUQ! GR XUO SDWWHUQ! VHUYOHW PDSSLQJ!

R " VHUYOHW PDSSLQJ! VHUYOHW QDPH!FRP P\RUJ $FWLRQ&ODVV VHUYOHW QDPH! XUO SDWWHUQ! GR XUO SDWWHUQ!

-Option B is incorrect because it confuses the servlet name with the servlet class.

VHUYOHW PDSSLQJ!

R # VHUYOHW PDSSLQJ! VHUYOHW QDPH!DFWLRQ VHUYOHW QDPH! XUO SDWWHUQ! FRQWUROOHU XUO SDWWHUQ! VHUYOHW PDSSLQJ!

R $ VHUYOHW PDSSLQJ! XUO SDWWHUQ! GR XUO SDWWHUQ! VHUYOHW PDSSLQJ!

-Option D is incorrect because it omits the <servlet-name> child element of <servlet-mapping>.

R % VHUYOHW PDSSLQJ! VHUYOHW QDPH!DFWLRQ VHUYOHW QDPH! VHUYOHW PDSSLQJ!

&OR WHICH TYPE OF WEB APP COMPONENTS CAN DEPENDENCIES BE DElNED #HOOSE ALL THAT APPLY

R ! *30 lLES R " 7!2 lLES R # CLASSES R $ LIBRARIES R % MANIFEST lLES

1) (servlet spec 9.7.

- Libraries dependencies can be deĂžned in the /META-INF/MANIFEST.MF Ăžle.

FKDSWHU

Chapter 11. Deploying your web app Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher: O'Reilly Prepared for Stephen Goss, Safari ID: stephengoss@gmx.net Print Publication Date: 8/1/2004 User number: 747221 Copyright 2007, Safari Books Online, LLC. This PDF is exclusively for your use in accordance with the Safari Terms of Service. No part of it may be reproduced or transmitted in any form by any means without the prior written permission for reprints and excerpts from the publisher. Redistribution or other use that violates the fair use priviledge under U.S. copyright laws (see 17 USC107) or that otherwise violates the Safari Terms of Service is strictly prohibited.


Chapter 11. Deploying your web app

ZHE DSS GHSOR\PHQW

7HICH ARE VALID DECLARATIONS IN A *30 $OCUMENT 8-, BASED DOCUMENT #HOOSE ALL THAT APPLY

139)

(JSP v2.0 pg. 1-

R ! MVS GHFODUDWLRQ [POQV MVS ´KWWS MDYD VXQ FRP -63 3DJH´! LQW [ MVS GHFODUDWLRQ!

R " MVS GHFODUDWLRQ [POQV MVS ´KWWS MDYD VXQ FRP -63 3DJH´! LQW [ MVS GHFODUDWLRQ!

R # LQW [ ! R $ LQW [ !

-Options C and D are incorrect because only the <jsp:declaration> syntax is valid in JSP Documents.

7HICH DEPLOYMENT DESCRIPTOR ELEMENTS MAY APPEAR BEFORE THE ZHE DSS! ELEMENT #HOOSE ALL THAT APPLY

(Servlet spec, p

107)

R ! OLVWHQHU! R " FRQWH[W SDUDP! root element -The <web-app> element is the riptor. R # VHUYOHW! of the web application deployment desc R $ .O 8-, ELEMENTS MAY APPEAR BEFORE THE ZHE DSS! ELEMENT

7HICH STATEMENTS CONCERNING THE CONTAINER CLASS LOADER ARE TRUE #HOOSE ALL THAT APPLY

7.2) (Servlet spec, 9.

R ! 7EB APPLICATIONS SHOULD ./4 ATTEMPT TO OVERRIDE CONTAINER IMPLEMENTATION CLASSES

R " ! WEB APPLICATION MUST NOT ATTEMPT TO LOAD RESOURCES FROM WITHIN THE 7!2 lLE USING THE * 3% SEMANTICS OF GET2ESOURCE

R # ! WEB APPLICATION MAY OVERRIDE ANY * %% CLASSES IN THE JAVAX NAMESPACE

-Option B is incorrect because the webapp may use the getResource method from the webappÕs class loader to access any WAR Þle. -Options C & D are incorrect

R $ ! WEB DEVELOPER MAY OVERRIDE * %% PLATFORM CLASSES PROVIDED because the webapp must NOT THEY ARE CONTAINED IN A LIBRARY *!2 WITHIN A 7!2

override any class in the java.* or javax.* namespaces.

\RX DUH KHUH

Chapter 11. Deploying your web app Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher: O'Reilly Prepared for Stephen Goss, Safari ID: stephengoss@gmx.net Print Publication Date: 8/1/2004 User number: 747221 Copyright 2007, Safari Books Online, LLC. This PDF is exclusively for your use in accordance with the Safari Terms of Service. No part of it may be reproduced or transmitted in any form by any means without the prior written permission for reprints and excerpts from the publisher. Redistribution or other use that violates the fair use priviledge under U.S. copyright laws (see 17 USC107) or that otherwise violates the Safari Terms of Service is strictly prohibited.


Chapter 12. Keep it secret, keep it safe

ZHE DSS VHFXULW\

.HHS LW VHFUHW NHHS LW VDIH 7KH\·UH RXW WKHUH 7KH %DG *X\V WKH\·UH HYHU\ZKHUH , PXVW OHDUQ DERXW $XWKHQWLFDWLRQ DQG $XWKRUL]DWLRQ , PXVW OHDUQ WR WUDQVPLW WKH GDWD VHFXUHO\ , , ',' <28 +($5 7+$7"

<RXU ZHE DSS LV LQ GDQJHU 7URXEOH OXUNV LQ HYHU\ FRUQHU RI WKH QHWZRUN DV FUDFNHUV VFDPPHUV DQG FULPLQDOV WU\ WR EUHDN LQWR \RXU V\VWHP WR VWHDO WDNH DGYDQWDJH RU MXVW KDYH D OLWWOH IXQ ZLWK \RXU VLWH <RX GRQ¶W ZDQW WKH %DG *X\V OLVWHQLQJ LQ WR \RXU RQOLQH VWRUH WUDQVDFWLRQV SLFNLQJ RII FUHGLW FDUG QXPEHUV <RX GRQ¶W ZDQW WKH %DG *X\V FRQYLQFLQJ \RXU VHUYHU WKDW WKH\¶UH DFWXDOO\ WKH 6SHFLDO &XVWRPHUV :KR *HW %LJ 'LVFRXQWV $QG \RX GRQ¶W ZDQW DQ\RQH JRRG 25 EDG ORRNLQJ DW VHQVLWLYH HPSOR\HH GDWD 'RHV -LP LQ PDUNHWLQJ UHDOO\ QHHG WR NQRZ WKDW /LVD LQ HQJLQHHULQJ PDNHV WKUHH WLPHV DV PXFK DV KH GRHV" $QG GR \RX UHDOO\ ZDQW -LP WR WDNH PDWWHUV LQWR KLV RZQ KDQGV DQG ORJLQ XQDXWKRUL]HG WR WKH 8SGDWH3D\UROO VHUYOHW" WKLV LV D QHZ FKDSWHU

Chapter 12. Keep it secret, keep it safe Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 12. Keep it secret, keep it safe

RI¿FLDO 6XQ H[DP REMHFWLYHV

6HUYOHWV -63 RYHUYLHZ

&RYHUDJH 1RWHV

Copyright Safari Books Online #729515 %DVHG RQ WKH VHUYOHW VSHFL¿FDWLRQ FRPSDUH

DQG FRQWUDVW WKH IROORZLQJ VHFXULW\ LVVXHV D DXWKHQWLFDWLRQ E DXWKRUL]DWLRQ F GDWD LQWHJULW\ DQG G FRQ¿GHQWLDOLW\

,Q WKH GHSOR\PHQW GHVFULSWRU GHFODUH WKH

IROORZLQJ D VHFXULW\ FRQVWUDLQW D :HE UHVRXUFH WKH WUDQVSRUW JXDUDQWHH WKH ORJLQ FRQ¿JXUDWLRQ DQG D VHFXULW\ UROH

!LL OF THE OBJECTIVES IN THIS SECTION ARE COVERED COMPLETELY IN THIS CHAPTER INCLUDING SECURITY RELATED $$ ELEMENTS THAT WERE ./4 COVERED IN THE DEPLOYMENT CHAPTER 7E CAN T MAKE YOU A COMPLETE SECURITY BEING BUT THE CONTENT IN THIS CHAPTER IS A START AND IT S EVERYTHING YOU NEED FOR THE EXAM

*LYHQ DQ DXWKHQWLFDWLRQ W\SH %$6,& ',*(67 )250 DQG &/,(17 &(57 GHVFULEH LWV PHFKDQLVP

FKDSWHU

Chapter 12. Keep it secret, keep it safe Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 12. Keep it secret, keep it safe

ZHE DSS VHFXULW\

<PM *IL /]a[ IZM M^MZa_PMZM !S A WEB APPLICATION DEVELOPER YOU NEED TO PROTECT YOUR WEB SITE 4HERE ARE THREE MAIN KINDS OF BAD GUYS YOU NEED TO WATCH OUT FOR )MPERSONATORS 5PGRADERS AND %AVESDROPPERS

2. )UDQNLH ,·P LQ 1RZ ZKDW" <RX PHDQ WKDW·V DOO , KDYH WR GR WR SUHWHQG WR EH +HLGL 3OXP"

3267 %X\6WXII MVS

KWPO! (QWHU &UHGLW &DUG LQSXW W\SH WH[W QDPH µFF1XPµ! KWPO!

6HUYHU

(YLO ,PSHUVRQDWRU

,·P LQ WRR ,·P DOUHDG\ D UHJXODU PHPEHU EXW QRZ , À JXUHG RXW KRZ WR VQHDN LQ WR WKH 3UHPLXP 0HPEHUV DUHD DQG QRZ , FDQ GR $1<7+,1* 3267 %X\:LWK'LVFRXQW MVS

KWPO! (QWHU &UHGLW &DUG LQSXW W\SH WH[W QDPH µFF1XPµ! KWPO!

6HUYHU

1DXJKW\ 8SJUDGHU

\RX DUH KHUH

Chapter 12. Keep it secret, keep it safe Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 12. Keep it secret, keep it safe

HYLO HDYHVGURSSHUV

)VL Q\Âź[ VW\ R][\ \PM ;-:>-: \PI\ OM\[ P]Z\ %AVESDROPPERS CAN BE THE WORST .OT ONLY ARE THEY TRYING TO SCAM YOUR WEB APP BUT THEY CAN BURN SOME OF YOUR GOOD CLIENTS TOO ! DOUBLE HIT )F AN EAVESDROPPER IS SUCCESSFUL HE LL SWIPE YOUR CLIENT S CREDIT CARD INFORMATION AND CHARGE UP A STORM

3267 &KHFN2XW MVS >FUHGLW FDUG LQIRUPDWLRQ @

6HUYHU IRU *RRG*X\V FRP

,QQRFHQW 8VHU

/RRN 'DGG\ :H KDFNHG WKDW ODG\¡V FUHGLW FDUG QXPEHU

(YLO (DYHVGURSSHU

FKDSWHU

Chapter 12. Keep it secret, keep it safe Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 12. Keep it secret, keep it safe

ZHE DSS VHFXULW\

<PM *QO QV [MZ ^TM\ [MK]ZQ\a 3ERVLET SECURITY HELPS YOUˆTHE WEB APP DEVELOPERˆ FOIL )MPERSONATORS 5PGRADERS AND %AVESDROPPERS !S FAR AS THE SERVLET SPECIl CATION IS CONCERNED AND HENCE THE EXAM SERVLET SECURITY BOILS DOWN TO FOUR MAIN CONCEPTS AUTHENTICATION AUTHORIZATION CONl DENTIALITY AND DATA INTEGRITY

%XVWHG

2N EXGG\ , JRW \RXU UHTXHVW EXW KRZ GR , NQRZ \RX DUH ZKR \RX VD\ \RX DUH"

+773 UHTXHVW 3267

%XVWHG

/RRN 'HOEHUW EHIRUH , FDQ VHQG \RX WKLV VSHFLDO 3UHPLXP ZHE SDJH , KDYH WR PDNH VXUH \RX·UH DOORZHG WR VHH LW

6HUYHU

$XWKHQWLFDWLRQ WR IRLO ,PSHUVRQDWRUV

+773 UHTXHVW 3267

6HUYHU

$XWKRUL]DWLRQ

%XVWHG

6KKK 2N ZH·YH JRW WR PDNH VXUH WKDW QR RQH FDQ ORRN DW RU PHVV ZLWK ZKDW ,·P DERXW WR VHQG RXW

WR IRLO 8SJUDGHUV

(QFU\SWHG UHVSRQVH H [ I J JZ; VGI# I G OGG GG;;GHV 5 AGG(G

6HUYHU

&RQILGHQWLDOLW\ 'DWD ,QWHJULW\

WR IRLO (DYHVGURSSHUV

\RX DUH KHUH

Chapter 12. Keep it secret, keep it safe Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 12. Keep it secret, keep it safe

%RE¶V VHFXULW\ SURMHFW

) TQ\\TM [MK]ZQ\a [\WZa /NE DAY "OB S BOSS CALLED "OB INTO HIS OFlCE h) VE GOT AN EXCITING NEW PROJECT FOR YOU v HIS BOSS SAID "OB GROANED h) KNOW ) VE HANDED YOU SOME BAD JOBS IN THE PAST BUT THIS ONE SHOULD BE REALLY FUN ) D LIKE YOU TO DESIGN THE SECURITY FOR OUR COMPANY S NEW E#OMMERCE WEB SITE v h3ECURITYv "OB SAID hIS HARD AND BORING v h.O YOU RE WRONG v THE BOSS SAID h)N * %% SERVLET SECURITY IS SUPPOSED TO BE PRETTY COOL v 4HE BOSS CONTINUED h,ET ME GIVE YOU THE ELEVATOR PITCH TO GET YOU GOING THEN WE LL GO INTO DETAILS ONCE YOU VE HAD A CHANCE TO THINK THIS THROUGH v h/K v "OB SIGHED h,AY IT ON ME v h!S YOU KNOW THIS BEER WEBSITE IS REALLY HOT RIGHT NOW 7E VE ADDED SEVERAL NEW FEATURES AND WE RE GETTING A GREAT RESPONSE 3OME OF OUR USERS ARE HAPPY WITH JUST THE FREE RECIPES WE OFFER BUT A LOT MORE PEOPLE THAN WE THOUGHT ARE WILLING TO PAY FOR OUR RARE HOPS AND OTHER PREMIUM INGREDIENTS /H AND OUR &REQUENT "REWER PROGRAM IS A HUGE HIT )F A USER DECIDES HE LL BE A REPEAT INGREDIENT BUYER HE CAN PAY A ONE TIME FEE AND UPGRADE TO "REW -ASTER STATUS ! "REW -ASTER GET SPECIAL DISCOUNTS AND EARNS &REQUENT "REWER POINTS WHICH HE CAN REDEEM FOR COOL BREW REWARDS v "OB CONTINUED TO LISTEN MENTALLY CALCULATING THE CODE HE LL HAVE TO WRITE TO IMPLEMENT ALL THIS AND KISSING THAT TROPICAL VACATION GOODBYE -EANWHILE THE BOSS CONTINUED h"UT NOW WE HAVE TO MAKE SURE THAT WHEN ONE OF OUR USERS MAKES A PURCHASE NO ONE CAN SWIPE HIS CREDIT CARD INFORMATION /H ANOTHER THING WE D BETTER MAKE SURE THAT WHEN A MEMBER LOGS IN IT S NOT ACTUALLY ONE OF HIS FRIENDS TRYING TO SNEAK IN ) THINK WE NEED TO REQUIRE THAT MEMBERS HAVE PASSWORDS FROM NOW ON v

h)T S ALL MAKING SENSE SO FAR v SAID "OB h7HEN USERS PLACE AN ORDER WITH US DO WE WANT TO GIVE THEM SOME SORT OF CONlRMATION CODE v h'REAT IDEA v SAID THE BOSS h/H AND ONE MORE THING ) FORGOTˆ YOU BETTER MAKE SURE THAT ONLY OUR &REQUENT "REWERS GET THE SPECIAL DISCOUNTS v h) THINK THIS IS ENOUGH v SAID THE BOSS h"UT YOU KNOW THE WAY THINGS ARE GOING IT PROBABLY WON T BE TOO LONG BEFORE WE OFFER SOME SORT OF PLATINUM MEMBERSHIP LEVEL v

# 4X3 X9 8 :KLFK VHFXULW\ FRQFHSWV DUH PHQWLRQHG LQ WKH VWRU\" 5HUHDG WKH VWRU\ DQG DQQRWDWH WKH SODFHV ZKHUH WKH ERVV·V UHTXLUHPHQWV FDOO IRU DXWKHQWLFDWLRQ DXWKRUL]DWLRQ FRQILGHQWLDOLW\ GDWD LQWHJULW\ <HDK \HDK ZH NQRZ WKLV LV REYLRXV EXW ZH·UH MXVW ZDUPLQJ XS WKH WRSLF EHIRUH LW JHWV GRZQ DQG GLUW\

FKDSWHU

Chapter 12. Keep it secret, keep it safe Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.

Chapter 12. Keep it secret, keep it safe \RX DUH KHUH

) TQ\\TM [MK]ZQ\a [\WZa /NE DAY "OB S BOSS CALLED "OB INTO HIS OFl CE h) VE GOT AN EXCITING NEW PROJECT FOR YOU v HIS BOSS SAID "OB GROANED h) KNOW ) VE HANDED YOU SOME BAD JOBS IN THE PAST BUT THIS ONE SHOULD BE REALLY FUN ) D LIKE YOU TO DESIGN THE SECURITY FOR OUR COMPANY S NEW E#OMMERCE WEB SITE v h3ECURITYv "OB SAID hIS HARD AND BORING v h.O YOU RE WRONG v THE BOSS SAID h)N * %% SERVLET SECURITY IS SUPPOSED TO BE PRETTY COOLv 4HE BOSS CONTINUED h,ET ME GIVE YOU THE ELEVATOR PITCH TO GET YOU GOING THEN WE LL GO INTO DETAILS ONCE YOU VE HAD A CHANCE TO THINK THIS THROUGH v h/+ v "OB SIGHED h,AY IT ON ME v h!S YOU KNOW THIS BEER WEBSITE IS REALLY HOT RIGHT NOW 7E VE ADDED SEVERAL NEW FEATURES AND WE RE GETTING A GREAT RESPONSE 3OME OF OUR USERS ARE HAPPY WITH JUST THE FREE RECIPES WE OFFER BUT A LOT MORE PEOPLE THAN WE THOUGHT ARE WILLING TO PAY FOR OUR RARE HOPS AND OTHER PREMIUM INGREDIENTS /H AND OUR &REQUENT "REWER PROGRAM IS A HUGE HIT )F A USER DECIDES HE LL BE A REPEAT INGREDIENT BUYER HE CAN PAY A ONE TIME FEE AND UPGRADE TO "REW -ASTER STATUS ! "REW -ASTER GET SPECIAL DISCOUNTS AND AN EARNS &REQUENT "REWER POINTS WHICH HE CAN REDEEM DEEM FOR COOL BREW REWARDS v "OB CONTINUED TO LISTEN MENTALLY CALCULATING THE CODE HE LL HAVE TO WRITE TO IMPLEMENT ALL THIS AND KISSING THAT TROPICAL VACATION GOODBYE -EANWHILE THE BOSS CONTINUED h"UT NOW WE HAVE TO MAKE SURE THAT WHEN ONE OF MAKE OUR USERS MAKES A PURCHASE NO ONE CAN SWIPE HIS A PU CREDIT CARD INFORMATION /H ANOTHER THING WE D MAT BETTER MAKE SURE THAT WHEN A MEMBER LOGS IN IT S NOT ACTUALLY ONE OF HIS FRIENDS TRYING TO SNEAK IN ) THINK WE NEED TO REQUIRE THAT MEMBERS HAVE PASSWORDS FROM NOW ON v

h)T S ALL MAKING SENSE SO FAR v SAID "OB h7HEN A USER PLACES AN ORDER WITH US DO WE WANT TO GIVE THEM SOME SORT OF CONl O RMATION CODE v h'REAT IDEAv SAID THE BOSS h/H AND ONE MORE THING S h ) FORGOTˆYOU BETTER MAKE SURE THAT ONLY OUR TTE &REQUENT "REWERS GET THE SPECIAL DISCOUNTS v Q G h) THINK THIS IS ENOUGH v SAID THE BOSS h"UT YOU THINK EN KNOW THE WAY THINGS ARE GOING IT PROBABLY WON T KN AY BE TOO LONG BEFORE WE OFFER SOME SORT OF PLATINUM E MEMBERSHIP LEVEL v LE

ITYATA INTEGgRimportant IALITY & D in CONFIDENTint the server is returnbe bad At this po formation. It would d by an and private in ation was seen or altere if the inform. eavesdropper

AUTHORIZATION - Once we have established who weÕre talking to, we want to make sure that theyÕre allowed to do what they want to do.

ld be a CONFIDENTIALITY - It awou userÕs credit terrible security breach if wro hands! card number fell into the ng

AUTHENTICATION - Whenever someone mentions passwords, theyÕre probably talking about authentication... is this guy who he says he is? If so, he should know his password!.

ZHE DSS VHFXULW\

Chapter 12. Keep it secret, keep it safe


Chapter 12. Keep it secret, keep it safe

+773 DXWKHQWLFDWLRQ

0W_ \W )]\PMV\QKI\M QV 0<<8 ?WZTL" \PM JMOQVVQVO WN I [MK]ZM \ZIV[IK\QWV ,ET S START WITH A LOOK AT THE COMMUNICATIONS THAT OCCUR BETWEEN A BROWSER AND A WEB CONTAINER WHEN THE CLIENT ASKS FOR A SECURE RESOURCE ON THE WEB SITE )T S "!3)# REALLY

7KH +773 SHUVSHFWLYH

7KH EURZVHU PDNHV D UHTXHVW IRU D ZHE UHVRXUFH ´XSGDWH MVSµ

*(7 XSGDWH MVS

:HE EURZVHU

&OLHQW

7KH FRQWDLQHU VHQGV EDFN DQ +773 ´8QDXWKRUL]HGµ ZLWK D ZZZ DXWKHQWLFDWH KHDGHU DQG UHDOP LQIRUPDWLRQ

8QDXWKRUL]HG ::: $XWKHQWLFDWH %DVLF UHDOP µEHHUµ

ZHE VHUYHU

7KH EURZVHU JHWV WKH DQG EDVHG RQ WKH 5HDOP LQIR DVNV WKH XVHU IRU KLV XVHUQDPH DQG SDVVZRUG

The HTTP header used for authentication.

*(7 XSGDWH MVS $XWKRUL]DWLRQ %DVLF [ Z

8VHU %RE 6 3 :

&OLHQW

ERG\! ERG\!

7KH EURZVHU DVNV IRU ´XSGDWH MVSµ DJDLQ VWDWHOHVV UHPHPEHU EXW WKLV WLPH WKH UHTXHVW LQFOXGHV D VHFXULW\ +773 KHDGHU DQG D XVHUQDPH DQG SDVVZRUG 7KH &RQWDLQHU YHULILHV WKDW WKH XVHUQDPH DQG SDVVZRUG PDWFK DQG LI WKH\ GR SHUIRUPV DXWKRUL]DWLRQ

KWPO! KHDG! KHDG!

7KH VHUYHU GHWHUPLQHV WKDW ´XSGDWH MVSµ LV D FRQVWUDLQHG UHVRXUFH

ZHE VHUYHU

,I DOO WKH VHFXULW\ VWXII LV JRRG WKH &RQWDLQHU UHWXUQV WKH +70/ LI QRW LW UHWXUQV DQRWKHU +773

FKDSWHU

Chapter 12. Keep it secret, keep it safe Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 12. Keep it secret, keep it safe

ZHE DSS VHFXULW\

) [TQOP\Ta KTW[MZ TWWS I\ PW_ \PM +WV\IQVMZ LWM[ )]\PMV\QKI\QWV IVL )]\PWZQbI\QWV /N THE LAST PAGE WE SKIMMED OVER WHAT THE #ONTAINER WAS DOING 4HROUGHOUT THIS CHAPTER WE LL HIT DIFFERENT LEVELS OF DETAIL AND HERE WE ZOOM IN JUST A LITTLE

7KH &RQWDLQHU SHUVSHFWLYH

:HE EURZVHU

&RQWDLQHU

&RQVWUDLQHG 85/V

&OLHQW

[\][[ MVS DEF[[ KWPO [[[[[ MSHJ

6HFXULW\ 7DEOH

+DYLQJ UHFHLYHG WKH UHTXHVW WKH FRQWDLQHU ILQGV WKH 85/ LQ WKH ´VHFXULW\ WDEOHµ VWRUHG LQ ZKDWHYHU WKH &RQWDLQHU LV XVLQJ WR NHHS VHFXULW\ LQIR ,I WKH &RQWDLQHU ILQGV WKH 85/ LQ WKH VHFXULW\ WDEOH LW FKHFNV WR VHH ZKHWKHU WKH UHTXHVWHG UHVRXUFH LV FRQVWUDLQHG ,I LW LV LW UHWXUQV

7KH LQLWLDO UHTXHVW 12 SDVVZRUG

:HE EURZVHU

&RQWDLQHU

:KHQ WKH &RQWDLQHU UHFHLYHV D UHTXHVW ZLWK D XVHUQDPH DQG SDVVZRUG LW FKHFNV WKH 85/ LQ WKH VHFXULW\ WDEOH

8VHUV 3: %RE 6 H I[ 6DP 7 4 J

&OLHQW

5ROHV %RE 6 $GPLQ 6DP 7 &OHUN

6HFXULW\ 7DEOH

7KH VHFRQG UHTXHVW :,7+ SDVVZRUG

,I LW ILQGV WKH 85/ LQ WKH VHFXULW\ WDEOH DQG VHHV WKDW LW·V FRQVWUDLQHG LW FKHFNV WKH XVHUQDPH DQG SDVVZRUG LQIRUPDWLRQ WR PDNH VXUH WKH\ PDWFK ,I WKH XVHUQDPH DQG SDVVZRUG DUH 2. WKH &RQWDLQHU FKHFNV WR VHH LI WKH XVHU KDV EHHQ DVVLJQHG WKH FRUUHFW ¶UROH· WR DFFHVV WKLV UHVRXUFH L H DXWKRUL]DWLRQ ,I VR WKH UHVRXUFH LV UHWXUQHG WR WKH FOLHQW \RX DUH KHUH

Chapter 12. Keep it secret, keep it safe Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 12. Keep it secret, keep it safe

DXWKHQWLFDWLRQ RYHUYLHZ

0W_ LQL \PM +WV\IQVMZ LW \PI\ ' 9OU JUST GOT AN OVERVIEW OF HOW THE #ONTAINER HANDLES AUTHENTICATION AND AUTHORIZATION "UT WHAT WAS GOING ON INSIDE THE #ONTAINER THAT MADE ALL THAT HAPPEN ,ET S SPECULATE A LITTLE ON WHAT WAS GOING ON BEHIND THE SCENES DEEP DOWN IN THE HEART OF THE #ONTAINER

7KLQJV WKH &RQWDLQHU GLG

3HUIRUPHG D ORRNXS RQ WKH UHVRXUFH EHLQJ UHTXHVWHG

, SXW D /27 RI F\FOHV LQWR VHFXULW\ $Q\WKLQJ \RX FDQ GR WR PDNH VHFXULW\ HIÀFLHQW ZLOO EH D ELJ KHOS IRU SHUIRUPDQFH

7E ALREADY KNOW THAT THE #ONTAINER IS REALLY GOOD AT lNDING RESOURCES "UT NOW ONCE IT lNDS THE RESOURCE IT HAS TO DETERMINE WHETHER IT S A RESOURCE THAT ANYONE CAN VIEW OR WHETHER THE RESOURCE HAS SECURITY CONSTRAINTS $OES THE SERVLET ITSELF HAVE SOME SORT OF SECURITY mAG )S THERE A TABLE SOMEWHERE 6HUYHU

3HUIRUPHG VRPH DXWKHQWLFDWLRQ /NCE THE #ONTAINER DETERMINES THAT IT S DEALING WITH A SECURED RESOURCE IT HAS TO AUTHENTICATE THE CLIENT )N OTHER WORDS TO lND OUT IF h"OBv REALLY IS "OB 4HE MOST COMMON WAY IS TO SEE IF "OB KNOWS HIS OWN PASSWORD

3HUIRUPHG VRPH DXWKRUL]DWLRQ /NCE THE #ONTAINER DETERMINES THAT IT IS THE REAL "OB ASKING FOR THIS RESOURCE THE #ONTAINER HAS TO SEE WHETHER "OB IS ALLOWED ACCESS TO THAT RESOURCE ,ET S SEE IF WE HAVE USERS AND SERVLETS IN OUR WEBAPP WE COULD THROW TOGETHER A LITTLE TABLE WITH CELLS

# 4X3 X9 8 :KLFK ELWV RI VHFXULW\ ORJLF DQG LQIRUPDWLRQ VKRXOG EH KDUGFRGHG LQ WKH VHUYOHW" QDPHV DQG SDVVZRUGV" XVHUV UROHV" DFFHVV UXOHV IRU HDFK VHUYOHW"

7HOA 4HIS COULD GET OUT OF HAND IN A HURRY IF WE RE NOT CAREFUL

FKDSWHU

Chapter 12. Keep it secret, keep it safe Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 12. Keep it secret, keep it safe

ZHE DSS VHFXULW\

3MMX [MK]ZQ\a W]\ WN \PM KWLM &OR MOST WEB APPS MOST OF THE TIME THE WEB APP S SECURITY CONSTRAINTS SHOULD BE HANDLED DECLARATIVELY IN THE DEPLOYMENT DESCRIPTOR 7HY

7RS 7HQ 5HDVR QV WR GR \RXU VHFXULW\ GHFODUDWLYHO\

:KR GRHVQ¶W QHH G PRUH ;0/ SUDF

2IWHQ PDSV QDWX UDOO\ WR WKH H[LVWLQJ MR UROHV LQ D FRPSDQ \¶V ,7 GHSDUWPHQ E W

/RRNV JUHDW RQ \

$OORZV \RX WR XVH V HUYOHWV \RX¶YH DOUHD ZULWWHQ LQ PRUH À H[ G\ LEOH ZD\V

,W¶V RQ WKH H[DP

WLFH"

RXU UHVXPH

$OORZV DSSOLFDWLR Q G VHUYOHWV ZLWKRXW D HYHORSHUV WR UHXVH FFHVV WR WKH VRXUF H FRGH ,W¶V MXVW FRRO

5HGXFHV RQJRLQJ P DSSOLFDWLRQ JURZV DLQWHQDQFH ZKHQ \RXU

)LQDOO\ D ZD\ WR MX VWLI\ WKH FRVW RI WKD &RQWDLQHU W

6XSSRUWV WKH LGHD RI FRPSRQHQW EDV GHYHORSPHQW HG

\RX DUH KHUH

Chapter 12. Keep it secret, keep it safe Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 12. Keep it secret, keep it safe

ZKR GRHV VHFXULW\

?PW QUXTMUMV\[ [MK]ZQ\a QV I _MJ IXX' 0\ MRE LV HDV\ 0RVW RI WKH WLPH , GRQ·W HYHQ KDYH WR WKLQN DERXW VHFXULW\ ZKHQ ,·P ZULWLQJ D VHUYOHW $QG WKDW·V JRRG EHFDXVH P\ SKLORVRSK\ LV ´6HFXULW\ LV KDUG GRQ·W GR LW µ

0\ MRE LV PRUH LQYROYHG , GHFLGH ZKLFK UROHV PDNH VHQVH LQ WKH DSSOLFDWLRQ )RU .LP·V EHHU DSSOLFDWLRQ *XHVW 0HPEHU DQG $GPLQ DUH NH\ UROHV 7KHQ , DGG WKHVH UROHV WR WKH XVHUV LQ RXU &RQWDLQHU·V XVHUV ÀOH 6LQFH ZH XVH WRPFDW RXU ÀOH LV FDOOHG WRPFDW XVHUV [PO

$QQLH WKH DSSOLFDWLRQ DGPLQLVWUDWRU

.LP WKH VHUYOHW SURYLGHU 0\ MRE LV KXJH 2QFH , KDYH D OLVW RI $QQLH·V UROHV DQG D GHVFULSWLRQ RI ZKDW .LP·V VHUYOHWV GR , FDQ GHFLGH ZKLFK UROHV VKRXOG KDYH DFFHVV WR ZKLFK VHUYOHWV 7KH GHSOR\PHQW GHVFULSWRU SURYLGHV PH ZLWK DQ HDV\ LI VRPHZKDW YHUERVH ZD\ WR WHOO WKH &RQWDLQHU ZKR KDV DFFHVV WR ZKLFK VHUYOHWV $QG OHW PH WHOO \RX WKH\ GRQ·W SD\ PH HQRXJK

'LFN WKH GHSOR\HU

FKDSWHU

Chapter 12. Keep it secret, keep it safe Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 12. Keep it secret, keep it safe

ZHE DSS VHFXULW\

WKHUH DUH QR

'XPE 4XHVWLRQV

4

) M CONFUSEDˆIF ) M CREATING SERVLETS SHOULDN T ) BE THINKING ABOUT SECURITY CONSIDERATIONS

$

9ES YOU SHOULD +IM THE SERVLET PROVIDER WAS BEING A LITTLE SARCASTIC ! KEY POINT WHEN DESIGNING SERVLETS IS THEIR MODULARITY &OR INSTANCE IT MAKES SENSE TO SEPARATE BROWSING CAPABILITIES FROM UPDATING CAPABILITIES )F THESE TWO USE CASES ARE IMPLEMENTED IN SEPARATE SERVLETS THEN IT WILL BE EASY FOR THE DEPLOYER TO ASSIGN DIFFERENT SECURITY CONSTRAINTS TO THEM

4

) DON T KNOW WHERE 9/5 WORK BUT IN MY SITUATION ) HAVE TO WEAR ALL THREE HATS DEVELOPER ADMIN AND DEPLOYER

$

4HAT S ACTUALLY A VERY COMMON SITUATION 7E STILL RECOMMEND THAT WHEN YOU RE IMPLEMENTING SECURITY YOU DO IT IN STAGES AND hIMAGINEv THAT YOU RE WEARING ONE HAT AT A TIME

4

(OW DOES PROGRAMMATIC SECURITY lT INTO THE PICTURE

$

7E LL GET TO PROGRAMMATIC SECURITY LATER IN THE CHAPTER &OR NOW WHAT S IMPORTANT TO KNOW IS THAT YOU LL PROBABLY FIND THAT OF THE SECURITY WORK YOU LL DO IN SERVLETS WILL BE DECLARATIVE 0ROGRAMMATIC SECURITY JUST ISN T USED VERY MUCH 3EE h4OP 4EN 2EASONS v

4

3O FAR EVERYTHING YOU VE TALKED ABOUT IS RELATED TO AUTHENTICATION AND AUTHORIZATION HOW ABOUT THE OTHER TWO IN THE hBIG v

$

4

)T SEEMS LIKE WHEN PEOPLE TALK ABOUT SERVLET SECURITY THE TERM hROLEv IS OVERLOADED

$

'OOD POINT 7HEN 3UN DESIGNS * %% SPECS %*"S SERVLETS *30S THEY OFTEN THINK IN TERMS OF THE KINDS OF PEOPLE WHO MIGHT CREATE AND ADMINISTER THESE COMPONENTS )N OTHER WORDS )4 RELATED JOB ROLES 7HEN DEVELOPERS TACKLE SECURITY FOR WEB APPS THEY THINK ABOUT THE TYPES OF USERS THAT MIGHT EXIST &OR INSTANCE A hGUESTv MIGHT HAVE VERY FEW PRIVILEGES WITHIN A WEB APP AND A hMEMBERv MIGHT HAVE MORE PRIVILEGES 4HESE hUSER ROLESv ARE DEFINED MAPPED AND FRETTED OVER IN THE $EPLOYMENT $ESCRIPTOR

4

) VE HEARD ABOUT SOMETHING CALLED hCROSS SITE v HACKING 7HAT IS THAT

$

#ROSS SITE HACKING CAN HAPPEN WHEN A WEBSITE DISPLAYS FREE FORM TEXT ENTERED BY OTHER USERS FOR INSTANCE A USER BOOK REVIEW )F A MALICIOUS USER KEYS SOME (4-, WITH SAY *AVASCRIPT INTO A TEXT AREA AND THE SERVER DOESN T CATCH IT THEN UNSUSPECTING BROWSERS WILL RENDER THE POTENTIALLY DANGEROUS HIDDEN CODE ALONG WITH THE GOOD (4-, WHEN THE PAGE IS SERVED )N OTHER WORDS THE SERVER SENDS TO USERS SOMETHING ANOTHER USER TYPED IN WITHOUT CHECKING OR PROCESSING IT FOR MALICIOUS SCRIPTING CODE

4

3O WE VE GOT TO DEAL WITH @4HE "IG &OUR (OW HARD IS IT TO SET THESE BABIES UP AND MAINTAIN THEM ) MEAN IS THIS GOING TO BE PAINFUL

$

9ES WE RE AFRAID IT MIGHT HURT A LITTLE !CTUALLY SOME ASPECTS OF SECURITY ARE REALLY LOW OVERHEAD WHILE OTHERS $/ REQUIRE A FAIR AMOUNT OF WORK "UT NONE OF IT IS VERY COMPLICATED JUST POTENTIALLY TEDIOUS

7E LL TALK ABOUT CONFIDENTIALITY AND DATA INTEGRITY LATER IN THIS CHAPTER 4HE SERVLET SPECIFICATION MAKES IMPLEMENTING THESE CONCEPTS VERY EASY SO WE RE FOCUSING ON AUTHENTICATION AND AUTHORIZATION BECAUSE THEY RE THE MOST COMPLICATED TO UNDERSTAND AND IMPLEMENT AND HINT HINT MORE LIKELY TO SHOW UP ON THE EXAM \RX DUH KHUH

Chapter 12. Keep it secret, keep it safe Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 12. Keep it secret, keep it safe

VHFXULW\ MREV

<PM *QO 2WJ[ QV [MZ ^TM\ [MK]ZQ\a 4HE TABLE BELOW WILL GIVE YOU A FEEL FOR THE KEY ITEMS IN SERVLET SECURITY !UTHORIZATION IS THE MOST TIME CONSUMING TO IMPLEMENT AND !UTHENTICATION IS NEXT &ROM THE SERVLET PERSPECTIVE #ONlDENTIALITY AND $ATA )NTEGRITY ARE PRETTY EASY TO SET UP

6HFXULW\ FRQFHSW

:KR·V UHVSRQVLEOH"

&RPSOH[LW\ OHYHO

(IIRUW OHYHO

([DP LPSRUWDQFH

$XWKHQWLFDWLRQ

$GPLQ

PHGLXP

KLJK

PHGLXP

$XWKRUL]DWLRQ

'HSOR\HU

KLJK

KLJK

KLJK

PRVWO\

&RQILGHQWLDOLW\

'HSOR\HU

ORZ

ORZ

ORZ

'DWD ,QWHJULW\

'HSOR\HU

ORZ

ORZ

ORZ

:H·UH JRLQJ WR HPSKDVL]H $XWKRUL]DWLRQ LQ WKLV FKDSWHU EHFDXVH LW·V WKH PRVW LPSRUWDQW DQG FRPSOH[ RI WKH YHQGRU QHXWUDO VHFXULW\ FRQFHSWV

!CTUALLY GETTING THE 33, CERTIlCATION IS NOT TRIVIAL SO BY hEASYv WE MEAN hYOU DON T REALLY DO ANYTHING IN YOUR SERVLET CODE v

FKDSWHU

Chapter 12. Keep it secret, keep it safe Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 12. Keep it secret, keep it safe

ZHE DSS VHFXULW\

2][\ MVW]OP )]\PMV\QKI\QWV \W LQ[K][[ )]\PWZQbI\QWV ,ATER IN THE CHAPTER WE LL GO DEEPER INTO AUTHENTICATION BUT FOR NOW WE LL LOOK AT GETTING JUST ENOUGH AUTHENTICATION DATA INTO THE SYSTEM SO THAT WE CAN FOCUS ON AUTHORIZATION ! USER CAN T BE AUTHORIZED UNTIL HE S BEEN AUTHENTICATED 4HE SERVLET SPECIlCATION DOESN T TALK ABOUT HOW A #ONTAINER SHOULD IMPLEMENT SUPPORT FOR AUTHENTICATION DATA INCLUDING USERNAMES AND PASSWORDS "UT THE GENERAL IDEA IS THAT THE #ONTAINER WILL SUPPLY A VENDOR SPECIlC TABLE CONTAINING USERNAMES AND THEIR ASSOCIATED PASSWORDS AND ROLES "UT VIRTUALLY ALL VENDORS GO BEYOND THAT AND PROVIDE A WAY TO HOOK INTO YOUR COMPANY SPECIlC AUTHENTICATION DATA OFTEN STORED IN A RELATIONAL DATABASE OR ,$!0 SYSTEM WHICH IS BEYOND THE SCOPE OF THIS BOOK 4YPICALLY THIS DATA IS MAINTAINED BY THE ADMINISTRATOR

7KH VHFXULW\ ´UHDOP¾ 5NFORTUNATELY REALM IS YET ANOTHER OVERLOADED TERM IN THE SECURITY WORLD !S FAR AS THE SERVLET SPEC IS CONCERNED A REALM IS A PLACE WHERE AUTHENTICATION INFORMATION IS STORED 7HEN YOU RE TESTING YOUR APPLICATION IN 4OMCAT YOU CAN USE A lLE CALLED hTOMCAT USERS XMLv LOCATED IN TOMCAT S CONF DIRECTORY ./4 WITHIN WEBAPPS 4HAT ONE hTOMCAT USERS XMLv lLE APPLIES TO !,, APPLICATIONS DEPLOYED UNDER WEB APPS )T S COMMONLY KNOWN AS THE MEMORY REALM BECAUSE 4OMCAT READS THIS lLE INTO MEMORY AT STARTUP TIME 7HILE IT S GREAT FOR TESTING IT S NOT RECOMMENDED FOR PRODUCTION &OR ONE THING YOU CAN T MODIFY ITS CONTENTS WITHOUT RESTARTING 4OMCAT

7KH WRPFDW XVHUV [PO ÀOH

something Your app server will useHOW it will let SOME and roles.

different... but WRPFDW XVHUV! rds UROH UROHQDPH ´*XHVW´ ! you map users to passwo UROH UROHQDPH ´0HPEHU´ ! XVHU QDPH ´%LOO´ SDVVZRUG ´FRGHU´ UROHV ´0HPEHU *XHVW´ ! WRPFDW XVHUV!

The control for authen sort of data struct tication is located in some like this. In Tom , you can use an XML Þleure called Òtomcat-usecat that holds name-passwo rs.xmlÓ Container uses at aut rd-role sets that the hentication time.

T part This is NO iÞc. Remember!D; itÕs vendor-spec of the D

(QDEOLQJ DXWKHQWLFDWLRQ 4O GET AUTHENTICATION WORKING IN OTHER WORDS TO GET THE #ONTAINER TO ASK FOR A USERNAME AND PASSWORD YOU NEED TO STICK SOMETHING IN THE $$ $ON T WORRY ABOUT WHAT THIS MEANS FOR NOW BUT IF YOU WANT TO START PLAYING AROUND WITH AUTHENTICATION USE THIS ORJLQ FRQÂżJ! DXWK PHWKRG!%$6,& DXWK PHWKRG! ORJLQ FRQÂżJ!

e later in th this ed about this WeÕll talk but for now, you neication. chapter, D to get authent in your D \RX DUH KHUH

Chapter 12. Keep it secret, keep it safe Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 12. Keep it secret, keep it safe

GHÂż QLQJ VHFXULW\ UROH!

)]\PWZQbI\QWV ;\MX " LMNQVQVO ZWTM[ 4HE MOST COMMON FORM OF AUTHORIZATION IN SERVLETS IS FOR THE CONTAINER TO DETERMINE WHETHER A SPECIl C SERVLETˆAND THE INVOKING (440 REQUEST METHODˆCAN BE CALLED BY A USER WHO HAS BEEN ASSIGNED A CERTAIN SECURITY hROLEv 3O THE l RST STEP IS TO MAP THE ROLES IN THE VENDOR SPECIl C hUSERSv l LE TO ROLES ESTABLISHED IN THE $EPLOYMENT $ESCRIPTOR

$QQLH LV DQ ´$GPLQ¾ D ´0HPEHU¾ DQG D ´*XHVW¾

9(1'25 63(&,),& 7KH UROH! HOHPHQW LQ WRPFDW XVHUV [PO

Vendor-speciĂžc users and roles data structure.

'LDQH LV ERWK D ´0HPEHU¾ DQG D ´*XHVW¾

WRPFDW XVHUV! UROH UROHQDPH ´$GPLQ´ ! P

7HG LV D ´*XHVW¾

UROH UROHQDPH ´0HPEHU´ ! HPEH UROH UROHQDPH ´*XHVW´ ! XHVW XVHU XVHUQDPH ´$QQLH´ SDVVZRUG ´ ´DGPLQ´ UROHV ´$GPLQ 0HPEHU *XHVW´ ! XVHU XVHUQDPH ´'LDQH´ SDVVZRUG ´FRGHU´ UROHV ´0HPEHU *XHVW´ ! ´ XVHU XVHUQDPH ´7HG´ SDVVZRUG ´QHZELH´ UROHV ´*XHVW´ ! S WRPFDW XVHUV! should

ers.xml In Tomcat, the tomcat-us e that a single tic No s. thi like lot a k loo es. user can have multiple rol

6(59/(7 63(&,),&$7,21 7KH '' VHFXULW\ UROH! HOHPHQW LQ ZHE [PO Z VHFXULW\ UROH! UROH QDPH!$GPLQ UROH QDPH! G UROH QDPH!0HPEHU UROH QDPH! UROH QDPH!*XHVW UROH QDPH! VHFXULW\ UROH! ORJLQ FRQÂż J! DXWK PHWKRG!%$6,& DXWK PHWKRG! ORJLQ FRQÂż J!

When itÕs time for authorization, the container will map its vendorspeciÞc ÒroleÓ information to whatever <role-name>Õs it Þnds in your DDÕs <security-role> elements.

DonÕt forget that you always need the <login-conÞg> element if you want to enable authentication.

7KH GHSOR\HU FUHDWHV UROH QDPH! HOHPHQWV LQ WKH '' VR WKDW WKH &RQWDLQHU FDQ PDS UROHV WR XVHUV

FKDSWHU

Chapter 12. Keep it secret, keep it safe Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 12. Keep it secret, keep it safe

ZHE DSS VHFXULW\

)]\PWZQbI\QWV ;\MX " LMNQVQVO ZM[W]ZKM UM\PWL KWV[\ZIQV\[ &INALLY THE COOL PART 4HIS IS WHERE WE GET TO SPECIFY DECLARATIVELY THAT A GIVEN RESOURCE METHOD COMBINATION IS ACCESSIBLE ONLY BY USERS IN CERTAIN ROLES -OST OF THE SECURITY WORK YOU LL DO IS PROBABLY WITH SECURITY CONSTRAINT ELEMENTS IN YOUR $$ ,OTS OF PICKY RULES LATER

VHFXULW\ FRQVWUDLQW! HOHPHQW LQ WKH '' ZHE DSS !

VHFXULW\ FRQVWUDLQW! ZHE UHVRXUFH FROOHFWLRQ!

This is a mandat y named used wonÕt see this naor me used anywhereby tools. You else...

ZHE UHVRXUFH QDPH!8SGDWH5HFLSHV ZHE UHVRXUFH QDPH! XUO SDWWHUQ! %HHU $GG5HFLSH XUO SDWWHUQ! XUO SDWWHUQ! %HHU 5HYLHZ5HFLSH XUO SDWWHUQ! KWWS PHWKRG!*(7 KWWS PHWKRG! KWWS PHWKRG!3267 KWWS PHWKRG! ZHE UHVRXUFH FROOHFWLRQ! DXWK FRQVWUDLQW! UROH QDPH!$GPLQ UROH QDPH! UROH QDPH!0HPEHU UROH QDPH! DXWK FRQVWUDLQW! VHFXULW\ FRQVWUDLQW! ZHE DSS!

%RWK RI XV DUH DOORZHG WR GR D *(7 DQG 3267 RQ WKH UHVRXUFHV LQ WKH %HHU $GG5HFLSH GLUHFWRU\ DQG WKH %HHU 5HYLHZ5HFLSH GLUHFWRU\

0HPEHU

The <url-patt the resources toern> elements deĂžne be CONSTRAINE D.

The <http-method> element(s) describe which HTTP methods are constrained (restricted) for the resources deĂžned by the URL

The optional <auth-constraint> element lists which roles CAN invo constrained HTTP Methodkes. the words, it says WHO is allow In other to do a GET and POST on the speciĂžed ed URL patterns. %XPPHU 0\ UROH JXHVW LV QRW OLVWHG XQGHU DXWK FRQVWUDLQW! VR , FDQQRW GR D *(7 RU 3267 RQ DQ\WKLQJ LQ WKRVH GLUHFWRULHV %XW , &$1 GR D 75$&( +($' 387

%HFDXVH WKH\¡UH LQ WKH ´0HPEHUÂľ UROH 'LDQH DQG $QQLH FDQ GR *(7 DQG 3267 RQ UHVRXUFHV WKDW Ă€ W WKH XUO SDWWHUQ! HOHPHQWV 7HG LV RQO\ D ´*XHVWÂľ VR KH FDQ¡W GR D *(7 RU 3267

$GPLQ

*XHVW \RX DUH KHUH

Chapter 12. Keep it secret, keep it safe Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 12. Keep it secret, keep it safe

VHFXULW\ FRQVWUDLQW! UXOHV

<PM $[MK]ZQ\a KWV[\ZIQV\& Z]TM[ NWZ $_MJ ZM[W]ZKM KWTTMK\QWV& MTMUMV\[ 2EMEMBER THE PURPOSE OF THE WEB RESOURCE COLLECTION SUB ELEMENT IS TO TELL THE CONTAINER WHICH RESOURCES AND (440 -ETHOD COMBINATIONS SHOULD BE CONSTRAINED 7E WISH WE COULD TELL YOU TO RELAX HERE BUT YOU REALLY DO NEED TO KNOW THE DETAILS OF THESE ELEMENTS )F YOU MAKE ONE LITTLE MISTAKE IN THE SECURITY PART OF YOUR $$ YOU COULD LEAVE THE MOST SENSITIVE PARTS OF YOUR APP OPEN TO EVERYONE 9OU MIGHT GET AWAY WITH AN UNATTRACTIVE WEB SITE BUT IF YOU SCREW UP SECURITY NO IT S TOO DISTURBING TO THINK ABOUT 7E RE JUST TRYING TO SCARE YOU INTO PAYING ATTENTION FOR THE NEXT FEW PAGES 7KH ZHE UHVRXUFH FROOHFWLRQ! VXE HOHPHQW RI VHFXULW\ FRQVWUDLQW! ZHE DSS !

C]q hgaflk YZgml 4o]Z%j]kgmj[]%[gdd][lagf6

7KH ZHE UHVRXUFH FROOHFWLRQ! HOHPHQW KDV WZR SULPDU\ VXE HOHPHQWV XUO SDWWHUQ! RQH RU PRUH KWWS PHWKRG! RSWLRQDO ]HUR RU PRUH

7KH 85/ SDWWHUQV DQG +773 0HWKRGV ZRUN WRJHWKHU WR GHILQH UHVRXUFH UHTXHVWV WKDW DUH FRQVWUDLQHG

$ ZHE UHVRXUFH QDPH! HOHPHQW LV 0$1'$725< HYHQ WKRXJK \RX SUREDEO\ ZRQ·W XVH LW IRU DQ\WKLQJ \RXUVHOI $VVXPH LW·V IRU ,'( RU IXWXUH XVH

$ GHVFULSWLRQ! HOHPHQW LV 237,21$/

<RX PXVW VSHFLI\ DW OHDVW RQH XUO SDWWHUQ! EXW \RX FDQ KDYH PDQ\

9DOLG 0HWKRGV IRU WKH KWWS PHWKRG! HOHPHQW DUH *(7 3267 387 75$&( '(/(7( +($' DQG 237,216

,I QR +773 0HWKRGV DUH VSHFLILHG WKHQ $// 0HWKRGV ZLOO EH FRQVWUDLQHG

,I \RX '2 VSHFLI\ DQ KWWS PHWKRG! WKHQ RQO\ WKRVH PHWKRGV VSHFLILHG ZLOO EH FRQVWUDLQHG ,Q RWKHU ZRUGV RQFH \RX VSHFLI\ HYHQ D VLQJOH KWWS PHWKRG! \RX DXWRPDWLFDOO\ HQDEOH DQ\ +773 0HWKRGV ZKLFK \RX KDYH QRW VSHFLILHG

<RX FDQ KDYH PRUH WKDQ RQH ZHE UHVRXUFH FROOHFWLRQ! HOHPHQW LQ WKH VDPH VHFXULW\ FRQVWUDLQW!

7KH DXWK FRQVWUDLQW! HOHPHQW DSSOLHV WR $// ZHE UHVRXUFH FROOHFWLRQ! HOHPHQWV LQ WKH VHFXULW\ FRQVWUDLQW!

VHFXULW\ FRQVWUDLQW! ZHE UHVRXUFH FROOHFWLRQ! ZHE UHVRXUFH QDPH! 8SGDWH5HFLSHV ZHE UHVRXUFH QDPH!

These are the directories with constraints.

XUO SDWWHUQ! %HHU $GG5HFLSH XUO SDWWHUQ! XUO SDWWHUQ! %HHU 5HYLHZ5HFLSH XUO SDWWHUQ! KWWS PHWKRG!*(7 KWWS PHWKRG! ZHE UHVRXUFH FROOHFWLRQ! DXWK FRQVWUDLQW! DXWK FRQVWUDLQW! VHFXULW\ FRQVWUDLQW! ZHE DSS!

If there were NO <http-method > elements, in the <web-resou rcecollection>, it would mean tha HTTP Methods are allow byt NO ANYONE in any role. Buted, e we DID put in one for GET, itsincmea ns that only GET is constrained , but anyone in any role can access POS (or the other HTTP Methods). T

7KH XUO SDWWHUQ! HOHPHQW XVHV VHUYOHW VWDQGDUG QDPLQJ DQG PDSSLQJ UXOHV UHIHU EDFN WR WKH GHSOR\PHQW FKDSWHU IRU GHWDLOV RQ 85/ SDWWHUQV

FKDSWHU

Chapter 12. Keep it secret, keep it safe Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 12. Keep it secret, keep it safe

ZHE DSS VHFXULW\

WKH 5(6285&( OHYHO &RQVWUDLQWV DUH QRW DW +773 5(48(67 OHYHO WKH DW DUH LQWV VWUD &RQ UHDOO\ WKH HV DUH FRQVWUDLQHG %XW LW¶V LQN WKDW UHVRXUFHV WKHPVHOY WR WK WLQJ ,W¶V WHPS 7KLV LV D FRQVWUDLQHG D\ ³ RX V HQ \ :K WKRG +773 0H FRPELQDWLRQ RI UHVRXUFH VWUDLQHG UHVRXUFH ZLWK \ VD\LQJ LV ³7KLV LV D FRQ E\ UHVRXUFH´ ZKDW \RX¶UH UHDOO WUDLQHG RQ DQ +773 PHWKRG FRQV D\V DOZ FH LV VRXU ROOHFWLRQ! UHVSHFW WR +773 *(7 ´ $ UH JXUH WKH ZHE UHVRXUFH F RQ¿ $1 F RX & JK \ OWKRX +773 0HWKRG EDVLV D \ E\ QRW SXWWLQJ LQ $1< KRGV DUH FRQVWUDLQHG VLPSO LQ VXFK D ZD\ WKDW $// 0HW HQWV KWWS PHWKRG! HOHP UROHV DUH DOORZHG WR HQW GRHV 127 GH¿ QH ZKLFK 7KH DXWK FRQVWUDLQW! HOHP Q! ,QVWHDG LW GH¿ QHV HFWLR FROO XUFH UHVR KH ZHE DFFHVV WKH UHVRXUFHV IURP W XHVW 'RQ¶W WKLQN RI LW DV UHT LQHG VWUD FRQ H WKH PDN ZKLFK UROHV DUH DOORZHG WR HUYOHW´ ,QVWHDG VD\ ³%RE LV DQ DFFHVV WKH $GG5HFLSH V HUYOHW ´ ³%RE LV D 0HPEHU VR %RE F HTXHVW RQ WKH $GG5HFLSH V 67 U U 32 (7 R H D * PDN D 0HPEHU VR %RE FDQ

,I \RX VSHFLI\ DQ K WWS PHWKRG! HOHPH QW DOO WKH +773 PHWKRGV \RX GR 12 7 VSHFLI\ DUH 81FRQ VWUDLQHG 7KH ZHE VHUYHU¶V MRE LV WR 6(59( VR WKH GH IDXOW DVVXPSWLRQ LV WKD +773 0HWKRGV WR EH 81 W \RX ZDQW WKH FRQVWUDLQHG XQOHVV \RX H[SOLFLWO\ VD\ XVLQJ KWWS PHWKRG! WKDW \RX ZDQW D PHWKRG WR EH FR QVWUDLQHG IRU WKH UHVRXUF PDWFK WKH XUO SDWWHUQ! HV WKDW

,I \RX SXW LQ 21/< DQ KWWS PHWKRG!*(7 KWWS LQ WKH VHFXULW\ FRQVWUDLQ PHWKRG! W WKHQ 3267 75$&( 387 HWF DUH QRW FRQV PHDQV DQ\ERG\ UHJDUGO WUDLQ HG 7KDW HVV RI VHFXULW\ UROH RU HYHQ UHJDUGOHVV RI Z LV DXWKHQWLFDWHG FDQ LQ KHWKHU WKH FOLHQW YRNH WKRVH +773 0HW KRGV %87 WKLV LV WUXH 21 /< LI \RX KDYH VSHFL¿ HG DW OHDVW RQH KWWS PHWKR ,I \RX GR 127 VSHFLI\ DQ G! HOHPHQW \ KWWS HOHPHQW! WKH Q \RX¶UH FRQVWUDLQLQJ $/ 0HWKRGV <RX¶OO SUREDE / +773 O\ QHYHU GR WKDW EHFDX VH WKH ZKROH SRLQW RI D V FRQVWUDLQW LV WR FRQVWUD HFXULW\ LQ VSHFL¿ F +773 UHTXHV WV RQ D SDUWLFXODU VHW R I UHVRXUFHV

2I FRXUVH +773 0HWKRG V ZRQ¶W ZRUN LQ D VHUYO HW XQOHVV \RX¶YH RYHUULGG GR;;; PHWKRG VR LI \ HQ WKH RX KDYH RQO\ D GR*HW

LQ \RXU VHUYOHW DQG \RX KWWS PHWKRG! HOHPHQW VSHFLI\ DQ IRU RQO\ *(7 QRERG\ FD Q GR D 3267 DQ\ZD\ VHUYHU NQRZV \RX GRQ¶W V EHFDXVH WKH XSSRUW 3267 6R ZH FDQ PRGLI\ WKH UXOH D OLWWOH WR VD\ DQ\ +773 0HWKRGV VXSSR VHUYOHW EHFDXVH \RX RY UWHG E\ \RXU HUURGH WKH PDWFKLQJ VHUY LFH PHWKRG ZLOO EH DOOR 81/(66 \RX GR RQH RI W ZHG ZR WKLQJV 'R QRW VSHFLI\ $1< KWWS PHWKRG! HOHPHQWV LQ WKH VHFXULW\ FRQVWUD PHDQV WKDW $// 0HWKRG LQW! ZKLFK V DUH FRQVWUDLQHG ([SOLFLWO\ OLVW WKH 0H WKRG XVLQJ WKH KWWS PH WKRG! HOHPHQW

\RX DUH KHUH

Chapter 12. Keep it secret, keep it safe Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 12. Keep it secret, keep it safe

DXWK FRQVWUDLQW! UXOHV

8QKSa $[MK]ZQ\a KWV[\ZIQV\& Z]TM[ NWZ $I]\P KWV[\ZIQV\& []J MTMUMV\[ %VEN THOUGH IT S GOT CONSTRAINT IN ITS NAME THIS IS THE SUB ELEMENT THAT SPECIlES WHICH ROLES ARE !,,/7%$ TO ACCESS THE WEB RESOURCES SPECIlED BY THE WEB RESOURCE COLLECTION SUB ELEMENT S

7KH DXWK FRQVWUDLQW! VXE HOHPHQW RI VHFXULW\ FRQVWUDLQW! ZHE DSS !

and that Adminlowed to This says ar h al t bo e r Membe resource/HTTP in access the mbinations deÞned . Method co-resource-collection> the <web say ÒGuestÓ, so It doesnÕt t allowed to make ÒGuestÓ isnÕrained requests. the const

VHFXULW\ FRQVWUDLQW! ZHE UHVRXUFH FROOHFWLRQ! ZHE UHVRXUFH FROOHFWLRQ!

DXWK FRQVWUDLQW! UROH QDPH!$GPLQ UROH QDPH! UROH QDPH!0HPEHU UROH QDPH! DXWK FRQVWUDLQW! VHFXULW\ FRQVWUDLQW! ZHE DSS!

4jgd]%fYe]6 jmd]k

:LWKLQ DQ DXWK FRQVWUDLQW! HOHPHQW WKH UROH QDPH! HOHPHQW LV 237,21$/

,I UROH QDPH! HOHPHQWV H[LVW WKH\ WHOO WKH &RQWDLQHU ZKLFK UROHV DUH $//2:('

4Yml`%[gfkljYafl6 jmd]k

:LWKLQ D VHFXULW\ FRQVWUDLQW! HOHPHQW WKH DXWK FRQVWUDLQW! HOHPHQW LV 237,21$/

,I DQ DXWK FRQVWUDLQW! H[LVWV WKH &RQWDLQHU 0867 SHUIRUP DXWKHQWLFDWLRQ IRU WKH DVVRFLDWHG 85/V

,I DQ DXWK FRQVWUDLQW! GRHV 127 H[LVW WKH &RQWDLQHU 0867 DOORZ XQDXWKHQWLFDWHG DFFHVV IRU WKHVH 85/V

)RU UHDGDELOLW\ \RX FDQ DGG D GHVFULSWLRQ! LQVLGH DXWK FRQVWUDLQW!

,I DQ DXWK FRQVWUDLQW! HOHPHQW H[LVWV ZLWK 12 UROH QDPH! HOHPHQW WKHQ 12 86(56 $5( $//2:('

,I UROH QDPH! UROH QDPH! WKHQ $// XVHUV DUH $//2:('

5ROH QDPHV DUH FDVH VHQVLWLYH

FKDSWHU

Chapter 12. Keep it secret, keep it safe Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 12. Keep it secret, keep it safe

ZHE DSS VHFXULW\

<PM _Ia $I]\P KWV[\ZIQV\& _WZS[ &RQWHQWV RI DXWK FRQVWUDLQW!

:KLFK UROHV KDYH DFFHVV

$GPLQ 0HPEHU DQG *XHVW

*XHVW

0HPEHU DQG *XHVW

VHFXULW\ FRQVWUDLQW!

DXWK FRQVWUDLQW! UROH QDPH!$GPLQ UROH QDPH! UROH QDPH!0HPEHU UROH QDPH! DXWK FRQVWUDLQW!

$GPLQ 0HPEHU

VHFXULW\ FRQVWUDLQW! VHFXULW\ FRQVWUDLQW!

DXWK FRQVWUDLQW! UROH QDPH!*XHVW UROH QDPH! DXWK FRQVWUDLQW!

*XHVW

VHFXULW\ FRQVWUDLQW!

VHFXULW\ FRQVWUDLQW!

DXWK FRQVWUDLQW! UROH QDPH! UROH QDPH! DXWK FRQVWUDLQW! VHFXULW\ FRQVWUDLQW!

,I WKHUH LV 12 DXWK FRQVWUDLQW!

(YHU\ERG\

These two have ct. the SAME effe (YHU\ERG\

VHFXULW\ FRQVWUDLQW!

DXWK FRQVWUDLQW !

1RERG\

in an empty Yikes! If you putles have access. ro NO en tag, th

VHFXULW\ FRQVWUDLQW!

! 037< DXWK FRQVWUDLQW LV WKH RSSRVLWH RI DQ ( 12 DXWK FRQVWUDLQW! FRQVWUDLQHG %XW RQFH WUDLQHG WKHQ 12 UROHV DUH ¶W VD\ ZKLFK UROHV DUH FRQV HG DFFHVV XQOHVV GRQ \RX DOORZ LV LI DUH HU WK WDWHG HPE LWO\ V 5HP HV H[SOLF QVWUDLQW! WKHQ 21/< WKH URO FFHVV \RX 0867 YH D R KD ROH W 1< U \RX '2 SXW LQ DQ DXWK FR DQW $ Q¶W Z WKH UROH QDPH! ,I \RX GR H[SOLFLWO\ VWDWLQJ WKH \RX XVH WKH ZLOGFDUG ³ ´ IRU V WHOOV WKH &RQWDLQHU ³, DP EXW MXVW OHDYH LW HPSW\ 7KL SXW LQ WKH DXWK FRQVWUDLQW ! D\ WKHUH DUHQ¶W DQ\ ´ UROHV DOORZHG DQG E\ WKH Z

\RX DUH KHUH

Chapter 12. Keep it secret, keep it safe Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 12. Keep it secret, keep it safe

ZKHQ VHFXULW\ FRQVWUDLQW!ÂśV FROOLGH

0W_ U]T\QXTM $[MK]ZQ\a KWV[\ZIQV\& MTMUMV\[ QV\MZIK\ *UST WHEN YOU THOUGHT YOU HAD SECURITY CONSTRAINT lGURED OUT YOU REALIZE THAT MULTIPLE SECURITY CONSTRAINT ELEMENTS MIGHT CONmICT ,OOK AT THE $$ FRAGMENTS BELOW AND IMAGINE THE DIFFERENT COMBINATIONS OF AUTH CONSTRAINT CONlGURATIONS THAT MIGHT BE USED 7HAT HAPPENS FOR EXAMPLE IF ONE SECURITY CONSTRAINT DENIES ACCESS WHILE ANOTHER SECURITY CONSTRAINT EXPLICITLY GRANTS ACCESS TO THE SAME CONSTRAINED RESOURCE FOR THE SAME ROLE 7HICH SECURITY CONSTRAINT WINS 4HE TABLE ON THE OPPOSITE PAGE HAS ALL THE ANSWERS

0XOWLSOH VHFXULW\ FRQVWUDLQW! HOHPHQWV ZLWK WKH VDPH RU SDUWO\ PDWFKLQJ 85/ SDWWHUQV DQG KWWS PHWKRG! HOHPHQWV ZHE DSS !

VHFXULW\ FRQVWUDLQW! ZHE UHVRXUFH FROOHFWLRQ! ZHE UHVRXUFH QDPH!5HFLSHV ZHE UHVRXUFH QDPH! XUO SDWWHUQ! %HHU 'LVSOD\5HFLSHV XUO SDWWHUQ! XUO SDWWHUQ! %HHU 8SGDWH5HFLSHV XUO SDWWHUQ! KWWS PHWKRG!3267 KWWS PHWKRG! ZHE UHVRXUFH FROOHFWLRQ!

$ VHFXULW\ FRQVWUDLQW!

VHFXULW\ FRQVWUDLQW! ZHE UHVRXUFH FROOHFWLRQ!

Both of these <security-constraint> elements specify resources deĂžned in Ă’/Beer/UpdateRecipes/*Ă“.

<auth-constraint> ZHE UHVRXUFH QDPH!8SGDWH elements with ZHE UHVRXUFH QDPH! different role names XUO SDWWHUQ! %HHU 8SGDWH5HFLSHV XUO SDWWHUQ! XUO SDWWHUQ! %HHU 8SGDWH8VHUV XUO SDWWHUQ! KWWS PHWKRG!3267 KWWS PHWKRG! ZHE UHVRXUFH FROOHFWLRQ!

%

VHFXULW\ FRQVWUDLQW! ZHE DSS!

+RZ VKRXOG WKH FRQWDLQHU KDQGOH DXWKRUL]DWLRQ ZKHQ WKH VDPH UHVRXUFH LV XVHG E\ PRUH WKDQ RQH VHFXULW\ FRQVWUDLQW!"

FKDSWHU

Chapter 12. Keep it secret, keep it safe Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 12. Keep it secret, keep it safe

ZHE DSS VHFXULW\

,]MTQVO $I]\P KWV[\ZIQV\& MTMUMV\[ )F TWO OR MORE SECURITY CONSTRAINT ELEMENTS HAVE PARTIALLY OR FULLY OVERLAPPING WEB RESOURCE COLLECTION ELEMENTS HERE S HOW THE CONTAINER RESOLVES ACCESS TO THE OVERLAPPING RESOURCES ! AND " REFER TO THE $$ ON THE PREVIOUS PAGE

&RQWHQWV RI $

&RQWHQWV RI %

DXWK FRQVWUDLQW! UROH QDPH!*XHVW UROH QDPH! DXWK FRQVWUDLQW!

DXWK FRQVWUDLQW! UROH QDPH!$GPLQ UROH QDPH! DXWK FRQVWUDLQW!

DXWK FRQVWUDLQW! UROH QDPH!*XHVW UROH QDPH! DXWK FRQVWUDLQW!

DXWK FRQVWUDLQW! UROH QDPH! UROH QDPH! DXWK FRQVWUDLQW!

DXWK FRQVWUDLQW ! y tag

DXWK FRQVWUDLQW! UROH QDPH!$GPLQ UROH QDPH! DXWK FRQVWUDLQW!

12 DXWK FRQVWUDLQW! HOHPHQW

DXWK FRQVWUDLQW! UROH QDPH!$GPLQ UROH QDPH! DXWK FRQVWUDLQW!

empt

:KR KDV $FFHVV WR ¶8SGDWH5HFLSHV· *XHVWV DQG $GPLQV

(YHU\ERG\

1RERG\

(YHU\ERG\

5XOHV IRU LQWHUSUHWLQJ WKLV WDEOH

:KHQ FRPELQLQJ LQGLYLGXDO UROH QDPHV DOO RI WKH UROH QDPHV OLVWHG ZLOO EH DOORZHG

$ UROH QDPH RI ´ ´ FRPELQHV ZLWK DQ\WKLQJ HOVH WR DOORZ DFFHVV WR HYHU\ERG\

$Q HPSW\ DXWK FRQVWUDLQW! WDJ FRPELQHV ZLWK DQ\WKLQJ HOVH WR DOORZ DFFHVV WR QRERG\ ,Q RWKHU ZRUGV DQ HPSW\ DXWK FRQVWUDLQW! LV DOZD\V WKH ILQDO ZRUG

,I RQH RI WKH VHFXULW\ FRQVWUDLQW! HOHPHQWV KDV QR DXWK FRQVWUDLQW! HOHPHQW LW FRPELQHV ZLWK DQ\WKLQJ HOVH WR DOORZ DFFHVV WR HYHU\ERG\

:KHQ WZR GLIIHUHQW QRQ HPSW\ DXWK FRQVWU DLQW! HOHPHQWV DSSO\ WR WK H VDPH FRQVWUDLQHG UHVRXUFH DFFHVV LV JUDQWHG WR WKH XQ LRQ RI DOO UROHV IURP ERWK RI WKH DXWK FRQVWUDLQW! HO HPHQWV \RX DUH KHUH

Chapter 12. Keep it secret, keep it safe Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 12. Keep it secret, keep it safe

VHFXULW\ FRQVWUDLQWV

WKHUH DUH QR

'XPE 4XHVWLRQV

4

) UNDERSTAND THAT PUTTING IN AN EMPTY AUTH CONSTRAINT ELE MENT TELLS THE #ONTAINER THAT ./"/$9 FROM ANY ROLE CAN ACCESS THE CONSTRAINED RESOURCE "UT ) DON T UNDERSTAND 7(9 YOU WOULD EVER DO THAT 7HAT GOOD IS A RESOURCE THAT NOBODY CAN ACCESS

$

7HEN WE SAID h./"/$9v WE MEANT h.OBODY FROM /543)$% THE WEB APPv )N OTHER WORDS A CLIENT CAN T ACCESS THE CONSTRAINED RESOURCE BUT ANOTHER PART OF THE WEB APP CAN 9OU MIGHT WANT TO USE A REQUEST DISPATCHER TO FORWARD TO ANOTHER PART OF THE WEB APP BUT YOU DON T EVER WANT CLIENTS TO REQUEST THAT RESOURCE DIRECTLY 4HINK OF CONSTRAINED RESOURCES AS SORT OF LIKE PRIVATE METHODS IN A *AVA CLASSˆFOR INTERNAL USE ONLY

4

7HY DOES THE AUTH CONSTRAINT ELEMENT GO INSIDE SECURITY CONSTRAINT BUT ./4 INSIDE THE WEB RESOURCE COLLECTION ELEMENT

$

4HIS WAY YOU CAN SPECIFY A SINGLE AUTH CONSTRAINT ELEMENT WHICH COULD INCLUDE MULTIPLE ROLES AND THEN SPECIFY MULTIPLE RESOURCE COLLECTIONS FOR WHICH THE AUTH CONSTRAINT ROLE LIST APPLIES &OR EXAMPLE YOU MIGHT DEFINE AN AUTH CONSTRAINT FOR A &REQUENT "UYER ROLE AND THEN PUT WEB RESOURCE COLLECTION ELEMENTS IN FOR THE ALL THE DIFFERENT PARTS OF THE WEB APP WHERE A &REQUENT "UYER GETS SPECIAL ACCESS

4

$O ) ACTUALLY HAVE TO SIT THERE AND TYPE IN EVERY ONE OF MY USERS WITH THEIR PASSWORDS AND ROLES

$

)F YOU RE USING THE TEST MEMORY REALM FROM 4OMCAT YES "UT CHANCES ARE IN THE REAL WORLD YOU RE USING A PRODUCTION SERVER THAT GIVES YOU A HOOK INTO THE ,$!0 OR DATABASE WHERE YOUR REAL USER SECURITY INFO IS STORED

FKDSWHU

Chapter 12. Keep it secret, keep it safe Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 12. Keep it secret, keep it safe

ZHE DSS VHFXULW\

)TQKMŸ[ ZMKQXM [MZ ^TM\ I [\WZa IJW]\ XZWOZIUUI\QK [MK]ZQ\a !LICE KNOWS THAT MOST OF THE TIME DECLARATIVE SECURITY IS THE WAY TO GO )T S mEXIBLE POWERFUL PORTABLE AND ROBUST !S WEB APPLICATION ARCHITECTURES HAVE EVOLVED INDIVIDUAL SERVLETS HAVE BECOME MORE AND MORE SPECIALIZED )N THE OLD DAYS A SINGLE SERVLET WOULD BE USED TO PROVIDE BUSINESS LOGIC TO SUPPORT EMPLOYEES AND MANAGERS 4ODAY THESE FUNCTIONS WOULD PROBABLY BE SPLIT INTO AT LEAST TWO DISTINCT SERVLETS "UT LUCKY !LICE HAS JUST INHERITED SOMEONE ELSE S h2ECIPE3ERVLETv !LICE HAS HEARD A RUMOUR THAT 2ECIPE3ERVLET USES PROGRAMMATIC SECURITY SO SHE STARTS LOOKING THROUGH THE SOURCE CODE AND lNDS THIS SNIPPET LI UHTXHVW LV8VHU,Q5ROH ³0DQDJHU´

^ GR WKH 8SGDWH5HFLSH SDJH Who came ` HOVH ^ GR WKH 9LHZ5HFLSH SDJH

name? up with ÒManagerÓ as a rolelet serv this te wro What if the guy who companyÕs roles? didnÕt know about your

`

6KDUSHQ \RXU SHQFLO :KDW DUH WKH LPSOLFDWLRQV" 7KLQN DERXW ZKDW \RX¡YH OHDUQHG VR IDU LQ WKLV FKDSWHU ORRN DW WKH VPDOO FRGH VQLSSHW DERYH DQG WU\ WR DQVZHU WKH TXHVWLRQV :KDW VHFXULW\ VWHS PXVW KDYH KDSSHQHG EHIRUH WKLV VQLSSHW UXQV" :KDW VHFXULW\ VWHS LV LPSOLHG E\ WKLV VQLSSHW" :KDW SDUW LI DQ\ GRHV WKH '' SOD\ LQ WKLV VQLSSHW" +RZ GR \RX WKLQN WKLV FRGH ZRUNV" :KDW LI WKH UROH RI ´0DQDJHU¾ GRHVQ¡W H[LVW LQ \RXU FRQWDLQHU"

\RX DUH KHUH

Chapter 12. Keep it secret, keep it safe Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 12. Keep it secret, keep it safe

WKH LV8VHU,Q5ROH PHWKRG

+][\WUQbQVO UM\PWL[" Q[=[MZ1V:WTM )N (TTP3ERLVET2EQUEST THREE METHODS ARE ASSOCIATED WITH PROGRAMMATIC SECURITY GET5SER0RINCIPAL WHICH IS MAINLY USED WITH %*"S 7E WON T COVER IT IN THIS BOOK

GET2EMOTE5SER WHICH CAN BE USED TO CHECK AUTHENTICATION STATUS )T S NOT COMMONLY USED SO WE DON T COVER IT IN THIS BOOK AND THERE S NOTHING ELSE YOU NEED TO KNOW ABOUT IT FOR THE EXAM IS5SER)N2OLE WHICH WE LL LOOK AT NOW )NSTEAD OF AUTHORIZING AT THE (440 METHOD LEVEL '%4 0/34 ETC YOU CAN AUTHORIZE ACCESS TO PORTIONS OF A METHOD 4HIS GIVES YOU A WAY TO CUSTOMIZE HOW A SERVICE METHOD BEHAVES BASED ON THE USER S ROLE )F YOU RE IN THIS SERVICE METHOD DO'ET DO0OST ETC THEN THE USER MADE IT THROUGH THE DECLARATIVE AUTHORIZATION BUT NOW YOU WANT TO DO SOMETHING IN THE METHOD CONDITIONALLY BASED ON WHETHER THE USER IS IN A PARTICULAR ROLE

, MXVW JRW WKLV VHUYOHW IURP 6WDQ LQ DFFRXQWLQJ DQG KH·V KDUG FRGHG UROHV WKDW ZH GRQ·W HYHQ KDYH :KDW WKH LV D VXSHU&XVWRPHU" 1R ZD\ DP , JRQQD UHGHÀQH DOO WKH UROHV LQ P\ FRQWDLQHU MXVW VR , FDQ XVH 6WDQ·V VWXSLG VHUYOHW

+RZ LW ZRUNV

%HIRUH LV8VHU,Q5ROH LV FDOOHG WKH XVHU QHHGV WR EH DXWKHQWLFDWHG ,I WKH PHWKRG LV FDOOHG RQ D XVHU WKDW KDV QRW EHHQ DXWKHQWLFDWHG WKH &RQWDLQHU ZLOO DOZD\V UHWXUQ IDOVH

7KH &RQWDLQHU WDNHV WKH LV8VHU,Q5ROH DUJXPHQW LQ WKLV H[DPSOH ´0DQDJHUµ DQG FRPSDUHV LW WR WKH UROHV GHILQHG IRU WKH XVHU LQ WKLV UHTXHVW

,I WKH XVHU LV PDSSHG WR WKLV UROH WKH &RQWDLQHU UHWXUQV WUXH

+RZ GR \RX PDWFK XS UROHV LQ WKH '' ZLWK UROHV LQ D VHUYOHW"

7E DO HOWEVER KNOW OF THIS REALLY NICE %*" BOOK

FKDSWHU

Chapter 12. Keep it secret, keep it safe Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 12. Keep it secret, keep it safe

ZHE DSS VHFXULW\

<PM LMKTIZI\Q^M [QLM WN XZWOZIUUI\QK [MK]ZQ\a 4HERE S A GOOD CHANCE THAT WHEN A PROGRAMMER HARD CODES SECURITY ROLE NAMES IN A SERVLET TO USE AS THE ARGUMENT TO IS5SER)N2OLE THE PROGRAMMER WAS JUST MAKING UP A FAKE NAME (E EITHER DIDN T KNOW THE REAL ROLE NAMES OR HE S WRITING A REUSABLE COMPONENT THAT LL BE USED BY MORE THAN ONE COMPANY AND THOSE COMPANIES AREN T LIKELY TO HAVE THE EXACT ROLE NAMES THE PROGRAMMER USED /F COURSE IF THE PROGRAMMER REALLY WANTS TO BUILD REUSABLE COMPONENTS HARD CODING A ROLE NAME IS A 4ERRIBLE )DEA BUT WE LL SUSPEND DISBELIEF FOR NOW )T TURNS OUT THAT THE $EPLOYMENT $ESCRIPTOR HAS A MECHANISM FOR MAPPING HARD CODED WHICH MEANS

MADE UP ROLE NAMES IN A SERVLET TO THE hOFl CIALv SECURITY ROLE DECLARATIONS IN YOUR #ONTAINER )MAGINE FOR EXAMPLE THAT THE PROGRAMMER USED h-ANAGERv AS THE IS5SER)N2OLE ARGUMENT BUT YOUR COMPANY USES h!DMINv AS THE SECURITY ROLE AND YOU DON T EVEN HAVE A h-ANAGERv SECURITY ROLE 3O EVEN IF YOU CAN T STOP A PROGRAMMER FROM HARD CODING A ROLE NAME YOU AT LEAST HAVE A WORK AROUND WHEN THE HARD CODED ROLES DON T MATCH YOUR REAL ROLE NAMES "ECAUSE EVEN IF YOU DO HAVE THE SERVLET SOURCE CODE DO YOU REALLY WANT TO CHANGE RECOMPILE AND RETEST YOUR CODE JUST TO CHANGE EVERY INSTANCE OF h-ANAGERv TO h!DMINv

,Q WKH VHUYOHW

,Q WKH ''

LI UHTXHVW LV8VHU,Q5ROH ³0DQDJHU´

^ GR WKH 8SGDWH5HFLSH SDJH ` HOVH ^ GR WKH 9LHZ5HFLSH SDJH `

curity-role-ref>ere In this case if thewo<se fail because th uld didnÕt exist, this ole> named ÒManagerÓ. -r ity cur <se is no

ZHE DSS ! VHUYOHW! VHFXULW\ UROH UHI! UROH QDPH! UROH QDPH!0D 0DQDJHU UROH QDPH! UROH OLQN!$GPLQ PL UROH OLQN! VHFXULW\ UROH UHI! VHUYOHW! ZHE DSS! ZHE DSS ! VHFXULW\ UROH! ! UROH QDPH!$GPLQ UROH QDPH! UROH QDPH!0HPEHU UROH QDPH! UROH QDPH!*XHVW UROH QDPH! VHFXULW\ UROH! ef> element ZHE DSS! The <security-role-r

H D VHFXULW\ UROH UHI! 7KH &RQWDLQHU ZLOO XV DWFKHV SURJUDPPDWLF QDPH P PDSSLQJ HYHQ ,) WKH H QDP ROH! LW\ U D ´UHDO¾ VHFXU ´ LW ORRNV ),567 IRU D UJXPHQW WR ³LV8VHU,Q5ROH

HQ ZKHQ WKH :KHQ WKH &RQWDLQHU KLWV DQ D RQH WKDWœV ZKDW LW XVHV HY QGV LW ¿ I! ,I H UH \ URO FXULW 7KLQN DERXW LW² PDWFKLQJ VH DPH OH! Q LW\ UR HFXU D V (6 PDWFK KDUG FRGHG QDPH UHDOO\ '2 U FRPSDQ\ EXW LW PLJKW DQDJHU´ VHFXULW\ UROH LQ \RX \RX PLJKW UHDOO\ +$9( D ³0 JUDPPHU LQWHQGHG 6R H SUR DW WK Q ZK W WKD IHUHQ \ GLI PHDQ VRPHWKLQJ FRPSOHWHO ´ WR ³$GPLQ´ DQG WKHQ PDS DJHU ³0DQ GHG UG FR S KD \RX FRXOG IRU H[DPSOH PD ROH UHI! DOZD\V ZLQV DQDJHU´ 6R WKH VHFXULW\ U D KDUG FRGHG ³'LUHFWRU´ WR ³0 PH! OH QD H UR VDP ZKHQ ERWK LQFOXGH WKH

rdmaps programmaticto(hadeclarative es nam e rol coded) nts. <security-role> eleme

\RX DUH KHUH

Chapter 12. Keep it secret, keep it safe Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 12. Keep it secret, keep it safe

VHFXULW\ H[HUFLVH

6KDUSHQ \RXU SHQFLO

$VVXPH DOO VHFXULW\ FRQVWUDLQWV EHORZ KDYH WKH VDPH XUO SDWWHUQ! DQG KWWS PHWKRG! HOHPHQWV %DVHG RQ WKH FRPELQDWLRQV VKRZQ GHFLGH ZKR FDQ GLUHFWO\ DFFHVV WKH FRQVWUDLQHG UHVRXUFH

1RERG\ *XHVW 0HPEHU $GPLQ (YHU\RQH

VHFXULW\ FRQVWUDLQW! DXWK FRQVWUDLQW!

UROH QDPH!*XHVW UROH QDPH! DXWK FRQVWUDLQW! VHFXULW\ FRQVWUDLQW!

VHFXULW\ FRQVWUDLQW! DXWK FRQVWUDLQW ! VHFXULW\ FRQVWUDLQW! VHFXULW\ FRQVWUDLQW! DXWK FRQVWUDLQW!

UROH QDPH!$GPLQ UROH QDPH! DXWK FRQVWUDLQW! VHFXULW\ FRQVWUDLQW! VHFXULW\ FRQVWUDLQW! DXWK FRQVWUDLQW!

UROH QDPH!*XHVW UROH QDPH! DXWK FRQVWUDLQW! VHFXULW\ FRQVWUDLQW!

VHFXULW\ FRQVWUDLQW!

DXWK FRQVWUDLQW! UROH QDPH!*XHVW UROH QDPH! DXWK FRQVWUDLQW! VHFXULW\ FRQVWUDLQW! VHFXULW\ FRQVWUDLQW!

DXWK FRQVWUDLQW! UROH QDPH! UROH QDPH! DXWK FRQVWUDLQW! VHFXULW\ FRQVWUDLQW!

VHFXULW\ FRQVWUDLQW! DXWK FRQVWUDLQW!

UROH QDPH!0HPEHU UROH QDPH! DXWK FRQVWUDLQW! VHFXULW\ FRQVWUDLQW! VHFXULW\ FRQVWUDLQW! VHFXULW\ FRQVWUDLQW!

$VVXPH WKDW 12 DXWK FRQVWUDLQW! LV GHILQHG

VHFXULW\ FRQVWUDLQW! DXWK FRQVWUDLQW!

UROH QDPH!0HPEHU UROH QDPH! DXWK FRQVWUDLQW! VHFXULW\ FRQVWUDLQW! VHFXULW\ FRQVWUDLQW! DXWK FRQVWUDLQW ! VHFXULW\ FRQVWUDLQW!

FKDSWHU

Chapter 12. Keep it secret, keep it safe Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 12. Keep it secret, keep it safe

ZHE DSS VHFXULW\

2. VR , NQRZ DOO DERXW DXWKRUL]DWLRQ EXW , VWLOO GRQ·W NQRZ KRZ DXWKHQWLFDWLRQ KDSSHQV RU H[DFWO\ ZKDW , KDYH WR GR WR PDNH WKH &RQWDLQHU DVN IRU D QDPH DQG SDVVZRUG

)]\PMV\QKI\QWV ZM^Q[Q\ML &OR A * %% #ONTAINER AUTHENTICATION COMES DOWN TO THIS ASK FOR A USER NAME AND PASSWORD THEN VERIFY THAT THEY MATCH 4HE lRST TIME AN UN AUTHENTICATED USER ASKS FOR A CONSTRAINED RESOURCE THE #ONTAINER WILL AUTOMATICALLY START THE AUTHENTICATION PROCESS 4HERE ARE FOUR TYPES OF AUTHENTICATION THE #ONTAINER CAN PROVIDE AND THE MAIN DIFFERENCE BETWEEN THEM IS h(OW SECURELY IS THE NAME AND PASSWORD INFO TRANSMITTED v

7KH )285 DXWKHQWLFDWLRQ W\SHV "!3)# AUTHENTICATION TRANSMITS THE LOGIN INFORMATION IN AN ENCODED NOT ENCRYPTED FORM 4HAT MIGHT SOUND SECURE BUT YOU PROBABLY ALREADY KNOW THAT SINCE THE ENCODING SCHEME BASE IS REALLY WELL KNOWN "!3)# PROVIDES VERY WEAK SECURITY $)'%34 AUTHENTICATION TRANSMITS THE LOGIN INFORMATION IN A MORE SECURE WAY BUT BECAUSE THE ENCRYPTION MECHANISM ISN T WIDELY USED * %% CONTAINERS AREN T REQUIRED TO SUPPORT IT &OR MORE INFO ON $)'%34 AUTHENTICATION CHECK OUT THE )%4& 2&# WWW IETF ORG RFC RFC TXT #,)%.4 #%24 AUTHENTICATION TRANSMITS THE LOGIN INFORMATION IN AN EXTREMELY SECURE FORM USING 0UBLIC +EY #ERTIlCATES 0+# 4HE DOWNSIDE TO THIS MECHANISM IS THAT YOUR CLIENTS NEED TO HAVE A CERTIlCATE BEFORE THEY CAN LOGIN TO YOUR SYSTEM )T S FAIRLY RARE FOR CONSUMERS TO HAVE A CERTIlCATE SO #,)%.4 #%24 AUTHENTICATION IS USED MAINLY IN BUSINESS TO BUSINESS SCENARIOS 4HE THREE TYPES ABOVEˆ"!3)# $)'%34 AND #,)%.4 #%24ˆ ALL USE THE BROWSER S STANDARD POP UP FORM FOR INPUTTING THE NAME AND PASSWORD "UT THE FOURTH TYPE &/2- IS DIFFERENT &/2- AUTHENTICATION LETS YOU CREATE YOUR OWN CUSTOM LOGIN FORM OUT OF ANYTHING THAT S LEGAL (4-, "UT OF ALL FOUR TYPES THE FORM BASED INFO IS TRANSMITTED IN THE LEAST SECURE WAY 4HE USERNAME AND PASSWORD ARE SENT BACK IN THE (440 REQUEST WITH NO ENCRYPTION

\RX DUH KHUH

Chapter 12. Keep it secret, keep it safe Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 12. Keep it secret, keep it safe

GHFODUDWLYH DXWKHQWLFDWLRQ

1UXTMUMV\QVO )]\PMV\QKI\QWV 4HIS IS THE SIMPLE PARTˆSIMPLY DECLARE THE AUTHENTICATION SCHEME IN THE $$ 4HE MAIN $$ ELEMENT FOR AUTHENTICATION IS LOGIN CONlG )RXU ORJLQ FRQĂ€J! H[DPSOHV ZHE DSS !

...

ORJLQ FRQÂżJ! DXWK PHWKRG!%$6,& DXWK PHWKRG! ORJLQ FRQÂżJ! ZHE DSS! ZHE DSS !

Âł RU Âł

...

ORJLQ FRQÂżJ! DXWK PHWKRG!',*(67 DXWK PHWKRG! ORJLQ FRQÂżJ!

ZHE DSS!

youÕve declared BASIC is basic. OnrceDD, the container you in nt me ele is th omatically requesting will do the rest, autswo rd when a pas and me rna a use requested. is ce our res ed ain constr

If your container supports DIGEST, it will handle ALL the details.

Âł RU Âł

ZHE DSS !

...

ORJLQ FRQÂżJ! DXWK PHWKRG!&/,(17 &(57 DXWK PHWKRG! ORJLQ FRQÂżJ!

ZHE DSS! ZHE DSS !

...

CLIENT is easy to conĂžgure, but your clients must have certiĂžcates. It does give you EXTRA-STRENGTH protection !

Âł RU Âł

ORJLQ FRQÂżJ! FORM is the DXWK PHWKRG!)250 DXWK PHWKRG! to implement; IRUP ORJLQ FRQÂżJ! detail on the IRUP ORJLQ SDJH! ORJLQ3DJH KWPO IRUP ORJLQ SDJH! IRUP HUURU SDJH! ORJLQ(UURU KWPO IRUP HUURU SDJH! IRUP ORJLQ FRQÂżJ! ORJLQ FRQÂżJ!

most complicated weÕll look at it in next page.

ZHE DSS!

([FHSW IRU )250 RQFH \RX¡YH GHFODUHG WKH ORJLQ FRQILJ! HOHPHQW LQ WKH '' LPSOHPHQWLQJ $XWKHQWLFDWLRQ LV GRQH $VVXPLQJ \RX¡YH DOUHDG\ FRQILJXUHG XVHUQDPH SDVVZRUG UROH LQIR LQWR \RXU VHUYHU

FKDSWHU

Chapter 12. Keep it secret, keep it safe Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 12. Keep it secret, keep it safe

ZHE DSS VHFXULW\

.WZU *I[ML )]\PMV\QKI\QWV !LTHOUGH THERE S MORE TO IMPLEMENTING IT THAN WITH THE OTHER FORMS OF AUTHENTICATION &/2- BASED ISN T THAT BAD &IRST YOU CREATE YOUR OWN CUSTOM (4-, FORM FOR THE USER LOGIN ALTHOUGH THIS CAN CERTAINLY BE GENERATED BY A *30 4HEN YOU CREATE A CUSTOM (4-, ERROR PAGE FOR THE #ONTAINER TO USE WHEN THE USER MAKES A LOGIN ERROR &INALLY YOU TIE THE TWO FORMS TOGETHER IN THE $$ USING THE LOGIN CONl G ELEMENT .OTE IF YOU RE USING &ORM BASED AUTHENTICATION BE SURE TO TURN ON 33, OR SESSION TRACKING OR YOUR #ONTAINER MIGHT NOT RECOGNIZE THE LOGIN FORM WHEN IT S RETURNED

:KDW <28 GR

'HFODUH ORJLQ FRQ¿ J! LQ WKH ''

&UHDWH DQ +70/ ORJLQ IRUP

&UHDWH DQ +70/ HUURU IRUP

,Q WKH ''

7KUHH HQWULHV LQ WKH +70/ ORJLQ IRUP DUH WKH NH\ WR FRPP XQLFDWLQJ ZLWK WKH FRQW DLQHU MBVHFXULW\BF KHFN MBXVHUQDPH MBSDVVZRUG

ORJLQ FRQ¿ J! DXWK PHWKRG!)250 DXWK PHWKRG! IRUP ORJLQ FRQ¿ J! IRUP ORJLQ SDJH! ORJLQ3DJH KWPO IRUP ORJLQ SDJH! H! O IRUP HUURU SDJH! ORJLQ(UURU KWPO IRUP HUURU SDJH! SDJH IRUP ORJLQ FRQ¿ FRQ J! ORJLQ FRQ¿ J!

the work, the action of_check ty For the container to uri sec j_ be: ST HTML login form MU

LQ P ,QVLGH WKH ORJLQ3DJH KWPO 3OHDVH ORJLQ GDGG\ R

IRUP PHWKRG ´3267´ DFWLRQ LR ´MBVHFXULW\BFKHFN´! LQSXW W\SH ´WH[W´ QDPH DP ´MBXVHUQDPH´! LQSXW W\SH ´SDVVZRUG´ UG QDPH ´MBSDVVZRUG´! LQSXW W\SH ´VXEPLW´ YDOXH ´(QWHU´! W´ IRUP!

,QVLGH WKH ORJLQ(UURU KWPO KWPO! ERG\! 6RUU\ GXGH ZURQJ SDVVZRUG ERG\! KWPO!

The Container requires that the HTTP request will store the user name in: j_username

The container requires that the HTTP request will store the password in: j_password

'RQ·W UHOD[

<RX QHHG WR NQRZ HYHU\WKLQJ RQ WKLV SDJH IRU WKH H[DP \RX DUH KHUH

Chapter 12. Keep it secret, keep it safe Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 12. Keep it secret, keep it safe

DXWKHQWLFDWLRQ W\SHV

;]UUIZa WN )]\PMV\QKI\QWV \aXM[ 4HIS TABLE SUMMARIZES KEY ATTRIBUTES OF THE FOUR AUTHENTICATION TYPES h3PECv REFERS TO WHETHER THIS TYPE OF AUTHENTICATION MECHANISM IS DElNED IN THE (440 SPEC OR THE * %% SPEC (INT YOU LL NEED TO REMEMBER THIS TABLE WHEN YOU TAKE THE EXAM

7\SH 6SHF 'DWD ,QWHJULW\

&RPPHQWV

%$6,&

+773

%DVH ZHDN

+773 VWDQGDUG DOO EURZVHUV VXSSRUW LW

',*(67

+773

6WURQJHU EXW QRW 66/

2SWLRQDO IRU +773 DQG - (( FRQWDLQHUV

)250

- ((

9HU\ ZHDN QR HQFU\SWLRQ

$OORZV D FXVWRP ORJLQ VFUHHQ

6WURQJ SXEOLF NH\ 3.&

6WURQJ EXW XVHUV PXVW KDYH FHUWL¿FDWHV

&/,(17 - (( &(57

WKHUH DUH QR

6KDUSHQ \RXU SHQFLO

'XPE 4XHVWLRQV

4

)LOO LQ WKH PLVVLQJ SLHFHV IRU WKLV )250 EDVHG DXWKHQWLFDWLRQ DSS 7KLV LV MXVW WR KHOS \RX PHPRUL]H WKH DXWKHQWLFDWLRQ UHODWHG SLHFHV RI WKH '' DQG WKH +70/ IRUP 7KH DQVZHUV DUH RQ WKH SUHYLRXV SDJH

7HAT DOES DATA INTEGRITY HAVE TO DO WITH !UTHENTICATION

$

7HEN YOU RE AUTHENTICATING A USER SHE S SENDING YOU HER USERNAME AND PASSWORD $ATA INTEGRITY AND CONFIDENTIALITY REFERS TO THE DEGREE TO WHICH AN EAVESDROPPER CAN STEAL OR TAMPER WITH THIS INFORMATION )N A MOMENT WE LL TALK ABOUT HOW TO IMPLEMENT DATA INTEGRITY AND CONFIDENTIALITY DURING LOGIN

$ATA INTEGRITY MEANS THAT THE DATA THAT ARRIVES IS THE SAME AS THE DATA THAT WAS SENT )N OTHER WORDS NOBODY TAMPERED WITH IT ALONG THE WAY $ATA CONFIDENTIALITY MEANS THAT NOBODY ELSE CAN SEE THE DATA ALONG THE WAY -OST OF THE TIME THOUGH WE TREAT DATA INTEGRITY AND CONFIDENTIALITY AS A SINGLE GOALˆTHINGS YOU DO TO PROTECT DATA DURING TRANSMISSION

'' ORJLQ FRQ¿J! DXWK PHWKRG! DXWK PHWKRG! IRUP ORJLQ FRQ¿J! ! ORJLQ3DJH KWPO ! IRUP HUURU SDJH! ORJLQ(UURU KWPO IRUP HUURU SDJH! IRUP ORJLQ FRQ¿J! ORJLQ FRQ¿J!

+70/ 3OHDVH ORJLQ GDGG\ R IRUP PHWKRG ´3267´ DFWLRQ ! LQSXW W\SH ´WH[W´ QDPH ! LQSXW W\SH ´SDVVZRUG´ QDPH ´MBSDVVZRUG´! LQSXW W\SH ´VXEPLW´ YDOXH ´(QWHU´! IRUP!

FKDSWHU

Chapter 12. Keep it secret, keep it safe Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 12. Keep it secret, keep it safe

ZHE DSS VHFXULW\

)RUP EDVHG DXWKHQWLFDWLRQ GRHVQ·W KDYH DQ\ SURWHFWLRQ IRU WKH GDWD %XW , GRQ·W ZDQW WR XVH WKH XJO\ EURZVHU ORJLQ ZLQGRZ WKDW WKH RWKHU WKUHH DXWKHQWLFDWLRQ W\SHV XVH 2K LI RQO\ WKHUH ZHUH D ZD\ WR XVH P\ RZQ FXVWRP ORJLQ IRUP EXW VWLOO SURWHFW WKH XVHUQDPH DQG SDVVZRUG ZKHQ WKH\·UH VHQW EDFN

;PM LWM[V¼\ SVW_ IJW]\ 2 --¼[ ¹XZW\MK\ML \ZIV[XWZ\ TIaMZ KWVVMK\QWVº $ON T 0ANIC 9OU CAN HAVE YOUR CUSTOM LOGIN CAKE AND SECURE IT TOO ,OGIN DATA IS STILL DATA SO YOU CAN SECURE IT IN THE SAME WAY YOU D WANT TO PROTECT AN ONLINE SHOPPER S CREDIT CARD NUMBERˆUSING YOUR * %% COMPLIANT #ONTAINER S DATA INTEGRITY AND CONl DENTIALITY FEATURES

\RX DUH KHUH

Chapter 12. Keep it secret, keep it safe Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 12. Keep it secret, keep it safe

VHFXUH WUDQVSRUW

;MK]ZQVO LI\I QV \ZIV[Q\" 0<<8; \W \PM ZM[K]M 7HEN YOU TELL A * %% #ONTAINER THAT YOU WANT TO IMPLEMENT DATA CONl DENTIALITY AND OR INTEGRITY THE * %% SPEC GUARANTEES THAT THE DATA TO BE TRANSMITTED WILL TRAVEL OVER A hPROTECTED TRANSPORT LAYER CONNECTIONv )N OTHER WORDS #ONTAINERS ARE NOT REQUIRED TO USE ANY SPECIl C PROTOCOL TO HANDLE SECURE TRANSMISSIONS BUT IN PRACTICE THEY NEARLY ALL USE (4403 OVER 33,

+773 UHTXHVW³QRW VHFXUHG +773 RYHU 7&3

ZHE VHUYHU

3267 &KHFN2XW MVS >UHTXHVW KHDGHUV@ FUHGLW&DUG1XP H[S' DWH

FRQWDLQHU

7KH %DG (DYHVGURSSHU JHWV D FRS\ RI WKH +773 UHTXHVW WKDW FRQWDLQV WKH FOLHQW·V FUHGLW FDUG LQIR 7KH GDWD LVQ·W SURWHFWHG VR LW FRPHV RYHU LQ WKH ERG\ RI WKH 3267 LQ D QLFH UHDGDEOH IRUP 7KH (DYHVGURSSHU LV KDSS\

3267 DGYLVRU 6HOHFW%HHU7DVWH GR +773 >UHTXHVW KHDGHUV KHUH@

FUHGLW&DUG1XP H[S'DWH

$ VHFXUHG +7736 RYHU 66/ UHTXHVW +7736 RYHU 66/ RYHU 7&3

ZHE VHUYHU 7KH %DG (DYHVGURSSHU JHWV D FRS\ RI WKH +773 UHTXHVW WKDW FRQWDLQV WKH FOLHQW·V FUHGLW FDUG LQIR

3267 &KHFN2XW MVS H [ I J JZ; VGI# I G OGG I G OGG

FRQWDLQHU

%XW EHFDXVH LW ZDV VHQW ZLWK H[WUD VWUHQJWK +7736 RYHU 66/ KH &$1127 UHDG WKH LQIRUPDWLRQ

FKDSWHU

Chapter 12. Keep it secret, keep it safe Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 12. Keep it secret, keep it safe

ZHE DSS VHFXULW\

'R 127 WHOO PH WKDW LI , FKRRVH WR XVH GDWD SURWHFWLRQ LW HQFU\SWV (9(5< UHTXHVW DQG UHVSRQVH LQ P\ DSS

6KDUSHQ \RXU SHQFLO 'R \RX QHHG IRU HYHU\ UHTXHVW DQG UHVSRQVH WR EH VHFXUH" ,I QRW ZKLFK SDUWV RI \RXU DSS QHHG SURWHFWHG WUDQVPLVVLRQV"

7KLQN DERXW ZKDW·V EHHQ FRYHUHG LQ WKLV FKDSWHU ,I \RXU ZHE DSSOLFDWLRQ LV JRLQJ WR EH IDVW HIILFLHQW DQG VHFXUH \RX·YH JRW VRPH TXHVWLRQV WR DQVZHU WKHUH DUH QR DQVZHUV IRU WKLV RQH LW·V IRU \RX WR ILJXUH RXW

:KDW GR \RX WKLQN GDWD FRQILGHQWLDOLW\ PHDQV"

:KDW GR \RX WKLQN GDWD LQWHJULW\ PHDQV" ,I \RX FRXOG DSSO\ WUDQVPLVVLRQ VHFXULW\ PHDVXUHV WR RQO\ VRPH UHTXHVWV DQG UHVSRQVHV KRZ ZRXOG \RX ZDQW WR WHOO WKH &RQWDLQHU ZKLFK UHTXHVWV DQG UHVSRQVHV"

&DQ \RX WKLQN RI DQ\ RWKHU '' HOHPHQWV WKDW ZRUN RQ WKH VDPH OHYHO RI JUDQXODULW\ WKDW \RX ZDQW IRU GHFODULQJ SURWHFWHG WUDQVPLVVLRQV" \RX DUH KHUH

Chapter 12. Keep it secret, keep it safe Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 12. Keep it secret, keep it safe

FRQÂżGHQWLDOLW\ DQG LQWHJULW\

0W_ \W QUXTMUMV\ LI\I KWVNQLMV\QITQ\a IVL QV\MOZQ\a [XIZQVOTa IVL LMKTIZI\Q^MTa /NCE AGAIN WE TURN TO THE $$ )N FACT WE LL USE OUR OLD FRIEND SECURITY CONSTRAINT FOR BOTH CONFIDENTIALITY AND INTEGRITY BY ADDING AN ELEMENT CALLED USER DATA CONSTRAINT !ND WHEN YOU THINK ABOUT IT IT MAKES SENSEˆIF YOU RE THINKING ABOUT AUTHORIZATION FOR A RESOURCE YOU RE PROBABLY GOING TO CONSIDER WHETHER YOU WANT THE DATA TRANSMITTED SECURELY ZHE DSS !

...

VHFXULW\ FRQVWUDLQW! ZHE UHVRXUFH FROOHFWLRQ! ZHE UHVRXUFH QDPH!5HFLSHV ZHE UHVRXUFH QDPH! XUO SDWWHUQ! %HHU 8SGDWH5HFLSHV XUO SDWWHUQ! KWWS PHWKRG!3267 KWWS PHWKRG! ZHE UHVRXUFH FROOHFWLRQ! DXWK FRQVWUDLQW! UROH QDPH!0HPEHU UROH QDPH! DXWK FRQVWUDLQW!

ta integrity and This is it! All of da ndled in the conĂždentiality is ha int> element. ra nst co aat -d <user

XVHU GDWD FRQVWUDLQW! WUDQVSRUW JXDUDQWHH!&21),'(17,$/ WUDQVSRUW JXDUDQWHH! XVHU GDWD FRQVWUDLQW! VHFXULW\ FRQVWUDLQW! ZHE DSS!

3XW WKHVH WKUHH VXE HOHPHQWV WRJHWKHU WR UHDG 2QO\ 0HPEHUV FDQ PDNH 3267 UHTXHVWV WR UHVRXUFHV IRXQG LQ WKH 8SGDWH5HFLSHV GLUHFWRU\ DQG PDNH VXUH WKH WUDQVPLVVLRQ LV VHFXUH

/HJDO YDOXHV IRU WUDQVSRUW JXDUDQWHH!

cify YouÕll probably neverd spe no need be reÕ the ce sin , NE NO straint> con adat er<us a e to hav protect to ng nni pla not Õre if you the data!

121( 7KLV LV WKH GHIDXOW DQG LW PHDQV WKHUH¡V QR GDWD SURWHFWLRQ ,17(*5$/ 7KH GDWD PXVW QRW EH FKDQJHG DORQJ WKH ZD\ &21),'(17,$/ 7KH GDWD PXVW QRW EH VHHQ E\ DQ\ERG\ DORQJ WKH ZD\

127( DOWKRXJK QRW JXDUDQWHHG E\ WKH VSHF LQ SUDFWLFH YLUWXDOO\ HYHU\ &RQWDLQHU XVHV 66/ IRU JXDUDQWHHG WUDQVSRUW ZKLFK PHDQV WKDW ERWK ,17(*5$/ DQG &21),'(17,$/ GR WKH VDPH WKLQJ³HLWKHU RQH JLYHV \RX ERWK FRQILGHQWLDOLW\ DQG LQWHJULW\ 6LQFH \RX FDQ KDYH RQO\ RQH XVHU GDWD FRQVWUDLQW! SHU VHFXULW\ FRQVWUDLQW! VRPH SHRSOH UHFRPPHQG \RX XVH &21),'(17,$/ EXW DJDLQ LW ZLOO SUREDEO\ QHYHU PDWWHU LQ SUDFWLFH XQOHVV \RX PRYH WR D QHZ DQG XQXVXDO &RQWDLQHU WKDW GRHVQ¡W XVH 66/

FKDSWHU

Chapter 12. Keep it secret, keep it safe Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 12. Keep it secret, keep it safe

ZHE DSS VHFXULW\

:DLW KRZ GR \RX JXDUDQWHH WKDW WKH UHTXHVW GDWD LV FRQÀGHQWLDO" 7KH &RQWDLQHU GRHVQ·W HYHQ NQRZ LW·V VXSSRVHG WR SURWHFW WKH WUDQVPLVVLRQ XQWLO $)7(5 WKH FOLHQW PDNHV WKH UHTXHVW

8ZW\MK\QVO \PM ZMY]M[\ LI\I 2EMEMBER THAT IN THE $$ THE SECURITY CONSTRAINT IS ABOUT WHAT HAPPENS AFTER THE REQUEST )N OTHER WORDS THE CLIENT HAS ALREADY MADE THE REQUEST WHEN THE #ONTAINER STARTS LOOKING AT THE SECURITY CONSTRAINT ELEMENTS TO DECIDE HOW TO RESPOND 4HE REQUEST DATA HAS ALREADY BEEN SENT OVER THE WIRE (OW CAN YOU POSSIBLY REMIND THE BROWSER THAT h/H BY THE WAY IF THE USER HAPPENS TO REQUEST THIS RESOURCE SWITCH TO SECURE SOCKETS 33, BEFORE SENDING THE REQUEST v 7HAT CAN YOU DO 9OU ALREADY KNOW HOW TO FORCE THE CLIENT TO GET A LOGIN SCREENˆBY DElNING A CONSTRAINED RESOURCE IN THE $$ THE #ONTAINER WILL AUTOMATICALLY TRIGGER THE AUTHENTICATION PROCESS WHEN AN UNAUTHENTICATED USER MAKES THE REQUEST 3O NOW WE HAVE TO lGURE OUT HOW TO PROTECT THE DATA COMING IN FROM A REQUEST EVEN AND SOMETIMES ESPECIALLY WHEN THE CLIENT HAS NOT YET LOGGED IN 7E MIGHT WANT TO PROTECT THEIR LOGIN DATA 4URN THE PAGE TO SEE HOW IT ALL WORKS

\RX DUH KHUH

Chapter 12. Keep it secret, keep it safe Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 12. Keep it secret, keep it safe

ZLWKRXW WUDQVSRUW JXDUDQWHH!

8QDXWKRUL]HG FOLHQW UHTXHVWV D FRQVWUDLQHG UHVRXUFH WKDW KDV 12 WUDQVSRUW JXDUDQWHH

&OLHQW UHTXHVWV %X\6WXII MVS ZKLFK KDV EHHQ FRQILJXUHG LQ WKH '' ZLWK D VHFXULW\ FRQVWUDLQW!

+773 RYHU 7&3

7KH &RQWDLQHU FKHFNV WKH VHFXULW\ FRQVWUDLQW! DQG ILQGV WKDW %X\6WXII LV D FRQVWUDLQHG UHVRXUFH ZKLFK PHDQV WKH XVHU 0867 EH DXWKHQWLFDWHG 7KH &RQWDLQHU ILQGV WKDW WKHUH LV 12 WUDQVSRUW JXDUDQWHH IRU WKLV UHTXHVW

XVHU GDWD FRQVWUDLQW! WUDQVSRUW JXDUDQWHH! 121( WUDQVSRUW JXDUDQWHH! XVHU GDWD FRQVWUDLQW!

VHFXULW\ FRQVWUDLQW! XUO SDWWHUQ! %X\6WXII XUO SDWWHUQ! KWWS PHWKRG! 326 KWWS PHWKRG!

3267 %X\6WXII MVS

ZHE [PO FRQWDLQHU

7KH &RQWDLQHU VHQGV D UHVSRQVH WR WKH FOLHQW WKDW WHOOV WKH EURZVHU WR JHW ORJLQ LQIRUPDWLRQ IURP WKH XVHU 8QDXWKRUL]HG ::: $XWKHQWLFDWH %DVLF UHDOP ÂľXVHUÂľ

Ă’NONEĂ“ is the default, so it is what you get even if you do NOT specify a DD element for <transport-guarantee>

7KH EURZVHU PDNHV WKH VDPH UHTXHVW DJDLQ EXW WKLV WLPH ZLWK WKH XVHU¡V ORJLQ LQIRUPDWLRQ LQ WKH KHDGHU 3267 %X\6WXII MVS $XWKRUL]DWLRQ %DVLF [ Z

FRQWDLQHU

FRQWDLQHU

Yikes! The clientÕs login information was NOT sent securely. The clientÕs username and password were not protected!

7KH &RQWDLQHU DXWKHQWLFDWHV WKH FOLHQW FKHFNV WKDW XVHUQDPH DQG SDVVZRUG PDWFK WKH XVHU GDWD FRQILJXUHG LQ WKH VHUYHU 7KHQ WKH &RQWDLQHU DXWKRUL]HV WKH UHTXHVW WR PDNH VXUH WKDW WKLV XVHU LV LQ D UROH WKDW¡V DOORZHG WR JHW WKH FRQVWUDLQHG UHVRXUFH (YHU\WKLQJ FKHFNV RXW VR WKH UHVSRQVH LV VHQW KWPO! (QWHU &UHGLW &DUG LQSXW W\SH WH[W QDPH FF1XP! KWPO!

FRQWDLQHU

FKDSWHU

Chapter 12. Keep it secret, keep it safe Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 12. Keep it secret, keep it safe

ZHE DSS VHFXULW\

8QDXWKRUL]HG FOLHQW UHTXHVWV D FRQVWUDLQHG UHVRXUFH WKDW KDV D &21),'(17,$/,7< WUDQVSRUW JXDUDQWHH

&OLHQW UHTXHVWV %X\6WXII MVS D FRQVWUDLQHG UHVRXUFH WKDW DOVR KDV D WUDQVSRUW JXDUDQWHH +773 RYHU 7&3

7KH &RQWDLQHU VHHV WKDW WKLV FRQVWUDLQHG UHVRXUFH KDV D WUDQVSRUW JXDUDQWHH 7KH &RQWDLQHU VHHV WKDW WKH UHTXHVW GLG 127 FRPH LQ VHFXUHO\

3267 %X\6WXII MVS +773

XVHU GDWD FRQVWUDLQW! WUDQVSRUW JXDUDQWHH! &21),'(17,$/ WUDQVSRUW JXDUDQWHH! XVHU GDWD FRQVWUDLQW! VHFXULW\ FRQVWUDLQW! XUO SDWWHUQ! %X\6WXII XUO SDWWHUQ! KWWS PHWKRG! 326 KWWS PHWKRG!

'' FRQWDLQHU

7KH &RQWDLQHU VHQGV D UHVSRQVH WR WKH FOLHQW WKDW WHOOV WKH EURZVHU WR UHGLUHFW WKH UHTXHVW XVLQJ D VHFXUH WUDQVSRUW

is used for normwaaly Yes, the Ò301Ó itÕ s ALSO the t bu s, redirect lls the browser, te er ain the Cont er a secure ov ck ba ÒHey, come xt time and THEN ne connection talk...Ó IÕll see if we can

5HGLUHFW /RFDWLRQ +7736

FRQWDLQHU

7KH EURZVHU PDNHV WKH VDPH UHVRXUFH UHTXHVW DJDLQ EXW WKLV WLPH RYHU D VHFXUH FRQQHFWLRQ ,Q RWKHU ZRUGV WKH UHVRXUFH VWD\V WKH VDPH EXW WKH SURWRFRO LV QRZ +7736

1RZ WKH &RQWDLQHU VHHV WKDW WKH UHVRXUFH LV FRQVWUDLQHG DQG WKDW WKLV XVHU KDV QRW DXWKHQWLFDWHG 6R QRZ WKH &RQWDLQHU VWDUWV WKH DXWKHQWLFDWLRQ SURFHVV E\ VHQGLQJ D ´ ¾ WR WKH EURZVHU

3267 %X\6WXII MVS +7736

FRQWDLQHU

7KH EURZVHU PDNHV WKH VDPH UHTXHVW DJDLQ \HV IRU WKH 7+,5' WLPH EXW WKLV WLPH WKH UHTXHVW KDV WKH XVHU¡V ORJLQ GDWD LQ WKH KHDGHU $1' WKH UHTXHVW FRPHV RYHU XVLQJ D VHFXUH FRQQHFWLRQ 6R WKLV WLPH WKH FOLHQW¡V ORJLQ GDWD LV WUDQVPLWWHG VHFXUHO\ 3267 %X\6WXII MVS $XWKRUL]DWLRQ %DVLF [ Z

FRQWDLQHU

8QDXWKRUL]HG ::: $XWKHQWLFDWH %DVLF UHDOP ÂľXVHUÂľ

FRQWDLQHU

s en a request come Bottom line: wher T at the RS FI ks loo ain e IS in, the Cont ntee>, and if ther <transport-guaainraer tries to deal with one, the Cont by asking, ÒIs this request that issue Þrstconnection?Ó If not, the over a secure nÕt even bother to look Container does ion/authorization info. It at authenticat ent ÒCome back when just tells the cli weÕll talk...Ó youÕre secure, then \RX DUH KHUH

Chapter 12. Keep it secret, keep it safe Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 12. Keep it secret, keep it safe

SURWHFWLQJ ORJLQ GDWD

WHG WR WKH HU·V ORJLQ LQIR LV VXEPLW 7R PDNH VXUH WKH XV RQ (9(5< WHH UDQ JXD RUW QVS WUD VHU YHU VHFXUHO\ SXW D RJLQ SURFHVV KDW FRXOG WULJJHU WKH O FRQVWUDLQHG UHVRXUFH W LRQ WKH FOLHQW QHYHU PDNHV LQJ GHFODUDWLYH DXWKHQWLFDW URFHVV E\ 5HPHPEHU ZKHQ \RX¶UH XV UV WKH ORJLQ DXWKHQWLFDWLRQ S ULJJH HQW W H FOL Q 7K ORJL ORJLQ D GLUHFW UHTXHVW IRU WKH DNH VXUH WKDW \RXU FOLHQW¶V RXUFH 6R LI \RX ZDQW WR P WR SXW D WUDQVSRUW QHHG UHTXHVWLQJ D FRQVWUDLQHG UHV \RX LRQ QHFW FRQ UYHU RYHU D VHFXUH KH GDWD FRPHV EDFN WR WKH VH OG WULJJHU WKH ORJLQ IRUP RQ W VWUDLQHG UHVRXUFH WKDW FRX JXDUDQWHH! RQ (9(5< FRQ FOLHQW 25( QVWUDLQHG UHVRXUFH EXW %() O JHW WKH UHTXHVW IRU WKH FR ³<RX¶UH 7KDW ZD\ WKH &RQWDLQHU ZLO &RQWDLQHU WHOOV WKH EURZVHU WKH GDWD ORJLQ QW¶V FOLH HQ WHOOLQJ WKH EURZVHU WR JHW WKH J D VHFXUH FRQQHFWLRQ ´ 7K WKLV UHTXHVW XQWLO \RX¶UH XVLQ D\V ³2K , VHH QRW VXSSRVHG WR HYHQ 0$.( WLPH WKH &RQWDLQHU 7+(1 V RQG VHF N WKH H EDF ´ 7K PHV ZKHQ WKH FOLHQW FR DWLRQ GDWD IURP WKH XVHU LRQ EXW , VWLOO QHHG DXWKHQWLF \RX¶UH RQ D VHFXUH FRQQHFW LQIR DQG VHQGV EDFN WKLV U WKH XVHU JHWV WKH XVHU¶V P IR Q IRU ORJL S WKH XWV X EURZVHU S WLRQ H FRQQHF 7+,5' UHTXHVW RYHU D VHFXU

WKHUH DUH QR

'XPE 4XHVWLRQV

4

) DON T UNDERSTAND WHY THE #ONTAINER SENDS BACK A 2%$)2%#4 TO THE CLIENT WHEN THE REQUEST COMES IN WITHOUT A SECURE CONNECTION $OESN T IT JUST REDIRECT BACK TO THE SAME ORIGINAL REQUEST

$

.ORMALLY YOU THINK OF A REDIRECT AS MEANING h(EY BROWSER GO TO A DIFFERENT 52, INSTEAD v 4HE REDIRECT IS INVISIBLE TO THE CLIENT REMEMBER THE CLIENT S BROWSER AUTOMATICALLY MAKES THE NEW REQUEST ON THE 52, SPECIFIED IN THE REDIRECT HEADER THAT COMES FROM THE SERVER "UT WITH TRANSPORT SECURITY IT S A LITTLE DIFFERENT )NSTEAD OF TELLING THE CLIENT BROWSER h2EDIRECT TO A DIFFERENT RESOURCEv THE #ONTAINER SAYS h2E DIRECT TO THE SAME RESOURCE BUT WITH A DIFFERENT PROTOCOLˆUSE (4403 INSTEAD OF (440 v

4

3O IS (4403 OVER 33, JUST BUILT IN TO THE #ONTAINER SOMEHOW

$

)T S NOT GUARANTEED BY THE SPEC BUT IT S EXTREMELY LIKELY THAT YOUR #ONTAINER IS USING (4403 OVER 33, SECURE SOCKETS "UT IT WON T NECESSARILY BE AUTOMATIC 9OU PROBABLY HAVE TO CONFIGURE 33, IN YOUR #ONTAINER AND MORE IMPORTANTLYˆYOU NEED A CERTIFICATE 9OU LL HAVE TO CHECK YOUR #ONTAINER S DOCU MENTATION BUT CHANCES ARE YOUR #ONTAINER CAN GENERATE A CERTIFICATE THAT YOU CAN USE FOR TESTING BUT FOR PRODUCTION YOU LL NEED TO GET A 0UBLIC +EY CERTIFICATION FROM AN hOFFICIALv SOURCE SUCH AS 6ERI3IGN #ERTIFICATES AND SECURITY PROTOCOLS LIKE (4403 AND 33, ARE WAY OUTSIDE THE SCOPE OF THE EXAM BY THE WAY 9OU RE EXPECTED TO KNOW ONLY WHAT YOU HAVE TO DO IN THE $$ AND WHY 9OU RE NOT EXPECTED TO BE THE SYS ADMIN AND NETWORK SECURITY MASTER

FKDSWHU

Chapter 12. Keep it secret, keep it safe Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 12. Keep it secret, keep it safe

ZHE DSS VHFXULW\

6KDUSHQ \RXU SHQFLO &RQILJXUH WKH VHFXULW\ DVSHFWV RI D ZHE DSSOLFDWLRQ E\ ILOOLQJ LQ WKH WKUHH EORFNV LQ WKH '' 7KH ZHE DSSOLFDWLRQ PXVW KDYH WKH IROORZLQJ EHKDYLRU <RX ZDQW DQ\RQH WR EH DEOH WR GR D *(7 RQ WKH UHVRXUFHV ZLWKLQ WKH %HHU 8SGDWH5HFLSHV GLUHFWRU\ LQFOXGLQJ DQ\ VXEGLUHFWRULHV EXW \RX ZDQW 21/< WKRVH ZLWK WKH VHFXULW\ UROH RI ´$GPLQµ WR EH DEOH WR GR D 3267 RQ UHVRXUFHV ZLWKLQ WKDW GLUHFWRU\ $OVR \RX ZDQW WKH GDWD WR EH SURWHFWHG VR WKDW QRERG\ FDQ HDYHVGURS ZHE DSS ! VHFXULW\ FRQVWUDLQW! ZHE UHVRXUFH FROOHFWLRQ! ZHE UHVRXUFH QDPH!5HFLSHV ZHE UHVRXUFH QDPH! XUO SDWWHUQ! %HHU 8SGDWH5HFLSHV XUO SDWWHUQ! KWWS PHWKRG!3267 KWWS PHWKRG! ZHE UHVRXUFH FROOHFWLRQ!

DXWK FRQVWUDLQW! UROH QDPH!0HPEHU UROH QDPH! DXWK FRQVWUDLQW!

XVHU GDWD FRQVWUDLQW! WUDQVSRUW JXDUDQWHH!&21),'(17,$/ WUDQVSRUW JXDUDQWHH! XVHU GDWD FRQVWUDLQW!

VHFXULW\ FRQVWUDLQW! ZHE DSS!

\RX DUH KHUH

Chapter 12. Keep it secret, keep it safe Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 12. Keep it secret, keep it safe

VHFXULW\ H[HUFLVH

6KDUSHQ \RXU SHQFLO 6HFXULW\ JRDO

)LOO RXW WKH IROORZLQJ WDEOH E\ ZULWLQJ LQ WKH UHOHYDQW '' HOHPHQWV <RX·OO VHH WKH DQVZHUV ZKHQ \RX WXUQ WKH SDJH DQG GRQ·W HYHQ /22. DW WKH RSSRVLWH SDJH

:KDW \RX·G SXW LQ WKH ''

<RX ZDQW WKH &RQWDLQHU WR GR %$6,& DXWKHQWLFDWLRQ DXWRPDWLFDOO\

<RX ZDQW WR XVH \RXU RZQ FXVWRP IRUP SDJH QDPHG ´ORJLQ3DJH KWPOµ DQG GHSOR\HG GLUHFWO\ DW WKH URRW RI WKH ZHE DSS DQG \RX ZDQW ´ORJLQ(UURU KWPOµ WR EH GLVSOD\HG LI WKH FOLHQW FDQQRW EH DXWKHQWLFDWHG

<RX ZDQW WR FRQVWUDLQ HYHU\WKLQJ ZLWK D ´ GRµ H[WHQVLRQ VR WKDW DOO FOLHQWV FDQ GR D *(7 EXW RQO\ 0HPEHUV FDQ GR D 3267 <RX GR 127 QHHG WR LQFOXGH WKH '' HOHPHQWV QHHGHG WR FRQILJXUH ORJLQ LQIRUPDWLRQ

<RX ZDQW WR FRQVWUDLQ HYHU\WKLQJ ZLWKLQ WKH IRR EDU GLUHFWRU\ VR WKDW RQO\ WKRVH ZLWK D VHFXULW\ UROH RI $GPLQ FDQ LQYRNH $1< +773 PHWKRGV RQ WKRVH UHVRXUFHV <RX GR 127 QHHG WR LQFOXGH WKH '' HOHPHQWV QHHGHG WR FRQILJXUH ORJLQ LQIRUPDWLRQ

FKDSWHU

Chapter 12. Keep it secret, keep it safe Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 12. Keep it secret, keep it safe

ZHE DSS VHFXULW\

6KDUSHQ \RXU SHQFLO $16:(56 <RX ZDQW HYHU\RQH WR EH DEOH WR GR D *(7 RQ WKH UHVRXUFHV ZLWKLQ WKH %HHU 8SGDWH5HFLSHV GLUHFWRU\ LQFOXGLQJ DQ\ VXEGLUHFWRULHV EXW \RX ZDQW 21/< WKRVH ZLWK WKH VHFXULW\ UROH RI ´$GPLQ¾ WR EH DEOH WR GR D 3267 RQ UHVRXUFHV ZLWKLQ WKDW GLUHFWRU\ $OVR \RX ZDQW WKH GDWD WR EH SURWHFWHG VR WKDW QRERG\ FDQ HDYHVGURS

ZHE DSS ! VHFXULW\ FRQVWUDLQW! ZHE UHVRXUFH FROOHFWLRQ! ZHE UHVRXUFH QDPH!5HFLSHV ZHE UHVRXUFH QDPH!

URL pattern Remember, the dir ectories d for protecte h a Ă’/*Ă“. needs to end wit

XUO SDWWHUQ! %HHU 8SGDWH5HFLSHV XUO SDWWHUQ! KWWS PHWKRG!3267 KWWS PHWKRG! ZHE UHVRXUFH FROOHFWLRQ!

DXWK FRQVWUDLQW! UROH QDPH!$GPLQ UROH QDPH! DXWK FRQVWUDLQW!

If you didnÕt specify ANY <aut nstraint>, EVERYONE would be able to doh-co POST. Putting in Admin means that only aAdm access the combination of the URL in can pattern and the HTTP Method.

XVHU GDWD FRQVWUDLQW! WUDQVSRUW JXDUDQWHH!&21),'(17,$/ WUDQVSRUW JXDUDQWHH! XVHU GDWD FRQVWUDLQW!

VHFXULW\ FRQVWUDLQW! ZHE DSS!

You could have said INTEGRAL here for virtually all Containers, youÕd and get conÞdentiality, because Containersstill SSL for their transport guarantee (althuse ough thatÕs not guaranteed by the spec).

\RX DUH KHUH

Chapter 12. Keep it secret, keep it safe Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 12. Keep it secret, keep it safe

VHFXULW\ H[HUFLVH DQVZHUV

6KDUSHQ \RXU SHQFLO 6HFXULW\ JRDO

$16:(56

<RX ZDQW WKH &RQWDLQHU WR GR %$6,& DXWKHQWLFDWLRQ DXWRPDWLFDOO\

:KDW \RX¡G SXW LQ WKH ''

ZHE DSS !

ORJLQ FRQÂżJ! DXWK PHWKRG!%$6,& DXWK PHWKRG! ORJLQ FRQÂżJ!

ZHE DSS!

<RX ZDQW WR XVH \RXU RZQ FXVWRP IRUP SDJH QDPHG ´ORJLQ3DJH KWPO¾ DQG GHSOR\HG GLUHFWO\ DW WKH URRW RI WKH ZHE DSS DQG \RX ZDQW ´ORJLQ(UURU KWPO¾ WR EH GLVSOD\HG LI WKH FOLHQW FDQQRW EH DXWKHQWLFDWHG

ZHE DSS !

ORJLQ FRQÂżJ! DXWK PHWKRG!)250 DXWK PHWKRG! IRUP ORJLQ FRQÂżJ! IRUP ORJLQ SDJH! ORJLQ3DJH KWPO IRUP ORJLQ SDJH! IRUP HUURU SDJH! ORJLQ(UURU KWPO IRUP HUURU SDJH! IRUP ORJLQ FRQÂżJ! ORJLQ FRQÂżJ!

ZHE DSS! ZHE DSS !

<RX ZDQW WR FRQVWUDLQ HYHU\WKLQJ ZLWK D ´ GRÂľ VHFXULW\ FRQVWUDLQW! H[WHQVLRQ VR WKDW DOO FOLHQWV FDQ GR D *(7 ZHE UHVRXUFH FROOHFWLRQ! EXW RQO\ 0HPEHUV FDQ GR D 3267 ZHE UHVRXUFH QDPH!&RRO7KLQJV ZHE UHVRXUFH QDPH! XUO SDWWHUQ! GR XUO SDWWHUQ! KWWS PHWKRG!3267 KWWS PHWKRG! You conĂžgure two things: a

constrained resource (i.e. URL pattern plus HTTP Method), and the <auth-constraint> that deĂžnes the security role that can access the speciĂžed <http-method> on the speciĂžed <url-pattern>.

ZHE UHVRXUFH FROOHFWLRQ!

DXWK FRQVWUDLQW! UROH QDPH!0HPEHU UROH QDPH! DXWK FRQVWUDLQW! VHFXULW\ FRQVWUDLQW! ZHE DSS!

We used the extension URL pattern that always starts with an asterisk (*).

ZHE DSS !

VHFXULW\ FRQVWUDLQW! <RX ZDQW WR FRQVWUDLQ HYHU\WKLQJ ZLWKLQ WKH ZHE UHVRXUFH FROOHFWLRQ! IRR EDU GLUHFWRU\ VR WKDW RQO\ WKRVH ZLWK D VHFXULW\ UROH RI $GPLQ FDQ LQYRNH DQ\ +773 ZHE UHVRXUFH QDPH!6WXII ZHE UHVRXUFH QDPH! XUO SDWWHUQ! IRR EDU XUO SDWWHUQ! PHWKRGV RQ WKRVH UHVRXUFHV

ZHE UHVRXUFH FROOHFWLRQ!

DXWK FRQVWUDLQW! UROH QDPH!$GPLQ UROH QDPH! DXWK FRQVWUDLQW! VHFXULW\ FRQVWUDLQW! ZHE DSS!

We left off <httpmethod> so that NO HTTP Methods are accessible to anyone except Admins.

FKDSWHU

Chapter 12. Keep it secret, keep it safe Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 12. Keep it secret, keep it safe

ZHE DSS VHFXULW\

6KDUSHQ \RXU SHQFLO

$16:(56

1RERG\ *XHVW 0HPEHU $GPLQ (YHU\RQH

VHFXULW\ FRQVWUDLQW! DXWK FRQVWUDLQW!

@

UROH QDPH!*XHVW UROH QDPH! DXWK FRQVWUDLQW! VHFXULW\ FRQVWUDLQW!

VHFXULW\ FRQVWUDLQW! DXWK FRQVWUDLQW ! VHFXULW\ FRQVWUDLQW!

@

VHFXULW\ FRQVWUDLQW! DXWK FRQVWUDLQW!

UROH QDPH!$GPLQ UROH QDPH! DXWK FRQVWUDLQW!

@

VHFXULW\ FRQVWUDLQW! VHFXULW\ FRQVWUDLQW! DXWK FRQVWUDLQW!

@

UROH QDPH!*XHVW UROH QDPH! DXWK FRQVWUDLQW! VHFXULW\ FRQVWUDLQW!

VHFXULW\ FRQVWUDLQW!

DXWK FRQVWUDLQW! UROH QDPH!*XHVW UROH QDPH! DXWK FRQVWULDQW! VHFXULW\ FRQVWUDLQW!

@

VHFXULW\ FRQVWUDLQW!

DXWK FRQVWUDLQW! UROH QDPH! UROH QDPH! DXWK FRQVWUDLQW! VHFXULW\ FRQVWUDLQW!

VHFXULW\ FRQVWUDLQW! DXWK FRQVWUDLQW!

UROH QDPH!0HPEHU UROH QDPH! DXWK FRQVWUDLQW!

@

VHFXULW\ FRQVWUDLQW! VHFXULW\ FRQVWUDLQW! VHFXULW\ FRQVWUDLQW!

$VVXPH WKDW 12 DXWK FRQVWUDLQW! LV GHILQHG

VHFXULW\ FRQVWUDLQW! DXWK FRQVWUDLQW!

UROH QDPH!0HPEHU UROH QDPH! DXWK FRQVWUDLQW!

@

VHFXULW\ FRQVWUDLQW! VHFXULW\ FRQVWUDLQW! DXWK FRQVWUDLQW ! VHFXULW\ FRQVWUDLQW!

\RX DUH KHUH

Chapter 12. Keep it secret, keep it safe Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 12. Keep it secret, keep it safe

PRFN H[DP

0RFN ([DP &KDSWHU 7HICH SECURITY MECHANISMS ALWAYS OPERATE INDEPENDENTLY OF THE TRANSPORT LAYER #HOOSE ALL THAT APPLY

R ! AUTHORIZATION R " DATA INTEGRITY R # AUTHENTICATION R $ CONlDENTIALITY

'IVEN A DEPLOYMENT DESCRIPTOR WITH THREE VALID VHFXULW\ FRQVWUDLQW! ELEMENTS ALL CONSTRAINING WEB RESOURCE ! WHOSE RESPECTIVE DXWK FRQVWUDLQW! SUB ELEMENTS ARE DXWK FRQVWUDLQW!%RE DXWK FRQVWUDLQW! DXWK FRQVWUDLQW ! DXWK FRQVWUDLQW!$OLFH DXWK FRQVWUDLQW! 7HO CAN ACCESS RESOURCE !

R ! NO ONE R " ANYONE R # ONLY "OB R $ ONLY !LICE R % ONLY "OB AND !LICE R & ANYONE BUT "OB OR !LICE

FKDSWHU

Chapter 12. Keep it secret, keep it safe Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 12. Keep it secret, keep it safe

ZHE DSS VHFXULW\

6KDUSHQ \RXU SHQFLO &RQILJXUH WKH VHFXULW\ DVSHFWV RI D ZHE DSSOLFDWLRQ E\ ILOOLQJ LQ WKH WKUHH EORFNV LQ WKH '' 7KH ZHE DSSOLFDWLRQ PXVW KDYH WKH IROORZLQJ EHKDYLRU <RX ZDQW DQ\RQH WR EH DEOH WR GR D *(7 RQ WKH UHVRXUFHV ZLWKLQ WKH %HHU 8SGDWH5HFLSHV GLUHFWRU\ LQFOXGLQJ DQ\ VXEGLUHFWRULHV EXW \RX ZDQW 21/< WKRVH ZLWK WKH VHFXULW\ UROH RI ´$GPLQµ WR EH DEOH WR GR D 3267 RQ UHVRXUFHV ZLWKLQ WKDW GLUHFWRU\ $OVR \RX ZDQW WKH GDWD WR EH SURWHFWHG VR WKDW QRERG\ FDQ HDYHVGURS ZHE DSS ! VHFXULW\ FRQVWUDLQW! ZHE UHVRXUFH FROOHFWLRQ! ZHE UHVRXUFH QDPH!5HFLSHV ZHE UHVRXUFH QDPH! XUO SDWWHUQ! %HHU 8SGDWH5HFLSHV XUO SDWWHUQ! KWWS PHWKRG!3267 KWWS PHWKRG! ZHE UHVRXUFH FROOHFWLRQ!

DXWK FRQVWUDLQW! UROH QDPH!0HPEHU UROH QDPH! DXWK FRQVWUDLQW!

XVHU GDWD FRQVWUDLQW! WUDQVSRUW JXDUDQWHH!&21),'(17,$/ WUDQVSRUW JXDUDQWHH! XVHU GDWD FRQVWUDLQW!

VHFXULW\ FRQVWUDLQW! ZHE DSS!

\RX DUH KHUH

Chapter 12. Keep it secret, keep it safe Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 12. Keep it secret, keep it safe

PRFN H[DP

7HICH SECURITY MECHANISMS CAN BE IMPLEMENTED BY USING A METHOD IN THE +WWS6HUYOHW5HTXHVW INTERFACE #HOOSE ALL THAT APPLY

R ! AUTHORIZATION R " DATA INTEGRITY R # AUTHENTICATION R $ CONlDENTIALITY

7HICH +WWS6HUYOHW5HTXHVW METHOD IS MOST CLOSELY ASSOCIATED WITH THE USE OF THE VHFXULW\ UROH UHI! ELEMENT

R ! JHW+HDGHU R " JHW&RRNLHV R # LV8VHU,Q5ROH R $ JHW8VHU3ULQFLSDO R % LV5HTXHVWHG6HVVLRQ,'9DOLG

7HICH DEPLOYMENT DESCRIPTOR ELEMENTS CAN CONTAIN A WUDQVSRUW JXDUDQWHH! SUB ELEMENT #HOOSE ALL THAT APPLY

R ! DXWK FRQVWUDLQW! R " VHFXULW\ UROH UHI! R # IRUP ORJLQ FRQ¿J! R $ XVHU GDWD FRQVWUDLQW!

7HICH AUTHENTICATION MECHANISM IS RECOMMENDED TO BE USED ONLY IF COOKIES OR 33, SESSION TRACKING IS IN PLACE

R ! (440 "ASIC !UTHENTICATION R " &ORM "ASED !UTHENTICATION R # (440 $IGEST !UTHENTICATION R $ (4403 #LIENT !UTHENTICATION

FKDSWHU

Chapter 12. Keep it secret, keep it safe Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 12. Keep it secret, keep it safe

ZHE DSS VHFXULW\

&KDSWHU $QVZHUV

7HICH SECURITY MECHANISMS ALWAYS OPERATE INDEPENDENTLY OF THE TRANSPORT LAYER #HOOSE ALL THAT APPLY

R ! AUTHORIZATION R " DATA INTEGRITY R # AUTHENTICATION R $ CONlDENTIALITY

ap 12 )

(servlet spec: ch

-Option A is correct. Authorization operates completely within the container oncentication can authentication has occurred. Authe how the affect the transport layer based on <auth-method> element is set.

'IVEN A DEPLOYMENT DESCRIPTOR WITH THREE VALID VHFXULW\ FRQVWUDLQW! ELEMENTS ALL CONSTRAINING WEB RESOURCE ! WHOSE RESPECTIVE DXWK FRQVWUDLQW! SUB ELEMENTS ARE

.8.1) (servlet spec: 12

DXWK FRQVWUDLQW!%RE DXWK FRQVWUDLQW! DXWK FRQVWUDLQW ! DXWK FRQVWUDLQW!$OLFH DXWK FRQVWUDLQW! 7HO CAN ACCESS RESOURCE !

R ! NO ONE R " ANYONE R # ONLY "OB R $ ONLY !LICE R % ONLY "OB AND !LICE R & ANYONE BUT "OB OR !LICE

-Option A is correct. The existence of anes empty <auth-constraint> element overrid all other <auth-constraint> elements that refer to that resource, precluding access.

\RX DUH KHUH

Chapter 12. Keep it secret, keep it safe Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 12. Keep it secret, keep it safe

PRFN DQVZHUV

7HICH ACTIVITIES WOULD BE ADDRESSED VIA A * %% CONTAINER S DATA INTEGRITY MECHANISM #HOOSE ALL THAT APPLY

.1)

(Servlet spec., 12

R ! 6ERIFYING THAT A SPECIlC USER IS ALLOWED ACCESS TO A SPECIlC (4-, PAGE R " %NSURING THAT AN EAVESDROPPER CAN T READ AN (440 MESSAGE BEING SENT -Option B describes FROM THE CLIENT TO THE CONTAINER

conĂždentiality.

R # 6ERIFYING THAT A CLIENT MAKING A REQUEST FOR A CONSTRAINED *30 HAS THE PROPER ROLE CREDENTIALS TO ACCESS THE *30

R $ %NSURING THAT A HACKER CAN T ALTER THE CONTENTS OF AN (440 MESSAGE WHILE IT IS IN TRANSIT FROM THE CONTAINER TO A CLIENT

-Option D is correct. This would typically be accomplished through the use of HTTPS.

7HICH ARE REQUIRED lELDS IN THE LOGIN FORM WHEN USING &ORM "ASED !UTHENTICATION #HOOSE ALL THAT APPLY

R ! SZ R " LG R # MBSZ R $ MBLG R % SDVVZRUG R & MBSDVVZRUG

must be -Option F is correct, the userÕs password addition, the stored in a Þeld called j_password. Iname. userÕs name must be stored in j_usern

7HICH AUTHENTICATION TYPES REQUIRE A SPECIlC TYPE OF (4-, ACTION #HOOSE ALL THAT APPLY

(Servlet spec., 12.5.3:)

R ! (440 "ASIC !UTHENTICATION R " &ORM "ASED !UTHENTICATION R # (440 $IGEST !UTHENTICATION R $ (4403 #LIENT !UTHENTICATION

.5.3.1)

(Servlet spec., 12

-Option B is correct. For form based the authentication to work, the action of login form must be j_security_check.

FKDSWHU

Chapter 12. Keep it secret, keep it safe Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 12. Keep it secret, keep it safe

ZHE DSS VHFXULW\

7HICH SECURITY MECHANISMS CAN BE IMPLEMENTED BY USING A METHOD IN THE +WWS6HUYOHW5HTXHVW INTERFACE #HOOSE ALL THAT APPLY

R ! AUTHORIZATION R " DATA INTEGRITY R # AUTHENTICATION R $ CONlDENTIALITY

-Option A is correct. The isUserInRole method can be used programatically, to help determine whether a clientÕs role is authorized to access a given resource. -Option C is correct. The getRemoteUser method can be used programatically, to help determine whether a client has been authenticated.

7HICH +WWS6HUYOHW5HTXHVW METHOD IS MOST CLOSELY ASSOCIATED WITH THE USE OF THE VHFXULW\ UROH UHI! ELEMENT

R ! JHW+HDGHU R " JHW&RRNLHV R # LV8VHU,Q5ROH R $ JHW8VHU3ULQFLSDO R % LV5HTXHVWHG6HVVLRQ,'9DOLG

.4)

(Servlet spec., 13

-Option D is correct. A <transport-guarantee> element is used within a <user-data-constraint> element to specify whether a web resource collection should be transmitted using a mechanism such as SSL.

7HICH AUTHENTICATION MECHANISM IS RECOMMENDED TO BE USED ONLY IF COOKIES OR 33, SESSION TRACKING IS IN PLACE

R ! (440 "ASIC !UTHENTICATION R " &ORM "ASED !UTHENTICATION R # (440 $IGEST !UTHENTICATION R $ (4403 #LIENT !UTHENTICATION

)

.3 (Servlet spec., 12

rity-role-ref> -Option C is correct. The <secu oded in a servlet element is used to map roles hardc descriptor. The t ymen deplo the in red decla to roles t to test the servle a in used is od meth le rInRo isUse nts.. eleme ref> rolerity<secu of nts conte

7HICH DEPLOYMENT DESCRIPTOR ELEMENTS CAN CONTAIN A WUDQVSRUW JXDUDQWHH! SUB ELEMENT #HOOSE ALL THAT APPLY

R ! DXWK FRQVWUDLQW! R " VHFXULW\ UROH UHI! R # IRUP ORJLQ FRQÂżJ! R $ XVHU GDWD FRQVWUDLQW!

.3)

(Servlet spec., 12

.1)

.5.3 (Servlet spec., 12

login session -Option B is correct. Form based ent, therefore a tracking can be difĂžcult to implem ed. separate session tracking mechanism is recommend

\RX DUH KHUH

Chapter 12. Keep it secret, keep it safe Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 13. The Power of Filters

ILOWHUV DQG ZUDSSHUV

7KH 3RZHU RI )LOWHUV 'R QRW HYHQ 7+,1. DERXW WU\LQJ WR WDON WR WKH PDVWHU ZLWKRXW JRLQJ WKURXJK PH À UVW , FRQWURO ZKDW JRHV WR WKH PDVWHU DQG , FRQWURO ZKDW FRPHV IURP WKH PDVWHU

7KH\ VD\ WKDW KH ZDV LQVSLUHG E\ WKH ,QWHUFHSWLQJ )LOWHU SDWWHUQ

)LOWHUV OHW \RX LQWHUFHSW WKH UHTXHVW $QG LI \RX FDQ LQWHUFHSW WKH UHTXHVW \RX FDQ DOVR FRQWURO WKH UHVSRQVH $QG EHVW RI DOO WKH VHUYOHW UHPDLQV FOXHOHVV ,W QHYHU NQRZV WKDW VRPHRQH VWHSSHG LQ EHWZHHQ WKH FOLHQW UHTXHVW DQG WKH &RQWDLQHU¶V LQYRFDWLRQ RI WKH VHUYOHW¶V VHUYLFH PHWKRG :KDW GRHV WKDW PHDQ WR \RX" 0RUH YDFDWLRQV %HFDXVH WKH WLPH \RX ZRXOG KDYH VSHQW UHZULWLQJ MXVW RQH RI \RXU VHUYOHWV FDQ EH VSHQW LQVWHDG ZULWLQJ DQG FRQ¿ JXULQJ D ¿ OWHU WKDW KDV WKH DELOLW\ WR DIIHFW DOO RI \RXU VHUYOHWV :DQW WR DGG XVHU UHTXHVW WUDFNLQJ WR HYHU\ VHUYOHW LQ \RXU DSS" 1R SUREOHP :DQW WR PDQLSXODWH WKH RXWSXW IURP HYHU VHUYOHW LQ \RXU DSS" 1R SUREOHP $QG \RX GRQ¶W HYHQ KDYH WR WRXFK WKH VHUYOHW FRGH )LOWHUV PD\ EH WKH PRVW SRZHUIXO ZHE DSS GHYHORSPHQW WRRO \RX KDYH WKLV LV D QHZ FKDSWHU

Chapter 13. The Power of Filters Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 13. The Power of Filters

RI¿FLDO 6XQ H[DP REMHFWLYHV

)LOWHUV

&RYHUDJH 1RWHV

Copyright Safari Books Online #729515 'HVFULEH WKH :HE &RQWDLQHU UHTXHVW SURFHVVLQJ

PRGHO ZULWH DQG FRQ¿JXUH D ¿OWHU FUHDWH D UHTXHVW RU UHVSRQVH ZUDSSHU DQG JLYHQ D GHVLJQ SUREOHP GHVFULEH KRZ WR DSSO\ D ¿OWHU RU ZUDSSHU

4HIS OBJECTIVE IS COVERED COMPLETELY IN THIS CHAPTER

*LYHQ D VFHQDULR GHVFULSWLRQ ZLWK D OLVW RI LVVXHV

VHOHFW D SDWWHUQ WKDW ZRXOG VROYH WKH LVVXHV 7KH OLVW RI SDWWHUQV \RX PXVW NQRZ DUH ,QWHUFHSWLQJ )LOWHU 0RGHO 9LHZ &RQWUROOHU )URQW &RQWUROOHU 6HUYLFH /RFDWRU %XVLQHVV 'HOHJDWH DQG 7UDQVIHU 2EMHFW

0DWFK GHVLJQ SDWWHUQV ZLWK VWDWHPHQWV GHVFULELQJ

SRWHQWLDO EHQH¿WV WKDW DFFUXH IURP WKH XVH RI WKH SDWWHUQ IRU DQ\ RI WKH IROORZLQJ SDWWHUQV ,QWHUFHSWLQJ )LOWHU 0RGHO 9LHZ &RQWUROOHU 6HUYLFH /RFDWRU %XVLQHVV 'HOHJDWH DQG 7UDQVIHU 2EMHFW

&ILTERS WHICH ARE COVERED IN THIS CHAPTER ARE AN EXAMPLE OF IMAGINE THIS THE )NTERCEPTING &ILTER PATTERN 7E DON T COVER PATTERN SPECIlC INFO UNTIL THE 0ATTERNS CHAPTER BUT IT S IN 4()3 CHAPTER WHERE YOU ACTUALLY SEE A DESIGN THAT DEMONSTRATES THE )NTERCEPTING &ILTER PATTERN

FKDSWHU

Chapter 13. The Power of Filters Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 13. The Power of Filters

¿OWHUV DQG ZUDSSHUV

-VPIVKQVO \PM MV\QZM _MJ IXXTQKI\QWV 3OMETIMES YOU NEED TO ENHANCE YOUR SYSTEM IN WAYS THAT SPAN MANY DIFFERENT USE CASES OR REQUESTS &OR EXAMPLE YOU MIGHT WANT TO KEEP TRACK OF YOUR SYSTEM S RESPONSE TIMES ACROSS ALL OF ITS DIFFERENT USER INTERACTIONS

, JRW JRRG QHZV DQG EDG QHZV WRGD\ 7KH JRRG QHZV LV WKDW WKH QHZ ´$GG \RXU IDYRULWH UHFLSHµ IHDWXUH RQ WKH %HHU VLWH LV YHU\ SRSXODU 7KH EDG QHZV LV WKDW WKH ERVV ZDQWV XV WR NHHS WUDFN RI DOO WKH XVHUV ZKR DFFHVV WKHVH VHUYOHWV

, VXUH GRQ·W ZDQW WR JR PRGLI\ D EXQFK RI ZRUNLQJ VHUYOHWV HVSHFLDOO\ ZKHQ , NQRZ WKDW DV VRRQ DV , DGG XVHU WUDFNLQJ WKH ERVV ZLOO WHOO PH WR WDNH LW RXW DJDLQ

\RX DUH KHUH

Chapter 13. The Power of Filters Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 13. The Power of Filters

UHTXHVW DQG UHVSRQVH Âż OWHUV

0W_ IJW]\ [WUM SQVL WN šNQT\MZÂş' &ILTERS ARE *AVA COMPONENTSˆVERY SIMILAR TO SERVLETSˆTHAT YOU CAN USE TO INTERCEPT AND PROCESS REQUESTS BEFORE THEY ARE SENT TO THE SERVLET OR TO PROCESS RESPONSES AFTER THE SERVLET HAS COMPLETED BUT BEFORE THE RESPONSE GOES BACK TO THE CLIENT 4HE #ONTAINER DECIDES WHEN TO INVOKE YOUR l LTERS BASED ON DECLARATIONS IN THE $$ )N THE $$ THE DEPLOYER MAPS WHICH l LTERS WILL BE CALLED FOR WHICH REQUEST 52, PATTERNS 3O IT S THE DEPLOYER NOT THE PROGRAMMER WHO DECIDES WHICH SUBSET OF REQUESTS OR RESPONSES SHOULD BE PROCESSED BY WHICH l LTERS

se objects The request and respon r... lte Ăž the to sed being pas

And coming out of the Ăžlter and being passed to the servlet.

s. Clueles :HE EURZVHU

&RQWDLQHU

&OLHQW

6HUYOHW )LOWHU

)XQ WKLQJV WR GR ZLWK )LOWHUV

The servlet changed, andwahas never knowledge of s no the Ăžlters.

2EQUEST l LTERS CAN

PERFORM SECURITY CHECKS REFORMAT REQUEST HEADERS OR BODIES AUDIT OR LOG REQUESTS 2ESPONSE l LTERS CAN

COMPRESS THE RESPONSE STREAM APPEND OR ALTER THE RESPONSE STREAM CREATE A DIFFERENT RESPONSE ALTOGETHER

7KHUH LV RQO\ 21( Ă€ OWHU LQWHUIDFH )LOWHU HTXHVW)LOWHU 7KHUHÂśV QR VXFK WKLQJ DV D 5 ²LWÂśV MXVW )LOWHU RU 5HVSRQVH)LOWHU LQWHUIDFH HVW Âż OWHU YV D :KHQ ZH WDON DERXW D UHTX RQO\ DERXW KRZ UHVSRQVH Âż OWHU ZHÂśUH WDONLQJ FWXDO Âż OWHU LQWHU \RX 86( WKH Âż OWHU QRW WKH D U LV FRQFHUQHG IDFH $V IDU DV WKH &RQWDLQH OWHU²DQ\WKLQJ WKDW WKHUH LV RQO\ RQH NLQG RI Âż IDFH LPSOHPHQWV WKH )LOWHU LQWHU

FKDSWHU

Chapter 13. The Power of Filters Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 13. The Power of Filters

Âż OWHUV DQG ZUDSSHUV

.QT\MZ[ IZM UWL]TIZ IVL KWVNQO]ZIJTM QV \PM ,, &ILTERS CAN BE CHAINED TOGETHER TO RUN ONE AFTER THE OTHER &ILTERS ARE DESIGNED TO BE TOTALLY SELF CONTAINED ! l LTER DOESN T CARE WHICH IF ANY l LTERS RAN BEFORE IT DID AND IT DOESN T CARE WHICH ONE WILL RUN NEXT 4HE $$ CONTROLS THE ORDER IN WHICH l LTERS RUN WE LL TALK ABOUT l LTER $$ CONl GURATION A LITTLE LATER IN THE CHAPTER

'' FRQĂ€ JXUDWLRQ 5SING THE $$ YOU CAN LINK THEM TOGETHER BY TELLING THE #ONTAINER h&OR THESE 52,S RUN l LTER THEN l LTER THEN l LTER THEN RUN THE TARGET SERVLET v

s.

Still clueles :HE EURZVHU

&OLHQW

)LOWHU

)LOWHU

)LOWHU

&RQWDLQHU

6HUYOHW )LOWHU

)LOWHU

)LOWHU

'' FRQĂ€ JXUDWLRQ 4HEN WITH A QUICK CHANGE TO THE $$ YOU CAN DELETE AND SWAP THEM WITH h&OR THESE 52,S RUN l LTER THEN l LTER AND THEN THE TARGET SERVLET v

nger WeÕre no loÞlter. is h t g usin :HE EURZVHU

&OLHQW

)LOWHU

)LOWHU

Now Ăžlter 3 and Ăžlter 7 are in a different order.

Nothing new here. As always, clueless.

&RQWDLQHU

6HUYOHW )LOWHU

7E RE FUDGING A LITTLE 4HE DEPLOYER OFTEN DOES NEED TO CONl GURE THE ORDER BASED ON THE CONSEQUENCES OF THE TRANSFORMATIONS PERFORMED BY THE l LTERS 9OU WOULDN T FOR EXAMPLE ADD A WATERMARK TO AN IMAGE AFTER YOU APPLIED A COMPRESSION l LTER )N THAT EXAMPLE THE WATERMARK l LTER WOULD HAVE TO DO ITS THING BEFORE THE DATA HITS THE COMPRESSION l LTER 4HE POINT IS YOU AS THE PROGRAMMER WILL NOT BUILD DEPENDENCIES INTO YOUR CODE \RX DUH KHUH

Chapter 13. The Power of Filters Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 13. The Power of Filters

¿OWHUV DUH OLNH VHUYOHWV

,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

<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

7KH &RQWDLQHU NQRZV WKHLU $3, &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

7KH &RQWDLQHU PDQDJHV WKHLU OLIHF\FOH *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

7KH\·UH GHFODUHG LQ WKH '' ! 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

FKDSWHU

Chapter 13. The Power of Filters Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 13. The Power of Filters

Âż OWHUV DQG ZUDSSHUV

*]QTLQVO \PM ZMY]M[\ \ZIKSQVO N QT\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

)LOWHUV KDYH QR LGHD ZKR¡V JRLQJ WR FDOO WKHP RU ZKR¡V QH[W LQ OLQH

erChain

Filter and Filt

LPSRUW MDYD LR rvlet are in javax.se LPSRUW MDYD[ VHUYOHW LPSRUW MDYD[ VHUYOHW KWWS +WWS6HUYOHW5HTXHVW

Every Ăžlter MUST implement the Filter interface.

SXEOLF FODVV %HHU5HTXHVW)LOWHU LPSOHPHQWV )LOWHU ^ SULYDWH )LOWHU&RQÂż J IF

You must implement init(), usually you just save the conĂžg object.

SXEOLF YRLG LQLW )LOWHU&RQÂż J FRQÂż J WKURZV 6HUYOHW([FHSWLRQ ^ WKLV IF FRQÂż J `

al ere you do the redoesnÕt doFilter() is whth od th me e th at e work.. Notic quest and response take HTTP reregular ServletRequest and objects... just e objects. ServletRespons +WWS6HUYOHW5HTXHVW KWWS5HT +WWS6HUYOHW5HTXHVW UHT But weÕre pretty sure that we can cast the 6WULQJ QDPH KWWS5HT JHW5HPRWH8VHU request and response to their HTTP subtypes. LI QDPH QXOO ^ SXEOLF YRLG GR)LOWHU 6HUYOHW5HTXHVW UHT 6HUYOHW5HVSRQVH UHVS )LOWHU&KDLQ FKDLQ WKURZV 6HUYOHW([FHSWLRQ ,2([FHSWLRQ ^

IF JHW6HUYOHW&RQWH[W ORJ ³8VHU ³ QDPH ³ LV XSGDWLQJ´ ` FKDLQ GR)LOWHU UHT UHVS ` SXEOLF YRLG GHVWUR\ ^ GR FOHDQXS VWXII ` `

This is how the next Ăžlter or servlet in line gets called - lots more on this in the next couple of pages.

You must implement destroy() but usually itÕs empty. \RX DUH KHUH

Chapter 13. The Power of Filters Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 13. The Power of Filters

¿OWHU OLIHF\FOH

) NQT\MZ¼[ TQNM KaKTM %VERY lLTER MUST IMPLEMENT THE THREE METHODS IN THE &ILTER INTERFACE INIT DO&ILTER AND DESTROY

)LUVW WKHUH·V LQLW

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

GR)LOWHU GRHV WKH KHDY\ OLIWLQJ 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

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

NOT AN (TTP3ERVLET2ESPONSE ! &ILTER#HAIN

) 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 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

4HE &ILTER#HAIN INTERFACE S DO&ILTER IS A LITTLE BIT DIFFERENT THAN THE &ILTER INTERFACE S DO&ILTER (ERE S THE MAIN DIFFERENCE

,Q WKH HQG WKHUH·V GHVWUR\

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 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

FKDSWHU

Chapter 13. The Power of Filters Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 13. The Power of Filters

¿OWHUV DQG ZUDSSHUV

<PQVS WN NQT\MZ[ I[ JMQVO ¹[\IKSIJTMº 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

) KWVKMX\]IT KITT [\IKS M`IUXTM )N THIS EXAMPLE A REQUEST FOR 3ERVLET! WILL BE lLTERED BY TWO lLTERS &ILTER THEN &ILTER

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

6HUYOHW$ VHUYLFH

)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

\PM [\IKS

\PM [\IKS

\PM [\IKS

\PM [\IKS

\PM [\IKS

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

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

\RX DUH KHUH

Chapter 13. The Power of Filters Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 13. The Power of Filters

FRQ¿JXULQJ ¿OWHUV

,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 'HFODULQJ D ÀOWHU

5XOHV IRU ÀOWHU!

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!

7KH ILOWHU QDPH! LV PDQGDWRU\ 7KH ILOWHU FODVV! LV PDQGDWRU\ 7KH LQLW SDUDP! LV RSWLRQDO DQG

'HFODULQJ D ÀOWHU PDSSLQJ WR D 85/ SDWWHUQ

5XOHV IRU ÀOWHU PDSSLQJ! 7KH ILOWHU QDPH! LV PDQGDWRU\ DQG LW LV XVHG

ILOWHU PDSSLQJ! ILOWHU QDPH!%HHU5HTXHVW ILOWHU QDPH! XUO SDWWHUQ! GR XUO SDWWHUQ! ILOWHU PDSSLQJ!

\RX FDQ KDYH PDQ\

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

'HFODULQJ D ÀOWHU PDSSLQJ WR D VHUYOHW QDPH ILOWHU PDSSLQJ! ¿OWHU QDPH!%HHU5HTXHVW ILOWHU QDPH! VHUYOHW QDPH!$GYLFH6HUYOHW VHUYOHW QDPH! ILOWHU PDSSLQJ!

7KH VHUYOHW QDPH! HOHPHQW GHILQHV ZKLFK VLQJOH ZHE DSS UHVRXUFH ZLOO XVH WKLV ILOWHU

,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 ''

FKDSWHU

Chapter 13. The Power of Filters Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 13. The Power of Filters

¿OWHUV DQG ZUDSSHUV

,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[ 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

'HFODULQJ D ÀOWHU PDSSLQJ IRU UHTXHVW GLVSDWFKHG ZHE UHVRXUFHV ¿OWHU PDSSLQJ! ¿OWHU QDPH!0RQLWRU)LOWHU ¿OWHU QDPH! XUO SDWWHUQ! GR XUO SDWWHUQ! GLVSDWFKHU!5(48(67 GLVSDWFKHU!

DQG RU GLVSDWFKHU!,1&/8'( GLVSDWFKHU!

DQG RU GLVSDWFKHU!)25:$5' GLVSDWFKHU!

DQG RU GLVSDWFKHU!(5525 GLVSDWFKHU! ¿OWHU!

'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

\RX DUH KHUH

Chapter 13. The Power of Filters Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 13. The Power of Filters

¿OWHU FRQ¿JXUDWLRQ H[HUFLVH

6KDUSHQ \RXU SHQFLO

%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

)LOWHUV

5HFLSHV +RSV/LVW GR

)LOWHUV

5HFLSHV 0RGLI\ 0RG5HFLSHV GR

)LOWHUV

+RSV/LVW GR

)LOWHUV

5HFLSHV $GG $GG5HFLSHV GR

)LOWHUV

FKDSWHU

Chapter 13. The Power of Filters Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 13. The Power of Filters

¿OWHUV DQG ZUDSSHUV

+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

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

\RX DUH KHUH

Chapter 13. The Power of Filters Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 13. The Power of Filters

D UHVSRQVH ¿OWHU

)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

5DFKHO·V SVHXGR FRGH IRU WKH FRPSUHVVLRQ ÀOWHU FODVV 0\&RPSUHVVLRQ)LOWHU LPSOHPHQWV )LOWHU ^ LQLW

SXEOLF YRLG GR)LOWHU UHTXHVW UHVSRQVH FKDLQ ^ WKLV LV ZKHUH UHTXHVW KDQGOLQJ ZRXOG JR

The servlet does its work at this point. Now that the se can get to wo rvlet is done, we response the serkrv on compressing the let generated...

FKDLQ GR)LOWHU UHTXHVW UHVSRQVH GR FRPSUHVVLRQ ORJLF KHUH ` GHVWUR\ `

7KH FRQFHSWXDO FDOO VWDFN 6HUYOHW$ VHUYLFH

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

0\&RPSUHVVLRQ)LOWHU GR)LOWHU U U F

7KH 6HUYOHW·V VHUYLFH PHWKRG JRHV RQ WKH WRS RI WKH VWDFN GRHV VRPH ZRUN JHQHUDWHV D UHVSRQVH RXWSXW DQG FRPSOHWHV

0\&RPSUHVVLRQ)LOWHU GR)LOWHU U U F

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

FKDSWHU

Chapter 13. The Power of Filters Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 13. The Power of Filters

Âż OWHUV DQG ZUDSSHUV

*]\ 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 `

7KH ILOWHU SDVVHV WKH UHTXHVW

DQG UHVSRQVH WR WKH VHUYOHW DQG ZDLWV SDWLHQWO\ IRU LWV FKDQFH WR FRPSUHVV VWXII

G 5HTXHVW DQ 5HVSRQVH

D 7KH VHUYOHW GRHV LWV WKLQJ

&RQWDLQHU :HE EURZVHU

F

&OLHQW

6HUYOHW

)LOWHU

5HVSRQVH

D

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

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

E

Uh-oh. This is a problem... the output doesnÕt wait for the Þlter!

2XWSXW 6WUHDP

+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

\RX DUH KHUH

Chapter 13. The Power of Filters Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 13. The Power of Filters

¿OWHULQJ WKH RXWSXW

<PM W]\X]\ PI[ TMN\ \PM J]QTLQVO 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"

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

A DIFFERENT response

Original request and response

FKDLQ GR)LOWHU

GR)LOWHU

&RQWDLQHU

6HUYOHW )LOWHU

FKDSWHU

Chapter 13. The Power of Filters Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 13. The Power of Filters

Âż OWHUV DQG ZUDSSHUV

?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

The Þlter passes a custom ÒMyResponseÓ, which implements HttpServletResponse (instead of the original REAL response the Container passed to the Þlter). VHUYLFH

JHW26

FXVWRP 0\5HVSRQVH

H

ZULW

FXVWRP 2XWSXW 6WUHDP )LOWHU

UHDO 5HVSRQVH

The ÒMyResponseÓ object delegates (passes-through), most of the calls it receives, to the ÒrealÓ response object.

UHDO 2XWSXW 6WUHDP

6HUYOHW

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).

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 \RX DUH KHUH

Chapter 13. The Power of Filters Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 13. The Power of Filters

LPSOHPHQWLQJ +WWS6HUYOHW5HVSRQVH

6HUYOHW5HVSRQVH LQWHUIDFH MDYD[ VHUYOHW 6HUYOHW5HVSRQVH

+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

LQWHUIDFH!!

6HUYOHW5HVSRQVH JHW%XIIHU6L]H

VHW&RQWHQW7\SH

JHW2XWSXW6WUHDP

JHW:ULWHU

0$1< PRUH PHWKRGV

+WWS6HUYOHW5HVSRQVH LQWHUIDFH MDYD[ VHUYOHW KWWS +WWS6HUYOHW5HVSRQVH

LQWHUIDFH!!

+WWS6HUYOHW5HVSRQVH

;PM LWM[V¼\ SVW_ IJW]\ \PM [MZ ^TM\ ?ZIXXMZ KTI[[M[

DGG&RRNLH

DGG'DWH+HDGHU

#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

DGG+HDGHU

"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

VHW6WDWXV

HQFRGH5HGLUHFW85/

HQFRGH85/

VHQG(UURU

VHQG5HGLUHFW

VHW'DWH+HDGHU

VHW+HDGHU

PRUH PHWKRGV

Remember, to implement HttpServletResponse you have to implement EVERYTHING from both it and its superinterface ServletResponse.

FKDSWHU

Chapter 13. The Power of Filters Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 13. The Power of Filters

¿ OWHUV DQG ZUDSSHUV

?ZIXXMZ[ 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 #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

OLVWHG LQ WKH $OWKRXJK QRW H[SOLFLWO\ X 0,*+7 VHH RIÀ FLDO REMHFWLYHV \R DP ´ 'HFRUDWRUµ RQ WKH H[ V QRQ - (( GHVLJQ SDWWHUQ U ROG JXOD LWK UH OLDU Z IDPL ,I \RX¶UH Q H[DPSOH H WKLV ZUDSSHU FODVVHV DV D JQL] UHFR DEO\ SURE \RX WKHQ HV FDOOHG DOWKRXJK LW LV DOVR VRPHWLP RI XVLQJ D 'HFRUDWRU SDWWHUQ V ZUDSV RUDWH U GHF DSSH U :U RUDWR :UDSSHU SDWWHUQ 7KH 'HF RQ $QG DQ ³HQKDQFHG´ LPSOHPHQWDWL RQH NLQG RI DQ REMHFW ZLWK LOLWLHV´ ZKLOH VWLOO GRLQJ DSDE HZ F GV Q Q ³DG PHD E\ ³HQKDQFHG´ ZH SHG WKLQJ GLG HYHU\WKLQJ WKH RULJLQDO ZUDS J ,¶P ZUDS %(77(5 YHUVLRQ RI WKH WKLQ RI D ,W¶V OLNH VD\LQJ ³,¶P MXVW D G PRUH ´ 2QH FKDUDFWHULVWLF V DQ W GRH LQJ L HU\WK R HY SLQJ², G LRQV WR WKH W GHOHJDWHV PHWKRG LQYRFDW KDW L U LV W DSSH U :U RUDWR 'HF QW HLQJ D FRPSOHWH UHSODFHPH WKLQJ LW ZUDSV UDWKHU WKDQ E

WrappER (your custom response object)

WrappEE (the original Container-created response object)

: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

\RX DUH KHUH

Chapter 13. The Power of Filters Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 13. The Power of Filters

D UHVSRQVH Âż OWHU

)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

this LetÕs subclass fo r our wrapper class es... own evil purpos

FODVV &RPSUHVVLRQ5HVSRQVH:UDSSHU H[WHQGV +WWS6HUYOHW5HVSRQVH:UDSSHU ^ RYHUULGH DQ\ PHWKRGV \RX ZDQW WR FXVWRPL]H `

WeÕll be doing some reaes!l overriding in a few pag

FODVV 0\&RPSUHVVLRQ)LOWHU LPSOHPHQWV )LOWHU ^ SXEOLF YRLG LQLW )LOWHU&RQÂż J FIJ ^ ` SXEOLF YRLG GR)LOWHU UHTXHVW UHVSRQVH FKDLQ ^

The act of ÒwrappingÓ the response with our custom Wrapper class.

&RPSUHVVLRQ5HVSRQVH:UDSSHU ZUDSSHG5HVS QHZ &RPSUHVVLRQ5HVSRQVH:UDSSHU UHVSRQVH FKDLQ GR)LOWHU UHTXHVW ZUDSSHG5HVS

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.

GR FRPSUHVVLRQ ORJLF KHUH ` SXEOLF YRLG GHVWUR\ ^ ` ` `

:UDSSHU

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

5HVS

5HVS 5HT

5HT

&RQWDLQHU

6HUYOHW )LOWHU

6LQFH ZH GLGQ¡W RYHUULGH DQ\

PHWKRGV LQ WKH :UDSSHU WKH RXWSXW VWUHDP LVQ¡W DIIHFWHG \HW

2XWSXW 6WUHDP

FKDSWHU

Chapter 13. The Power of Filters Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 13. The Power of Filters

Âż OWHUV DQG ZUDSSHUV

)LL IV W]\X]\ [\ZMIU ?ZIXXMZ ,ET S ADD A SECOND 7RAPPER

thod to return Override this me stream. ut tp ou om a cust

&RPSUHVVLRQ À OWHU GHVLJQ YHUVLRQ SVHXGRFRGH

FODVV &RPSUHVVLRQ5HVSRQVH:UDSSHU H[WHQGV +WWS6HUYOHW5HVSRQVH:UDSSHU ^ SXEOLF 6HUYOHW2XWSXW6WUHDP JHW2XWSXW6WUHDP WKURZV ^ VHUYOHW*]LS26 QHZ *]LS626 UHVS JHW2XWSXW6WUHDP

UHWXUQ VHUYOHW*]LS26 ` urn a ÒspecialÓ

Ret ServletOutputStream to whoever asks for one.

PD\EH RYHUULGH RWKHU PHWKRGV `

FODVV 0\&RPSUHVVLRQ)LOWHU LPSOHPHQWV )LOWHU ^

ÒWrappingÓ the ServletOutputStream with our custom ServletOutputStream Wrapper class. For now letÕs assume Gzip ServletOutputStream extends ServletOutputStream.

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\ ^ ` `

7KH ILOWHU SDVVHV WKH UHTXHVW

:UDSSHU

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

5HVS

5HVS 5HT

5HT

&RQWDLQHU

6HUYOHW

)LOWHU

:KHQ WKH VHUYOHW DVNV IRU DQ

LW GRHVQ¡W .12: WKDW LW ZLOO JHW D ´VSHFLDO¾ RXWSXW VWUHDP

:5$33(' 287387 675($0 \RX DUH KHUH

Chapter 13. The Power of Filters Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 13. The Power of Filters

UHVSRQVH FRPSUHVVLRQ Âż OWHU

<PM ZMIT KWUXZM[[QWV NQT\MZ KWLM 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 SDFNDJH FRP H[DPSOH ZHE LPSRUW MDYD[ VHUYOHW LPSRUW MDYD[ VHUYOHW KWWS LPSRUW MDYD LR LPSRUW MDYD XWLO ]LS *=,32XWSXW6WUHDP

<RX GRQÂśW Q HHG WR VWXG\ WKLV FRGH IR U WKH H[DP 7KH U

HVW RI WKLV H[ DPSOH LV D GHPRQVWUDWLR Q RI D UHVSRQ VH Âż MXVW VR WKDW \ RX FDQ VHH VR OWHU LQ DFWLRQ PHWKLQJ D OLWW PRUH UHDO ZR OH UOG <RX GRQÂśW QH XQGHUVWDQG W KLV SDUWLFXODU H HG WR OHDUQ RU [DPSOH IRU WK H[DP VR FRQ H VLGHU WKH UHV W RI WKLV FKDS FRPSOHWHO\ RS WHU WLRQDO

SXEOLF FODVV &RPSUHVVLRQ)LOWHU LPSOHPHQWV )LOWHU ^ SULYDWH 6HUYOHW&RQWH[W FW[ SULYDWH )LOWHU&RQÂż J FIJ

The init method saves the conĂžg object to the servlet

and a quick reference SXEOLF YRLG LQLW )LOWHU&RQÂż J FIJ context object (for logging purposes). WKURZV 6HUYOHW([FHSWLRQ ^ WKLV FIJ FIJ FW[ FIJ JHW6HUYOHW&RQWH[W FW[ ORJ FIJ JHW)LOWHU1DPH Âł LQLWLDOL]HG ´ 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

SXEOLF YRLG GR)LOWHU 6HUYOHW5HTXHVW UHT if and only if the client includes an Accept 6HUYOHW5HVSRQVH UHVS Encoding header (speciĂžcally, for gzip). )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

Does the client accept GZIP compression?

If so, wrap the response object with a compression wrapper.

FKDSWHU

Chapter 13. The Power of Filters Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 13. The Power of Filters

Âż OWHUV DQG ZUDSSHUV

+WUXZM[[QWV NQT\MZ KWLM KWV\

'HEXJJLQJ 7LS 4O TEST THIS l LTER COMMENT OUT THIS LINE OF CODE 9OU SHOULD SEE ILLEGIBLE COMPRESSED DATA IN YOUR BROWSER

response Declare that theGZ IP encoded. content is being

ZUDSSHG5HVS VHW+HDGHU ³&RQWHQW (QFRGLQJ´ ³J]LS´ IF GR)LOWHU UHTXHVW ZUDSSHG5HVS

Chain to the next component.

*=,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 ` `

š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

A GZIP compression stream must be Ă’ĂžnishedĂ“, which also Ă&#x;ushes the GZIP stream buffer, and sends all of its data to the original response stream. The container handles the rest of the work.

6R IDU VR JRRG +RZ KDUG FDQ D OLWWOH WKLQJ OLNH D ZUDSSHU EH" )DPRXV ODVW ZRUGV

/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 \RX DUH KHUH

Chapter 13. The Power of Filters Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 13. The Power of Filters

UHVSRQVH FRPSUHVVLRQ ZUDSSHU

+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

The compressed output stream for the servlet response.

The PrintWriter object to the compressed output stream.

&RPSUHVVLRQ5HVSRQVH:UDSSHU +WWS6HUYOHW5HVSRQVH UHVS ^ VXSHU UHVS `

SXEOLF YRLG VHW&RQWHQW/HQJWK LQW OHQ ^ ` SXEOLF *=,32XWSXW6WUHDP JHW*=,32XWSXW6WUHDP ^ UHWXUQ WKLV VHUYOHW*]LS26 LQWHUQDO*]LS26 `

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 output 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 Ă&#x;ush the GZIP stream.

FKDSWHU

Chapter 13. The Power of Filters Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 13. The Power of Filters

Âż OWHUV DQG ZUDSSHUV

+WUXZM[[QWV _ZIXXMZ KWLM KWV\ Provide access to a decorated servlet output stream.

SULYDWH 2EMHFW VWUHDP8VHG QXOO

SXEOLF 6HUYOHW2XWSXW6WUHDP JHW2XWSXW6WUHDP WKURZV ,2([FHSWLRQ ^ LI VWUHDP8VHG QXOO VWUHDP8VHG SZ

^ WKURZ QHZ ,OOHJDO6WDWH([FHSWLRQ ` Allow the servlet to access a servlet output stream, only if the servlet has not already LI VHUYOHW*]LS26 QXOO ^ accessed the print writer. VHUYOHW*]LS26 QHZ *=,36HUYOHW2XWSXW6WUHDP JHW5HVSRQVH

JHW2XWSXW6WUHDP

Wrap the original servlet output VWUHDP8VHG VHUYOHW*]LS26 stream with our compression ` servlet output stream. UHWXUQ VHUYOHW*]LS26 ` decorated

Provide access to a print writer.

SXEOLF 3ULQW:ULWHU JHW:ULWHU WKURZV ,2([FHSWLRQ ^ LI VWUHDP8VHG QXOO VWUHDP8VHG VHUYOHW*]LS26

^ WKURZ QHZ ,OOHJDO6WDWH([FHSWLRQ ` Allow the servlet to access a print writer, only if the servlet has not already accessed LI SZ QXOO ^ servlet output stream. the VHUYOHW*]LS26 QHZ *=,36HUYOHW2XWSXW6WUHDP JHW5HVSRQVH

To make a print writer, we have JHW2XWSXW6WUHDP

to Ăžrst wrap the servlet output 2XWSXW6WUHDP:ULWHU RVZ stream and then wrap the QHZ 2XWSXW6WUHDP:ULWHU VHUYOHW*]LS26 compression servlet output stream JHW5HVSRQVH JHW&KDUDFWHU(QFRGLQJ

in two additional output stream SZ QHZ 3ULQW:ULWHU RVZ decorators: OutputStreamWriter VWUHDP8VHG SZ which converts characters into ` bytes, and then a PrintWriter on UHWXUQ SZ top of the OutputStreamWriter ` object. `

\RX DUH KHUH

Chapter 13. The Power of Filters Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 13. The Power of Filters

UHVSRQVH RXWSXW GHFRUDWRU

+WUXZM[[QWV _ZIXXMZ PMTXMZ KTI[[ KWLM 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 FODVV *=,36HUYOHW2XWSXW6WUHDP H[WHQGV 6HUYOHW2XWSXW6WUHDP ^

*=,32XWSXW6WUHDP LQWHUQDO*]LS26

Keep a reference to the raw GZIP stream. This instance variable is package-private to allow the compression response wrapper access to this variable..

'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).

FKDSWHU

Chapter 13. The Power of Filters Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 13. The Power of Filters

¿OWHUV DQG ZUDSSHUV

6KDUSHQ \RXU SHQFLO

$16:(56 :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

)LOWHUV

5HFLSHV +RSV/LVW GR

)LOWHUV

5HFLSHV 0RGLI\ 0RG5HFLSHV GR

)LOWHUV

+RSV/LVW GR

)LOWHUV

5HFLSHV $GG $GG5HFLSHV GR

)LOWHUV

\RX DUH KHUH

Chapter 13. The Power of Filters Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 13. The Power of Filters

PRFN H[DP

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 $$

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!

FKDSWHU

Chapter 13. The Power of Filters Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 13. The Power of Filters

¿OWHUV DQG ZUDSSHUV

'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

\RX DUH KHUH

Chapter 13. The Power of Filters Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 13. The Power of Filters

PRFN H[DP

'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

FKDSWHU

Chapter 13. The Power of Filters Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 13. The Power of Filters

¿OWHUV DQG ZUDSSHUV

7HICH ABOUT lLTERS ARE TRUE #HOOSE ALL THAT APPLY

R ! &ILTERS MAY BE USED TO CREATE REQUEST OR RESPONSE WRAPPERS R " 7RAPPERS MAY BE USED TO CREATE REQUEST OR RESPONSE lLTERS R # 5NLIKE SERVLETS ALL lLTER INITIALIZATION CODE SHOULD BE PLACED IN THE CONSTRUCTOR SINCE THERE IS NO LQLW METHOD

R $ &ILTERS SUPPORT AN INITIALIZATION MECHANISM THAT INCLUDES AN LQLW METHOD THAT IS GUARANTEED TO BE CALLED BEFORE THE lLTER IS USED TO HANDLE REQUESTS

R % ! lLTER S GR)LOWHU METHOD MUST CALL GR)LOWHU ON THE INPUT )LOWHU&KDLQ OBJECT IN ORDER TO ENSURE THAT ALL lLTERS HAVE A CHANCE TO EXECUTE

R & 7HEN CALLING GR)LOWHU ON THE INPUT )LOWHU&KDLQ A lLTER S GR)LOWHU METHOD MUST PASS IN THE SAME 6HUYOHW5HTXHVW AND 6HUYOHW5HVSRQVH OBJECTS THAT WERE PASSED INTO IT

R ' ! lLTER S GR)LOWHU MAY BLOCK FURTHER REQUEST PROCESSING

7HICH ARE TRUE ABOUT THE SERVLET 7RAPPER CLASSES #HOOSE ALL THAT APPLY

R ! 4HEY PROVIDE THE ONLY MECHANISM FOR WRAPPING 6HUYOHW5HVSRQVH OBJECTS

R " 4HEY CAN BE USED TO DECORATE CLASSES THAT IMPLEMENT )LOWHU

R # 4HEY CAN BE USED EVEN WHEN THE APPLICATION DOES ./4 SUPPRT (440

R $ 4HE !0) PROVIDES WRAPPERS FOR 6HUYOHW5HTXHVW 6HUYOHW5HVSRQVH AND )LOWHU&KDLQ OBJECTS

R % 4HEY IMPLEMENT THE )NTERCEPTING &ILTER PATTERN R & 7HEN YOU SUBCLASS A WRAPPER CLASS YOU MUST OVERRIDE AT LEAST ONE OF THE WRAPPER CLASS S METHODS

\RX DUH KHUH

Chapter 13. The Power of Filters Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 13. The Power of Filters

PRFN DQVZHUV

&KDSWHU $QVZHUV

ction (Servlet v2.4 se

7HICH ARE TRUE ABOUT lLTERS #HOOSE ALL THAT APPLY

R ! ! lLTER CAN ACT ON ONLY THE REQUEST OR RESPONSE OBJECT

6)

NOT BOTH

R " 4HE GHVWUR\ METHOD IS ALWAYS A CONTAINER CALLBACK METHOD

R # 4HE GR)LOWHU METHOD IS ALWAYS A CONTAINER CALLBACK -Option C is incorrect, doFilter is both METHOD

a callback and an inline method.

R $ 4HE ONLY WAY A lLTER CAN BE INVOKED IS THROUGH A DECLARATION IN THE $$

rect, the order

E is incor R % 4HE NEXT lLTER IN A lLTER CHAIN CAN BE SPECIlED EITHER -Optionter execution is always BY THE PREVIOUS lLTER OR IN THE $$

of Ăžl . determined in the DD

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

ion 6)

ct (Servlet v2.4 se

-Option B is incorrect, because <url-pattern> mappings will be chained before <servlet-name> mappings. -Option D is incorrect, wrappers are examples of the Decorator pattern.

DECLARED VIA XUO SDWWHUQ! OR VIA VHUYOHW QDPH!

FKDSWHU

Chapter 13. The Power of Filters Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 13. The Power of Filters

ÂżOWHUV DQG ZUDSSHUV

'IVEN THIS METHOD IN AN OTHERWISE PROPERLY DElNED )LOWHU IMPLEMENTATION SXEOLF YRLG GR)LOWHU 6HUYOHW5HTXHVW UHT . 49) (Servlet v2.4 pg 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 ` ` it is valid 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

ect as quest. A is incorrrw -Option lt fo ard a re to er Ăž a for

-Option B is incorrect because it is valid for a Ăžlter to wrap a request (note that UserRequest must implement ServletRequest).

R # 4HIS LINE FKDLQ GR)LOWHU UHTXHVW UHVSRQVH -Option C is incorrect because the MUST BE INSERTED SOMEWHERE IN THE HOVH BLOCK

R $ 4HIS METHOD DOES NOT PROPERLY IMPLEMENT )LOWHU GR)LOWHU BECAUSE THE METHOD SIGNATURE IS INCORRECT

doFilter method is NOT required to call chain.doFilter().

-Option D is incorrect because the method signature is correct.

R % .ONE OF THE ABOVE

\RX DUH KHUH

Chapter 13. The Power of Filters Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 13. The Power of Filters

PRFN DQVZHUV

'IVEN A PARTIAL DEPLOYMENT DESCRIPTOR

. 53)

(Servlet v2.4 pg

Âż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

A is incorrect because this is R ! 4HE lLE IS INVALID BECAUSE THE 52, PATTERN P\ -Option syntax used to map a Ăžlter to proper IS MAPPED TO BOTH A SERVLET AND A lLTER

the same pattern as a servlet.

R " 4HE lLE IS INVALID BECAUSE NEITHER THE SERVLET NAME -Option B is incorrect because 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\

there is no such restriction.

-Option C is incorrect because Ăžlters are executed before servlets, not after.

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 -Option E is incorrect because CONTAIN A VHUYOHW QDPH! ELEMENT THAT DElNES WHICH SERVLET THE lLTER SHOULD BE APPLIED TO

either a <servlet-name> element or a <url-pattern> may be used within a <Ăžlter-mapping> element.

FKDSWHU

Chapter 13. The Power of Filters Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 13. The Power of Filters

ÂżOWHUV DQG ZUDSSHUV

. 51)

(Servlet v2.4 pg

7HICH ABOUT lLTERS ARE TRUE #HOOSE ALL THAT APPLY

R ! &ILTERS MAY BE USED TO CREATE REQUEST OR RESPONSE WRAPPERS -Option B is incorrect because R " 7RAPPERS MAY BE USED TO CREATE REQUEST OR RESPONSE lLTERS the terminology is reversed. R # 5NLIKE SERVLETS ALL lLTER INITIALIZATION CODE SHOULD BE PLACED IN

-Option C is incorrect because there is an init() method that should be used for Ăžlter initialization.

THE CONSTRUCTOR SINCE THERE IS NO LQLW METHOD

R $ &ILTERS SUPPORT AN INITIALIZATION MECHANISM THAT INCLUDES AN LQLW METHOD THAT IS GUARANTEED TO BE CALLED BEFORE THE lLTER IS USED TO HANDLE REQUESTS

R % ! lLTER S GR)LOWHU METHOD MUST CALL GR)LOWHU ON THE -Option E is incorrect because INPUT )LOWHU&KDLQ OBJECT IN ORDER TO ENSURE THAT ALL lLTERS HAVE A CHANCE TO EXECUTE

R & 7HEN CALLING GR)LOWHU ON THE INPUT )LOWHU&KDLQ A lLTER S GR)LOWHU METHOD MUST PASS IN THE SAME 6HUYOHW5HTXHVW AND 6HUYOHW5HVSRQVH OBJECTS THAT WERE PASSED INTO IT

R ' ! lLTER S GR)LOWHU MAY BLOCK FURTHER REQUEST PROCESSING

calling doFilter() is not necessary if a Ăžlter wishes to block further request processing.

-Option F is incorrect because the Þlter may choose to ÒwrapÓ the request or the response object and pass those instead.

7HICH ARE TRUE ABOUT THE SERVLET 7RAPPER CLASSES #HOOSE ALL THAT APPLY

(API)

-Option A is incorrect because you can create your own wrapper class.

R ! 4HEY PROVIDE THE ONLY MECHANISM FOR WRAPPING 6HUYOHW5HVSRQVH OBJECTS

R " 4HEY CAN BE USED TO DECORATE CLASSES THAT IMPLEMENT -Option B is incorrect because these classes

are used to wrap requests and responses.

)LOWHU

R # 4HEY CAN BE USED EVEN WHEN THE APPLICATION DOES ./4 SUPPRT (440

R $ 4HE !0) PROVIDES WRAPPERS FOR 6HUYOHW5HTXHVW -Option D is incorrect because the API r. 6HUYOHW5HVSRQVH AND )LOWHU&KDLQ OBJECTS

does NOT provide a FilterChain wrappe

R % 4HEY IMPLEMENT THE )NTERCEPTING &ILTER PATTERN -Option E is incorrect because these wrappers

implement the Decorator pattern..

R & 7HEN YOU SUBCLASS A WRAPPER CLASS YOU MUST OVERRIDE AT LEAST ONE OF THE WRAPPER CLASS S METHODS

\RX DUH KHUH

Chapter 13. The Power of Filters Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 14. Enterprise Design Patterns

SDWWHUQV DQG VWUXWV

(QWHUSULVH 'HVLJQ 3DWWHUQV , KHDUG WKDW KH GLG QRW XVH - (( SDWWHUQV DQG WKH SXQLVKPHQW IRU WKDW ZLOO EH VHYHUH

%ULWWDQ\ VDLG WKDW VKH VDZ -1', ORRNXS FRGH DFWXDOO\ ,1 KLV VHUYOHW &DQ \RX EHOLHYH WKDW" 5LJKW WKHUH LQ D GR3RVW PHWKRG

/RVHU

6RPHRQH KDV GRQH WKLV DOUHDG\ ,I \RX¶UH MXVW VWDUWLQJ WR GHYHORS ZHE DSSOLFDWLRQV LQ -DYD \RX¶UH OXFN\ <RX JHW WR H[SORLW WKH FROOHFWLYH ZLVGRP RI WKH WHQV RI WKRXVDQGV RI GHYHORSHUV ZKR¶YH EHHQ GRZQ WKDW URDG DQG JRW WKH W VKLUW 8VLQJ ERWK - (( VSHFL¿ F DQG RWKHU GHVLJQ SDWWHUQV \RX FDQ FDQ VLPSOLI\ \RXU FRGH DQG \RXU OLIH $QG WKH PRVW VLJQL¿ FDQW GHVLJQ SDWWHUQ IRU ZHE DSSV 09& HYHQ KDV D ZLOGO\ SRSXODU IUDPHZRUN 6WUXWV WKDW¶OO KHOS \RX FUDIW D À H[LEOH PDLQWDLQDEOH VHUYOHW )URQW &RQWUROOHU <RX RZH LW WR \RXUVHOI WR WDNH DGYDQWDJH RI HYHU\RQH HOVH¶V ZRUN VR WKDW \RX FDQ VSHQG PRUH WLPH RQ WKH PRUH LPSRUWDQW WKLQJV LQ OLIH VNLLQJ JROI VDOVD GDQFLQJ VRFFHU SRNHU SOD\LQJ WKH DFFRUGLDQ

WKLV LV D QHZ FKDSWHU

Chapter 14. Enterprise Design Patterns Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 14. Enterprise Design Patterns

RI¿FLDO 6XQ H[DP REMHFWLYHV

- (( 3DWWHUQV

&RYHUDJH 1RWHV

Copyright Safari Books Online #729515 *LYHQ D VFHQDULR GHVFULSWLRQ ZLWK D OLVW RI LVVXHV

VHOHFW WKH RQH RI WKH IROORZLQJ SDWWHUQV WKDW ZRXOG VROYH WKRVH LVVXHV ,QWHUFHSWLQJ )LOWHU 0RGHO 9LHZ &RQWUROOHU )URQW &RQWUROOHU 6HUYLFH /RFDWRU %XVLQHVV 'HOHJDWH DQG 7UDQVIHU 2EMHFW

0DWFK GHVLJQ SDWWHUQV ZLWK VWDWHPHQWV GHVFULELQJ SRWHQWLDO EHQH¿WV WKDW DFFUXH IURP WKH XVH RI WKH SDWWHUQ IRU DQ\ RI WKH IROORZLQJ SDWWHUQV ,QWHUFHSWLQJ )LOWHU 0RGHO 9LHZ &RQWUROOHU )URQW &RQWUROOHU 6HUYLFH /RFDWRU %XVLQHVV 'HOHJDWH DQG 7UDQVIHU 2EMHFW

4HE OBJECTIVES IN THIS SECTION ARE COVERED COMPLETELY IN THIS CHAPTER .O MAKE THAT -/2% THAN COMPLETELY 4HE EXAM QUESTIONS ON PATTERNS ARE THE LEAST TRICKY OF ALL THE POSSIBLE QUESTIONS YOU LL SEE ON THE EXAM SO YOU CAN ALMOST RELAX IN THIS SECTION )F YOU RE ALREADY FAMILIAR WITH THE FUNDAMENTAL ENTERPRISE DESIGN PATTERNS YOU CAN PROBABLY ANSWER THE EXAM QUESTIONS ON PATTERNS

!ND ALTHOUGH 3TRUTS IS NOT ON THE EXAM THIS CHAPTER ALSO INCLUDES AN INTRODUCTION TO 3TRUTS CURRENTLY THE MOST COMMONLY USED FRAMEWORK FOR AN -6# WEB APPLICATION

FKDSWHU

Chapter 14. Enterprise Design Patterns Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 14. Enterprise Design Patterns

SDWWHUQV DQG VWUXWV

?MJ [Q\M PIZL_IZM KIV OM\ KWUXTQKI\ML )N THE 2EAL 7ORLD WEB APPS CAN GET COMPLICATED ! POPULAR WEB SITE CAN GET HUNDREDS OF THOUSANDS OF HITS PER DAY 4O HANDLE THIS KIND OF VOLUME MOST BIG WEB SITES CREATE COMPLEX HARDWARE ARCHITECTURES IN WHICH THE SOFTWARE AND DATA IS DISTRIBUTED ACROSS MANY MACHINES ! COMMON ARCHITECTURE YOU RE PROBABLY QUITE FAMILIAR WITH IS CONl GURING THE HARDWARE IN LAYERS OR hTIERSv OF FUNCTIONALITY !DDING MORE COMPUTERS TO A TIER IS KNOWN AS HORIZONTAL SCALING AND IS CONSIDERED ONE OF THE BEST WAYS TO INCREASE THROUGHPUT :HE EURZVHU

:HE EURZVHU

:HE EURZVHU

&OLHQW

&OLHQW

&OLHQW

0RVW RI WKH VRIWZDUH IRU D ELJ ZHE DSSOLFDWLRQ OLYHV LQ HLWKHU WKH ´:HE 7LHU¾ RU WKH ´%XVLQHVV 7LHU¾

7KH ,QWHUQHW

(-% 6HUYHU :HE 6HUYHU

)LUHZDOO

:HE 6HUYHU

/RDG %DODQFHU

'% /HJDF\ 'DWDEDVH

/RDG %DODQFHU (-% 6HUYHU

:HE 6HUYHU

The ÒWeb TierÓ or ÒPresentation TierÓ. This is where the servlets and JSPs live. As a web site gets more hits, more servers can be added to handle the load.

Ă“. This is where The Ă’Business Tiers. More servers can live ic log business b site needs to be added when a we e. um vol re handle mo \RX DUH KHUH

Chapter 14. Enterprise Design Patterns Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 14. Enterprise Design Patterns

ZHE DSSV

?MJ IXXTQKI\QWV [WN\ _IZM KIV OM\ KWUXTQKI\ML !S WE VE SEEN IT S VERY COMMON FOR A WEB APPLICATION TO BE MADE UP OF MANY DIFFERENT KINDS OF SOFTWARE COMPONENTS 4HE WEB TIER FREQUENTLY CONTAINS (4-, PAGES *30S SERVLETS CONTROLLERS MODEL COMPONENTS IMAGES AND SO ON 4HE BUSINESS TIER CAN CONTAIN %*"S LEGACY APPLICATIONS LOOKUP REGISTRIES AND IN MOST CASES DATABASE DRIVERS AND DATABASES

GULYHUV

ILOWHUV

YLHZV -63V

PRGHOV

V FRQWUROOHU

LPDJHV

VHUYOHWV

+RZ DP , JRLQJ WR NHHS DOO WKLV VWXII RUJDQL]HG" :KDW LI WKH UHTXLUHPHQWV FKDQJH" +RZ FDQ , JHW WKLV WR UXQ IDVW"

-1',

7KLV LV ,QWHUQHW WLPH EDE\ 7KDW FRGH LV ZHHNV ROG 7LPH IRU VRPH QHZ IHDWXUHV

FKDSWHU

Chapter 14. Enterprise Design Patterns Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 14. Enterprise Design Patterns

SDWWHUQV DQG VWUXWV

4]KSa NWZ ][ _M PI^M 2 -- XI\\MZV[ 4HE GOOD NEWS IS THAT A LOT OF PEOPLE HAVE BEEN USING * %% CONTAINERS TO SOLVE THE VERY SAME PROBLEMS YOU RE LIKELY TO ENCOUNTER 4HEY FOUND REOCCURING THEMES IN THE NATURE OF THE PROBLEMS THEY WERE DEALING WITH AND THEY CAME UP WITH REUSABLE SOLUTIONS TO THESE PROBLEMS 4HESE DESIGN PATTERNS HAVE BEEN USED TESTED AND RElNED BY OTHER DEVELOPERS SO YOU DON T HAVE TO REINVENT THE WHEEL

+WUUWV XZM[[]ZM[

$ VRIWZDUH GHVLJQ SDWWHUQ LV ´D UHSHDWDEOH VROXWLRQ IRU D FRPPRQO\ RFFXULQJ VRIWZDUH SUREOHP µ

4HE MOST IMPORTANT JOB FOR A WEB APP IS TO PROVIDE THE END USER WITH A RELIABLE USEFUL AND CORRECT EXPERIENCE )N OTHER WORDS THE PROGRAM MUST SATISFY THE FUNCTIONAL REQUIREMENTS SUCH AS hSELECT A BEER STYLEv OR hADD MALT TO MY SHOPPING CARTv /NCE YOU VE MADE SURE THAT THE SYSTEM SUPPORTS THE USE CASES YOU LL MOST LIKELY BE FACED WITH ANOTHER SET OF REQUIREMENTSˆREQUIREMENTS FOR WHAT HAPPENS BEHIND THE SCENES I E THE NON FUNCTIONAL REQUIREMENTS

6KDUSHQ \RXU SHQFLO

:KDW DUH WKH ´LOLWLHVµ" :KDW DUH VRPH RI WKH LPSRUWDQW QRQ IXQFWLRQDO UHTXLUHPHQWV RI D V\VWHP \RX·YH ZRUNHG RQ RU FRXOG LPDJLQH ZRUNLQJ RQ " 2QH FOXH LV WKDW PRVW RI WKH UHTXLUHPHQWV ZRUGV HQG ZLWK ´LOLW\µ IRU H[DPSOH ´PDLQWDLQDELOLW\µ

\RX DUH KHUH

Chapter 14. Enterprise Design Patterns Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 14. Enterprise Design Patterns

WKH ³LOLWLHV´

8MZNWZUIVKM IVL \PM ¹QTQ\QM[º (ERE ARE THREE OF THE MOST IMPORTANT NON FUNCTIONAL REQUIREMENTS YOU RE LIKELY TO FACE

3HUIRUPDQFH )F YOUR WEBSITE IS TOO SLOW YOU LL OBVIOUSLY LOSE USERS )N THIS CHAPTER WE LL LOOK AT HOW PATTERNS CAN HELP AN INDIVIDUAL USER EXPERIENCE FASTER RESPONSE TIME AND HOW PATTERNS CAN HELP YOUR SYSTEM SUPPORT A GREATER NUMBER OF SIMULTANEOUS USERS THROUGHPUT -ORE ON THIS WHEN WE DISCUSS THE 4RANSFER /BJECT

0RGXODULW\

,I - (( SDWWHUQV FDQ KHOS PH VROYH DOO RI WKHVH LVVXHV ,·OO EH WKH KHUR DURXQG KHUH $QG WKDW FRXOG OHDG WR PRUH VWRFN RSWLRQV $QG ZKHQ ZH JHW DQRWKHU GRW FRP EXEEOH WKRVH RSWLRQV FRXOG DFWXDOO\ EH ZRUWK VRPHWKLQJ

)N ORDER FOR DIFFERENT PIECES OF YOUR APPLICATION TO RUN ON DIFFERENT BOXES AT THE SAME TIME YOUR SOFTWARE IS GOING TO HAVE TO BE MODULAR AND MODULAR IN JUST THE RIGHT WAYS

)OH[LELOLW\ 0DLQWDLQDELOLW\ DQG ([WHQVLELOLW\ &LEXIBILITY 9OU NEED TO CHANGE YOUR SYSTEM WITHOUT GOING THROUGH SOME BIG DEVELOPMENT CYCLE 9OU MIGHT NEED TO SWAP IN THE hLIMITED TIME SPECIAL OFFERv COMPONENTS FOR A BIG SALE 9OU MIGHT lND A BUG IN A NEW COMPONENT AND NEED TO SWAP IN THE OLDER COMPONENT TEMPORARILY 9OU NEED YOUR SYSTEM TO BE mEXIBLE -AINTAINABILITY 9OU MIGHT NEED TO CHANGE DATABASE VENDORS AND UPDATE YOUR SYSTEM QUICKLY 9OU MIGHT GET OBSCURE BUGS AND NEED TO TRACK THEM DOWN !3!0 4HE ADMINS MIGHT DECIDE TO RESTRUCTURE THE COMPANY S NAMING SERVICE AND YOU LL HAVE TO ADJUSTˆRIGHT NOW 9OU NEED YOUR SYSTEM TO BE MAINTAINABLE %XTENSIBILITY 4HE GUYS OVER IN MARKETING MIGHT NEED A NEW FEATURE TO LAND THAT BIG CLIENT 9OUR USERS MIGHT DEMAND THAT YOU SUPPORT A BRAND NEW FEATURE THAT THEIR BROWSERS HAVE 9OUR SYSTEM HAD BETTER BE EXTENSIBLE

FKDSWHU

Chapter 14. Enterprise Design Patterns Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 14. Enterprise Design Patterns

SDWWHUQV DQG VWUXWV

)TQOVQVO W]Z ^MZVIK]TIZ[ !LL OF THE * %% PATTERNS RELY HEAVILY ON COMMON SOFTWARE DESIGN PRINCIPLES YOU RE PROBABLY VERY FAMILIAR WITH )N THE NEXT FEW PAGES WE mING AROUND SEVERAL TERMS FOR THESE DESIGN PRINCIPLES $IFFERENT PEOPLE AND BOOKS MIGHT HAVE DIFFERENT PERSPECTIVES ON THE SAME TERMS SO WE RE GIVING YOU OUR DElNITIONS NOW SO THAT YOU LL KNOW WHAT WE MEAN

&RGH WR LQWHUIDFHV !S YOU RECALL AN INTERFACE IS A KIND OF A CONTRACT BETWEEN TWO OBJECTS 7HEN A CLASS IMPLEMENTS AN INTERFACE IT S SAYING IN EFFECT h-Y OBJECTS CAN SPEAK YOUR LANGUAGE v !NOTHER HUGE BENElT OF INTERFACES IS POLYMORPHISM -ANY CLASSES CAN IMPLEMENT THE SAME INTERFACE 4HE CALLING OBJECT DOESN T CARE WHO IT S TALKING TO AS LONG AS THE CONTRACT IS UPHELD &OR EXAMPLE THE WEB CONTAINER CAN USE ANY COMPONENT THAT IMPLEMENTS THE 3ERVLET INTERFACE

6HSDUDWLRQ RI &RQFHUQV &RKHVLRQ 7E ALL KNOW THAT WHEN WE SPECIALIZE THE CAPABILITIES OF OUR SOFTWARE COMPONENTS THEY GET EASIER TO CREATE MAINTAIN AND REUSE ! NATURAL FALLOUT OF SEPARATING CONCERNS IS THAT COHESION TENDS TO INCREASE #OHESION MEANS THE DEGREE TO WHICH A CLASS IS DESIGNED FOR ONE COHESIVE TASK OR PURPOSE

+LGH &RPSOH[LW\ (IDING COMPLEXITY OFTEN GOES HAND IN HAND WITH SEPARATING CONCERNS &OR INSTANCE IF YOUR SYSTEM NEEDS TO COMMUNICATE WITH A LOOKUP SERVICE IT S BEST TO HIDE THE COMPLEXITY OF THAT OPERATION IN A SINGLE COMPONENT AND ALLOW ALL THE OTHER COMPONENTS THAT NEED ACCESS TO THE LOOKUP SERVICE TO USE THAT SPECIALIZED COMPONENT 4HIS APPROACH SIMPLIlES ALL OF THE SYSTEM COMPONENTS THAT ARE INVOLVED

\RX DUH KHUH

Chapter 14. Enterprise Design Patterns Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 14. Enterprise Design Patterns

22 GHVLJQ SULQFLSOHV

5WZM LM[QOV XZQVKQXTM[ /RRVH &RXSOLQJ "Y THEIR VERY NATURE // SYSTEMS INVOLVE OBJECTS TALKING TO EACH OTHER "Y CODING TO INTERFACES YOU CAN REDUCE THE NUMBER OF THINGS THAT ONE CLASS NEEDS TO KNOW ABOUT ANOTHER CLASS TO COMMUNICATE WITH IT 4HE LESS TWO CLASSES KNOW ABOUT EACH OTHER THE MORE LOOSELY COUPLED THEY ARE TO EACH OTHER ! VERY COMMON APPROACH WHEN CLASS ! WANTS TO USE METHODS IN CLASS " IS TO CREATE AN INTERFACE BETWEEN THE TWO /NCE CLASS " IMPLEMENTS THIS INTERFACE CLASS ! CAN USE CLASS " VIA THE INTERFACE 4HIS IS USEFUL BECAUSE LATER ON YOU CAN USE AN UPDATED CLASS " OR EVEN AN ENTIRELY DIFFERENT CLASS AS LONG AS IT UPHOLDS THE CONTRACT OF THE INTERFACE

5HPRWH 3UR[\ 4ODAY WHEN A WEB SITE GROWS THE ANSWER IS TO LASH TOGETHER MORE SERVERS AS OPPOSED TO UPGRADING A SINGLE HUGE MONOLITHIC SERVER 4HE OUTCOME IS THAT *AVA OBJECTS ON DIFFERENT MACHINES IN THEIR OWN SEPARATE HEAPS HAVE TO COMMUNICATE WITH EACH OTHER ,EVERAGING THE POWER OF INTERFACES A REMOTE PROXY IS AN OBJECT LOCAL TO THE hCLIENTv OBJECT THAT PRETENDS TO BE A REMOTE OBJECT 4HE PROXY IS REMOTE IN THAT IT IS REMOTE FROM THE OBJECT IT IS EMULATING 4HE CLIENT OBJECT COMMUNICATES WITH THE PROXY AND THE PROXY HANDLES ALL THE NETWORKING COMPLEXITIES OF COMMUNICATING WITH THE ACTUAL hSERVICEv OBJECT !S FAR AS THE CLIENT OBJECT IS CONCERNED IT S TALKING TO A LOCAL OBJECT

,QFUHDVH 'HFODUDWLYH &RQWURO $ECLARATIVE CONTROL OVER APPLICATIONS IS A POWERFUL FEATURE OF * %% #ONTAINERS -OST COMMONLY THIS DECLARATIVE CONTROL IS IMPLEMENTED USING THE APPLICATION S DEPLOYMENT DESCRIPTOR OR $$ -ODIFYING THE $$ GIVES US THE POWER TO CHANGE SYSTEM BEHAVIORS WITHOUT CHANGING CODE 4HE $$ IS AN 8-, lLE THAT CAN BE MAINTAINED AND UPDATED BY NON PROGRAMMERS 4HE MORE THAT WE WRITE OUR WEB APPLICATIONS TO LEVERAGE THE POWER OF THE $$ THE MORE ABSTRACT AND GENERIC OUR CODE BECOMES

FKDSWHU

Chapter 14. Enterprise Design Patterns Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 14. Enterprise Design Patterns

SDWWHUQV DQG VWUXWV

8I\\MZV[ \W []XXWZ\ ZMUW\M UWLMT KWUXWVMV\[ 7E VE TALKED AT A VERY THEORETICAL LEVEL ABOUT HOW * %% PATTERNS CAN HELP SIMPLIFY COMPLEX WEB APPLICATIONS 7E VE ALSO TALKED ABOUT THE SOFTWARE DESIGN PRINCIPLES THAT UNDERLIE * %% PATTERNS 7ITH THAT FOUNDATION IN PLACE LET S GET OUR FEET WET BY TALKING ABOUT A FEW OF THE SIMPLER * %% PATTERNS !LL THREE OF THE PATTERNS WE RE ABOUT TO DISCUSS SHARE THE GOAL OF MAKING REMOTE MODEL COMPONENTS MANAGEABLE

$ )DEOH 7KH %HHU $SS *URZV /NCE UPON A TIME THERE WAS A SMALL DOT COM THAT HAD A WEBSITE THAT OFFERED HOME BREWING RECIPES ADVICE INGREDIENTS AND SUPPLIES FOR BEER AlCIONADOS "EING A SMALL COMPANY WITH BIG PLANS THEY HAD ONLY ONE PRODUCTION SERVER TO SUPPORT THE SITE BUT THEY HAD CREATED TWO SEPARATE SOFTWARE DEVELOPMENT TEAMS TO GROW THE APPLICATION 4HE lRST TEAM KNOWN AS THE h7EB $ESIGNERSv FOCUSED THEIR ATTENTIONS ON THE VIEW COMPONENTS OF THE SYSTEM 4HE SECOND TEAM KNOWN AS THE h"USINESS 4EAMv FOCUSED ON THE CONTROLLER COMPONENTS 2ACHEL S FOCUS AND THE MODEL COMPONENTS +IM S AREA 3HUIRUPDQFH LV UHDOO\ EHFRPLQJ D ELJ LVVXH :H·YH JRW D VPDOO EXGJHW IRU KDUGZDUH QRZ EXW , NQRZ ZH·OO KDYH WR EH UHDG\ WR VSOLW RII PRUH SLHFHV RI WKH DSS ZKHQ WKH WLPH FRPHV

,W·V WKH XVHU H[SHULHQFH GXGH :H·UH DOO DERXW WKH VW\OH VKHHWV 'RQ·W ERWKHU XV ZLWK \RXU EXVLQHVV WLHU LVVXHV³ZH·UH FUHDWLQJ DUW

,·P JHWWLQJ WLUHG

:HE 'HVLJQHUV DFWRUV ZDLWHUV

6HUYHU

5DFKHO DQG .LP WKH %XVLQHVV 7HDP

\RX DUH KHUH

Chapter 14. Enterprise Design Patterns Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 14. Enterprise Design Patterns

09& ZKHQ HYHU\WKLQJ LV ORFDO

0W_ \PM *][QVM[[ <MIU []XXWZ\[ \PM _MJ LM[QOVMZ[ _PMV \PM 5>+ KWUXWVMV\[ IZM Z]VVQVO WV WVM 2>5 !S LONG AS THE BUSINESS GUYS KEEP THE INTERFACES TO THEIR MODEL COMPONENTS CONSISTENT EVERYONE WILL BE HAPPY 4HE TWO KEY INTERFACE POINTS IN THEIR DESIGN ARE WHEN THE CONTROLLER l RST INTERACTS WITH A MODEL COMPONENT STEPS AND BELOW AND THEN LATER WHEN A *30 VIEW INTERACTS WITH THE BEAN IT NEEDS STEPS AND BELOW

*HWWLQJ FXVWRPHU GDWD IRU D FOLHQW

The clientÕs ÒgetCustomerDataÓ request being sent to the model. RachelÕs need is for this interface to be stable.

5DFKHO¡V WXUI

+DYLQJ UHFHLYHG D UHTXHVW

0RGHO D

6HUYLFH &RQWUROOHU D

0DQDJH &XVWRPHU

D

F E

5HTXHVW

0RGHO

E

IRU FXVWRPHU LQIRUPDWLRQ WKH &RQWUROOHU FDOOV WKH 0DQDJH&XVWRPHU VHUYLFH FRPSRQHQW D 0RGHO 7KH VHUYLFH '% FRPSRQHQW GRHV D -'%& FDOO WR WKH OHJDF\ GDWDEDVH WKHQ FUHDWHV /HJDF\ 'DWDEDVH D &XVWRPHU EHDQ WKLV LV 127 DQ (-% MXVW D SODLQ ROG -DYD%HDQ SRSXODWHG ZLWK FXVWRPHU GDWD IURP WKH GDWDEDVH

D

(QWLW\

E F

9LHZ

&XVWRPHU %HDQ

:HE GHVLJQHUV KDQJ RXW KHUH

.LP¡V 5HVSRQVLELOW\

The JSP uses EL to access the Customer Bean properties. The web designerÕs need is for this interface to be stable.

A plain JavaBean, not an EJB.

7KH &RQWUROOHU DGGV WKH

&XVWRPHU EHDQ UHIHUHQFH WR WKH UHTXHVW REMHFW DV DQ DWWULEXWH

7KH &RQWUROOHU IRUZDUGV WR

WKH 9LHZ -63 7KH -63 JHWV WKH UHIHUHQFH WR WKH &XVWRPHU EHDQ IURP WKH UHTXHVW REMHFW

7KH 9LHZ -63 XVHV (/ WR JHW WKH &XVWRPHU %HDQ SURSHUWLHV LW QHHGV WR VDWLVI\ WKH RULJLQDO UHTXHVW

FKDSWHU

Chapter 14. Enterprise Design Patterns Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 14. Enterprise Design Patterns

SDWWHUQV DQG VWUXWV

0W_ _QTT \PMa PIVLTM ZMUW\M WJRMK\[' 4HINGS ARE FAIRLY SIMPLE WHEN ALL THE WEB APP COMPONENTS MODEL VIEW CONTROLLER ARE ON THE SAME SERVER RUNNING IN THE SAME *6- )T S JUST PLAIN OLD *AVAˆGET A REFERENCE CALL A METHOD "UT +IM AND 2ACHEL NOW HAVE TO lGURE OUT WHAT TO DO WHEN THEIR MODEL COMPONENTS ARE REMOTE TO THE WEB APP

6R ZH KDYH WR PRYH VRPH RI RXU PRGHO FRPSRQHQWV RII RI WKH ZHE VHUYHU KDUGZDUH DQG RQ WR WKH EXVLQHVV WLHU VHUYHUV <RX NQRZ WKLV ZRQ·W EH WKH ODVW WLPH

-1', DQG 50, D TXLFN RYHUYLHZ *AVA AND * %% PROVIDE MECHANISMS THAT HANDLE TWO OF THE MOST COMMON DIFlCULTIES THAT ARISE WHEN OBJECTS NEED TO COMMUNICATE ACROSS A NETWORKˆLOCATING REMOTE OBJECTS AND HANDLING ALL THE LOW LEVEL NETWORK )/ COMMUNICATIONS BETWEEN LOCAL AND REMOTE OBJECTS )N OTHER WORDS HOW TO lND REMOTE OBJECTS AND HOW TO INVOKE THEIR METHODS

-1', LQ D QXWVKHOO *.$) STANDS FOR *AVA .AMING AND $IRECTORY )NTERFACE AND IT S AN !0) TO ACCESS NAMING AND DIRECTORY SERVICES *.$) GIVES A NETWORK A CENTRALIZED LOCATION TO lND THINGS )F YOU VE GOT OBJECTS THAT YOU WANT OTHER PROGRAMS ON YOUR NETWORK TO lND AND ACCESS YOU REGISTER YOUR OBJECTS WITH *.$) 7HEN SOME OTHER PROGRAM WANTS TO USE YOUR OBJECTS THAT PROGRAM USES *.$) TO LOOK THEM UP *.$) MAKES RELOCATING COMPONENTS ON YOUR NETWORK EASIER /NCE YOU VE RELOCATED A COMPONENT ALL YOU NEED TO DO IS TELL *.$) THE NEW LOCATION 4HAT WAY OTHER CLIENT COMPONENT ONLY NEED TO KNOW HOW TO lND *.$) WITHOUT KNOWING WHERE THE OBJECTS REGISTERED WITH *.$) ARE ACTUALLY LOCATED

([DFWO\ 3OXV \RX FDQ EHW WKDW LQ WKH HQG ZH·OO EH DIIHFWLQJ D ORW RI REMHFWV 2XU GHVLJQ IRU QHWZRUN FRPPXQLFDWLRQV EHWWHU EH DV VLPSOH DV SRVVLEOH

50, LQ D QXWVKHOO 2-) STANDS FOR 2EMOTE -ETHOD )NVOCATION A MECHANISM THAT GREATLY SIMPLIlES THE PROCESS OF GETTING OBJECTS TO COMMUNICATE ACROSS A NETWORK 4URN THE PAGE AND WE LL DO A QUICK REFRESH IN CASE YOU RE A LITTLE RUSTY 7HY THINK ABOUT 2-) HERE "ECAUSE IT WILL HELP MAKE TWO OF THE * %% DESIGN PATTERNS EASIER TO UNDERSTAND AND APPRECIATE

\RX DUH KHUH

Chapter 14. Enterprise Design Patterns Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 14. Enterprise Design Patterns

50, RYHUYLHZ

:51 UISM[ TQNM MI[a 9OU WANT YOUR OBJECTS TO COMMUNICATE ACROSS A NETWORK )N OTHER WORDS YOU WANT AN OBJECT IN ONE *6- TO CAUSE A METHOD INVOCATION ON A REMOTE OBJECT I E AN OBJECT IN A DIFFERENT *6- BUT YOU WANT TO PRETEND THAT YOU RE INVOKING A METHOD ON A LOCAL OBJECT 4HAT S WHAT 2-) GIVES YOUˆ THE ABILITY TO PRETEND ALMOST THAT YOU RE MAKING A REGULAR OLD LOCAL METHOD CALL

?PI\ _M _IV\ ,¡P KDSS\ WR GR D OLWWOH H[WUD ZRUN XS IURQW VR WKDW UHPRWH FOLHQWV FDQ FDOO P\ PHWKRGV ZLWKRXW KDYLQJ WR NQRZ ZKHUH , UHVLGH

, MXVW ZDQW WR FDOO D PHWKRG RQ WKLV REMHFW \RX NQRZ D VLPSOH ´JHW&XVW'DWD ¾ ZRXOG EH QLFH , GR 127 ZDQW WR GR D EXQFK RI QHWZRUNLQJ DQG ,2

0W_ :51 X]TT[ Q\ WNN

&OLHQW 2EMHFW

6HUYHU 2EMHFW

,ET S SAY YOUR hBUSINESS GUYv HAT IS ON AND YOU WANT TO MAKE AN OBJECT AVAILABLE TO REMOTE CLIENTS 5SING 2-) YOU LL CREATE A PROXY AND YOU LL REGISTER YOUR OBJECT WITH SOME SORT OF REGISTRY !NY CLIENT WHO WANTS TO CALL YOUR METHODS WILL DO A LOOKUP ON THE REGISTRY AND GET A COPY OF THE REMOTE PROXY 4HEN THE CLIENT WILL MAKE CALLS ON THE REMOTE PROXY PRETENDING IT S THE REAL THING 4HE REMOTE PROXY CALLED A STUB HANDLES ALL THE COMMUNICATIONS DETAILS LIKE SOCKETS ) / STREAMS 4#0 )0 SERIALIZING AND DESERIALIZING METHOD ARGUMENTS AND RETURN VALUES HANDLING EXCEPTIONS AND SO FORTH /H BY THE WAY THERE S USUALLY A PROXY ON THE SERVER SIDE OFTEN CALLED A hSKELETONv DOING SIMILAR CHORES ON THE SERVER SIDE WHERE THE REMOTE OBJECT LIVES $Q 50, PLUDFOH RFFXUV JHW&XVW'DWD

&OLHQW 2EMHFW

7KH FOLHQW PDFKLQH

JHW&XVW'DWD

6WXE

JHW&XVW'DWD

6NHOHWRQ 6HUYHU 2EMHFW

There are 3 versions of getCustData()! The remote proxyÕs, the skeletonÕs and the serverÕs, which is the real one.

7KH VHUYHU PDFKLQH

The Òremote proxyÓ

FKDSWHU

Chapter 14. Enterprise Design Patterns Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 14. Enterprise Design Patterns

SDWWHUQV DQG VWUXWV

2][\ I TQ\\TM UWZM :51 ZM^QM_ 7ITHOUT DOING AN ENTIRE 2-) TUTORIAL

WE LL LOOK AT A FEW MORE HIGH LEVEL 2-) TOPICS TO MAKE SURE WE RE ALL TALKING THE SAME TALK 3PECIlCALLY WE LL LOOK AT THE SERVER SIDE AND CLIENT SIDE OF USING 2-)

50, RQ WKH 6HUYHU VLGH LQ VWHSV $Q RYHUYLHZ RI WKH VWHSV WR PDNH D UHPRWH PRGHO VHUYLFH WKDW UXQV RQ WKH VHUYHU

#REATE A REMOTE INTERFACE 4HIS IS WHERE THE SIGNATURE FOR METHODS LIKE GET#UST$ATA WILL RESIDE "OTH THE STUB PROXY AND THE ACTUAL MODEL SERVICE THE REMOTE OBJECT WILL IMPLEMENT THIS INTERFACE

#REATE THE REMOTE IMPLEMENTATION IN OTHER WORDS THE ACTUAL MODEL OBJECT THAT WILL RESIDE ON THE MODEL SERVER 4HIS INCLUDES CODE THAT REGISTERS THE MODEL WITH A WELL KNOWN REGISTRY SERVICE SUCH AS *.$) OR THE 2-) REGISTRY

'ENERATE THE STUB AND POSSIBLY SKELETON 2-) PROVIDES A COMPILER CALLED RMIC THAT WILL CREATE THE PROXIES FOR YOU

3TART RUN THE MODEL SERVICE WHICH WILL REGISTER ITSELF WITH THE REGISTRY AND WAIT FOR CALLS FROM FAR AWAY CLIENTS

7KH FOLHQW VLGH ZLWK DQG ZLWKRXW 50, ,ET S COMPARE THE PSEUDO CODE OF A CLIENT USING 2-) TO THE PSEUDO CODE OF A CLIENT ./4 USING 2-)

7KH FOLHQW ZLWK 50,

7KH FOLHQW ZLWKRXW 50, SXEOLF YRLG JR&OLHQW ^

SXEOLF YRLG JR&OLHQW ^

WU\ ^ JHW D QHZ 6RFNHW

WU\ ^

ORRNXS WKH UHPRWH REMHFW VWXE

FDOO WKH UHPRWH REMHFW¶V PHWKRG

JHW DQ 2XWSXW6WUHDP FKDLQ LW WR DQ 2EMHFW2XWSXW6WUHDP

VHQG DQ RSFRGH RS DUJXPHQWV ÀXVK 26

JHW WKH ,QSXW6WUHDP FKDLQ LW WR DQ 2EMHFW,QSXW6WUHDP

UHDG WKH UHWXUQ YDOXH DQG RU KDQGOH H[FHSWLRQV

FORVH VWXII

` FDWFK DQG KDQGOH UHPRWH H[FHSWLRQV `

` FDWFK DQG KDQGOH UHPRWH H[FHSWLRQV ` ,I \RX DUHQ·W UHDOO\ IDPLOLDU ZLWK 50, GULYH WR \RXU ORFDO ERRNVWRUH SLFN XS EXW GRQ·W EX\ D FRS\ RI +HDG )LUVW -DYD DQG MXVW UHDG WKH VHFWLRQV RQ 50, 7KHQ SXW WKH ERRN EDFN RQ WKH VKHOI IDFH IRUZDUG LQ IURQW RI WKH FRPSHWLQJ ERRN RI \RXU FKRLFH 0DNH VXUH WKDW WKH FRYHU LV GXVWHG DQG GRQ·W VSLOO FRIIHH RQ LW \RX DUH KHUH

Chapter 14. Enterprise Design Patterns Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 14. Enterprise Design Patterns

XVLQJ D UHPRWH PRGHO

)LLQVO :51 IVL 26,1 \W \PM KWV\ZWTTMZ ,ET S FOCUS ON WHAT WE NEED TO DO TO KEEP 2ACHEL S LIFE AS SIMPLE AS POSSIBLE )N OTHER WORDS WHAT IMPACT DOES ADDING *.$) AND 2-) HAVE ON THE CONTROLLER

VWHSV WR XVLQJ D UHPRWH REMHFW

+IM THE MODEL GUY REGISTERS HIS MODEL COMPONENT WITH THE *.$) SERVICE

7HEN 2ACHEL S CONTROLLER GETS A REQUEST THE CONTROLLER CODE DOES A *.$) LOOKUP TO GET THE STUB PROXY FOR +IM S REMOTE MODEL SERVICE

4HE CONTROLLER MAKES BUSINESS METHOD CALLS AGAINST THE STUB JUST AS THOUGH THE STUB WERE THE ACTUAL MODEL OBJECT ISELF !LMOST

0DQDJH 2UGHUV 6WXE

-1', -1', 6HUYHU

6WXE 0DQDJH &XVWRPHU 6WXE

D &RQWUROOHU

6WXE

0RGHOV

0DQDJH &XVWRPHU

D E

E

5HTXHVW

F

6HUYLFH (QWLW\

0DQDJH 2UGHUV

0DQDJH &XVWRPHU

D E

&XVWRPHU

F

9LHZ

&XVWRPHU

'% /HJDF\ 'DWDEDVH

FKDSWHU

Chapter 14. Enterprise Design Patterns Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 14. Enterprise Design Patterns

SDWWHUQV DQG VWUXWV

6XUH WKH PHWKRG FDOOV DUH SUHWW\ FORVH WR ZKDW , ZDV GRLQJ EHIRUH ZKHQ WKH PRGHO ZDV ORFDO EXW , VWLOO KDYH WR FKDQJH WKH &RQWUROOHU FRGH WR SXW LQ WKH ZKROH -1', ORRNXS , ZDV KRSLQJ IRU VRPHWKLQJ WKDW ZRXOG OHW PH XVH WKH VDPH &RQWUROOHU UHJDUGOHVV RI ZKHWKHU WKH PRGHO LV ORFDO RU UHPRWH

6KDUSHQ \RXU SHQFLO +RZ FDQ WKLV GHVLJQ EH LPSURYHG" :KDW DUH WKH SUREOHPV ZLWK WKLV GHVLJQ OLVW DW OHDVW WZR " +RZ PLJKW \RX FKDQJH WKLV GHVLJQ WR KDQGOH WKRVH SUREOHPV"

8ZWJTMU["

;WT]\QWV"

\RX DUH KHUH

Chapter 14. Enterprise Design Patterns Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 14. Enterprise Design Patterns

KLGLQJ -1', ORRNXSV

0W_ IJW]\ I ¹OW JM\ _MMVº WJRMK\ ' ! COMMON SOLUTION TO THE DESIGN PROBLEMS WE LEFT YOU WITH IS TO CREATE A NEW OBJECTˆA SINGLE hGO BETWEENv OBJECT FOR THE CONTROLLER TO TALK TO RATHER THAN HAVING THE CONTROLLER DEAL DIRECTLY WITH THE REMOTENESS OF THE REMOTE MODEL

3UREOHP +LGH WKH FRPSOH[ -1', ORRNXS )F 2ACHEL S CONTROLLER LETS A hGO BETWEENv OBJECT HANDLE THE *.$) LOOKUP THE CONTROLLER CODE CAN STAY SIMPLER FREE FROM HAVING TO KNOW WHERE AND HOW TO LOOK UP THE MODEL

3UREOHP +LGH ´UHPRWH QHVV FRPSOH[LW\µ )F THE hGO BETWEENv OBJECT CAN HANDLE TALKING TO THE STUB 2ACHELS CONTROLLER CAN BE SHIELDED FROM ALL THE REMOTE ISSUES INCLUDING REMOTE EXCEPTIONS

DI ll hide the JN This object wihandling complexities. and remote -1',

-1', 6HUYHU

&RQWUROOHU

7KH JR EHWZHHQ

D 6WXE

0DQDJH &XVWRPHU

D E E

5HTXHVW

F

D

E

0RGHOV 6HUYLFH 0DQDJH &XVWRPHU

E

(QWLW\ &XVWRPHU

F

9LHZ

FKDSWHU

Chapter 14. Enterprise Design Patterns Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 14. Enterprise Design Patterns

SDWWHUQV DQG VWUXWV

<PM ยนOW JM\ _MMVยบ Q[ I *][QVM[[ ,MTMOI\M ,ET S TAKE A LOOK AT THE PSEUDO CODE FOR A TYPICAL "USINESS $ELEGATE AND AT HOW "USINESS $ELEGATES TEND TO BE DEPLOYED IN THE WEB CONTAINER .OTICE THAT THERE WILL BE ,/43 OF "USINESS $ELEGATES ON THE WEB TIER

$ %XVLQHVV 'HOHJDWHยทV SVHXGR FRGH JHW WKH UHTXHVW DQG GR D -1', ORRNXS JHW EDFN D VWXE FDOO WR WKH EXVLQHVV PHWKRG KDQGOH DEVWUDFW DQ\ UHPRWH H[FHSWLRQV VHQG WKH UHWXUQ YDOXH WR WKH FRQWUROOHU

/HJLRQV RI %XVLQHVV 'HOHJDWHV RQ WKH ZHE VHUYHU RQH SHU UHPRWH PRGHO

-1', 6HUYLFH 6WXE

%XVLQHVV 'HOHJDWH %XVLQHVV 'HOHJDWH

6WXE

&RQWUROOHU

6HUYLFH

6WXE

6HUYLFH

%XVLQHVV 'HOHJDWH %XVLQHVV 'HOHJDWH

6WXE

6HUYLFH

6KDUSHQ \RXU SHQFLO 8K RK 'XSOLFDWH &RGH $OHUW 'HVFULEH ZKHUH WKH GXSOLFDWH FRGH H[LVWV DQG KRZ \RX FRXOG VROYH WKDW SUREOHP

\RX DUH KHUH

Chapter 14. Enterprise Design Patterns Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 14. Enterprise Design Patterns

VHUYLFH ORFDWRU

;QUXTQNa aW]Z *][QVM[[ ,MTMOI\M[ _Q\P \PM ;MZ ^QKM 4WKI\WZ 5NLESS YOUR "USINESS $ELEGATES USE A 3ERVICE ,OCATOR THEY WILL HAVE DUPLICATE CODE FOR DEALING WITH THE LOOKUP SERVICE 4O IMPLEMENT A 3ERVICE ,OCATOR WE LL TAKE ALL OF THE LOGIC FOR DOING THE *.$) LOOKUP AND MOVE IT OUT OF THE MULTIPLE "USINESS $ELEGATES AND INTO A SINGLE 3ERVICE ,OCATOR

$ 6HUYLFH /RFDWRU·V SVHXGR FRGH

4YPICALLY IN * %% APPLICATIONS THERE WILL BE A NUMBER OF COMPONENTS THAT ALL USE THE SAME *.$) SERVICE 7HILE A COMPLEX APPLICATION MIGHT USE SEVERAL DIFFERENT REGISTRIES SUCH AS *.$) AND 5$$) FOR WEB SERVICE ENDPOINTS AN INDIVIDUAL COMPONENT WILL TYPICALLY NEED ACCESS TO ONLY ONE REGISTRY )N GENERAL A SINGLE 3ERVICE ,OCATOR WILL SUPPORT A SINGLE SPECIl C REGISTRY

REWDLQ DQ ,QLWLDO&RQWH[W REMHFW SHUIRUP UHPRWH ORRNXS KDQGOH UHPRWH LVVXHV RSWLRQDOO\ FDFKH UHIHUHQFHV

"Y MAKING THE "USINESS $ELEGATE AN OBJECT THAT HANDLES ONLY THE BUSINESS METHODS RATHER THAN ALSO HANDLING THE REGISTRY LOOKUP CODE YOU INCREASE THE COHESION FOR THE "USINESS $ELEGATES

Cohesion is increased for all of these Business Delegates.

6HUYLFH /RFDWRU

%XVLQHVV 'HOHJDWH

Obtaining the stub is now handled by the Service Locator. All the Delegate has to do is deal with business methods on the stub.

Moving the registry affects only the single Service Locator object.

-1',

%XVLQHVV 'HOHJDWH

%XVLQHVV 'HOHJDWH

-1', 6HUYHU

6HUYLFH /RFDWRU

Optional cache can reduce network calls.

&DFKH

:HE 6HUYHU

FKDSWHU

Chapter 14. Enterprise Design Patterns Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 14. Enterprise Design Patterns

SDWWHUQV DQG VWUXWV

WKHUH DUH QR

'XPE 4XHVWLRQV

4

4HIS WHOLE DISCUSSION HAS ASSUMED 2-) WHAT IF OUR COMPANY IS USING #/2"!

$

!LL OF THE PATTERNS WE RE DISCUSSING CAN BE IMPLEMENTED MORE OR LESS INDEPENDENTLY OF * %% TECHNOLOGIES !DMITTEDLY THEY WILL BE EASIEST TO IMPLEMENT IN * %% BUT THEY DO APPLY TO OTHER SITUATIONS

4 $

)S THE SAME THING TRUE FOR *.$)

7ELL THERE ARE OTHER *AVA RELATED REGISTRIES BESIDES *.$)ˆ2-) AND *INI COME TO MIND /F THOSE THREE *.$) IS PROBABLY THE BEST CHOICE FOR MOST WEB APPS IT S EASY AND POWERFUL !LTHOUGH THE AUTHORS WOULD PERSONALLY LOVE TO SEE *INI TAKE ITS RIGHTFUL PLACE IN THE DISTRIBUTED WORLD 9OU MIGHT ALSO BE DEALING WITH NON *AVA REGISTRIES LIKE 5$$) )N ANY CASE THE PATTERNS WILL STILL WORK EVEN THOUGH THE CODE CHANGES OF COURSE

4

)T SEEMS LIKE THESE PATTERNS ARE FOREVER ADDING A NEW LAYER OF OBJECTS TO THE ARCHITECTURE 7HY IS THIS APPROACH SO COMMON

$

9OU RE RIGHT THAT THIS IS A COMMON PART OF A LOT OF PATTERNS !SSUMING THAT YOUR DESIGN IS GOOD THINK ABOUT THE SOFTWARE DESIGN BENEFITS INHERENT IN THIS APPROACH

4 $

4 $

3EPARATION OF CONCERNS BUYS ME

,ET S TAKE THE 3ERVICE ,OCATOR AS AN EXAMPLE )N THE EVENT THAT YOUR REGISTRY GETS A NEW NETWORK ADDRESS AND OR REGISTRY INTERFACE IT S FAR EASIER TO MODIFY A SINGLE 3ERVICE ,OCATOR THAN CHANGE A WHOLE FLOTILLA OF "USINESS $ELEGATES )N GENERAL SEPARATION OF CONCERNS BUYS US A LOT OF FLEXIBILITY AND MAINTAINABILITY

4

)N YOUR EXAMPLES SO FAR YOU VE TAKEN 0/*/S THAT WERE LOCAL AND MADE THEM REMOTE )SN T IT MORE LIKELY THAT ) LL BE FACED WITH INTEGRATING EXISTING %*"S INTO MY WEB APP

$

"Y 0/*/S WE ASSUME YOU MEAN h0LAIN /LD *AVA /BJECTSv OF COURSE !ND YES IT IS LIKELY THAT YOU LL BE INTEGRATING %*"S INTO YOUR APP !ND IN FACT THAT S YET ANOTHER REASON TO USE THESE TWO PATTERNS YOUR CONTROLLER AND VIEW SHOULD NEVER HAVE TO CARE WHETHER THE MODEL IS A LOCAL *AVA"EAN A REMOTE 0/*/ OR AN ENTERPRISE *AVA"EAN %*" 7ITHOUT USING 3ERVICE,OCATOR AND "USINESS $ELEGATE THAT DIFFERENCE MEANS A LOTˆ ENTERPRISE BEANS AND PLAIN OLD REMOTE OBJECTS DON T USE THE SAME LOOKUP CODE 5SING THESE PATTERNS YOU CAN ENCAPSULATE THE ISSUES RELATED TO HOW AND WHERE THE MODEL IS DISCOVERED AND USED AND KEEP THE CONTROLLER HAPPY AND CLUELESS SO THAT YOU WON T HAVE TO CHANGE YOUR CONTROLLER CODE WHEN THE BUSINESS GUYS CHANGE THINGS AND MOVE THINGS AROUND ON THE BUSINESS TIER 9OU LL UPDATE ONLY THE 3ERVICE ,OCATOR AND POSSIBLY THE "USINESS $ELEGATE

/+ WELL COHESION COMES TO MIND

2IGHT "OTH THE "USINESS $ELEGATE AND THE 3ERVICE ,OCATOR INCREASE THE COHESIVENESS OF THE OBJECTS THEY SUPPORT !NOTHER DRIVING FORCE IS NETWORK TRANSPARENCY !DDING A LAYER OFTEN SHIELDS EXISTING OBJECTS FROM BEING NETWORK AWARE 4HEN OF COURSE CLOSELY RELATED TO COHESION IS SEPARATION OF CONCERNS

\RX DUH KHUH

Chapter 14. Enterprise Design Patterns Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 14. Enterprise Design Patterns

WKH -63 DQG UHPRWHQHVV

8ZW\MK\QVO \PM _MJ LM[QOVMZ¼[ 2;8[ NZWU ZMUW\M UWLMT KWUXTM`Q\a "Y USING THE "USINESS $ELEGATE AND 3ERVICE ,OCATOR PATTERNS WE VE GOT 2ACHEL S CONTROLLERS PROTECTED FROM THE COMPLEXITIES OF REMOTE MODEL COMPONENTS .OW LET S SEE IF WE CAN DO THE SAME FOR THE WEB DESIGNER S *30S

4XLFN UHYLHZ RI WKH ROG QRQ UHPRWH ZD\³ WKH -63 XVHV (/ WR JHW LQIR IURP WKH ORFDO PRGHO 4HIS DIAGRAM SHOULD LOOK FAMILIAR FROM EARLIER IN THE CHAPTER 4HE *30 GETS THE BEAN REFERENCE FROM THE REQUEST OBJECT STEP THEN CALLS GETTERS ON THE BEAN STEP

0RGHO

+DYLQJ UHFHLYHG D UHTXHVW

D

6HUYLFH &RQWUROOHU D

0DQDJH &XVWRPHU

D

F E

5HTXHVW

0RGHO

D E

(QWLW\ F

9LHZ

&XVWRPHU %HDQ

These can be simple EL expressions like: ^FXVWRPHU QDPH`

E

IRU FXVWRPHU LQIRUPDWLRQ WKH &RQWUROOHU FDOOV WKH 0DQDJH&XVWRPHU PRGHO '% FRPSRQHQW 7KH PRGHO FRPSRQHQW GRHV D UHPRWH FDOO /HJDF\ 'DWDEDVH WR WKH OHJDF\ GDWDEDVH WKHQ FUHDWHV D &XVWRPHU EHDQ SRSXODWHG ZLWK FXVWRPHU GDWD IURP WKH GDWDEDVH

7KH &RQWUROOHU DGGV WKH &XVWRPHU UHIHUHQFH WR WKH UHTXHVW DV DQ DWWULEXWH

7KH FRQWUROOHU IRUZDUGV WR

WKH 9LHZ -63 7KH -63 JHWV D UHIHUHQFH WR WKH &XVWRPHU EHDQ IURP WKH UHTXHVW REMHFW

7KH 9LHZ -63 XVHV (/

WR JHW WKH &XVWRPHU %HDQ SURSHUWLHV LW QHHGV WR VDWLVI\ WKH RULJLQDO UHTXHVW

FKDSWHU

Chapter 14. Enterprise Design Patterns Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 14. Enterprise Design Patterns

SDWWHUQV DQG VWUXWV

+WUXIZM \PM TWKIT UWLMT LQIOZIU \W \PQ[ ZMUW\M UWLMT LQIOZIU

'RQ·W 3DQLF

4HE SHADED AREA IN THIS DIAGRAM SHOULD LOOK A ,/4 LIKE THE PREVIOUS DIAGRAM ESPECIALLY IF YOU REMEMBER THAT THE "USINESS $ELEGATE IS PRETENDING TO BE THE -ANAGE #USTOMER MODEL

6WXE 0DQDJH 2UGHUV

F 0DQDJH &XVWRPHU

E

-1',

6WXE 0DQDJH &XVWRPHU

-1', 6HUYHU

%XVLQHVV 'HOHJDWH

D

6HUYLFH /RFDWRU

D E

&RQWUROOHU

6WXE

D

G E

0RGHOV

0DQDJH &XVWRPHU

6HUYLFH

6HUYLFH

F

5HTXHVW 0DQDJH &XVWRPHU

D 6WXE

E F

9LHZ

[

(QWLW\

0DQDJH 2UGHUV

&XVWRPHU

&XVWRPHU

EL expressions again... (yes, you CAN use EL against the stub; assuming the business interface has JavaBean-style getters). $ VWHS UHYLHZ

5HJLVWHU \RXU VHUYLFHV ZLWK -1', 8VH %XVLQHV 'HOHJDWH DQG 6HUYLFH /RFDWRU WR JHW

'%

Each network call is 1000 times as expensive as a local method call!

/HJDF\ 'DWDEDVH

$GG WKH &XVWRPHU VWXE UHIHUHQFH WR WKH UHTXHVW 7KH FRQWUROOHU IRUZDUGV WR WKH 9LHZ -63 7KH -63

JHWV D UHIHUHQFH WR WKH &XVWRPHU EHDQ VWXE IURP WKH UHTXHVW REMHFW

WKH 0DQDJH &XVWRPHU VWXE IURP -1',

7KH 9LHZ -63 XVHV (/ WR JHW WKH &XVWRPHU %HDQ

8VH WKH %XVLQHVV 'HOHJDWH DQG WKH VWXE WR JHW WKH ´&XVWRPHU %HDQµ ZKLFK LQ WKLV FDVH LV DQRWKHU VWXE 5HWXUQ WKLV VWXE·V UHIHUHQFH WR WKH FRQWUROOHU

%,* 127( (YHU\ WLPH WKH -63 LQYRNHV D JHWWHU WKH &XVWRPHU VWXE PDNHV D QHWZRUN FDOO

SURSHUWLHV LW QHHGV WR VDWLVI\ WKH RULJLQDO UHTXHVW

\RX DUH KHUH

Chapter 14. Enterprise Design Patterns Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 14. Enterprise Design Patterns

-63V DQG UHPRWH EHDQV

<PMZM¼[ OWWL VM_[ IVL JIL VM_[ 4HE PREVIOUS ARCHITECTURE SUCCEEDS IN HIDING COMPLEXITY FROM BOTH THE CONTROLLERS AND THE *30S !ND IT MAKES GOOD USE OF THE "USINESS $ELEGATE AND 3ERVICE ,OCATOR PATTERNS

7KH EDG QHZV 7HEN IT S TIME FOR THE *30 TO GET DATA THERE ARE TWO PROBLEMS BOTH RELATED TO THE FACT THAT THE BEAN THE *30 IS DEALING WITH IS ACTUALLY A STUB TO A REMOTE OBJECT !LL THOSE lNE GRAINED NETWORK CALLS ARE LIKELY TO BE A BIG PERFORMANCE HIT 4HINK ABOUT IT %ACH %, EXPRESSION TRIGGERS A REMOTE METHOD INVOCATION .OT ONLY IS THIS A BANDWIDTH LATENCY ISSUE BUT ALL THOSE CALLS CAUSE THE SERVER SOME PROBLEMS TOO %ACH CALL MIGHT LEAD TO A SEPARATE TRANSACTION AND DATABASE LOAD AND POSSIBLY STORE ON THE SERVER 4HE *30 IS ./4 A GOOD PLACE TO BE HANDLING EXCEPTIONS THAT MIGHT OCCUR IF THE REMOTE SERVER CRASHES :K\ QRW KDYH WKH -63 WDON WR D SODLQ ROG EHDQ LQVWHDG RI D VWXE"

4

)F YOU WANT THE *30 TO TALK TO A *AVA"EAN WHERE WILL THIS BEAN COME FROM

$

7ELL IT USED TO COME FROM THE LOCAL MODEL SERVICE OBJECT SO WHY NOT HAVE IT COME FROM THE REMOTE MODEL SERVICE OBJECT

4 $

(OW DO YOU GET A BEAN ACROSS THE NETWORK

(EY AS LONG AS IT S SERIALIZABLE 2-) HAS NO PROBLEM SENDING AN OBJECT ACROSS THE NETWORK

4 $

3O WHAT WOULD THIS BUY US AGAIN

&IRST OF ALL WE D HAVE ONE BIG NETWORK CALL INSTEAD OF A LOT OF LITTLE ONES 3ECOND SINCE THE *30 WOULD BE TALKING TO A LOCAL OBJECT THERE D BE NO REMOTE EXCEPTIONS TO WORRY ABOUT

4

7AIT A MINUTE ) SEE A LITTLE PROBLEM HERE /R MAYBE A BIG PROBLEMˆIF YOU RE USING A BEAN ON THE CLIENT SIDE DOESN T THAT BEAN S DATA BECOME STALE THE MOMENT IT S SENT

$

9ES YOU RE RIGHT AND THIS )3 A TRADE OFF PERFORMANCE VS HOW CURRENT THE DATA IS 9OU HAVE TO DECIDE WHICH MAKES SENSE BASED ON YOUR REQUIREMENTS )F THE DATA USED BY YOUR VIEW COMPONENT MUST ABSOLUTELY POSITIVELY REPRESENT THE CURRENT STATE OF THE DATABASE AT ALL TIMES THEN YOU NEED A REMOTE REFERENCE &OR EXAMPLE IF YOU MAKE THREE CALLS SAY GET.AME GET!DDRESS AND GET0HONE ON CUSTOMER YOU LL PROBABLY DECIDE THAT THIS INFORMATION DOESN T CHANGE RAPIDLY ENOUGH TO MAKE IT WORTH GOING BACK TO THE DATABASE VIA THE REMOTE OBJECT JUST IN CASE THE CUSTOMER S PHONE NUMBER CHANGED ). "%47%%. THE CALL TO GET.AME AND GET!DDRESS /N THE OTHER HAND YOU MIGHT DECIDE THAT IN A HIGHLY DYNAMIC ENVIRONMENT WHERE A CUSTOMER IS MAKING TRANSACTIONS YOU $/ NEED TO SHOW THE MOST UP TO DATE INFO 3ENDING A *AVA"EAN BACK FOR THE CLIENT MEANS THE 6IEW WOULD HAVE A SNAPSHOT OF THE DATABASE AT THE MOMENT THE BEAN WAS POPULATED BUT SINCE THE BEAN HAS NO CONNECTION TO THE DATABASE THE DATA BEGINS TO GO STALE IMMEDIATELY

FKDSWHU

Chapter 14. Enterprise Design Patterns Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 14. Enterprise Design Patterns

SDWWHUQV DQG VWUXWV

<QUM NWZ I <ZIV[NMZ 7JRMK\ ' )F IT S LIKELY THAT A BUSINESS SERVICE MIGHT BE ASKED TO SEND OR RECEIVE ALL OR MOST OF ITS DATA IN A BIG COARSE GRAINED MESSAGE IT S COMMON FOR THAT SERVICE TO PROVIDE THAT FEATURE IN ITS !0) #OMMONLY THE BUSINESS SERVICE CREATES A SERIALIZABLE *AVA OBJECT THAT CONTAINS LOTS OF INSTANCE VARIABLES 3UN CALLS THIS OBJECT A 4RANSFER /BJECT /UTSIDE OF 3UN THERE IS A PATTERN CALLED $ATA 4RANSFER /BJECT 'UESS WHAT 4HEY RE THE SAME THING 9EAH WE FEEL THE SAME WAY ABOUT THAT

OM\+][\,I\I & &

%XVLQHVV 'HOHJDWH

0DQDJH &XVWRPHU 6WXE

6HULDOL]HG 7UDQVIHU 2EMHFW

in old Just a plapulated po bean, tomer data. with cus

7KH FOLHQW·V SHUVSHFWLYH LQVLGH WKH %XVLQHVV 'HOHJDWH

The bean/Transfer Object type.

0DQDJH &XVWRPHU

5HPRWH 6HUYHU

FUHDWH&XVW

GHOHWH&XVW

JHW&XVW'DWD

Request the Transfer the stub.

Object from WU\ ^ &XVWRPHU F FXVW6WXE JHW&XVW'DWD FXVW,' ` FDWFK 5HPRWH([FHSWLRQ UH ^ WKURZ QHZ &XVWRPHU([FHSWLRQ Catch remote exceptions and wrap ` them in a higher level exception.

4HAT S IT 5NDER THE COVERS THE 4RANSFER /BJECT IS SERIALIZED SHIPPED AND DESERIALIZED ON TO THE CLIENT S LOCAL *6- HEAP !T THAT POINT IT IS JUST LIKE ANY OTHER LOCAL BEAN

7KH GDWD LQ D 7UDQVIHU 2EMHFW JURZV VWDOH

H QHWZRUN WKH 7UDQVIHU 2QFH LW¶V VKLSSHG DFURVV WK RXFK ZLWK LWV VRXUFH 2EMHFW LV FRPSOHWHO\ RXW RI W F ZLWK WKH VWDWH RI WKH DQG EHJLQV WR IDOO RXW RI V\Q DVH <RX¶OO KDYH WR GDWD LQ WKH XQGHUO\LQJ GDWDE KHWKHU GDWD LQWHJULW\ GHFLGH IRU HDFK XVH FDVH Z H SHUIRUPDQFH KLWV V\QFKURQL]DWLRQ LV ZRUWK WK \RX DUH KHUH

Chapter 14. Enterprise Design Patterns Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 14. Enterprise Design Patterns

VHUYLFH ORFDWRU YV EXVLQHVV GHOHJDWH

;MZ ^QKM 4WKI\WZ IVL *][QVM[[ ,MTMOI\M JW\P [QUXTQNa UWLMT KWUXWVMV\[ 6HUYLFH /RFDWRU

3ERVICE ,OCATOR IS THE SUPERIOR PATTERN &IRST OF ALL UNLIKE THE "USINESS $ELEGATE ONE 3ERVICE ,OCATOR INSTANCE CAN SUPPORT AN ENTIRE APPLICATION TIER

3ERVICE ,OCATOR IS MORE EFl CIENT WITH NETWORK CALLS )T CAN CACHE REFERENCES TO STUBS OR SERVICE STUBS ONCE IT HAS LOCATED THEM REDUCING NETWORK TRAFl C FOR SUBSEQUENT CALLS

(EAVY BURDEN 9OUR SIMPLE BUSINESS DATA DOES NOT IMPRESS ME

,ISTEN IN AS OUR TWO BLACK BELTS DEBATE WHICH PATTERN IS BETTERˆ3ERVICE ,OCATOR OR "USINESS $ELEGATE

%XVLQHVV 'HOHJDWH

4HAT S TRUE BUT 3ERVICE ,OCATOR NEEDS TO TALK TO ONLY ONE REMOTE ENTITY "USINESS $ELEGATE MUST HANDLE MANY ENTITY OBJECTS

7ITH MUCH RESPECT YOU ARE FORGETTING THAT 3ERVICE ,OCATOR HAS A MUCH EASIER TASK 4HE "USINESS $ELEGATE MUST CARRY THE HEAVY BURDEN OF COMMUNICATING WITH A DYNAMIC OBJECT WHOSE DATA MIGHT CHANGE AT ANY MOMENT ! "USINESS $ELEGATE GIVES WEB APPLICATION PROGRAMMERS MUCH MORE BENEl T THAN YOUR 3ERVICE ,OCATOR

!H MAYBE PROGRAMMERS DO BENEl T BUT YOUR SIMPLE PATTERN SEEMS TO FORGET THAT IT OFTEN EXISTS IN A NETWORK ENVIRONMENT )T WILL MAKE MANY CALLS TO BUSINESS SERVICES WITH NO RESTRAINT NO CONSIDERATION FOR THE OVERHEAD OF REMOTE CALLS

9ES YES YOUR WEAK PATTERN NEEDS ASSISTANCE WE ALL KNOW THAT "UT WHEN YOU PARTNER WITH A 4RANSFER /BJECT OTHER DEMONS CAN HAUNT YOU YOU HAVEN T FORGOTTEN YOUR LITTLE PROBLEMS WITH DATA STALENESS AND CONCURRENCY HAVE YOU

!H HA 4HE "USINESS $ELEGATE IS NOT ASHAMED TO FORM AN ALLIANCE WITH THE 4RANSFER /BJECT 7ORKING AS A TEAM THEY HELP THE PROGRAMMER !.$ MINIMIZE REMOTE CALLS

.O ) HAVEN T FORGOTTEN "UT WHEN THESE ISSUES COME UP THEY CAN BE SOLVED 9OU CANNOT EXPECT TO ACHIEVE GREAT THINGS WITHOUT A LITTLE EXTRA EFFORT NOTHING IN * %% IS EVER BLACK AND WHITE

FKDSWHU

Chapter 14. Enterprise Design Patterns Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 14. Enterprise Design Patterns

SDWWHUQV DQG VWUXWV

*][QVM[[ \QMZ XI\\MZV[" Y]QKS ZM^QM_ 4O WRAP UP OUR DISCUSSION OF BUSINESS TIER PATTERNS HERE S A DIAGRAM THAT SHOWS A "USINESS $ELEGATE A 3ERVICE ,OCATOR AND A 4RANSFER /BJECT IN ACTION !T THE END OF THE CHAPTER YOU LL l ND A COUPLE OF SUMMARY PAGES FOR THESE PATTERNS AND THE PRESENTATION TIER PATTERNS WE LL DISCUSS NEXT

6WXE 0DQDJH 2UGHUV

F 0DQDJH &XVWRPHU

E

%XVLQHVV 'HOHJDWH

D

6HUYLFH /RFDWRU

-1',

6WXE 0DQDJH &XVWRPHU

-1', 6HUYHU

D E

&RQWUROOHU

6WXE

G E

0RGHOV

0DQDJH &XVWRPHU

D

6HUYLFH

6HUYLFH

F

5HTXHVW 0DQDJH &XVWRPHU

D E F

9LHZ

7UDQVIHU 2EMHFW

(QWLW\

0DQDJH 2UGHUV

&XVWRPHU

&XVWRPHU

'%

$ VWHS UHYLHZ

5HJLVWHU \RXU VHUYLFHV ZLWK -1', 8VH %XVLQHVV 'HOHJDWH DQG 6HUYLFH

$GG WKH EHDQ·V UHIHUHQFH WR WKH UHTXHVW 7KH FRQWUROOHU IRUZDUGV WR WKH 9LHZ -63

/RFDWRU WR JHW WKH 0DQDJH &XVWRPHU VWXE IURP -1',

7KH -63 JHWV WKH UHIHUHQFH WR WKH &XVWRPHU 7UDQVIHU 2EMHFW EHDQ IURP WKH UHTXHVW REMHFW

8VH WKH %XVLQHVV 'HOHJDWH DQG WKH

7KH 9LHZ -63 XVHV (/ WR JHW WKH &XVWRPHU 7UDQVIHU 2EMHFW %HDQ·V SURSHUWLHV LW QHHGV WR VDWLVI\ WKH RULJLQDO UHTXHVW

VWXE WR JHW WKH ´&XVWRPHU %HDQµ ZKLFK LQ WKLV FDVH LV D 7UDQVIHU 2EMHFW 5HWXUQ WKLV 7UDQVIHU 2EMHFW·V UHIHUHQFH WR WKH FRQWUROOHU

/HJDF\ 'DWDEDVH

\RX DUH KHUH

Chapter 14. Enterprise Design Patterns Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 14. Enterprise Design Patterns

09& DSS

7]Z ^MZa NQZ[\ XI\\MZV ZM^Q[Q\ML 5>+ !S LUCK WOULD HAVE IT THE VERY SAME PATTERN WE VE BEEN USING IN THE BOOK IS ON THE EXAM 4HE LAST TWO PATTERNS WE RE COVERING ARE PRESENTATION TIER PATTERNS AS WAS THE )NTERCEPTING &ILTER &IRST WE LL PICK UP WHERE WE LEFT OFF TALKING ABOUT -6# 4HAT DISCUSSION WILL LEAD US INTO 3TRUTS AND lNALLY &RONT #ONTROLLER

02'(/

?PMZM _M TMN\ WNN

+ROGV WKH UHDO EXVLQHVV ORJLF DQG WKH VWDWH ,Q RWKHU ZRUGV LW NQRZV WKH UXOHV IRU JHWWLQJ DQG XSGDWLQJ VWDWH

,ET S DO A QUICK REVIEW OF WHERE WE LEFT OFF IN CHAPTER

$ 6KRSSLQJ &DUW·V FRQWHQWV DQG WKH UXOHV IRU ZKDW WR GR ZLWK LW ZRXOG EH SDUW RI WKH 0RGHO LQ 09& ,W·V WKH RQO\ SDUW RI WKH DSSOLFDWLRQ WKDW WDONV WR WKH GDWDEDVH

&21752//(5

Servlet

'%

7DNHV XVHU LQSXW IURP WKH UHTXHVW DQG ÀJXUHV RXW ZKDW LW PHDQV WR WKH PRGHO 7HOOV WKH PRGHO WR XSGDWH LWVHOI PDNHV WKH PRGHO VWDWH DYDLODEOH IRU WKH YLHZ WKH -63 DQG IRUZDUGV WR WKH -63

&RQWUROOHU

0RGHO

Plain old Java

JSP

2II 7UDFN *8, 09& YV :HE 09& 9LHZ 9,(: 5HVSRQVLEOH IRU WKH SUHVHQWDWLRQ ,W JHWV WKH VWDWH RI WKH PRGHO IURP WKH &RQWUROOHU DOWKRXJK QRW GLUHFWO\ WKH &RQWUROOHU SXWV WKH PRGHO GDWD LQ D SODFH ZKHUH WKH 9LHZ FDQ ÀQG LW

-6# EXISTED BEFORE THE 7ORLD 7IDE 7EB CAME ALONG )N ITS lRST INCARNATION -6# WAS A DESIGN TO SIMPLIFY COMPLEX '5) APPLICATIONS &IRST CREATED IN 3MALLTALK ONE OF -6# S CHIEF ATTRIBUTES WAS THAT THE 6IEW WOULD BE NOTIlED AUTOMATICALLY OF CHANGES TO THE -ODEL -ORE RECENTLY -6# HAS BEEN USED ON THE WEB EVEN THOUGH THE 6IEW IS IN THE BROWSER AND CANNOT BE AUTOMATICALLY UPDATED WHEN THE -ODEL CHANGES IN THE WEB TIER /UR FOCUS IS ENTIRELY ON THE WEB VERSION OF -6# &INALLY WE RE ALWAYS TALKING ABOUT -6# MODEL NEVER THE OLDER -ODEL OR -6#S

FKDSWHU

Chapter 14. Enterprise Design Patterns Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 14. Enterprise Design Patterns

SDWWHUQV DQG VWUXWV

5>+ QV I ZMIT _MJ IXX 7AY BACK IN CHAPTER TWO WE LEFT YOU WITH A h&LEX YOUR MINDv EXERCISE ABOUT POTENTIAL PROBLEMS WITH OUR $ATING !PP -6# ARCHITECTURE ,ET S REVIEW WHERE WE LEFT OFF AND GET AROUND TO ANSWERING THE QUESTION THAT S CERTAINLY BEEN HAUNTING YOU FOR ALL THESE CHAPTERS WHAT COULD POSSIBLY BE BETTER THAN -6# &OR EACH BROWSER USE CASE THERE WILL BE A CORRESPONDING SET OF -ODEL 6IEW AND #ONTROLLER COMPONENTS WHICH MIGHT BE MIXED AND MATCHED AND RECOMBINED IN MANY DIFFERENT WAYS FROM USE CASE TO USES CASE 4HE PROBLEM WE HAD IN THE DATING APP WAS THAT WE HAD MANY SPECIALIZED CONTROLLERS WHICH SOUNDED GOOD FROM AN // PERSPECTIVE BUT LEFT US WITH DUPLICATE CODE ACROSS ALL THE DIFFERENT CONTROLLERS IN OUR APP AND DIDN T GIVE US A NICE HAPPY FEELING ABOUT MAINTAINABILITY AND m EXIBILITY $ VLQJOH 09& DSS ZLOO KDYH PDQ\ PRGHOV YLHZV DQG FRQWUROOHUV

8VH FDVHV 8SGDWH $GGUHVV

&RQWUROOHU

0RGHO

0DQDJH &XVWRPHU 3ULQW 6WDWHPHQW

9LHZ , KDWH WKH ZD\ P\ 09& DSS KDV VR PDQ\ GLIIHUHQW FRQWUROOHUV ZLWK DOO WKH GXSOLFDWH FRGH EXW , GRQ·W ZDQW WR JR EDFN WR RQH PRQROLWKLF PDVVLYH VHUYOHW KDQGOLQJ DOO WKH GLIIHUHQW XVH FDVHV

$QG VHULRXVO\ WDNH D FORVH ORRN DW WKDW FRQWUROOHU FRGH ,W·V DOO RYHU WKH SODFH KDQGOLQJ UHTXHVWV GHDOLQJ ZLWK WKH PRGHO GLVSDWFKLQJ IRUZDUGLQJ , PHDQ³MXVW ZKDW ,6 WKH FRQWUROOHU·V MRE"" $ FRQWUROOHU GRHVQ·W ORRN YHU\ FRKHVLYH WR PH

\RX DUH KHUH

Chapter 14. Enterprise Design Patterns Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 14. Enterprise Design Patterns

WKH 09& FRQWUROOHU

4WWSQVO I\ \PM 5>+ KWV\ZWTTMZ ,ET S SEE IF WE AGREE WITH WHAT S BEEN SAID ABOUT CONTROLLERS &IRST A REMINDER ABOUT THE CONTROLLER SERVLET S JOB

3VHXGR FRGH IRU D JHQHULF 09& FRQWUROOHU SXEOLF FODVV &RQWUROOHU6HUYOHW H[WHQGV +WWS6HUYOHW ^ SXEOLF YRLG GR3RVW UHTXHVW UHVSRQVH ^ 6WULQJ F UHT JHW3DUDPHWHU ³VWDUW'DWH´ GR D GDWD FRQYHUVDWLRQ RQ WKH GDWH SDUDPHWHU YDOLGDWH WKDW GDWH LV LQ UDQJH

'HDO ZLWK WKH

UHTXHVW SDUDPHWHUV

LI DQ\ HUURUV KDSSHQ LQ YDOLGDWLRQ IRUZDUG WR KDUGFRGHG ³UHWU\´ -63 LQYRNH WKH KDUGFRGHG PRGHO FRPSRQHQW V

DGG PRGHO UHVXOWV WR WKH UHTXHVW REM PD\EH D UHIHUHQFH WR D EHDQ

GLVSDWFK WR WKH YLHZ -63 RI FRXUVH LW¶V KDUG FRGHG

` `

6KDUSHQ \RXU SHQFLO

'HDO ZLWK WKH PRGHO

'HDO ZLWK WKH YLHZ

:KDW SULQFLSOHV GRHV WKLV FRPSRQHQW YLRODWH" /LVW WKUHH RU PRUH VRIWZDUH GHVLJQ SULQFLSOHV WKLV SVHXGR FRGH YLRODWHV

FKDSWHU

Chapter 14. Enterprise Design Patterns Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 14. Enterprise Design Patterns

SDWWHUQV DQG VWUXWV

1UXZW^QVO \PM 5>+ KWV\ZWTTMZ[ "ESIDES A LACK OF COHESIVENESS THE CONTROLLER IS ALSO TIGHTLY COUPLED TO THE MODEL AND THE VIEW COMPONENTS !ND THERE S YET ANOTHER $UPLICATE #ODE !LERT HERE (OW CAN WE lX THINGS

$ EHWWHU ZD\ WR KDQGOH LW"

7KH FRQWUROOHU·V WKUHH PDLQ WDVNV

*HW DQG GHDO ZLWK WKH

,QYRNH WKH PRGHO

'LVSDWFK WR WKH 9LHZ

UHTXHVW SDUDPHWHUV

*LYH WKLV WDVN WR D VHSDUDWH IRUP YDOLGDWLRQ FRPSRQHQW WKDW FDQ JHW WKH IRUP SDUDPHWHUV FRQYHUW WKHP YDOLGDWH WKHP KDQGOH YDOLGDWLRQ HUURUV DQG FUHDWH DQ REMHFW WR KROG WKH SDUDPHWHU YDOXHV +PPP ZH GRQ¶W OLNH KDUG FRGLQJ WKH PRGHO LQWR WKH FRQWUROOHU VR PD\EH ZH FRXOG GR LW GHFODUDWLYHO\ OLVWLQJ D EXQFK RI PRGHOV LQ RXU RZQ FXVWRP GHSOR\PHQW GHVFULSWRU WKDW WKH FRQWUROOHU FRXOG UHDG DQG EDVHG RQ WKH UHTXHVW ¿JXUH RXW ZKLFK PRGHO V WR XVH :K\ QRW PDNH WKLV GHFODUDWLYH DV ZHOO" 7KDW ZD\ EDVHG RQ WKH UHTXHVW 85/ WKH FRQWUROOHU FDQ WHOO IURP RXU FXVWRP GHSOR\PHQW GHVFULSWRU ZKLFK YLHZ WR GLVSDWFK WR

6M_ IVL [PWZ\MZ KWV\ZWTTMZ X[M]LW KWLM SXEOLF FODVV &RQWUROOHU6HUYOHW H[WHQGV +WWS6HUYOHW ^ SXEOLF YRLG GR3RVW UHTXHVW UHVSRQVH ^ FDOO D YDOLGDWLRQ FRPSRQHQW GHFODUDWLYHO\ KDYH LW KDQGOH YDOLGDWLRQ HUURUV WRR

GHFODUDWLYHO\ LQYRNH D UHTXHVW SURFHVVLQJ FRPSRQHQW WR FDOO D 0RGHO FRPSRQHQW

7KLV ORRNV JUHDW WR PH ,·OO IHHO D ORW OHVV VFKL]RSKUHQLF LI ,·P GHVLJQHG WKLV ZD\

GLVSDWFK WR WKH YLHZ -63 GHFODUDWLYHO\ ` `

&RQWUROOHU \RX DUH KHUH

Chapter 14. Enterprise Design Patterns Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 14. Enterprise Design Patterns

GHVLJQLQJ D FRQWUROOHU

,M[QOVQVO W]Z NIV\I[a KWV\ZWTTMZ ,ET S DO ANOTHER ONE OF OUR NOW INFAMOUS ARCHITECTURAL DIAGRAMS TO SEE WHAT THIS CONTROLLER AND ITS SUPPORT COMPONENTS MIGHT LOOK LIKE

[PO! YDOLGDWH! YDOLGDWH! PDSSLQJ! PDSSLQJ! [PO!

D

D

'HFODUH 0DSSLQJV ;0/

D

)RUP 9DOLGDWLRQ &RPSRQHQW

E

E 5HTXHVW

&RQWUROOHU

E

F

5HTXHVW $FWLRQ &RPSRQHQW

0RGHO

+DYLQJ UHFHLYHG D UHTXHVW WKH &RQWUROOHU

ORFDWHV WKH FRUUHFW )RUP 9DOLGDWLRQ &RPSRQHQW LQ WKH 'HFODUDWLRQV ;0/ ILOH 7KH &RQWUROOHU LQYRNHV WKH )RUP YDOLGDWRU VHQGLQJ LW WKH UHTXHVW ,I WKH YDOLGDWRU ILQGV DQ\ HUURUV LW WHOOV WKH FRQWUROOHU ZKLFK YLHZ WR UHWXUQ

8VLQJ WKH 'HFODUDWLRQV ;0/ ILOH WKH

&RQWUROOHU ORFDWHV DQG LQYRNHV WKH 5HTXHVW $FWLRQ &RPSRQHQW FRPSRQHQW ZKLFK LQYRNHV WKH PRGHO

8VLQJ WKH 'HFODUDWLRQV ;0/ ILOH WKH

9LHZ

:DLW D PLQXWH ,·YH VHHQ WKLV EHIRUH <RX·UH WU\LQJ WR GLVJXLVH 675876

&RQWUROOHU ORFDWHV DQG LQYRNHV WKH 9LHZ

&RQWUROOHU

FKDSWHU

Chapter 14. Enterprise Design Patterns Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 14. Enterprise Design Patterns

SDWWHUQV DQG VWUXWV

AM[ 1\¼[ ;\Z]\[ QV I V]\[PMTT /BVIOUSLY THIS IS AN OVERVIEW AND WE VE LEFT OUT PRETTY MUCH ALL OF THE DETAILS BUT THIS IS THE BASIC IDEA BEHIND THE 3TRUTS FRAMEWORK ,ET S LOOK AT A FEW MORE DETAILS STARTING WITH THE FACT THAT WE VE CHANGED ALL THE NAMES [PO! YDOLGDWH! YDOLGDWH! PDSSLQJ! PDSSLQJ! [PO!

D

D

VWUXWV FRQÀ J [PO )RUP %HDQ

D

E

E 5HTXHVW

$FWLRQ 6HUYOHW

E

F $FWLRQ 2EMHFW

0RGHO

.H\ 6WUXWV &RPSRQHQWV !CTION 3ERVLET 9OU LL NEED ONLY ONE OF THESE PER APPLICATION "EST OF ALL YOU DON T EVEN HAVE TO WRITE IT 3TRUTS PROVIDES IT

9LHZ

&ORM "EANS 9OU LL WRITE ONE OF THESE FOR EACH (4-, FORM YOUR APP NEEDS TO PROCESS 4HEY ARE *AVA BEANS AND ONCE THE 3TRUTS !CTION 3ERVLET HAS CALLED THE SETTERS ON THE FORM BEAN TO POPULATE THE BEAN WITH FORM PARAMETERS IT WILL CALL THE BEAN S VALIDATE METHOD 4HIS IS A GREAT PLACE TO PUT DATA CONVERSION AND ERROR HANDLING LOGIC

7KLV LV VR FRRO , GR OHVV

!CTION /BJECTS 'ENERALLY AN ACTION MAPS TO A SINGLE ACTIVITY IN A USE CASE )T HAS A CALL BACK LIKE METHOD CALLED EXECUTE WHICH IS A GREAT PLACE TO GET THE VALIDATED FORM PARAMS AND CALL MODEL COMPONENTS 4HINK OF THE !CTION OBJECT AS KIND OF A hSERVLET LITEv

STRUTS CONl G XML 4HIS IS THE 3TRUTS SPECIl C DEPLOYMENT DESCRIPTOR )N IT YOU LL MAP REQUEST 52,S TO !CTIONS !CTIONS TO &ORM BEANS AND !CTIONS TO VIEWS

&RQWUROOHU

\RX DUH KHUH

Chapter 14. Enterprise Design Patterns Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 14. Enterprise Design Patterns

WKH 6WUXWV IUDPHZRUN

1[ ;\Z]\[ I KWV\IQVMZ' /FlCIALLY 3TRUTS IS CONSIDERED A FRAMEWORK &RAMEWORKS ARE COLLECTIONS OF INTERFACES AND CLASSES THAT ARE DESIGNED TO WORK TOGETHER TO HANDLE A PARTICULAR TYPE OF PROBLEM )N THE CASE OF 3TRUTS THE PROBLEM SPACE IS WEB APPLICATIONS 4HE GOAL OF A FRAMEWORK IS TO hAID PROGRAMMERS IN THE DEVELOPMENT AND MAINTENANCE OF COMPLEX APPLICATIONSv

, IHHO DQ DQDORJ\ FRPLQJ RQ \RX·YH VDLG 6WUXWV KDV ´FDOO EDFNµ PHWKRGV DQG D GHSOR\PHQW GHVFULSWRU 6R LV 6WUXWV OLNH D PLQL FRQWDLQHU"

3O 3TRUTS ISN T A CONTAINER BUT IN SOME WAYS IT ACTS LIKE ONE

7RS ÀYH ZD\V 6WUXWV LV OLNH D VHUYOHWV FRQWDLQHU 'HFODUDWLYH 7KH\ ERWK XVH DQ ;0/ ILOH WR FRQILJXUH WKH DSSOLFDWLRQ GHFODUDWLYHO\ /LIHF\FOH 7KH\ ERWK SURYLGH OLIHF\FOHV IRU SUHGHWHUPLQHG W\SHV RI REMHFWV &DOOEDFNV 7KH\ ERWK SHUIRUP DXWRPDWLF FDOOEDFNV RI NH\ OLIHF\FOH PHWKRGV $3,V 7KH\ ERWK SURYLGH $3,V IRU NH\ W\SHV RI REMHFWV WKDW DUH VXSSRUWHG $SSOLFDWLRQ &RQWURO 7KH\ ERWK SURYLGH D FRQWUROOHG HQYLURQPHQW LQ ZKLFK \RXU DSSOLFDWLRQ UXQV 7KH\ DUH \RXU DSSOLFDWLRQ·V ZLQGRZ WR WKH RXWVLGH ZRUOG

,Q 6WUXWV ,·YH EHHQ SURPRWHG WR ´$FWLRQ 6HUYOHWµ 6RPHWLPHV ,·P DOVR UHIHUUHG WR DV D )URQW &RQWUROOHU 7KDW·V RQ WKH H[DP E\ WKH ZD\

7KHUH LV QRWKLQJ DERXW 6WUXWV RQ WKH H[DP <RX $5( H[SHFWHG WR NQRZ WKH SXUSRVH DQG IXQFWLRQ RI D )URQW &RQWUROOHU DQG 6WUXWV LV MXVW D WULFNHG RXW )URQW &RQWUROOHU EXW \RX ZLOO QRW KDYH DQ\ TXHVWLRQV DERXW WKH 6WUXWV IUDPHZRUN 6R \RX FDQ UHOD[ DQG IROORZ DORQJ ZLWKRXW KDYLQJ WR PHPRUL]H HYHU\ SLFN\ GHWDLO

$FWLRQ 6HUYOHW

FKDSWHU

Chapter 14. Enterprise Design Patterns Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 14. Enterprise Design Patterns

SDWWHUQV DQG VWUXWV

0W_ LWM[ .ZWV\ +WV\ZWTTMZ NQ\ QV' /H YEAH &RONT #ONTROLLER IS ANOTHER * %% PATTERN AND IT JUST HAPPENS TO BE ON THE EXAM !CTUALLY 3TRUTS IS A REALLY FANCY EXAMPLE OF USING A &RONT #ONTROLLER PATTERN 4HE BASIC IDEA OF THE &RONT #ONTROLLER PATTERN IS THAT A SINGLE COMPONENT USUALLY A SERVLET BUT POSSIBLY A *30 ACTS AS THE SINGLE CONTROL POINT FOR THE PRESENTATION TIER OF A WEB APPLICATION 7ITH THE &RONT #ONTROLLER PATTERN ALL OF THE APP S REQUESTS GO THROUGH A SINGLE CONTROLLER WHICH HANDLES DISPATCHING THE REQUEST TO THE APPROPRIATE PLACES )N THE REAL WORLD IT S RARE TO IMPLEMENT A &RONT #ONTROLLER ALL BY ITSELF %VEN A REALLY SIMPLE IMPLEMENTATION USUALLY INCLUDES ANOTHER * %% PATTERN CALLED AN !PPLICATION #ONTROLLER 3TRUTS INCLUDES A CLASS CALLED THE 2EQUEST0ROCESSOR WHICH IS ULTIMATELY RESPONSIBLE FOR THE HANDLING OF (440 REQUESTS !LTHOUGH THE EXAM MIGHT CONTAIN QUESTIONS ABOUT THE &RONT #ONTROLLER PATTERN YOU LL BE lNE IF YOU REMEMBER THE BENElTS OF 3TRUTS AND THE FACT THAT 3TRUTS IS SIMPLY A &RONT #ONTROLLER WITH ALL THE BELLS AND WHISTLES

(LJKW IHDWXUHV WKDW 6WUXWV DGGV WR D )URQW &RQWUROOHU 'HFODUDWLYH &RQWURO 6WUXWV DOORZV \RX WR FUHDWH GHFODUDWLYH PDSV EHWZHHQ UHTXHVW 85/V YDOLGDWLRQ REMHFWV PRGHO LQYRNLQJ REMHFWV DQG YLHZV $XWRPDWHG 5HTXHVW 'LVSDWFKLQJ 7KH $FWLRQ H[HFXWH PHWKRG UHWXUQV D V\PEROLF $FWLRQ)RUZDUG ZKLFK WHOOV WKH $FWLRQ6HUYOHW ZKLFK YLHZ WR GLVSDWFK WR 7KLV SURYLGHV DQRWKHU OD\HU RI DEVWUDFWLRQ DQG ORRVH FRXSOLQJ EHWZHHQ WKH FRQWUROOHU DQG YLHZ FRPSRQHQWV 'DWD6RXUFHV 6WUXWV FDQ SURYLGH 'DWD6RXUFH PDQDJHPHQW &XVWRP 7DJV 6WUXWV SURYLGHV GR]HQV RI FXVWRP WDJV ,QWHUQDWLRQDOL]DWLRQ 6XSSRUW (UURU FODVVHV DQG FXVWRP WDJV KDYH LQWHUQDWLRQDOL]DWLRQ VXSSRUW 'HFODUDWLYH 9DOLGDWLRQ 6WUXWV SURYLGHV D YDOLGDWLRQ IUDPHZRUN WKDW UHPRYHV WKH QHHG WR FRGH WKH YDOLGDWH PHWKRG LQ \RXU IRUP EHDQV 7KH UXOHV IRU YDOLGDWLQJ D IRUP DUH FRQILJXUHG LQ DQ ;0/ ILOH DQG FDQ EH FKDQJHG ZLWKRXW DIIHFWLQJ \RXU IRUP EHDQ FRGH *OREDO H[FHSWLRQ KDQGOLQJ 6WUXWV SURYLGHV D GHFODUDWLYH HUURU KDQGOLQJ PHFKDQLVP VLPLODU WR HUURU SDJH! LQ WKH '' +RZHYHU ZLWK 6WUXWV WKH H[FHSWLRQV FDQ EH VSHFLILF WR WKH DSSOLFDWLRQ FRGH LQ \RXU $FWLRQ REMHFW 3OXJ LQV 6WUXWV SURYLGHV D 3OXJ,Q LQWHUIDFH ZLWK WZR PHWKRGV LQLW DQG GHVWUR\ <RX FDQ FUHDWH \RXU RZQ SOXJ LQV WR HQKDQFH \RXU 6WUXWV DSSOLFDWLRQ DQG WKH\ ZLOO EH PDQDJHG IRU \RX )RU H[DPSOH WKH 9DOLGDWRU IUDPHZRUN LV LQLWLDOL]HG XVLQJ D SOXJ LQ \RX DUH KHUH

Chapter 14. Enterprise Design Patterns Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 14. Enterprise Design Patterns

WKH EHHU DSS LQ 6WUXWV

:MNIK\WZQVO \PM *MMZ IXX NWZ ;\Z]\[ %NOUGH THEORY LET S WRITE A 3TRUTS APP &IRST OFF LET S REVIEW OUR -6# "EER APP FROM CHAPTER 4HE ONLY CODE THAT S GOING TO CHANGE WHEN WE REFACTOR TO 3TRUTS IS RELATED TO THE -6# CONTROLLER 4HE MODEL AND VIEW ARE NOT AFFECTED

5HTXHVW

&RQWUROOHU

%HHU6HOHFW

+DYLQJ UHFHLYHG D UHTXHVW WKH &RQWUROOHU SHUIRUPV

0RGHO %HHU([SHUW

YDOLGDWLRQ RI WKH XVHU IRUP GDWD

7KH &RQWUROOHU LQYRNHV WKH 0RGHO FRPSRQHQW 7KH &RQWUROOHU IRUZDUGV WR WKH 9LHZ

9LHZ

UHVXOW MVS

09& FRQWUROOHU FRGH IURP FKDSWHU

SDFNDJH FRP H[DPSOH ZHE LPSRUW FRP H[DPSOH PRGHO LPSRUW MDYD[ VHUYOHW LPSRUW MDYD[ VHUYOHW KWWS LPSRUW MDYD LR LPSRUW MDYD XWLO SXEOLF FODVV %HHU6HOHFW H[WHQGV +WWS6HUYOHW ^ SXEOLF YRLG GR3RVW +WWS6HUYOHW5HTXHVW UHTXHVW +WWS6HUYOHW5HVSRQVH UHVSRQVH

WKURZV ,2([FHSWLRQ 6HUYOHW([FHSWLRQ ^ 6WULQJ F UHTXHVW JHW3DUDPHWHU ³FRORU´

Not a lot of form validation going on here. :)

%HHU([SHUW EH QHZ %HHU([SHUW $UUD\/LVW UHVXOW EH JHW%UDQGV F

UHTXHVW VHW$WWULEXWH ³VW\OHV´ UHVXOW 5HTXHVW'LVSDWFKHU GLVS UHTXHVW JHW5HTXHVW'LVSDWFKHU ³UHVXOW MVS´ GLVS IRUZDUG UHTXHVW UHVSRQVH ` `

Invoke the model. Forward to the hardcoded View.

FKDSWHU

Chapter 14. Enterprise Design Patterns Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 14. Enterprise Design Patterns

SDWWHUQV DQG VWUXWV

<PM ;\Z]\[ *MMZ IXX IZKPQ\MK\]ZM (ERE S THE "EER APP ARCHITECTURE ALL DONE UP IN 3TRUTS

[PO! YDOLGDWH! YDOLGDWH! PDSSLQJ! PDSSLQJ! [PO!

VWUXWV FRQÀ J [PO

)RUP %HDQ D

5HTXHVW

D

D

$FWLRQ 6HUYOHW

%HHU6HOHFW)RUP

E

E

E

+DYLQJ UHFHLYHG D UHTXHVW WKH

$FWLRQ6HUYOHW ORFDWHV WKH FRUUHFW IRUP EHDQ XVLQJ WKH VWUXWV FRQILJ [PO ILOH 7KH $FWLRQ6HUYOHW LQYRNHV WKH IRUP EHDQ·V YDOLGDWLRQ ORJLF ,I WKH IRUP EHDQ ILQGV DQ\ HUURUV LW SRSXODWHV DQ $FWLRQ(UURUV REMHFW

8VLQJ WKH VWUXWV FRQILJ [PO ILOH WKH

$FWLRQ6HUYOHW ORFDWHV DQG LQYRNHV WKH $FWLRQ REMHFW ZKLFK LQYRNHV WKH PRGHO DQG UHWXUQV DQ $FWLRQ)RUZDUG REMHFW WR WKH $FWLRQ6HUYOHW

+DYLQJ SUHYLRXVO\ H[WUDFWHG WKH QHFHVVDU\

PDSSLQJV IURP VWUXWV FRQILJ [PO WKH $FWLRQ6HUYOHW XVHV WKH $FWLRQ)RUZDUG REMHFW WR GLVSDWFK WR WKH FRUUHFW YLHZ FRPSRQHQW

$FWLRQ REMHFW %HHU6HOHFW$FWLRQ

F

0RGHO %HHU([SHUW

9LHZ

UHVXOW MVS

ge Well, OK, the view *will* chanthin in a Struts web app. For one thatg, Struts provides a tag library >, that provides a tag, <html:errors/ n displays the form bean validatio ry errors. Also, the HTML tag libra the e pulat repo that tags ides prov form on an error.

\RX DUH KHUH

Chapter 14. Enterprise Design Patterns Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 14. Enterprise Design Patterns

WKH IRUP EHDQ

) NWZU JMIV M`XW[ML 2EMEMBER THE FORM BEAN S JOB IS TO VALIDATE THE USER S FORM PARAMS ! NICE BENEl T OF 3TRUTS IS THAT A VALIDATION STEP IS BUILT RIGHT INTO THE ARCHITECTURE

VWUXWV FRQĂ€ J [PO

)RUP %HDQ D D

D

%HHU6HOHFW)RUP

D D

E F

E

E

%HHU([SHUW

%HHU6HOHFW$FWLRQ

SDFNDJH FRP H[DPSOH ZHE 6WUXWV LPSRUWV LPSRUW RUJ DSDFKH VWUXWV DFWLRQ $FWLRQ0DSSLQJ LPSRUW RUJ DSDFKH VWUXWV DFWLRQ $FWLRQ)RUP LPSRUW RUJ DSDFKH VWUXWV DFWLRQ $FWLRQ(UURU LPSRUW RUJ DSDFKH VWUXWV DFWLRQ $FWLRQ(UURUV

UHVXOW MVS

Form beans must extend ActionForm.

LPSRUW MDYD[ VHUYOHW KWWS +WWS6HUYOHW5HTXHVW SXEOLF FODVV %HHU6HOHFW)RUP H[WHQGV $FWLRQ)RUP ^ SULYDWH 6WULQJ FRORU SXEOLF YRLG VHW&RORU 6WULQJ FRORU ^ Usually, youĂ•ll want your Form ers WKLV FRORU FRORU beans to have getters and sett ` for all of the form params. SXEOLF 6WULQJ JHW&RORU ^ UHWXUQ FRORU ` The ActionServlet SULYDWH VWDWLF Âż QDO 6WULQJ 9$/,'B&2/256 ÂłDPEHU GDUN OLJKW EURZQ´ SXEOLF $FWLRQ(UURUV YDOLGDWH $FWLRQ0DSSLQJ PDSSLQJ +WWS6HUYOHW5HTXHVW UHTXHVW ^ $FWLRQ(UURUV HUURUV QHZ $FWLRQ(UURUV

calls validate(). Struts provides ActionErrors to manage validation errors.

LI 9$/,'B&2/256 LQGH[2I FRORU ^ HUURUV DGG ³FRORU´ QHZ $FWLRQ(UURU ³HUURU FRORU)LHOG QRW9DOLG´

` UHWXUQ HUURUV ` The ActionError constructor takes ` that is a symbolic key into

a String a resource bundle. This is done to facilitate internationalization.

FKDSWHU

Chapter 14. Enterprise Design Patterns Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 14. Enterprise Design Patterns

SDWWHUQV DQG VWUXWV

0W_ IV )K\QWV WJRMK\ \QKS[ 4HE !CTION OBJECT IS MAINLY A DISPATCHER )T IS INVOKED BY THE !CTION3ERVLET WHICH CALLS THE !CTION OBJECT S EXECUTE METHOD

VWUXWV FRQĂ€ J [PO

D D

D

D D

%HHU6HOHFW)RUP

E

$FWLRQ REMHFW

E

E

F

%HHU([SHUW

%HHU6HOHFW$FWLRQ

SDFNDJH FRP H[DPSOH ZHE 0RGHO LPSRUWV LPSRUW FRP H[DPSOH PRGHO LPSRUW MDYD XWLO 6WUXWV LPSRUWV LPSRUW RUJ DSDFKH VWUXWV DFWLRQ $FWLRQ LPSRUW RUJ DSDFKH VWUXWV DFWLRQ $FWLRQ0DSSLQJ LPSRUW RUJ DSDFKH VWUXWV DFWLRQ $FWLRQ)RUP LPSRUW RUJ DSDFKH VWUXWV DFWLRQ $FWLRQ)RUZDUG 6HUYOHW LPSRUWV LPSRUW MDYD[ VHUYOHW KWWS +WWS6HUYOHW5HTXHVW LPSRUW MDYD[ VHUYOHW KWWS +WWS6HUYOHW5HVSRQVH SXEOLF FODVV %HHU6HOHFW$FWLRQ H[WHQGV $FWLRQ ^

UHVXOW MVS

rs MUST Your controe lleAction class. extend th Sent from the ActionServlet, so we can return the right view.

SXEOLF $FWLRQ)RUZDUG H[HFXWH $FWLRQ0DSSLQJ PDSSLQJ $FWLRQ)RUP IRUP +WWS6HUYOHW5HTXHVW UHTXHVW Provides +WWS6HUYOHW5HVSRQVH UHVSRQVH ^

access to the validated user form params.

&DVW WKH IRUP WR WKH DSSOLFDWLRQ VSHFLÂż F IRUP %HHU6HOHFW)RUP P\)RUP %HHU6HOHFW)RUP IRUP 3URFHVV WKH EXVLQHVV ORJLF %HHU([SHUW EH QHZ %HHU([SHUW $UUD\/LVW UHVXOW EH JHW%UDQGV P\)RUP JHW&RORU

)RUZDUG WR WKH 5HVXOWV YLHZ DQG VWRUH WKH GDWD LQ WKH UHTXHVW VFRSH

UHTXHVW VHW$WWULEXWH ³VW\OHV´ UHVXOW UHWXUQ PDSSLQJ ¿ QG)RUZDUG ³VKRZBUHVXOWV´ ` `

Sending a user form param to the model component.

The execute method returns an ActionForward to the ActionServlet that directs Struts to dispatch to the next appropriate view. These symbolic ÒforwardsÓ are declared in the strutsconÞg.xml Þle. \RX DUH KHUH

Chapter 14. Enterprise Design Patterns Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 14. Enterprise Design Patterns

WKH 6WUXWV ''

[\Z]\[ KWVNQO `UT" \aQVO Q\ ITT \WOM\PMZ

[PO! YDOLGDWH! YDOLGDWH! PDSSLQJ! PDSSLQJ! [PO!

4HE STRUTS CONl G XML l LE IS ANALOGOUS TO THE $$ 9OU CAN ACTUALLY CALL IT WHATEVER YOU WANT ALTHOUGH STRUTS CONl G XML IS ITS CONVENTIONAL NAME 3IMILAR TO THE $$ THIS l LE IS WHERE YOU LL DECLARE AND MAP 3TRUTS COMPONENTS IN YOUR WEB APP 4HIS MECHANISM HELPS YOUR APPLICATION BECOME MORE LOOSELY COUPLED

D D

D

VWUXWV FRQĂ€ J [PO

D D

%HHU6HOHFW)RUP

E F

E

E

%HHU6HOHFW$FWLRQ

%HHU([SHUW

UHVXOW MVS

"[PO YHUVLRQ ´ ´ HQFRGLQJ ´,62 ´ "! '2&7<3( VWUXWV FRQ¿ J 38%/,& ³ $SDFKH 6RIWZDUH )RXQGDWLRQ '7' 6WUXWV &RQ¿ JXUDWLRQ (1´ ³KWWS MDNDUWD DSDFKH RUJ VWUXWV GWGV VWUXWV FRQ¿ JB B GWG´! VWUXWV FRQ¿ J! IRUP EHDQV! IRUP EHDQ QDPH QDPH ´VHOHFW%HHU)RUP´ FW W\SH ´FRP H[DPSOH ZHE %HHU6HOHFW)RUP´ ! H[ IRUP EHDQV!

DFWLRQ PDSSLQJV! DFWLRQ SDWK ´ 6HOHFW%HHU´ HF

W\SH ´FRP H[DPSOH ZHE %HHU6HOHFW$FWLRQ´ H[D [

QDPH ´UHTXHVW´ QDPH ´VHOHFW%HHU)RUP´ VFRSH ´VHOHFW%HHU)RUP´ W

YDOLGDWH ´WUXH´ LQSXW ´ IRUP MVS´!

IRUZDUG QDPH ´VKRZBUHVXOWV´

SDWK ´ UHVXOW MVS´ !

DFWLRQ!

The <form-bean> element declares the symbolic name and class of a form bean object. An <action> element maps the URL path to the controller class; notice that the .do extension for the path is NOT included in the Struts conĂžguration. The <action> also associates a form bean with the action. This is speciĂžed by the symbolic form bean name. Struts will create this bean and store it in the speciĂžed scope. If validation occurs and errors are returned from the validate method, then the input attribute declares the View responsible for displaying the error message; this is usually the form that submitted this action.

DFWLRQ PDSSLQJV!

The <forward> element creates a mapping between the symbolic view name, used by the Action object, and the physical path to the view component.

PHVVDJH UHVRXUFHV SDUDPHWHU ´$SSOLFDWLRQ5HVRXUFHV´ QXOO ´IDOVH´ ! VWUXWV FRQ¿ J!

FKDSWHU

Chapter 14. Enterprise Design Patterns Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 14. Enterprise Design Patterns

SDWWHUQV DQG VWUXWV

;XMKQNaQVO ;\Z]\[ QV \PM _MJ `UT ,, !S FAR AS THE #ONTAINER IS CONCERNED THE !CTION3ERVLET IS JUST ANOTHER SERVLET 3O YOU HAVE TO DECLARE IT AND MAKE SURE ALL OF THE WEB APP S REQUESTS ARE MAPPED TO IT

ZHE DSS [POQV ´KWWS MDYD VXQ FRP [PO QV M HH´ [POQV [VL ´KWWS ZZZ Z RUJ ;0/6FKHPD LQVWDQFH´ [VL VFKHPD/RFDWLRQ ´KWWS MDYD VXQ FRP [PO QV M HH ZHE DSSB B [VG´ YHUVLRQ ´ ´!

Naming the ActionServlet ÒFrontControllerÓ isnÕt required, but itÕll help remind you of

'HÂż QH WKH FRQWUROOHU VHUYOHW ! its purpose in the app. VHUYOHW! VHUYOHW QDPH!)URQW&RQWUROOHU VHUYOHW QDPH! VHUYOHW FODVV!RUJ DSDFKH VWUXWV DFWLRQ $FWLRQ6HUYOHW VHUYOHW FODVV!

1DPH WKH VWUXWV FRQ¿ JXUDWLRQ ¿ OH ! The ÒconÞgÓ init param tells the ActionServlet LQLW SDUDP! where to Þnd the Struts conÞg Þle. SDUDP QDPH!FRQ¿ J SDUDP QDPH! SDUDP YDOXH! :(% ,1) VWUXWV FRQ¿ J [PO SDUDP YDOXH! LQLW SDUDP!

*XDUDQWHH WKDW WKLV VHUYOHW LV ORDGHG RQ VWDUWXS ! ORDG RQ VWDUWXS! ORDG RQ VWDUWXS! VHUYOHW! The ActionServlet 7KH 6WUXWV FRQWUROOHU PDSSLQJ ! VHUYOHW PDSSLQJ! VHUYOHW QDPH!)URQW&RQWUROOHU VHUYOHW QDPH! XUO SDWWHUQ! GR XUO SDWWHUQ! VHUYOHW PDSSLQJ! (1' 7KH 6WUXWV FRQWUROOHU PDSSLQJ !

has a complex init method; you better load this servlet at startup. Wow! This one servlet is going to handle ALL of this appÕs requests (assuming you name the request URLs with a Ò.doÓ extension).

ZHE DSS!

<RX VKRXOG QDPH WKH 6WUXWV '' ´VWUXWV FRQĂ€ J [POÂľ

\RXU ZHE [PO '' $QG LI \RX GR 127 WKHQ LQ DUDP ³FRQ¿ J´ \RX 0867 GHFODUH DQ LQLW S UXWV '' ,I \RX WR GH¿ QH WKH QDPH RI WKH 6W Q¿ J [PO´ WKHQ WV FR ³VWUX DPH WKH Q XVH '2 O\ ZLWKRXW DQ 6WUXWV ZLOO ¿ QG LW DXWRPDWLFDO QVLGHUHG ³JRRG LQLW SDUDPHWHU EXW LWœV VWLOO FR H '' SUDFWLFH´ WR GHFODUH LW LQ WK \RX DUH KHUH

Chapter 14. Enterprise Design Patterns Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 14. Enterprise Design Patterns

LQVWDOOLQJ 6WUXWV

1V[\ITT ;\Z]\[ IVL 2][\ :]V 1\ )NSTALLING 3TRUTS IS SIMPLE 4HE LINKS AND VERSIONS MENTIONED ON THIS PAGE WERE CURRENT AT THE TIME OF THIS WRITING 7HICH IS NO HELP AT ALL FOR YOU BUT MEANS SIMPLY WE HAVE NO IDEA WHAT THINGS WILL BE LIKE BY THE TIME YOU READ THIS BUT WE GAVE IT OUR BEST SHOT ANYWAY

6L[ HDV\ VWHSV WR LQVWDOOLQJ 6WUXWV

#RANK UP YOUR BROWSER AND NAVIGATE TO KWWS MDNDUWD DSDFKH RUJ VLWH ELQLQGH[ FJL

3CROLL DOWN TO THE 3TRUTS SECTION AND SELECT THE LINK TO ]LS

$OWNLOAD THE ZIP lLE TO A TEMPORARY DIRECTORY

5NZIP THE lLE WHICH UNPACKS TO MDNDUWD VWUXWV 5($'0( OLE VWUXWV MDU FRPPRQV EHDQXWLOV MDU FRPPRQV GLJHVWHU MDU ZHEDSSV

#OPY THE FOLLOWING lLES TO YOUR WEBAPP S 7%" ).& LIB DIRECTORY VWUXWV MDU FRPPRQV EHDQXWLOV MDU FRPPRQV GLJHVWHU MDU

&9) MAKE SURE THAT THERE IS A COPY OF STRUTS JAR IN YOUR CLASSPATH WHEN YOU COMPILE YOUR FORM BEANS AND ACTION OBJECTS 2EMEMBER THE !CTION3ERVLET FRONT CONTROLLER IS CREATED FOR YOU AUTOMATICALLY

FKDSWHU

Chapter 14. Enterprise Design Patterns Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 14. Enterprise Design Patterns

SDWWHUQV DQG VWUXWV

+ZMI\QVO \PM LMXTWaUMV\ MV^QZWVUMV\ 4HIS IS THE DIRECTORY STRUCTURE YOU WILL CREATE TO RUN THE 3TRUTS VERSION OF THE "EER APP

WRPFDW

ZHEDSSV

%HHU6WUXWV

YouÕll create one of these if you want to internationalize the text displayed to your user. Rather than hardcode error text or other Strings for display, you can use a resources properties Þle to provide key/value mappings, and in your JSP, you can invoke a special tag for the key, and the mapped text will be displayed.

:(% ,1)

OLE

FODVVHV

Optional

!

!

IRUP MVS

UHVXOW MVS

ZHEDSS! ZHEDSS!

DFWLRQ! DFWLRQ!

ZHE [PO

VWUXWV FRQILJ [PO

6WUXWV HUURUV K HUURU X

FRP

$SSOLFDWLRQ5HVRXUFHV SURSHUWLHV

H[DPSOH

ZHE

PRGHO

%HHU6HOHFW)RUP FODVV

FRPPRQV GLJHVWHU MDU

6WUXWV MDU

FRPPRQV EHDQXWLOV MDU

%HHU6HOHFW$FWLRQ FODVV

The two deployment descriptors.

These three JAR Ăžles are the core Struts library s and two common librarie used by Struts.

%HHU([SHUW FODVV

\RX DUH KHUH

Chapter 14. Enterprise Design Patterns Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 14. Enterprise Design Patterns

EXVLQHVV GHOHJDWH

8I\\MZV[ ZM^QM_ NWZ \PM ;+?+, 7E VE COVERED A LOT OF PATTERNS IN THE LAST TWO CHAPTERS 4HE NEXT FEW PAGES PULL TOGETHER A LOT OF THE DETAILS YOU LL WANT TO STUDY FOR THE 3#7#$ EXAM

*][QVM[[ ,MTMOI\M 5SE THE "USINESS $ELEGATE PATTERN TO SHIELD YOUR WEB TIER CONTROLLERS FROM THE FACT THAT SOME OF YOUR APP S MODEL COMPONENTS ARE REMOTE

0DQDJH &XVWRPHU

6HUYLFH /RFDWRU

%XVLQHVV 'HOHJDWH

&RQWUROOHU

6WXE 0DQDJH &XVWRPHU

:mkaf]kk <]d]_Yl] ^]Ylmj]k

ƒ $FWV DV D SUR[\ LPSOHPHQWLQJ WKH UHPRWH VHUYLFH¡V ƒ ƒ ƒ ƒ ƒ ƒ

LQWHUIDFH ,QLWLDWHV FRPPXQLFDWLRQV ZLWK D UHPRWH VHUYLFH +DQGOHV FRPPXQLFDWLRQ GHWDLOV DQG H[FHSWLRQV 5HFHLYHV UHTXHVWV IURP D FRQWUROOHU FRPSRQHQW 7UDQVODWHV WKH UHTXHVW DQG IRUZDUGV LW WR WKH EXVLQHVV VHUYLFH YLD WKH VWXE 7UDQVODWHV WKH UHVSRQVH DQG UHWXUQV LW WR WKH FRQWUROOHU FRPSRQHQW %\ KDQGOLQJ WKH GHWDLOV RI UHPRWH FRPSRQHQW ORRNXS DQG FRPPXQLFDWLRQV DOORZV FRQWUROOHUV WR EH PRUH FRKHVLYH

:mkaf]kk <]d]_Yl] hjaf[ahd]k

ƒ 7KH %XVLQHVV GHOHJDWH LV EDVHG RQ ƒ KLGLQJ FRPSOH[LW\ ƒ FRGLQJ WR LQWHUIDFHV ƒ ORRVH FRXSOLQJ ƒ VHSDUDWLRQ RI FRQFHUQV ƒ 0LQLPL]HV WKH LPSDFW RQ WKH ZHE WLHU ZKHQ FKDQJHV RFFXU RQ WKH EXVLQHVV WLHU

ƒ 5HGXFHV FRXSOLQJ EHWZHHQ WLHUV ƒ $GGV D OD\HU WR WKH DSS ZKLFK LQFUHDVHV FRPSOH[LW\ ƒ 0HWKRG FDOOV WR WKH %XVLQHVV 'HOHJDWH VKRXOG EH FRDUVH JUDLQHG WR UHGXFH QHWZRUN WUDIILF

FKDSWHU

Chapter 14. Enterprise Design Patterns Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 14. Enterprise Design Patterns

SDWWHUQV DQG VWUXWV

;MZ ^QKM 4WKI\WZ 5SE THE 3ERVICE ,OCATOR PATTERN TO PERFORM REGISTRY LOOKUPS SO YOU CAN SIMPLIFY ALL OF THE OTHER COMPONENTS SUCH AS "USINESS $ELEGATES THAT HAVE TO DO *.$) OR OTHER REGISTRY TYPES LOOKUPS

-1', 0DQDJH &XVWRPHU

6HUYLFH /RFDWRU

-1', 6HUYHU

%XVLQHVV 'HOHJDWH

K]jna[] Dg[Ylgj ^]Ylmj]k

ƒ ƒ ƒ ƒ

2EWDLQV ,QLWLDO&RQWH[W REMHFWV 3HUIRUPV UHJLVWU\ ORRNXSV +DQGOHV FRPPXQLFDWLRQ GHWDLOV DQG H[FHSWLRQV &DQ LPSURYH SHUIRUPDQFH E\ FDFKLQJ SUHYLRXVO\ REWDLQHG UHIHUHQFHV ƒ :RUNV ZLWK D YDULHW\ RI UHJLVWULHV VXFK DV -1', 50, 8'', DQG &26 QDPLQJ

K]jna[] Dg[Ylgj hjaf[ahd]k

ƒ 7KH 6HUYLFH /RFDWRU LV EDVHG RQ ƒ KLGLQJ FRPSOH[LW\ ƒ VHSDUDWLRQ RI FRQFHUQV ƒ 0LQLPL]HV WKH LPSDFW RQ WKH ZHE WLHU ZKHQ UHPRWH FRPSRQHQWV FKDQJH ORFDWLRQV RU FRQWDLQHUV

ƒ 5HGXFHV FRXSOLQJ EHWZHHQ WLHUV

\RX DUH KHUH

Chapter 14. Enterprise Design Patterns Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 14. Enterprise Design Patterns

WUDQVIHU REMHFW SDWWHUQ

<ZIV[NMZ 7JRMK\ 5SE THE 4RANSFER /BJECT PATTERN TO MINIMIZE NETWORK TRAFl C BY PROVIDING A LOCAL REPRESENTATION OF A l NE GRAINED REMOTE COMPONENT USUALLY AN ENTITY

0DQDJH &XVWRPHU %XVLQHVV 'HOHJDWH

5HTXHVW

7UDQVIHU 2EMHFW

9LHZ

LjYfk^]j GZb][l ^mf[lagfk

ƒ 3URYLGHV D ORFDO UHSUHVHQWDWLRQ RI D UHPRWH HQWLW\ ƒ ƒ ƒ ƒ

L H DQ REMHFW WKDW PDLQWDLQV VRPH GDWD VWDWH 0LQLPL]HV QHWZRUN WUDIILF &DQ IROORZ -DYD EHDQ FRQYHQWLRQV VR WKDW LW FDQ EH HDVLO\ DFFHVVHG E\ RWKHU REMHFWV ,PSOHPHQWHG DV D VHULDOL]DEOH REMHFW VR WKDW LW FDQ PRYH DFURVV WKH QHWZRUN 7\SLFDOO\ HDVLO\ DFFHVVLEOH E\ YLHZ FRPSRQHQWV

&XVWRPHU

LjYfk^]j GZb][l hjaf[ahd]k

ƒ 7KH 7UDQVIHU 2EMHFW LV EDVHG RQ ƒ UHGXFLQJ QHWZRUN WUDIILF ƒ 0LQLPL]HV WKH SHUIRUPDQFH LPSDFW RQ WKH ZHE WLHU ZKHQ UHPRWH FRPSRQHQWV¡ GDWD LV DFFHVVHG ZLWK ILQH JUDLQHG FDOOV ƒ 5HGXFHV FRXSOLQJ EHWZHHQ WLHUV ƒ $ GUDZEDFN LV WKDW FRPSRQHQWV DFFHVVLQJ WKH 7UDQVIHU 2EMHFW FDQ UHFHLYH RXW RI GDWH GDWD EHFDXVH WKH 7UDQVIHU 2EMHFW¡V GDWD LV UHDOO\ UHSUHVHQWLQJ VWDWH WKDW¡V VWRUHG VRPHZKHUH HOVH ƒ 0DNLQJ XSGDWDEOH 7UDQVIHU 2EMHFWV FRQFXUUHQF\ VDIH LV W\SLFDOO\ FRPSOH[

FKDSWHU

Chapter 14. Enterprise Design Patterns Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 14. Enterprise Design Patterns

SDWWHUQV DQG VWUXWV

1V\MZKMX\QVO .QT\MZ 5SE THE )NTERCEPTING &ILTER PATTERN TO MODIFY REQUESTS BEING SENT TO SERVLETS OR TO MODIFY RESPONSES BEING SENT TO USERS

objects The request and responaseĂžlter on h oug thr being passed vlet the way to and from a ser

:HE EURZVHU

&OLHQW

&RQWDLQHU

6HUYOHW )LOWHU

Afl]j[]hlaf_ >adl]j ^mf[lagfk

ƒ &DQ LQWHUFHSW DQG RU PRGLI\ UHTXHVWV EHIRUH WKH\ ƒ ƒ ƒ ƒ ƒ

UHDFK WKH VHUYOHW &DQ LQWHUFHSW DQG RU PRGLI\ UHVSRQVHV EHIRUH WKH\ DUH UHWXUQHG WR WKH FOLHQW )LOWHUV DUH GHSOR\HG GHFODUDWLYHO\ XVLQJ WKH '' )LOWHUV DUH PRGXODU VR WKDW WKH\ FDQ EH H[HFXWHG LQ FKDLQV )LOWHUV KDYH OLIHF\FOHV PDQDJHG E\ WKH &RQWDLQHU )LOWHUV PXVW LPSOHPHQW &RQWDLQHU FDOOEDFN PHWKRGV

example of... Filters are anting Filter the Intercepo Ăžgure. pattern. G

Afl]j[]hlaf_ >adl]j hjaf[ahd]k

ƒ 7KH ,QWHUFHSWLQJ )LOWHU LV EDVHG RQ ƒ FRKHVLRQ ƒ ORRVH FRXSOLQJ ƒ LQFUHDVLQJ GHFODUDWLYH FRQWURO ƒ 'HFODUDWLYH FRQWURO DOORZV )LOWHUV WR EH HDVLO\ LPSOHPHQWHG RQ HLWKHU D WHPSRUDU\ RU SHUPDQHQW EDVLV ƒ 'HFODUDWLYH FRQWURO DOORZV WKH VHTXHQFH RI LQYRFDWLRQ WR EH HDVLO\ XSGDWHG

\RX DUH KHUH

Chapter 14. Enterprise Design Patterns Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 14. Enterprise Design Patterns

09& SDWWHUQ

5WLMT >QM_ +WV\ZWTTMZ 5>+ 5SE THE -6# PATTERN TO CREATE A LOGICAL STRUCTURE THAT SEPARATES THE CODE INTO THREE BASIC TYPES OF COMPONENTS -ODEL 6IEW #ONTROLLER IN YOUR APPLICATION 4HIS INCREASES THE COHESIVENESS OF EACH COMPONENT AND ALLOWS FOR GREATER REUSABILITY ESPECIALLY WITH MODEL COMPONENTS

&RQWUROOHU

5HTXHVW

0RGHO

9LHZ

Eg\]d$ Na]o$ ;gfljgdd]j ^]Ylmj]k

ƒ 9LHZV FDQ FKDQJH LQGHSHQGHQWO\ IURP FRQWUROOHUV DQG PRGHOV ƒ 0RGHO FRPSRQHQWV KLGH LQWHUQDO GHWDLOV GDWD VWUXFWXUHV IURP WKH YLHZ DQG FRQWUROOHU FRPSRQHQWV ƒ ,I WKH PRGHO DGKHUHV WR D VWULFW FRQWUDFW LQWHUIDFH WKHQ WKHVH FRPSRQHQWV FDQ EH UHXVHG LQ RWKHU DSSOLFDWLRQ DUHDV VXFK DV *8,V RU - 0( ƒ 6HSDUDWLRQ RI PRGHO FRGH IURP FRQWUROOHU FRGH DOORZV IRU HDVLHU PLJUDWLRQ WR XVLQJ UHPRWH EXVLQHVV FRPSRQHQWV

Eg\]d$ Na]o$ ;gfljgdd]j hjaf[ahd]k

ƒ 0RGHO 9LHZ &RQWUROOHU LV EDVHG RQ ƒ VHSDUDWLRQ RI FRQFHUQV ƒ ORRVH FRXSOLQJV ƒ ,QFUHDVHV FRKHVLRQ LQ LQGLYLGXDO FRPSRQHQWV ƒ ,QFUHDVHV WKH RYHUDOO FRPSOH[LW\ RI WKH DSSOLFDWLRQ 7KLV LV WUXH EHFDXVH HYHQ WKRXJK LQGLYLGXDO FRPSRQHQWV EHFRPH PRUH FRKHVLYH 09& DGGV PDQ\ QHZ FRPSRQHQWV WR WKH DSSOLFDWLRQ

ƒ 0LQLPL]HV WKH LPSDFW RI FKDQJHV LQ RWKHU WLHUV RI WKH DSSOLFDWLRQ

FKDSWHU

Chapter 14. Enterprise Design Patterns Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 14. Enterprise Design Patterns

SDWWHUQV DQG VWUXWV

.ZWV\ +WV\ZWTTMZ 5SE THE &RONT #ONTROLLER PATTERN TO GATHER COMMON OFTEN REDUNDANT REQUEST PROCESSING CODE INTO A SINGLE COMPONENT 4HIS ALLOWS THE APPLICATION CONTROLLER TO BE MORE COHESIVE AND LESS COMPLEX

[PO! YDOLGDWH! YDOLGDWH! PDSSLQJ! PDSSLQJ! [PO!

VWUXWV FRQĂ€ J [PO

)RUP %HDQ

$FWLRQ REMHFW

$FWLRQ 6HUYOHW

0RGHO

5HTXHVW

A Struts implementation of the Front Controller pattern. 9LHZ

>jgfl ;gfljgdd]j ^]Ylmj]k

ƒ &HQWUDOL]HV D ZHE DSS¡V LQLWLDO UHTXHVW KDQGOLQJ WDVNV LQ D VLQJOH FRPSRQHQW ƒ 8VLQJ WKH )URQW &RQWUROOHU ZLWK RWKHU SDWWHUQV FDQ SURYLGH ORRVH FRXSOLQJ E\ PDNLQJ SUHVHQWDWLRQ WLHU GLVSDWFKLQJ GHFODUDWLYH ƒ $ GUDZEDFN RI )URQW &RQWUROOHU RQ LWV RZQ ZLWKRXW 6WUXWV LV WKDW LW¡V YHU\ EDUHERQHV FRPSDUHG WR 6WUXWV 7R FUHDWH D UHDVRQDEOH DSSOLFDWLRQ IURP VFUDWFK XVLQJ WKH )URQW &RQWUROOHU SDWWHUQ \RX ZRXOG HQG XS UHZULWLQJ PDQ\ RI WKH IHDWXUHV DOUHDG\ IRXQG LQ 6WUXWV

>jgfl ;gfljgdd]j hjaf[ahd]k

ƒ 7KH )URQW &RQWUROOHU LV EDVHG RQ ƒ KLGLQJ FRPSOH[LW\ ƒ VHSDUDWLRQ RI FRQFHUQV ƒ ORRVH FRXSOLQJ ƒ ,QFUHDVHV FRKHVLRQ LQ DSSOLFDWLRQ FRQWUROOHU FRPSRQHQWV

ƒ 'HFUHDVHV WKH RYHUDOO FRPSOH[LW\ RI WKH DSSOLFDWLRQ ƒ ,QFUHDVHV WKH PDLQWDLQDELOLW\ RI WKH LQIUDVWUXFWXUH FRGH

\RX DUH KHUH

Chapter 14. Enterprise Design Patterns Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 14. Enterprise Design Patterns

PRFN H[DP

0RFN ([DP &KDSWHU

'IVEN THIS LIST OF ATTRIBUTES RELATED TO )NTERCEPTING &ILTER SUPPORTS ROLE SEPARATION BETWEEN DEVELOPERS ADDS REUSABILITY 7HICH DESIGN PATTERN IS BEING DESCRIBED

R ! 4RANSFER /BJECT R " 3ERVICE ,OCATOR R # &RONT #ONTROLLER R $ "USINESS $ELEGATE

4HE DESIGN OF YOUR WEB APPLICATION CALLS FOR CERTAIN SECURITY MEASURES TO BE TAKEN FOR EVERY REQUEST RECEIVED 3OME OF THESE SECURITY CHECKS WILL BE APPLIED REGARDLESS OF THE TYPE OF REQUEST 7HICH DESIGN PATTERN CAN BE USED TO ACHIEVE THIS DESIGN REQUIREMENT

R ! 4RANSFER /BJECT R " 3ERVICE ,OCATOR R # #OMPOSITE %NTITY R $ "USINESS $ELEGATE R % )NTERCEPTING &ILTER

9OUR COMPANY WANTS TO LEVERAGE ITS DISTRIBUTED SILOS 9OUR JOB IS TO SEAMLESSLY INTEGRATE YOUR APPLICATION S WEB SERVICE ENDPOINTS WITH ITS $!/S )N ADDITION YOUR COARSE GRAINED #ONTROLLER ,OCATORS MUST BE ENHANCED TO SUPPORT * -% 5$$) REGISTRIES 7HICH DESIGN PATTERN CAN BE USED TO ACHIEVE THESE DESIGN REQUIREMENTS

R ! $OMAIN !CTIVATOR R " )NTERCEPTING /BSERVER R # #OMPOSITE $ELEGATE R $ 4RANSFER &ACADE

FKDSWHU

Chapter 14. Enterprise Design Patterns Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 14. Enterprise Design Patterns

SDWWHUQV DQG VWUXWV

4HIS STATEMENT DESCRIBES THE POTENTIAL BENElTS OF A DESIGN PATTERN 4HE PATTERN REDUCES NETWORK ROUNDTRIPS BETWEEN A CLIENT AND AN %NTERPRISE "EAN AND GIVES THE CLIENT A LOCAL COPY OF THE DATA ENCAPSULATED BY AN %NTERPRISE "EAN AFTER A SINGLE METHOD CALL INSTEAD OF REQUIRING SEVERAL METHOD CALLS 7HICH DESIGN PATTERN IS BEING DESCRIBED

R ! 4RANSFER OBJECT R " )NTERCEPTING &ILTER R # -ODEL 6IEW #ONTROLLER R $ "USINESS $ELEGATE

9OUR COMPANY -ODELS @2 5S IS CREATING AN ADVANCED INVENTORY MAXIMIZATION COMPONENT THAT CAN BE USED WITH ALL MAJOR * %% CONTAINER VENDORS 9OUR JOB IS TO DESIGN THE PIECE OF THIS COMPONENT THAT WILL PERFORM *.$) LOOKUPS WITH WHATEVER VENDOR THE CLIENT IS USING 7HAT DESIGN PATTERN CAN HELP YOU ACCOMPLISH THIS TASK

R ! 4RANSFER OBJECT R " )NTERCEPTING &ILTER R # -ODEL 6IEW #ONTROLLER R $ "USINESS $ELEGATE R % 3ERVICE ,OCATOR

7HILE lNE TUNING YOUR MULTI TIERED * %% BUSINESS APPLICATION YOU VE DISCOVERED THAT YOU D GET BETTER PERFORMANCE IF YOU REDUCED THE NUMBER OF REMOTE REQUESTS YOUR APP MAKES AND INCREASED THE AMOUNT OF DATA COLLECTED FOR EACH REQUEST YOU MAKE 7HAT DESIGN PATTERN SHOULD YOU CONSIDER TO IMPLEMENT THIS CHANGE IN YOUR APPLICATION

R ! 4RANSFER OBJECT R " 3ERVICE ,OCATOR

R # &RONT #ONTROLLER R $ )NTERCEPTING &ILTER R % -ODEL 6IEW #ONTROLLER

\RX DUH KHUH

Chapter 14. Enterprise Design Patterns Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 14. Enterprise Design Patterns

PRFN H[DP

'IVEN THIS LIST OF ATTRIBUTES RELATED TO 3ERVICE ,OCATOR REDUCES COUPLING CAN ADD A LAYER AND SOME COMPLEXITY 7HICH DESIGN PATTERN IS BEING DESCRIBED

R ! 4RANSFER /BJECT R " &RONT #ONTROLLER R # "USINESS $ELEGATE R $ )NTERCEPTING &ILTER R % -ODEL 6IEW #ONTROLLER

9OUR WEB APPLICATION USES A 3ESSION"EAN COMPONENT IN A DISTRIBUTED APPLICATION TO MAKE A SPECIALIZED CALCULATION SUCH AS VALIDATING CREDIT CARD NUMBERS (OWEVER YOU WANT TO SHIELD YOUR WEB COMPONENTS FROM THE CODE INVOLVED WITH LOOKING UP THE 3ESSION"EAN COMPONENT AND USING ITS INTERFACE 9OU WANT TO DECOUPLE LOCAL APPLICATION CLASSES FROM THE LOOKING UP AND USE OF THE DISTRIBUTED COMPONENT WHOSE INTERFACE COULD CHANGE 7HICH * %% DESIGN PATTERN CAN YOU USE IN THIS CASE

R ! 4RANSFER OBJECT R " 3ERVICE ,OCATOR R # -ODEL 6IEW #ONTROLLER R $ "USINESS $ELEGATE

'IVEN THIS LIST OF ATTRIBUTES RELATED TO "USINESS $ELEGATE IMPROVES NETWORK PERFORMANCE CAN IMPROVE CLIENT PERFORMANCE THROUGH CACHING 7HICH DESIGN PATTERN IS BEING DESCRIBED

R ! 4RANSFER /BJECT R " 3ERVICE ,OCATOR R # &RONT #ONTROLLER R $ )NTERCEPTING &ILTER R % -ODEL 6IEW #ONTROLLER

FKDSWHU

Chapter 14. Enterprise Design Patterns Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 14. Enterprise Design Patterns

SDWWHUQV DQG VWUXWV

&KDSWHU $QVZHUV

erns, pg. 180)

'IVEN THIS LIST OF ATTRIBUTES

(Core J2EE Patt

RELATED TO )NTERCEPTING &ILTER SUPPORTS ROLE SEPARATION BETWEEN DEVELOPERS ADDS REUSABILITY 7HICH DESIGN PATTERN IS BEING DESCRIBED

R ! 4RANSFER /BJECT R " 3ERVICE ,OCATOR R # &RONT #ONTROLLER R $ "USINESS $ELEGATE

e the -This pattern (among others), helps separat tasks performed by application developers from the tasks performed by web designers.

4HE DESIGN OF YOUR WEB APPLICATION CALLS FOR CERTAIN SECURITY MEASURES TO BE TAKEN FOR EVERY REQUEST RECEIVED 3OME OF THESE SECURITY CHECKS WILL BE APPLIED REGARDLESS OF THE TYPE OF REQUEST

erns, (Core J2EE Patt pg. 144)

7HICH DESIGN PATTERN CAN BE USED TO ACHIEVE THIS DESIGN REQUIREMENT

R ! 4RANSFER /BJECT R " 3ERVICE ,OCATOR R # #OMPOSITE %NTITY R $ "USINESS $ELEGATE R % )NTERCEPTING &ILTER

when -The Intercepting Filter is a good choice requests you want to intercept and manipulatehappen s. before the normal request processing

9OUR COMPANY WANTS TO LEVERAGE ITS DISTRIBUTED SILOS 9OUR JOB IS TO SEAMLESSLY INTEGRATE YOUR APPLICATION S WEB SERVICE ENDPOINTS WITH ITS $!/S )N ADDITION YOUR COARSE GRAINED #ONTROLLER ,OCATORS MUST BE ENHANCED TO SUPPORT * -% 5$$) REGISTRIES

(Dating Des.ign7) Patterns ch

7HICH DESIGN PATTERN CAN BE USED TO ACHIEVE THESE DESIGN REQUIREMENTS

R ! $OMAIN !CTIVATOR R " )NTERCEPTING /BSERVER R # #OMPOSITE $ELEGATE R $ 4RANSFER &ACADE

ments, - Given the irregularities in the requireprovide the the Composite Delegate pattern will greatest refactoring Ă&#x;exibility : ) \RX DUH KHUH

Chapter 14. Enterprise Design Patterns Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 14. Enterprise Design Patterns

PRFN DQVZHUV

4HIS STATEMENT DESCRIBES THE POTENTIAL BENElTS OF A DESIGN PATTERN 4HE PATTERN REDUCES NETWORK ROUNDTRIPS BETWEEN A CLIENT AND AN %NTERPRISE "EAN AND GIVES THE CLIENT A LOCAL COPY OF THE DATA ENCAPSULATED BY AN %NTERPRISE "EAN AFTER A SINGLE METHOD CALL INSTEAD OF REQUIRING SEVERAL METHOD CALLS 7HICH DESIGN PATTERN IS BEING DESCRIBED

R ! 4RANSFER OBJECT R " )NTERCEPTING &ILTER R # -ODEL 6IEW #ONTROLLER R $ "USINESS $ELEGATE

erns, (Core J2EE Patt ) 24 pg. 4

-A key beneĂžt of a Transfer Object is the reduction of network trafĂžc.

erns,

9OUR COMPANY -ODELS @2 5S IS CREATING AN ADVANCED INVENTORY MAXIMIZATION COMPONENT THAT CAN BE USED WITH ALL MAJOR * %% CONTAINER VENDORS 9OUR JOB IS TO DESIGN THE PIECE OF THIS COMPONENT THAT WILL PERFORM *.$) LOOKUPS WITH WHATEVER VENDOR THE CLIENT IS USING

(Core J2EE Patt pg. 316)

7HAT DESIGN PATTERN CAN HELP YOU ACCOMPLISH THIS TASK

R ! 4RANSFER OBJECT R " )NTERCEPTING &ILTER R # -ODEL 6IEW #ONTROLLER R $ "USINESS $ELEGATE R % 3ERVICE ,OCATOR

-The Service Locator can be used when you want to encapsulate vendor dependencies concerning service lookups. Using this pattern will help isolate the code that will be unique from vendor to vendor.

7HILE lNE TUNING YOUR MULTI TIERED * %% BUSINESS APPLICATION YOU VE DISCOVERED THAT YOU D GET BETTER PERFORMANCE IF YOU REDUCED THE NUMBER OF REMOTE REQUESTS YOUR APP MAKES AND INCREASED THE AMOUNT OF DATA COLLECTED FOR EACH REQUEST YOU MAKE

tterns, (Core J2EE16Pa ) -4 pg. 415

7HAT DESIGN PATTERN SHOULD YOU CONSIDER TO IMPLEMENT THIS CHANGE IN YOUR APPLICATION

R ! 4RANSFER OBJECT R " 3ERVICE ,OCATOR

R # &RONT #ONTROLLER R $ )NTERCEPTING &ILTER R % -ODEL 6IEW #ONTROLLER

-The Transfer Object can be used to aggregate multiple, Ăžne-grained remote calls into a single call. Often, the reduction in network trafĂžc more than makes up for the overhead of populating a larger object, and an increase in performance can be achieved.

FKDSWHU

Chapter 14. Enterprise Design Patterns Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Chapter 14. Enterprise Design Patterns

SDWWHUQV DQG VWUXWV

'IVEN THIS LIST OF ATTRIBUTES

(Core J2EE Patterns, pg. 308-309)

RELATED TO 3ERVICE ,OCATOR REDUCES COUPLING CAN ADD A LAYER AND SOME COMPLEXITY 7HICH DESIGN PATTERN IS BEING DESCRIBED

R ! 4RANSFER /BJECT R " &RONT #ONTROLLER R # "USINESS $ELEGATE R $ )NTERCEPTING &ILTER R % -ODEL 6IEW #ONTROLLER

of this -Although a layer is added, the beneĂžtas simpler pattern (such as reduced coupling and hile. business tier interface), make it worthw

9OUR WEB APPLICATION USES A 3ESSION"EAN COMPONENT IN A DISTRIBUTED APPLICATION (Core J2EE TO MAKE A SPECIALIZED CALCULATION SUCH AS VALIDATING CREDIT CARD NUMBERS (OWEVER Patterns, pg. YOU WANT TO SHIELD YOUR WEB COMPONENTS FROM THE CODE INVOLVED WITH LOOKING UP THE 3ESSION"EAN COMPONENT AND USING ITS INTERFACE 9OU WANT TO DECOUPLE LOCAL APPLICATION CLASSES FROM THE LOOKING UP AND USE OF THE DISTRIBUTED COMPONENT WHOSE INTERFACE COULD CHANGE 7HICH * %% DESIGN PATTERN CAN YOU USE IN THIS CASE

R ! 4RANSFER OBJECT R " 3ERVICE ,OCATOR R # -ODEL 6IEW #ONTROLLER R $ "USINESS $ELEGATE

308)

-A key beneĂžt of the Business Delegate is reduced coupling between the presentation tier and the business tier.

'IVEN THIS LIST OF ATTRIBUTES

(Core J2EE Patterns, pg. 329)

RELATED TO "USINESS $ELEGATE IMPROVES NETWORK PERFORMANCE CAN IMPROVE CLIENT PERFORMANCE THROUGH CACHING 7HICH DESIGN PATTERN IS BEING DESCRIBED

R ! 4RANSFER /BJECT R " 3ERVICE ,OCATOR R # &RONT #ONTROLLER R $ )NTERCEPTING &ILTER R % -ODEL 6IEW #ONTROLLER

-By using this pattern you can combineand the network calls necessary to lookup create business objects.

\RX DUH KHUH

Chapter 14. Enterprise Design Patterns Head First Servlets and JSP By Bert Bates, Kathy Sierra, Bryan Basham ISBN: 0596005407 Publisher:Prepared for Augusto Jaramillo Forcada, Safari ID: augustojf.cv@gmail.com O'Reilly 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.


Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.