Resin 1.1
FAQ
Reference
JavaDoc
Demo
Java Tutorial
Getting Started
Configuration
Topics
JSP
XTP/XSL
JavaScript
JS Library
Directives
Actions
Variables
Applications
JSP Applications
Introduction
A JSP application collects pages, scripts and Java Beans into a self-contained web application. Applications are just generalized virtual hosts, only based on the URL instead of the host name. For example, a bulletin board application groups pages for article reading, group listing, user registration, and new article posting into a single application. Applications can keep track of user sessions, giving the users the illusion of a single application out of disjoint pages. Resin organizes applications with an application directory, WEB-INF Sessions share state for a user's visit to the site. Many, if not most sites, will only use the default application.
Applications
application contents
File/Directory | Contents
--- | ---
. | JSP, HTML and GIF files
WEB-INF/classes | Java class files
WEB-INF/lib | Java jars
WEB-INF/scripts | common scripts
WEB-INF/xsl | XSL stylesheets for XTP pages
example index.html folder.gif article.gif post-article.xtp jsp-interest index.jsp article1.jsp article2.jsp WEB-INF lib bulletin-board.jar classes Navigation.class HelloWorld.class scripts common.js form.js xsl default.xsl article.xsl
Scripts
JSP applications can group common functions and classes into script files, organizing and simplifying the application. The individual pages can then import the common scripts to use them. JSP pages can focus on HTML presentation and the script libraries can concentrate on the content. As described in the import documentation, Resin searches for imported scripts along a SCRIPTPATH. For JSP pages, the SCRIPTPATH looks in the application script directory first, then in the global libraries.
JSP SCRIPTPATH
$APP-DIR/WEB-INF/scripts:$RESIN_HOME/scripts
JSP Beans
Java Beans get first class treatment in JSP 1.0. Beans can be created for a page, across a session, or for the entire application. The classes and lib directories can contain application beans used by jsp:useBean. These are simply Java classes implementing the bitmechanic work of an application. For example, a shopping cart application may have a set of Java classes that perform the security necessary for credit card processing. The application can put those classes in the beans directory and access them from the JSP page. Beans can be created with different lifetimes. Application beans last the lifetime of an application. Session beans last for a user's session. Request beans last for a single request. Page beans only last for a single page. Requests and pages often last the same lifetime, but may differ if one page forwards or includes another page. ### Accessing Beans Each bean is defined with a jsp:useBean directive. JSP assigns the created bean object to the JavaScript variable named by jsp:useBean. In addition, the created beans are stored in JSP variables: page beans are stored in `request`, session beans are stored in `session`, and application beans are stored in `application`. Storing the beans in the JSP variables lets other beans and functions retrieve the beans.
Beans in variables: test.jsp
<jsp:useBean id='test' class='java.util.Hashtable'> <% test.put("a", 1); %> <%= test.get("a"); %>
<jsp:useBean id='test' class='java.util.Hashtable'> <% var t = request.attributes.test t.put("a", 1); %> <%= test.get("a"); %>
1
Sessions
Session variables let applications keep track of the user as she moves through the site. Any e-commerce site needs this capability to keep track of the user's purchases. JSP sessions start when the page accesses the session variable. If a page never uses sessions, the jsp:session:onStart code will not execute and the web server will not send the client any cookies. Sessions end when the session times out, when the session is invalidated, or when the application ends. Resin locks the session variable before executing the page. So JSP applications don't need to worry about synchronizing the session variable.
Variables |  | XTP/XSL
Copyright © 1998-2000 Caucho Technology. All rights reserved. Last modified: Tue, 21 Mar 2000 10:25:48 -0800 (PST)