| 1. Overview and Setup 			  Understanding the role of servletsEvaluating servlets vs. other technologiesUnderstanding the role of JSPConfiguring the serverConfiguring your development environmentTesting the server setup | 2. Servlet Basics 			  The basic structure of servletsA simple servlet that generates plain textA servlet that generates HTMLServlets and packagesSome utilities that help build HTMLThe servlet life cycleServlet debugging strategies | 
			| 3. Handling the Client Request: Form Data 			  The role of form dataCreating and submitting HTML formsReading individual request parametersReading the entire set of request parametersHandling missing and malformed dataDealing with incomplete form submissionsFiltering special characters out of the request parameters | 4. Handling the Client Request: HTTP Request Headers 			  Reading HTTP request headersBuilding a table of all the request headersUnderstanding the various request headersReducing download times by compressing pagesDifferentiating among types of browsers | 
			| 5. Generating the Server Response: HTTP Status Codes 			  Format of the HTTP responseHow to set status codesWhat the status codes are good forShortcut methods for redirection and error pagesA servlet that redirects users to browser-specific pagesA front end to various search engines | 6. Generating the Server Response: HTTP Response Headers 			  Format of the HTTP responseSetting response headersUnderstanding what response headers are good forBuilding Excel spread sheetsGenerating JPEG images dynamicallySending incremental updates to the browser | 
			| 7. Handling Cookies 			  Understanding the benefits and drawbacks of cookiesSending outgoing cookiesReceiving incoming cookiesTracking repeat visitorsSpecifying cookie attributesDifferentiating between session cookies and persistent cookiesSimplifying cookie usage with utility classesModifying cookie valuesRemembering user preferences | 8. Session Tracking 			  Implementing session tracking from scratchUsing basic session trackingUnderstanding the session-tracking APIDifferentiating between server and browser sessionsEncoding URLsStoring immutable objects vs. storing mutable objectsTracking user access countsAccumulating user purchasesImplementing a shopping cartBuilding an online store | 
			| 9. JSP Intro and Overview 			  Understanding the need for JSPEvaluating the benefits of JSPComparing JSP to other technologiesAvoiding JSP misconceptionsUnderstanding the JSP lifecycleInstalling JSP pagesLooking at JSP in the real world | 10. Invoking Java Code with JSP Scripting Elements 			  Static vs. dynamic textDynamic code and good JSP designJSP expressionsServlets vs. JSP pages for similar tasksJSP scriptletsJSP declarationsPredefined variablesComparison of expressions, scriptlets, and declarations | 
			| 11. Controlling the Structure of Generated Servlets: The JSP page Directive 			  Understanding the purpose of the page directiveDesignating which classes are importedSpecifying the MIME type of the pageGenerating Excel spreadsheetsParticipating in sessionsSetting the size and behavior of the output bufferDesignating pages to handle JSP errorsControlling threading behavior | 12. Including Files and Applets in JSP Pages 			  Using jsp:include to include pages at request timeUsing <%@ include ... %> (the include directive) to include files at page translation timeUnderstanding why jsp:include is usually better than the include directiveUsing jsp:plugin to include applets for the Java Plug-in | 
			| 13. Using JavaBeans Components in JSP Documents 			  Understanding the benefits of beansCreating beansInstalling bean classes on your serverAccessing bean propertiesExplicitly setting bean propertiesAutomatically setting bean properties from request parametersSharing beans among multiple servlets and JSP pages | 14. Integrating Servlets and JSP: The Model View Controller (MVC) Architecture 			  Understanding the benefits of MVCUsing RequestDispatcher to implement MVCForwarding requests from servlets to JSP pagesHandling relative URLsChoosing among different display optionsComparing data-sharing strategies | 
			| 15. Simplifying Access to Java Code: The JSP 2.0 Expression Language 
			Motivating use of the expression languageUnderstanding the basic syntaxUnderstanding the relationship of the expression language to the MVC architectureReferencing scoped variablesAccessing bean properties, array elements, List elements, and Map entriesUsing expression language operatorsEvaluating expressions conditionally | 16. Using and Deploying Web Applications 
			Purpose of Web applicationsStructure of Web applicationsSetting up Web applications with TomcatGiving custom addresses to servletsSharing data among Web applications | 
			
			| 17. Controlling Web Application Behavior with web.xml 
				Location and purpose of web.xmlCustom URLsInitialization parametersPreloading pagesWelcome pagesError pages | 18. Servlet and JSP Filters 			  Filter basicsAccessing the servlet contextUsing initialization parametersBlocking responsesModifying responses | 
			| 19. Web Application Lifecyle Listeners 			  Reason for listenersMonitoring creation and destruction of the servlet contextDetecting changes in servlet context attributesRecognizing session creation and destructionWatching for changes in session attributesCombining activities | 10. Creating Custom JSP Tag Libraries: The Basics 			  Java-based tags				  					Components of a tag libraryBasic tagsTags that use body contentTags that optionally use body contentJSP-based tags (tag files)				  					Components of a tag libraryBasic tagsTags that use attributesTags that use body content | 
			| 21. Custom JSP Tag Libraries: Advanced Topics 			  Tags with dynamic attribute valuesTags with complex objects for attributesManipulating the tag bodyLooping tagsNested tagsUsing SAX and TagLibraryValidator to validate tag library syntax | 22. "Classic" (JSP 1.2-Style) Tags 			  Components of a tag libraryBasic tagsTags that use body contentTags that optionally use body content | 
			| 23. The JSP Standard Tag Library (JSTL) 			  Obtaining JSTL documentation and codeThe JSTL Expression LanguageLooping TagsConditional Evaluation TagsDatabase Access TagsOther Tags | 24. SCWCD Design Patterns 			  Intercepting FilterModel-View-ControllerFront ControllerService LocatorBusiness DelegateTransfer Object |