2. Using the Tutorial Examples 3. Getting Started with Web Applications 5. JavaServer Pages Technology Using Objects within JSP Pages Using Application-Specific Objects Immediate and Deferred Evaluation Syntax Deactivating Expression Evaluation Process of Expression Evaluation JavaBeans Component Design Conventions Creating and Using a JavaBeans Component Setting JavaBeans Component Properties Retrieving JavaBeans Component Properties Including the Tag Library Implementation Transferring Control to Another Web Component Setting Properties for Groups of JSP Pages Deactivating EL Expression Evaluation Further Information about JavaServer Pages Technology 7. JavaServer Pages Standard Tag Library 10. JavaServer Faces Technology 11. Using JavaServer Faces Technology in JSP Pages 12. Developing with JavaServer Faces Technology 13. Creating Custom UI Components 14. Configuring JavaServer Faces Applications 15. Internationalizing and Localizing Web Applications 16. Building Web Services with JAX-WS 17. Binding between XML Schema and Java Classes 19. SOAP with Attachments API for Java 21. Getting Started with Enterprise Beans 23. A Message-Driven Bean Example 24. Introduction to the Java Persistence API 25. Persistence in the Web Tier 26. Persistence in the EJB Tier 27. The Java Persistence Query Language 28. Introduction to Security in the Java EE Platform 29. Securing Java EE Applications 31. The Java Message Service API 32. Java EE Examples Using the JMS API 36. The Coffee Break Application | The Life Cycle of a JSP PageA JSP page services requests as a servlet. Thus, the life cycle andmany of the capabilities of JSP pages (in particular the dynamic aspects) aredetermined by Java Servlet technology. You will notice that many sections in thischapter refer to classes and methods described inChapter 4, Java Servlet Technology. When a request is mapped to a JSP page, the web container firstchecks whether the JSP page’s servlet is older than the JSP page. Ifthe servlet is older, the web container translates the JSP page into aservlet class and compiles the class. During development, one of the advantages ofJSP pages over servlets is that the build process is performed automatically. Translation and CompilationDuring the translation phase each type of data in a JSP page istreated differently. Static data is transformed into code that will emit the datainto the response stream. JSP elements are treated as follows:
In the Application Server, the source for the servlet created from aJSP page namedpageName is in this file: domain-dir/generated/jsp/j2ee-modules/WAR-NAME/pageName_jsp.java For example, the source for the index page (namedindex.jsp) for thedatelocalization example discussed at the beginning of the chapter would be named: domain-dir/generated/jsp/j2ee-modules/date/index_jsp.java Both the translation and the compilation phases can yield errors that are observedonly when the page is requested for the first time. If an erroris encountered during either phase, the server will returnJasperException and a messagethat includes the name of the JSP page and the line where theerror occurred. After the page has been translated and compiled, the JSP page’s servlet (forthe most part) follows the servlet life cycle described inServlet Life Cycle:
If the container needs to remove the JSP page’s servlet, it calls thejspDestroy method. ExecutionYou can control various JSP page execution parameters by usingpage directives. Thedirectives that pertain to buffering output and handling errors are discussed here. Otherdirectives are covered in the context of specific page-authoring tasks throughout the chapter. BufferingWhen a JSP page is executed, output written to the response object isautomatically buffered. You can set the size of the buffer using thefollowing page directive: <%@ page buffer="none|xxxkb" %> A larger buffer allows more content to be written before anything is actuallysent back to the client, thus providing the JSP page with moretime to set appropriate status codes and headers or to forward to anotherweb resource. A smaller buffer decreases server memory load and allows the clientto start receiving data more quickly. Handling JSP Page ErrorsAny number of exceptions can arise when a JSP page is executed. Tospecify that the web container should forward control to an error page ifan exception occurs, include the followingpage directive at the beginning ofyour JSP page: <%@ page errorPage="file-name" %> The Duke’s Bookstore application pagetut-install/javaeetutorial5/examples/web/bookstore2/web/template/preludeErrorPage.jspf contains the directive: <%@ page errorPage="errorpage.jsp"%> The following page directive at the beginning oftut-install/javaeetutorial5/examples/web/bookstore2/web/error/errorpage.jsp indicates that it isserving as an error page: <%@ page isErrorPage="true" %> This directive makes an object of typejavax.servlet.jsp.ErrorData available to the errorpage so that you can retrieve, interpret, and possibly display information about thecause of the exception in the error page. You access the error dataobject in an EL (seeUnified Expression Language) expression by way of the pagecontext. Thus,${pageContext.errorData.statusCode} retrieves the status code, and${pageContext.errorData.throwable} retrieves the exception.You can retrieve the cause of the exception using this expression: ${pageContext.errorData.throwable.cause}For example, the error page for Duke’s Bookstore is as follows: <%@ page isErrorPage="true" %><%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %><%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %><html><head><title><fmt:message key="ServerError"/></title></head><body bgcolor="white"><h3><fmt:message key="ServerError"/></h3><p>: ${pageContext.errorData.throwable.cause}</body></html>Note -You can also define error pages for the WAR that contains aJSP page. If error pages are defined for both the WAR and aJSP page, the JSP page’s error page takes precedence. Copyright © 2010, Oracle and/or its affiliates. All rights reserved.Legal Notices |