Creating a Web application that accesses a database
In the final exercise, create a Web application that can access a Cloudscape database using a Relational Record List. First create a Web project, and then later add the database display capability to the Web application.
Web application development can be done in the Web perspective. All Web elements, such as JSP pages and Java servlets, are stored in Web projects.
A J2EE application consists of several components: Application Client, Web, and Enterprise JavaBeans (EJBs) modules. Each module is a self-contained unit that can be deployed and run on a server individually or as a group in an enterprise application. You work with a Web module in this exercise.
- From the workbench, select File > New > Project.
- Select Web > Dynamic Web Project > Next.
MyWebProjectas the project name. The Show Advanced button shows the advanced settings. Click it to display the default enterprise application project named MyWebProjectEAR. Click Finish.
- When you are asked to switch to the Web Perspective, click Yes.
The major contents of a Web project are JSP files and servlets. Other Web elements, such as HTML, style sheets, and images, are also stored in a Web project. Figure 14 shows the structure of a Web project, with its different Web elements in different locations.
After you create a Web project, you can see it in the Dynamic Web Projects folder. The Web project is set up in compliance with the J2EE standard to be exported as a WAR file for deployment. Java servlets and other supporting Java classes are stored in the JavaSource folder inside the Java Resources directory. JSP files, HTML pages, style sheets, Java script files, and images are stored in the WebContent directory. The Web Deployment Descriptor, web.xml, contains the deployment configurations of the Web application. It must be present in the Web module to be deployed on a J2EE server, such as WebSphere Application Server.
Figure 14. Structure of a Web project
- Right-click on MyWebProject > New > JSP File.
MyFirstJSPas the file name and click Finish. Notice that the JSP file is created under the folder WebContent.
- Modify the JSP file from the editor using the Design or the Source view. Switch to the Source view.
Enter the bold code in the editor. This line is called a scriptlet,
which is Java code enclosed by <% and %>. You can enter any
Java code within these brackets. You can also use scriptlets to print
something in a JSP file. For example, <%="hello"%> prints the text
Listing 4. Code for MyWebServiceClient.jsp
<BODY> <P>Place content here.</P> <% String a = "Hello"; a+= "World!!"; %> <%=new java.util.Date() %> <%=a %> <BR> </BODY>
- Press Ctrl-S to save.
With Application Developer you can run the JSP file in the embedded server. Start the server from the Server view and then run the JSP file using the URL http://localhost:9080/MyWebProject/MyFirstJSP.jsp. Alternatively, right-click the JSP file and select Run on Server.
- In the Project Explorer view, right-click the MyFirstJSP.jsp file and select Run > Run on Server.
Select an existing server and click Finish to automatically add the
project to the server and run the JSP file in the internal browser:
Figure 16. Running the MyFirstJSP
Application Developer has a number of relational database tools, or views, that can be accessed through the Data perspective. Some of the more important views in this perspective are the Data Definition, Database Explorer, and DB Output views.
In the Database Explorer view, connections can be made to a list of supported relational databases. Some of the supported databases are IBM Cloudscape, IBM DB2 Universal Database, Microsoft SQL Server, Sybase Enterprise Systems, and Oracle Database. Refer to the product help for a complete list of the supported databases.
In this step, create a database connection to a Cloudscape database that is shipped with Application Developer. Cloudscape database can use any file system folder as a database. You do not need to create the database before trying to establish a connection. If you select Create the database if required, the Cloudscape database is created before the connection is established.
Cloudscape accepts only one database connection at a time. For example, if a WebSphere Application Server is already connected to the Cloudscape database, an attempt to make a connection from the Database Explorer will fail.
Following are the steps to create a Cloudscape connection:
- If the server is running, stop it now or you cannot establish a database connection. In the Servers view, right-click on WebSphere Application Server v6.0 and select Stop.
- Switch to the Data perspective. Select Window > Open Perspective > Other. Select the Show all check box and select Data. Click OK. Select OK if asked to enable the Core Database Development capability.
- Right-click Database Explorer, located in the bottom left of the perspective and click New Connection.
Click Choose a database manager and JDBC driver.
Con1as the connection name. Click Next.
The database manager defaults to Cloudscape V5.1 as shown in Figure 17.
Enter any file system directory in the Database location,
C:\HelloWorldSeries\AddressDB. You do not have to physically create the folder in the file system. Just type in a new folder name. Make sure the Create the database if required box is checked. If it is, the tool sets up the Cloudscape database at that location. Because Cloudscape is a test database, you do not need a user ID and password to connect to it. Enter any user ID in the user information section.
- Click Test Connection to see if a connection can be established. You should see a window saying the connection is successful. Click Finish to create the connection. If it returns an error stating the user name is invalid, leave both user ID and password blank.
Click No when asked to copy database metadata to a project folder.
Figure 17. Creating a Cloudscape database connection
Con1 displays in the Database Explorer view.
Expand the connection to see AddressDB as shown in Figure 18:
Figure 18. Database Explorer Con1 connection
Right now, the database is empty. Use the Data Definition view to create a schema and table definition. The database definition is something you define in the workspace which doesn't exist in the database. Later in this hands-on, deploy the definitions to an actual database.
- In the Data perspective's Data Definition view, right-click MyWebProject and click New > Database Definition:
Figure 19. Creating a database definition
AddressDBas the database name. Select Cloudscape V5.1 as Database vendor type, and click Finish.
- Expand MyWebProject. Right-click ADDRESSDB and click New > Schema Definition:
Figure 20. Creating a schema definition
- Accept all the defaults in the schema definition window. Click Finish.
- Create a table definition named
AddressTable. Right-click on the newly created SCHEMA1 > New > Table Definition:
Figure 21. Creating a table definition
AddressTableas the table name, and click Next.
to add a column. Enter
idas the column name. Select INTEGER as the column type and click the Key column check box.
Click Add Another. Enter
nameas the column name. Select VARCHAR as the column type. Change the string length to 100.
Click Add Another. Enter
addressas the column name. Select VARCHAR as the column type. Change the string length to 200.
Figure 22. Table columns for AddressTable
In the Data Definition view, right-click the newly created SCHEMA1.ADDRESSTABLE
and click Deploy. Click Next, and then click Next again. This creates SCHEMA1 and AddressTable in the Cloudscape database:
Figure 23. Deploy the schema definition
- Click the Use existing connection check box. Select Con1 as the database connection. Click Finish.
In the Database Explorer, right-click your connection Con1 and click Refresh:
Figure 24. Refresh on the database connection
Expand your connection until you see the Tables folder.
You see the schema and AddressTable you just created:
Figure 25. After the schema definition is deployed
Although you have created the table in the database, it has no data. Create an Insert statement that can insert a record into the table.
In the Data Definition view, expand MyWebProject > ADDRESSDB.
Statements and click New > Insert Statement:
Figure 26. Creating an insert statement
CreateRecordas the name, and click OK.
- Right-click in the middle panel labeled Tables and click Add Table. Select SCHEMA1.ADDRESSTABLE as the table name. Click OK.
- Click all three check boxes in the AddressTable to select all the columns in AddressTable.
In the bottom panel of the editor, enter
1for the ID column value. Enter
'Jane'as the name value,
'8200 Warden Ave'as the address value.
- Save the file and close the editor.
Figure 27. Insert Statement editor
In the Data Definition view, right-click CreateRecord and click Execute.
Select Use an existing connection and Con1.
Click Next and Finish.
If you get an error stating "Array index out of range: 0",
use a new connection instead of reusing an existing connection when executing the statement.
Figure 28. Execute CreateRecord
- Go to the Database Explorer view. Right-click the connection Con1 and click Refresh.
Expand AddressDB in the Database Explorer view until you see
Right-click AddressTable and click Sample Contents:
Figure 29. Sample contents
Figure 30. Sample contents results
In this step, add a Relational Record List to the MyFirstJSP.jsp to display the table content. A Relational Record List lets you hook up to a database without doing any JDBC coding. Drag and drop the record list to the JSP file to make a read-only list.
- Switch to the Web perspective and open MyFirstJSP.jsp in the editor.
In the editor, switch to the Design view.
From the Palette, click on
Relational Record List and drop it to the bottom of the JSP editor's canvas.
Use the Relational Record List to make multiple rows of data
available to the page, for example all the rows from a table.
Figure 31. Relational Record List
addressTableRecordListas the Name. Click Next.
- Click on New to create a new connection.
In the New Connection window, you should see the existing Con1 connection.
Select AddressDB from Con1 as shown in Figure 32. Click Finish:
Figure 32. Create a new connection in the Relational Record List
Select SCHEMA1.ADDRESSTABLE and click Finish.
A table that displays the database rows is created on the JSP page.
Figure 33. Select a database row for the Relational Record List
- Save the file. Figure 34 shows the final JSP page:
Figure 34. JSP editor with the Relational Record List
Start the server and run the JSP file.
- In the Server view, right-click on WebSphere Application Server v6.0 and select Start.
- Right-click on WebSphere Application Server v6.0 > Restart Project > MyWebProjectEAR. Because you have modified the project, restart the EAR to pick up the changes. This prevents the occurrence of a NullPointerException error when you run the JSP file. If the error still persists, add or remove projects from the server. Right-click on the server > Add or remove projects, select MyWebProjectEAR and remove it from the right pane. Click Finish, then repeat the actions to add MyWebProjectEAR to the right pane.
- Wait until the publishing is finished before running the JSP file. In the Project Explorer view, right-click MyFirstJSP.jsp and select Run > Run on Server. Click Finish.
The JSP displays the row from the AddressTable.
Enter more rows to the AddressTable and run the JSP file again.
You should see more rows in the JSP.
Figure 35. Running the JSP file