JavaServletProgramming,2ndEdition>14.TheTeaFramework>14.1TheTea
Language
CONTINUE>
14.1TheTeaLanguage
Teaisaprogramminglanguagedesignedfortextformatting.Itisstrongly
typed,compiled,anddesignedtoworkwithinaJava-basedhosting
environment.TheTeaServletisthathostingenvironment,makinguseofTeafor
webpagecreationandprovidingastandardhookintoservletengineswith
whichtocallTeatemplatefiles.[1]
[1]AlthoughTeawasdesignedfortextformatting,it'sactuallypossibleforaTeatemplatetocontrol
animage-producingapplicationclassandeasilyscripttogetheradynamicimage.Unlikeother
contentcreationtoolswe'lldiscuss,Teatemplatesmayoutputbinarydataaswellascharacterdata.
ThemaingoaloftheTealanguageistoenforceseparationbetweencontentand
presentation,withoutsacrificingbasicprogrammingconstructs.Tothisend,Tea
wascreatedwithfourbasicconstraints:
Dataordatatypescannotbedirectlycreated;theyareacquired.
Acquireddatacannotbedirectlymodifiedinanyway.
Atemplatecannotdirectlycauseharmtoitshostingenvironment.
Onlytheminimumamountofprogrammingconstructsisprovided.
Theseconstraintsadditionallyprotectthesystemfromabuggyorpoorlywritten
template,somethingthat'sextremelydesirablewhenyouhaveasiteaccepting
newtemplatesbythedozen,asoccursonpopularnewssites.Thisdesignalso
benefitswebhostingcompaniesthatneedtoprovideclientswiththeabilityto
createdynamicpagesbutdon'twantanyparticularclient'smistaketonegatively
impacttherestoftheserver.
Butdoweneedanotherlanguage,especiallyalanguagethatdoeslessthan
Java?TheTeaTemplateLanguageManualanswersthisquestion:
Tearesultedfromseveralyearsofexperiencewithotherwebpagebuilding
mechanisms.Mostweb-basedapplicationsstartoutwithHTMLtags
embeddedincode,whetheritbeC,Perl,orJava.Thisapproachis
adequateforsmallorfirst-timeprojectsbecauseitdoesn'ttakeverylongto
develop.
Becausechangestopageformattingcanoccurfrequently,anddevelopers
don'twishtomakethesechanges,theyinevitablyevolveintousingsome
kindoftokenreplacementtemplatingmechanism.Eachtokenisjusta
placeholderforastring,whichcontainsapplication-createddata.These
templatesystemsfurtherevolveintosupportingspecialconstructsfor
formattingtables,forms,andsimpleconditionallogic.
Whenintroducingprogrammingconstructsintoatemplate,thechallengeis
tocomeupwithsomethingthatispowerfulenough,yetatthesametime
besimpleandsafe.Ifit'stoopowerful,thencompleteapplicationscould
bedevelopedintemplates.Ifitistooweak,thenHTMLformattingends
upintheapplication.Ifitisn'tsimpleorsafe,thenapplicationdevelopers
endupwritingandmaintainingtemplates.
RatherthanembeddinganexistinglanguageintosomethinglikeanASPor
JSP,Teaisalanguagespeciallydesignedtomeettherequirementsofa
templatingsystem.Itissafe,simple,efficient,andpowerful.
Inoneinstance,Teaisintegratedwithaspecialservlet.Thisservletgives
Teatemplatescontroloverpagebuilding,whileretainingstrongtiestoa
backendapplicationwrittenbyaJavadeveloper.Whilethisservlet
providesfunctionalitysimilartothatofJSPs,Teaenforcescorrectmodelviewseparationbecauseoftheintentionallanguagelimitations.Although
thisisalsothesuggestedseparationmodelinJSPs,itcannotbeenforced.
Inaddition,Teatemplatesdon'tsupportprogrammingfeaturesthatcanbe
usedirresponsibly.Modificationsneednotgothroughastrictreviewand
testingphase,whichwouldstillberequiredforJSPs.
Everyoneworkingonaprojectshouldbeempoweredtodotheirjobthe
mosteffectively,andTeadoesitspartbylettingyoudoexactlywhatyou
need,aseasilyaspossible,andnomore.Evenonprojectsrunbyjust
developers,usingTeaisstillbeneficial.Itencouragesgooddevelopment
practicesanditmakesapplicationseasiertomaintain.
Readersofthisbookshouldalsoremember,Teaisn'talanguageintendedfor
you;it'salanguagetobeusedbytechnicalproducers.It'sasimplerlanguage
thanJava,asaferlanguagethanJava,andequallyasefficientasJava.
Lastupdatedon3/20/2003
JavaServletProgramming,2ndEdition,©2001O'Reilly
CONTINUE>
JavaServletProgramming,2ndEdition
JavaServletProgramming,2ndEdition
[Symbol][A][B][C][D][E][F][G][H][I][J][K][L][M][N][O][P][Q][R][S][T][U][V][W][X][Y][Z]
Preface
ServletAPI2.2
ReadersoftheFirstEdition
Audience
AbouttheExamples
Organization
ConventionsUsedinThisBook
RequestforComments
Acknowledgments
AcknowledgmentsfromtheFirstEdition
1.Introduction
1.1HistoryofWebApplications
1.2SupportforServlets
1.3ThePowerofServlets
2.HTTPServletBasics
2.1HTTPBasics
2.2TheServletAPI
2.3PageGeneration
2.4WebApplications
2.5MovingOn
3.TheServletLifecycle
3.1TheServletAlternative
3.2ServletReloading
3.3InitandDestroy
3.4Single-ThreadModel
3.5BackgroundProcessing
3.6LoadonStartup
3.7Client-SideCaching
3.8Server-SideCaching
4.RetrievingInformation
4.1TheServlet
4.2TheServer
4.3TheClient
5.SendingHTMLInformation
5.1TheStructureofaResponse
5.2SendingaNormalResponse
5.3UsingPersistentConnections
5.4ResponseBuffering
5.5StatusCodes
5.6HTTPHeaders
5.7WhenThingsGoWrong
5.8SixWaystoSkinaServletCat
6.SendingMultimediaContent
6.1WAPandWML
6.2Images
6.3CompressedContent
6.4ServerPush
7.SessionTracking
7.1UserAuthentication
7.2HiddenFormFields
7.3URLRewriting
7.4PersistentCookies
7.5TheSessionTrackingAPI
8.Security
8.1HTTPAuthentication
8.2Form-BasedAuthentication
8.3CustomAuthentication
8.4DigitalCertificates
8.5SecureSocketsLayer(SSL)
9.DatabaseConnectivity
9.1RelationalDatabases
9.2TheJDBCAPI
9.3ReusingDatabaseObjects
9.4Transactions
9.5AGuestbookServlet
9.6AdvancedJDBCTechniques
9.7BeyondtheCore
10.Applet-ServletCommunication
10.1CommunicationOptions
10.2DaytimeServer
10.3ChatServer
11.ServletCollaboration
11.1SharingInformation
11.2SharingControl
12.EnterpriseServletsandJ2EE
12.1DistributingLoad
12.2IntegratingwithJ2EE
13.Internationalization
13.1WesternEuropeanLanguages
13.2ConformingtoLocalCustoms
13.3Non-WesternEuropeanLanguages
13.4MultipleLanguages
13.5DynamicLanguageNegotiation
13.6HTMLForms
14.TheTeaFramework
14.1TheTeaLanguage
14.2GettingStarted
14.3RequestInformation
14.4TeaAdministration
14.5TeaApplications
14.6AToolApplication
14.7FinalWords
15.WebMacro
15.1TheWebMacroFramework
15.2InstallingWebMacro
15.3WebMacroDirectives
15.4WebMacroTemplates
15.5AToolApplication
15.6Filters
16.ElementConstructionSet
16.1PageComponentsasObjects
16.2DisplayingaResultSet
17.XMLC
17.1ASimpleXMLCompile
17.2TheManipulationClass
17.3AToolApplication
18.JavaServerPages
18.1UsingJavaServerPages
18.2BehindtheScenes
18.3ExpressionsandDeclarations
18.4Directives
18.5JSPandJavaBeans
18.6IncludesandForwards
18.7AToolApplication
18.8CustomTagLibraries
19.OddsandEnds
19.1ParsingParameters
19.2SendingEmail
19.3UsingRegularExpressions
19.4ExecutingPrograms
19.5UsingNativeMethods
19.6ActingasanRMIClient
19.7Debugging
19.8PerformanceTuning
20.What'sNewintheServlet2.3API
20.1ChangesintheServletAPI2.3
20.2Conclusion
A.ServletAPIQuickReference
GenericServlet
RequestDispatcher
Servlet
ServletConfig
ServletContext
ServletException
ServletInputStream
ServletOutputStream
ServletRequest
ServletResponse
SingleThreadModel
UnavailableException
B.HTTPServletAPIQuickReference
Cookie
HttpServlet
HttpServletRequest
HttpServletResponse
HttpSession
HttpSessionBindingEvent
HttpSessionBindingListener
HttpSessionContext
HttpUtils
C.DeploymentDescriptorDTDReference
<auth-constraint>
<auth-method>
<context-param>
<description>
<display-name>
<distributable>
<ejb-link>
<ejb-ref>
<ejb-ref-name>
<ejb-ref-type>
<env-entry>
<env-entry-name>
<env-entry-type>
<env-entry-value>
<error-code>
<error-page>
<exception-type>
<extension>
<form-error-page>
<form-login-config>
<form-login-page>
<home>
<http-method>
<icon>
<init-param>
<jsp-file>
<large-icon>
<load-on-startup>
<location>
<login-config>
<mime-mapping>
<mime-type>
<realm-name>
<remote>
<res-auth>
<res-ref-name>
<res-type>
<resource-ref>
<role-link>
<role-name>
<security-constraint>
<security-role>
<security-role-ref>
<servlet>
<servlet-class>
<servlet-mapping>
<servlet-name>
<session-config>
<session-timeout>
<small-icon>
<taglib>
<taglib-location>
<taglib-uri>
<transport-guarantee>
<url-pattern>
<user-data-constraint>
<web-app>
<web-resource-collection>
<web-resource-name>
<welcome-file>
<welcome-file-list>
D.HTTPStatusCodes
E.CharacterEntities
F.Charsets
Colophon
Lastupdatedon3/20/2003
JavaServletProgramming,2ndEdition,©2001O'Reilly
©2001,O'Reilly&Associates,Inc.
JavaServletProgramming,2ndEdition>14.TheTeaFramework
CONTINUE>
Chapter14.TheTeaFramework
Nowwe'rereadytodiscussservlet-basedcontentcreationframeworks.We'll
postponeourdiscussionofJSPbecauseit'sthemostcomplicatedcontent
creationalternativeandstartinsteadwithalookatTea.TeaServlet(colloquially
knownasTea)isaproductfromtheWaltDisneyInternetGroup
(WDIG)formerlyGO.comdevelopedinternallyovertheyearstoaidinthe
creationofhigh-trafficwebsitessuchasESPN.com,NFL.com,Disney.com,
DisneyLand.com,Movies.com,ABC.com,andGO.com.Itwasrecently
releasedasopensourceinthehopesthatotherswouldfindTeausefuland
continuetoenhancethetool.Thestrategymakesbusinesssense;youshareyour
toolsinthehopethatotherswillhelpsharpenthem.HerewediscussTeaServlet
1.1.0,availableat.ItrequiresServletAPI2.1or2.2
andJDK1.2orlater.TeaServlet'slicenseisApache-style,oneoftheleastrestrictivelicensesandmostappealingtodevelopersbecauseitmeansyoucan
useTeaincreatingnewproductsandsiteswithoutreleasingthoseproductsas
opensource.ThisisthelicensemodelusedbyallApacheprojects,including
theApachewebserverandtheTomcatserver.
Teawasdesignedforprojectsrunbysmallteamsofdevelopersandtechnical
producers.Thedeveloper'sroleisthecreationof"applications"writteninJava
andinstalledintotheTeaServlet.Aproducercreatesandmaintainsthefinal
appearanceofdynamicwebpagesbywritingTeatemplatesthatcallupon
functionsprovidedbythedeveloper'sapplications.Forexample,onanESPN
website,onedevelopercreatesanapplicationforteamstatistics,onedeveloper
(workingindependently)createsanapplicationforplayerstatistics,anda
technicalproducerpoststhedatatothewebusingTeatemplates.Infact,several
producersworkingindependentlycanusethesamebackenddatatocreate
targetedsitesfordifferentaudiencessomethingWDIGhasdonefortheirsites
includingDisney.com,Movies.com,ESPN.com,andGO.com.Thetemplates
arewrittenintheTealanguagetoenforceanexcellentseparationofcontent
frompresentation.
Lastupdatedon3/20/2003
JavaServletProgramming,2ndEdition,©2001O'Reilly
CONTINUE>
JavaServletProgramming,2ndEdition>14.TheTeaFramework>14.2GettingStarted
CONTINUE>
14.2GettingStarted
TogetfamiliarwithTea,let'sstartsimplebylookingatafewstandalonetemplates.
Thesetemplatesaren'tgoingtotakeadvantageofanysupporting"application"Java
classesandthuswon'tbeabletodoverymuch.Hereisourfirsttemplate:
<%templateSimplePage()%>
Thisisasimplepagethatdoesnothingspecial.
Thistemplatesimplyoutputs"Thisisasimplepagethatdoesnothingspecial."to
everyonewhoaccessesit.Templatesarecomposedofcodeandtextregions.Code
regionsaredelimitedby<%and%>(nootherspecialdelimitersarerequired).Text
outsideacoderegionisoutputbythetemplateasis,whichiswhythistemplate
printsthesimplestatement.
Torunthetemplate,youmustfirstsaveittoafilenamedSimplePage.tea.Similar
toJavaclasses,thenameofthefilemustmatchthenameofthetemplateas
declaredbytheconstructor(casesensitive),andthefilemustendwitha.teasuffix.
Thelocationinwhichtosavethetemplateisconfigurable;werecommenda
directoryunderWEB-INFsuchasWEB-INF/templates.
ThenextsteptorunningthetemplateisinstallingTeaitself.Downloadthe
distributionfromandfollowtheirinstructionsforinstall:
placetheTeaServlet.jarfilefromthedistributionintothewebserver'sclasspath.
Thenedityourwebapplication'sweb.xmldeploymentdescriptortoregisterthe
TeaServletunderthenameteawithaninitparameterspecifyingalocationfor
configurationinformation.Alsosetupaprefixmappingrulethat/tea/*invokes
theteaservlet.Anexampleweb.xmladditionisshowninExample14-1.
Example14-1.InstallingTeaServlet
<!--...-->
<servlet>
<servlet-name>
tea
</servlet-name>
<servlet-class>
com.go.teaservlet.TeaServlet
</servlet-class>
<init-param>
properties.file
</param-name>
<!--Editthistobeanabsolutepathtoyourpropfile-->
/tomcat/webapps/teatime/WEB-INF/TeaServlet.properties
</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>
tea
</servlet-name>
<url-pattern>
/tea/*
</url-pattern>
</servlet-mapping>
<!--...-->
TheonlythingyoumustcustomizeisthepathtotheTeaServlet.propertiesfile.It
shouldbeanabsolutepath.TheTeaServlet.propertiesfileconfiguresthebehavior
oftheTeaServlet.Itcanbequitelong,whichiswhytheweb.xmlfilepointstoan
externalfileinsteadofincludingtheconfigurationinformationdirectly.We'll
postponeafulldiscussionofthepropertiesfilefornowandusethemostsimple
TeaServlet.propertiesfilepossible:
#TeaServlet.properties
#
#SpecifythelocationofTeatemplates
template.path=/tomcat/webapps/teatime/WEB-INF/templates
Makesuretosavethepropertiesfileatthelocationstatedintheweb.xmlfile.The
finalstepistorestartyourserversoitreadsthenewweb.xmlfile(withsome
serversthisisn'tnecessary).
OnceTeaServlethasbeenproperlyinstalled,theSimplePagecanbeaccessedata
locationsuchashttp://localhost:8080/teatime/tea/SimplePage.The/teatimeportion
ofthepathspecifiesthewebapplicationbeingaccessed.Thefollowing/teaportion
matchestheprefixmappinggivenintheteatimeweb.xml,causingtheTeaServlet
tobeinvokedtohandletherequest.Templatescanbeplacedinsubdirectoriesunder
template.path,inwhichcasethey'reinvokedusingapaththatincludesthe
subdirectorynamesuchas/teatime/tea/subdir/SimplePage.
Lastupdatedon3/20/2003
JavaServletProgramming,2ndEdition,©2001O'Reilly
CONTINUE>
JavaServletProgramming,2ndEdition
JavaServletProgramming,2ndEdition
JasonHunter
WilliamCrawford
Publisher:O'Reilly
SecondEditionApril2001
ISBN:0-596-00040-5,780pages
Copyright
TableofContents
Index
FullDescription
AbouttheAuthor
Reviews
Readerreviews
Errata
Thesecondeditionofthispopularbookhasbeen
completelyupdatedtoaddthenewfeaturesoftheJava
ServletAPIVersion2.2,andnewchaptersonservlet
securityandadvancedcommunication.Inadditionto
completelycoveringthe2.2specification,wehaveincluded
bonusmaterialonthenew2.3versionofthespecification.
Lastupdatedon3/20/2003
JavaServletProgramming,2ndEdition,©2001O'Reilly
©2001,O'Reilly&Associates,Inc.
JavaServletProgramming,2ndEdition
JavaServletProgramming,2ndEdition
[Symbol][A][B][C][D][E][F][G][H][I][J][K][L][M][N][O][P][Q][R][S][T][U]
[V][W][X][Y][Z]
!=(comparison)operator
#beginand#endkeywords,codeblocksforWebMacrodirectives
#elsedirective,WebMacro,2nd
#endkeyword,WebMacrocodeblocks
#foreachdirective,WebMacro
iteratingovertoolslist
#ifdirective,WebMacro,2nd
#includedirective,WebMacro
#paramdirective,WebMacro
defaulttoolstate,defining
#parsedirective,WebMacro
#setdirective,WebMacro,2nd,3rd
#usedirective,WebMacro
&&,||,and!(Boolean)operators
,enclosingJSPcomments
,enclosingJSPdeclarations
,enclosingJSPdirectives
,enclosingJSPexpressions
,enclosingscriptlets
-classoption,XMLC
-delete-classoption,XMLC
-keepoption,XMLC
-methodsoption,XMLC
.ear(EnterpriseArchive)files
/servlet/prefix,useof
==(comparison)operator
{}(curlybraces),demarcatingcodeblockswith
A
absolutepaths
TemplatePath,including#parsetargetfileswithin
URLs,requestdispatching
Acceptheader,multiplevaluesfor
accept(),2nd
Accept-Charsetheader
HelloBabel(example),usein
Accept-Encodingheader,2nd
Accept-Languageheader,2nd
HelloBabel(example),usein
access
controllingwithsecuritymanagers
restrictingforclients
restrictingusers
role-basedauthorization,managingwith
toservlets,restricting
AcmeGIFencoderusingLZcompression
action,2nd,3rd
attributesof
body,interpreting
toolview-tag.jsp(example),usein
toolview.jsppage,usein
ACTIONparameter(forms),extrapathinformationin
actions,JSP,2nd,3rd,4th,5th,6th
custom
requirementtobewell-formedXML
activation(session)
ActiveServerPages(ASP)
add-onservletcontainers,2nd
addCookie()(HttpServletResponse)
addNotify()
addresses(senderandreceiver),emailmessages
administeredobjects,supportinJ2EE1.3
administration,Tea
compileerrormessages
configurationfile(example)
errorsandexceptions,handling
verifyingproperapplicationloading
age(maximum),specifyingforcookies
aliasesforroles
creatingindeploymentdescriptor
ServletAPI2.3,changesin
Allaire
JRunServer
JRunserver
servletcontainer,add-on
ServletDebugger
alpha(transparency)value,pixels
animations,updatingwithserverpush
anonymoussessiontracking
hiddenformfields,using
URLrewriting,useof
anonymoususername
ANSISQL-2EntryLevel
Apache
ECSpackages
JServandTomcat,tyingsessionsto
JServmodule(add-onservletcontainer)
licensingmodel
WebMacro,useof
servletAPIclasses,makingavailable
TomcatServer
Version3.2,website
Villagelibrary
Xerces
ApacheJakartaProject
ECS(website)
regularexpessionengine
TaglibsandStrutstaglibraries
WebMacro(Velocityclone)
ApacheSoftwareFoundation(ASF),javax.servletandjavax.servlet.httppackages
ApacheStruts(taglibrary),2nd
installing
tag
tag,replacingforloops
APIs
JavaAPIforXMLParsing(JAXP)
Javacore,harnessingforservlets
JDOM,manipulatingXMLwith
serverextension
server-side,inJ2EE
Servlet,2nd
append()
applets
communicatingwithservers
trustedanduntrustedapplets
communicatingwithservlets
sockets,non-HTTP
exceptions,uploadingtoservlet
portability,servletsvs.
sessiontrackingwith
Applicationinterface,implementedbyTeaapplications
applicationlayer,WAP
applicationlogic,embeddingintoJSPpages
applicationscope,JavaBeans
applicationservers
CORBA,InpriseApplicationServer4
RMI,socketandHTTPclientsupport
servlets,supportof
standalonecontainersupport,providing
application/octet-stream(contenttype)
application/x-www-form-urlencodedcontenttype,2nd
ApplicationRequestinterface
ApplicationResponseinterface
applications
JSP
toolview,usingcutomtaglibraries
server-side,Javasuitabilityfor
Tea
writing
WAP,executingwithdevicesimulators
WebMacro,toolview
XMLC
toolview
architectures
JSP
options(website)
servletdistribution
TeaServlet,WebMacrovs.
archiving
EnterpriseArchive(.ear)files
JavaArchivefiles
webapplication(WAR)files
JARdependencies,expressingwithin
areacodelookupapplication(WML)
AreaCodeservlet(example)
arithmetic(integer),WebMacrocontexttoolfor
ArrayIndexOutOfBoundsExceptionclass
ArrayListclass
arrays
ofbytes
SQL3ARRAYdatatype,supportinJDBC2.0
ofTableCustomizerobjects
WebMacro,settingin
ASCIIcharacters
inlargetextstrings
inresourcebundles
ASP(ActiveServerPages)
asymmetrickeys,public/privatekeycryptography
ATGDynamoApplicationServer
attributeAdded()
attributeRemoved()
attributeReplaced()
attributes
action
cookies,settingfor
errors,informationabout
forwardrequests,usein
includerequests
retrievingpathelementsandparameters
JSP,listingof
names,conventionsfor,2nd
request
HTTPSconnections,ServletAPI2.3
request-timeattributeexpression
server
javax.servlet.context.tempdir
serverandservlet,listingcurrent
servletcontext,lifecyclelisteners
setting,getting,andremoving
XML,enclosingvalueswithquotes
authentication
custom
digest
form-based
loginanderrorpages,specifying
HTTP
retrievinginformationabout
resourcefactories
servletutilizing,addingitemtoshoppingcart
SSL
retrievinginformationabout
type,changesinServletAPI2.3
wiseuseof
withlogout
URLrewriting,using
authorization
checkingwithservlets
form-based
role-based
Authorizationheader,2nd
autocommitmode
Lastupdatedon3/20/2003
JavaServletProgramming,2ndEdition,©2001O'Reilly
©2001,O'Reilly&Associates,Inc.
JavaServletProgramming,2ndEdition
JavaServletProgramming,2ndEdition
[Symbol][A][B][C][D][E][F][G][H][I][J][K][L][M][N][O][P][Q][R][S][T][U]
[V][W][X][Y][Z]
B
See:workhorse,backgroundservletsbackgroundservlets
backgroundthreads,stopping
bankingapplications
form-basedcustomauthorization
transactions
Base64Decoderclass,downloading
Base64Encoderclass,websitefordownloading
basicauthentication
BASICvalue,tag
changingtoform-based
form-basedvs.
limitationsof
restrictingservletaccessinweb.xmlfile
sendinginformationwithHttpMessage
SSL-equippedservers,useof
bcc()
BEASystemWebLogicApplicationServer
beanNameattribute
Beansclass
bidirectionalcapabilities,non-HTTPsocketconnections
binarydata
large,databasehandlingof
readingfrominputstream
request/responsestructure,WAP
writingtooutputstreams
bind(),stepsinprocess
binding
objectstoRMIregistry
objectstosessions
returningnamesof
objectsundergivennames
BLOB(binarylargeobjects),JDBC2.0supportof
blockingfornewmessages
Bodyclass
body,response
clearing
bookmarkingURLs
Booleanoperators(&&,||,and!),usewith#ifdirectives
bridgedriver(JDBC-ODBC)
broadcastMessage(),2nd
doPost(),wrappingaround
BrowserHawk4Jproduct(Cyscape)
browsers
accesscontrol,partiallytrustedapplets
appletrequests,handling
charsets,displayingresponseswith
compression,supportfor
cookies
useof
digestauthentication,supportof
fileuploadsupport
hiddenformfields,supportfor
HTMLformswithlocalizedcontent
internationalizationcapabilities
InternetExplorer
languagepreferences,specifying
multiplewindows,sessiontrackingand
NetscapeNavigator
non-HTTPservers,inabilitytocommunicatewith
reloadingpages,If-Modified-Sinceheader
requestURLsand
RMIcommunication,limitedsupportfor
serverkeys,checkingvalidityof
servletdebugging,usein
URLrewriting,supportfor
WML,supportfor
BufferedImageclass
BufferedReaderclass
buffering
inputandoutput,servletperformancetuning
responses
settingbuffersize
serverlogs,stoppingforservletdebugging
BugIdCustomizerclass(example),2nd
buildDocument()
businesslogic
classeshandlingRMI,HTTPandsocketclientrequests
EnterpriseJavaBeans,implementingwith
includinginmiddleware
WebMacroframework,programming