Packaging Web Components
You add web components to a J2EE application in a package called a web application archive (WAR), which is a JAR similar to the package used for Java class libraries. A WAR usually contains other resources besides web components, including:
- Server-side utility classes (database beans, shopping carts, and so on).
- Static web resources (HTML, image, and sound files, and so on)
- Client-side classes (applets and utility classes)
A WAR has a specific hierarchical directory structure. The top-level directory of a WAR is the document root of the application. The document root is where JSP pages, client-side classes and archives, and static web resources are stored.
The document root contains a subdirectory called WEB-INF
, which contains the following files and directories:
web.xml -
the web application deployment descriptor- Tag library descriptor files (see Tag Library Descriptors).
classes
- a directory that contains server-side classes: servlet, utility classes, and JavaBeans components.lib
- a directory that contains JAR archives of libraries (tag libraries and any utility libraries called by server-side classes).
You can also create application-specific subdirectories (that is , package directories) in either the document root or the WEB-INF/classes
directory.
Note: When you add classes and archives to a WAR,
deploytool
automatically packages them in the WEB-INF
subdirectory. This is correct for web components and server-side utility classes, but incorrect for client-side classes such as applets and any archives accessed by applets. To put client-side classes and archives in the correct location you must "drag" them to the document root after you have added them to the archive.Creating a WAR
When you add the first web component to a J2EE application, deploytool
automatically creates a new WAR to contain the component. A later section describes how to add a web component.
You can also manually create a WAR in three ways:
- With the
packager
tool distributed with the J2EE SDK. This tool is described in Packager. - With the
war
task of theant
portable build tool.Ant
is used to build the J2EE Tutorial examples. The example application described in The Example JSP Pages uses ant to create the WAR. - With the JAR tool distributed with the J2SE. If you arrange your application development directory in the structure required by the WAR format, it is straightforward to create a web application archive file in the required format. You simply execute the following command in the top-level directory of the application:
jar cvf
archiveName
.war .
[注:重要的就是在这里,jar命令也可以这样用!并不需要配置文件]
Note that in order to use any of these methods, you must also manually create a deployment descriptor in the correct format.
Adding a WAR to a J2EE Application
If you manually create a WAR or you obtain a WAR from another party, you can add it to an existing J2EE application as follows:
- Select a J2EE application.
- Select File->Add->Web WAR.
- Navigate to the directory containing the WAR, select the WAR, and click Add Web WAR.
See The Example JSP Pages for an example.
You can also add a WAR to a J2EE application using the packager
tool. The Duke's Bank application described in Building, Deploying, and Running the Application uses packager
.
Adding a Web Component to a WAR
The following procedure describes how to create and add the web component in the Hello1App
application to a WAR. Although the web component wizard solicits WAR and component-level configuration information when you add the component, this chapter describes how to add the component and provide configuration information at a later time using application, WAR, and web component inspectors:
-
- Go to
j2eetutorial/examples/src
and build the example by runningant hello1
. For detailed instructions, see About the Examples). - Create a J2EE application called
Hello1App
. - Create a J2EE application called
Hello1App
. - Create a J2EE application called
Hello1App
. - Create a J2EE application called
Hello1App
. - Create a J2EE application called
Hello1App
. - Create the WAR and add the
GreetingServlet
web component and all the of theHello1App
application content.- Invoke the web component wizard by selecting File->New->Web Component.
- In the combo box labelled Create New WAR File in Application select Hello1App. Enter
Hello1WAR
in the field labeled WAR Display Name. - Click Edit to add the content files.
- In the Edit Contents dialog, navigate to
j2eetutorial/examples/build/web/hello1
. Select GreetingServlet.class, ResponseServlet.class, and duke.waving.gif, and click Add. Click OK. - Click Next.
- Select the servlet radio button.
- Click Next.
- Select GreetingServlet from the Servlet Class combo box.
- Click Finish.
- Add the
ResponseServlet
web component.
- Go to
Note: You can add JSP pages to a WAR without creating a new web component for each page. You simply select the WAR, click Edit to edit the contents of the WAR, and add the pages. The JSP version of the Hello, World application, described in Updating Web Components , shows how to do this. If you choose this method, you will not be able to specify alias paths (described in Specifying an Alias Path ) for the pages.