Contents
- Intended Audience
- Documentation Accessibility
- Structure
- Related Documents
- Conventions
- Introduction to JavaServer Pages
- What a JSP Page Looks Like
- Convenience of JSP Coding Versus Servlet Coding
- Servlet Code
- JSP Code
- Separation of Business Logic from Page Presentation: Calling JavaBeans
- JSP Pages and Alternative Markup Languages
- Overview of JSP Syntax Elements
- Directives
- page directive
- include directive
- taglib directive
- Scripting Elements
- Declarations
- Expressions
- Scriptlets
- Comments
- JSP Objects and Scopes
- Explicit Objects
- Implicit Objects
- Using an Implicit Object
- Object Scopes
- Standard Actions: JSP Tags
- jsp:useBean tag
- jsp:setProperty tag
- jsp:getProperty tag
- jsp:param tag
- jsp:include tag
- jsp:forward tag
- jsp:plugin tag
- Bean Property Conversions from String Values
- Typical Property Conversions
- Conversions for Property Types with Property Editors
- Custom Tag Libraries
- JSP Execution
- JSP Containers in a Nutshell
- JSP Execution Models
- On-Demand Translation Model
- Pretranslation Model
- JSP Pages and On-Demand Translation
- Requesting a JSP Page
- Directly Requesting a JSP Page
- Indirectly Requesting a JSP Page
- Overview of the Oracle Application Server and JSP Support
- Overview of the Oracle Application Server
- Oracle HTTP Server and mod_oc4j
- Overview of OC4J
- OC4J General Features
- OC4J Services
- OC4J Containers
- OC4J Standalone
- Overview of the JSP Implementation in OC4J
- History and Integration of JSP Containers
- JSP Front-End Servlet and Configuration
- OC4J JSP Features for JSP 1.2
- Configurable JSP Extensions in OC4J
- Portability Across Servlet Environments
- Oracle JDeveloper JSP Support
- Overview of Oracle Value-Added Features
- Summary of Tag Libraries and Utilities Provided with OC4J
- Overview of Oracle-Specific Features
- Global Includes
- Support for Dynamic Monitoring Service
- Enhanced Servlet 2.0 Support
- Overview of Tags and API for Caching Support
- Support for the JavaServer Pages Standard Tag Library
- Some Initial Considerations
- Application Root Functionality
- Classpath Functionality
- Runtime Retranslation or Reloading
- JSP Compilation Considerations
- JSP Security Considerations
- JSP Performance Considerations
- Programmatic Considerations for Optimization
- Configuration Optimizations
- The ojspc Utility for Pretranslation
- Additional OC4J and Oracle Application Server Performance Features
- Default Package Imports
- JSP File Naming Conventions
- Removal of tools.jar from OC4J Standalone
- JDK 1.4 Considerations: Cannot Invoke Classes Not in Packages
- Key Support Files Provided with OC4J
- JSP Configuration in OC4J
- JSP Container Setup
- JSP Configuration Parameters
- JSP Configuration Parameter Summary Table
- JSP Configuration Parameter Descriptions
- Setting JSP Configuration Parameters in OC4J
- OC4J Configuration Parameters for JSP
- JSP-Related OC4J Configuration Parameter Descriptions
- Setting JSP-Related OC4J Configuration Parameters
- Key OC4J Configuration Files
- JSP Configuration in Oracle Enterprise Manager 10g
- Application Server Control Console JSP Properties Page
- Configuration Parameters Supported by the JSP Properties Page
- Configuration Parameters Not Supported by the JSP Properties Page
- JSP-Servlet Interaction
- Invoking a Servlet from a JSP Page
- Passing Data to a Servlet Invoked from a JSP Page
- Invoking a JSP Page from a Servlet
- Passing Data Between a JSP Page and a Servlet
- JSP-Servlet Interaction Samples
- Code for Jsp2Servlet.jsp
- Code for MyServlet.java
- Code for welcome.jsp
- JSP Data-Access Support and Features
- Introduction to JSP Support for Data Access
- JSP Data-Access Sample Using JDBC
- Use of JDBC Performance Enhancement Features
- Database Connection Caching
- JDBC Statement Caching
- Update Batching
- Row Prefetching
- Rowset Caching
- EJB Calls from JSP Pages
- Overview of Configuration and Deployment for EJBs
- Code Steps and Approaches for EJB Calls
- Use of the OC4J EJB Tag Library
- OracleXMLQuery Class
- JSP Resource Management
- Standard Session Resource Management: HttpSessionBindingListener
- The valueBound() and valueUnbound() Methods
- JDBCQueryBean JavaBean Code
- UseJDBCQueryBean JSP Page
- Advantages of HttpSessionBindingListener
- Overview of Oracle Value-Added Features for Resource Management
- Runtime Error Processing
- Servlet and JSP Runtime Error Mechanisms
- General Servlet Runtime Error Mechanism
- JSP Error Pages
- JSP Error Page Example
- Code for nullpointer.jsp
- Code for myerror.jsp
- JSP XML Documents and JSP XML View: Overview and Comparison
- Details of JSP XML Documents
- Summary Table of JSP XML Syntax
- JSP XML root Element and JSP XML Namespaces
- JSP XML Directive Elements
- Example: page Directive
- Example: include Directive
- JSP XML Declaration, Expression, and Scriptlet Elements
- Example: JSP Declaration
- Example: JSP Expression
- Example: JSP Scriptlet
- JSP XML Standard Action and Custom Action Elements
- JSP XML Text Elements and Other Elements
- Example: Other JSP XML Elements
- Sample Comparison: Traditional JSP Page Versus JSP XML Document
- Sample Traditional JSP Page
- Sample JSP XML Document
- Details of the JSP XML View
- Transformation from a JSP Page to the XML View
- The jsp:id Attribute for Error Reporting During Validation
- Example: Transformation from Traditional JSP Page to XML View
- Traditional JSP Page
- XML View of JSP Page
- General JSP Programming Strategies
- JavaBeans Versus Scriptlets
- Static Includes Versus Dynamic Includes
- Logistics of Static Includes
- Logistics of Dynamic Includes
- Advantages, Disadvantages, and Typical Uses of Dynamic and Static Includes
- When to Consider Creating and Using JSP Tag Libraries
- Replacing Java Syntax
- Providing Convenient JSP Programming Access to API Features
- Manipulating or Redirecting JSP Output
- Additional JSP Programming Tips
- Hiding JSP Pages from Direct Invocation
- Use of a Central Checker Page
- Workarounds for Large Static Content or Significant Tag Library Usage
- Method Variable Declarations Versus Member Variable Declarations
- Page Directive Characteristics
- Page Directives Are Static
- Duplicate Settings of Page Directive Attributes Are Disallowed
- Page Directive import Settings Are Cumulative
- JSP Preservation of White Space and Use with Binary Data
- White Space Examples
- Reasons to Avoid Binary Data in JSP Pages
- Functionality of the JSP Translator
- Features of Generated Code
- Features of Page Implementation Class Code
- Member Variables for Static Text
- General Conventions for Output Names
- Generated Package and Class Names
- Package Naming
- Class Naming
- Generated Files and Locations
- Files Generated by the JSP Translator
- JSP Translator Output File Locations
- Issues in the Current Release
- Oracle JSP Global Includes
- The ojsp-global-include.xml File
- Global Include Examples
- The ojspc Pretranslation Utility
- Overview of Basic ojspc Functionality
- Overview of ojspc Batch Pretranslation
- Option Summary Table for ojspc
- Command-Line Syntax for ojspc
- Option Descriptions for ojspc
- -addclasspath
- -appRoot
- -batchMask
- -deleteSource
- -dir
- -extend
- -extraImports
- -extres
- -forgiveDupDirAttr
- -help
- -implement
- -noCompile
- -noTldXmlValidate
- -oldIncludeFromTop
- -output
- -packageName
- -reduceTagCode
- -reqTimeIntrospection
- -srcdir
- -staticTextInChars
- -tagReuse
- -verbose
- -version
- -xmlValidate
- Summary of ojspc Output Files, Locations, and Related Options
- JSP Deployment Considerations
- Overview of EAR/WAR Deployment
- OC4J Deployment Features
- Standard WAR Deployment
- Application Deployment with Oracle JDeveloper
- JSP Pretranslation
- Techniques for Page Pretranslation with ojspc
- Batch Pretranslation with ojspc
- Standard JSP Pretranslation without Execution
- Deployment of Binary Files Only
- Archiving and Deploying the Binary Files
- Configuring the OC4J JSP Container for Execution with Binary Files Only
- Overview of the Tag Library Framework
- Overview of a Custom Tag Library Implementation
- Overview of Tag Library Changes Between the JSP 1.1 and 1.2 Specifications
- Summary of TLD File Changes Between the JSP 1.1 and 1.2 Specifications
- Summary of Tag Handler Changes Between the JSP 1.1 and 1.2 Specifications
- Tag Library Descriptor Files
- Overview of TLD File Validation and Features
- Use of the tag Element
- Subelements of the tag Element
- Sample tag Element and Use of Its body-content Subelement
- Other Key Elements and Their Subelements: validator and listener
- Tag Library and TLD Setup and Access
- Overview: Specifying a Tag Library with the taglib Directive
- Specifying a Tag Library by Physical Location
- Packaging and Accessing Multiple Tag Libraries in a JAR File
- Example: URI Settings for Multiple Tag Libraries in a JAR File
- Use of web.xml for Tag Libraries
- Oracle Extensions for Tag Library Sharing and Persistent TLD Caching
- TLD Caching and Well-Known Tag Library Locations
- TLD Cache Features and Files
- Example: Multiple Tag Libraries and TLD Files in a JAR File
- Key TLD File Entries for Multiple-Library Example
- Key web.xml File Entries for Multiple-Library Example
- JSP Page taglib Directives for Multiple-Library Example
- Tag Handlers
- Overview of Tag Handlers
- Attribute Handling, Conversions from String Values
- Custom Tag Processing, with or without Tag Bodies
- Summary of Integer Constants for Body Processing
- Simple Tag Handlers without Iteration
- Simple Tag Handlers with Iteration
- Tag Handlers That Access Body Content
- BodyTag Features
- BodyContent Objects
- TryCatchFinally Interface
- Access to Outer Tag Handler Instances
- OC4J JSP Tag Handler Features
- Disabling or Enabling Runtime or Compile-Time Tag Handler Reuse
- Key Points Regarding Tag Handler Reuse
- Enabling or Disabling the Runtime Model for Tag Handler Reuse
- Enabling or Disabling the Compile-Time Model for Tag Handler Reuse
- Tag Handler Code Generation
- Scripting Variables, Declarations, and Tag-Extra-Info Classes
- Using Scripting Variables
- Scripting Variable Scopes
- Variable Declaration Through TLD variable Elements
- Variable Declaration Through Tag-Extra-Info Classes
- Validation and Tag-Library-Validator Classes
- TLD validator Element
- Example 1
- Example 2
- Key TLV-Related Classes and the validation() Method
- TLV Processing
- Validation Mechanisms
- Tag Library Event Listeners
- TLD listener Element
- Activation of Tag Library Event Listeners
- Access of TLD Files for Event Listener Information
- End-to-End Custom Tag Examples
- Example: Using the IterationTag Interface
- Sample JSP Page: exampleiterator.jsp
- Sample Tag Handler Class: MyIteratorTag.java
- Sample Tag Library Descriptor File: exampleiterator.tld
- Example: Using the IterationTag Interface and a Tag-Extra-Info Class
- Sample JSP Page: exampletag.jsp
- Sample Tag Handler Class: ExampleLoopTag.java
- Sample Tag-Extra-Info Class: ExampleLoopTagTEI.java
- Sample Tag Library Descriptor File: exampletag.tld
- Compile-Time Tags
- General Compile-Time Versus Runtime Considerations
- JSP Compile-Time Versus Runtime JML Library
- Content Type Settings
- Content Type Settings in the page Directive
- Dynamic Content Type Settings
- Oracle Extension for the Character Set of the JSP Writer Object
- JSP Support for Multibyte Parameter Encoding
- Standard setCharacterEncoding() Method
- Overview of Oracle Extensions for Older Servlet Environments
- Background on Servlets
- Review of Servlet Technology
- The Servlet Interface
- Servlet Containers
- Servlet Sessions
- HttpSession Interface
- Session Tracking
- Servlet Contexts
- Application Lifecycle Management Through Event Listeners
- Servlet Invocation
- Web Application Hierarchy
- Standard JSP Interfaces and Methods
- Apache HTTP Server
- The Apache Software License