Using tags or not - an example
Let's look at a situation where we must construct a jsp-page that contains a list of DVDs. Each DVD is
represented by this bean, where we can store the title, length, and a list of actors:
package hansen.playground;
import java.util.*;
public class DVD {
String title;
int length;
List actors;
public DVD(String title, int length, List actors) {
this.title = title;
this.length = length;
this.actors = actors;
}
public String getTitle() {return title;}
public int getLength() {return length;}
public List getActors() {
return actors;
}
} |
- Figure 1: The DVD class
To hold the DVD collection we use a simple bean like this:
package hansen.playground;
import java.util.*;
public class DVDHandler {
List DVDList = new LinkedList();
public DVDHandler() {
init();
}
public void init() {
List list1 = new LinkedList();
list1.add("Ian Holm");
list1.add("Elijah Wood");
list1.add("Ian McKellen");
DVD dvd1 = new DVD("Lord of the Rings:
The Fellowship of the Ring", 178, list1);
DVDList.add(dvd1);
List list2 = new LinkedList();
list2.add("Keanu Reeves");
list2.add("Laurence Fishburne");
DVD dvd2 = new DVD("The Matrix", 136, list2);
DVDList.add(dvd2);
}
public List getDVDList() {
return DVDList;
}
} |
- Figure 2: The DVDHandler class
For the simplicity of the example the DVDHandler is initiated from its constructor to hold
two DVDs.
The layout of the HTML page should be a simple table looking like this:

- Figure 3: HTML view of the DVDs
First we'll code this without any tags and only using Java code in scriplets. The algorithm is simple: loop
through the DVDs in DVDHandler and show each of them in a table row:
<%@ page import="java.util.*" %>
<%@ page import="hansen.playground.*" %>
<jsp:useBean id="dvds" class="hansen.playground.DVDHandler"
scope="request"/>
<body>
<h2>DVD library</h2>
<table border=1 bgcolor="#FFFFCC">
<tr>
<th>Title</th>
<th>Length (min.)</th>
<th>Actors</th>
</tr>
<%
List list = dvds.getDVDList();
for (Iterator i = list.iterator(); i.hasNext();) {
DVD dvd = (DVD)i.next();
%>
<tr>
<td><%=dvd.getTitle()%></td>
<td><%=dvd.getLength()%></td>
<td><%=dvd.getActors()%></td>
</tr>
<%
}
%>
</table>
</body> |
- Figure 4: A jsp-page with no tags
Comments to this solution:
- the jsp:useBean directive will instantiate the DVDHandler and fill in the two DVDs
- in order to get the title, length, and actors we must cast the element in list to the DVD class
- we use 4 scriptlets in the page
- 26 non-blank lines of code
If we use Struts tags then we can code it in a much cleaner way:
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>
<jsp:useBean id="dvds" class="hansen.playground.DVDHandler"
scope="request"/>
<body>
<h2>DVD library</h2>
<table border=1 bgcolor="#FFFFCC">
<tr>
<th>Title</th>
<th>Length (min.)</th>
<th>Actors</th>
</tr>
<logic:iterate id="dvd" name="dvds" property="DVDList">
<tr>
<td><bean:write name="dvd" property="title" /></td>
<td><bean:write name="dvd" property="length" /></td>
<td><bean:write name="dvd" property="actors" /></td>
</tr>
</logic:iterate>
</table>
</body> |
- Figure 5: A jsp-page using tags
Comments to this solution:
- no Java code!
- two Struts tags used: iterate and write
- no need to use the DVD class
- 20 non-blank lines of code
Not every case can be solved this elegantly using Struts tags, but I hope the example made you interested in
learning more about the tags. So let's turn to the two libraries: bean and logic, to see how the
tags herein often can help you build more readable and maintainable jsp pages.
New on the Java Boutique:
New Review:
Time Management Made Easy with the Quartz Enterprise Job Scheduler
Why not just use the Java timer API? This open source scheduling
API boasts simplicity, ease-of-integration, a well-rounded feature
set, and it's free!
New Applet:
Reverse Complement
Reverse Complement is a simple applet that converts DNA or RNA
sequences into three useful formats.
Elsewhere on internet.com:
WebDeveloper Java
Lots of Java information on webdeveloper.com
WDVL Java
Thorough Java resource at the Web Developer's Virtual Library.
ScriptSearch Java
Hundreds of free Java code files to download.
jGuru: Your View of the Java Universe
Customizable portal with online training, FAQs, regular news updates, and tutorials.
|