In addition to rolling your own disconnected storage or using the oft-mentioned
RowSet, here are a couple of other possibilities.
Check out JSTL's javax.servlet.jsp.jstl.sql.ResultSupport class. It has a couple
of utility methods for converting a ResultSet into a
javax.servlet.jsp.jstl.sql.Result.
public static Result toResult(ResultSet rs);
public static Result toResult(ResultSet rs, int maxRows);
The Result interface exposes a handful of properties for accessing the data:
public SortedMap[] getRows();
public Object[][] getRowsByIndex();
public String[] getColumnNames();
public int getRowCount();
public boolean isLimitedByMaxRows();
The value returned for a given column is based on ResultSet.getObject.
Another option is to check out the
org.apache.commons.beanutils.ResultSetDynaClass class. This allows you to
convert a ResultSet into a collection of DynaBean instances that represent the
rows of the ResultSet. Be sure to pay attention to the class documentation that
discusses the linkage to the ResultSet during processing. I believe this also
uses ResultSet.getObject to retrieve column values.
Quoting David Graham <[EMAIL PROTECTED]>:
> You got it exactly right Wendy :-). Your jsp should never see a ResultSet
> object. The pattern Wendy is using is very common and considered a best
> practice. A ResultSet object maintains a database connection throughout its
>
> life so you should only hold onto it long enough to populate a collection
> with beans.
>
> You'll probably always be using the database but you should still use this
> pattern. If you don't you'll have massive scalability problems.
>
> David
>
>
>
>
>
>
> >From: Wendy Smoak <[EMAIL PROTECTED]>
> >Reply-To: "Struts Users Mailing List" <[EMAIL PROTECTED]>
> >To: 'Struts Users Mailing List' <[EMAIL PROTECTED]>
> >Subject: RE: Iterate through resultset
> >Date: Thu, 21 Nov 2002 13:55:31 -0700
> >
> > > I'm working on this application where I get resultsets in jsp pages
> from
> > > business objects.
> >
> >I do a similar thing, but I have a DAO layer return a Collection of Value
> >Objects. (How's that for getting a bunch of pattern buzzwords into one
> >sentence?) The VO's are beans, so I can get at the properties with
> <c:out>
> >(or <bean:write> I think was the old way).
> >
> >The view never sees anything database specific, it just gets a Collection
> >of, say, ResolutionView objects. (This is a list of possible matching
> >records based on a free-form text name the user has entered. The Action
> >has
> >put the Collection into request scope.)
> >
> ><logic-el:iterate id="resView"
> > name="foundPersons"
> > type="edu.asu.vpia.value.ResolutionView"
> > scope="request">
> > <c:out value="${resView.key}"/>
> > <c:out value="${resView.preferredName}" />
> >
> > <c:set var="addressList" value="${resView.preferredAddress}"
> >scope="page"
> >/>
> > <logic-el:iterate id="addressLine" name="addressList">
> > <c:out value="${addressLine}"/>
> > </logic-el:iterate>
> >
> > <c:out value="${resView.statusDesc}" />
> ></logic-el:iterate>
> >
> >Maybe one day you will move away from a SQL database, and you won't have a
> >"ResultSet" anymore. This way, you only have to make changes to the layer
> >of code that provides the Collection and nothing in the view is affected.
> >To the JSP, it's all Strings.
> >
> >Take all that for what it's worth... I'm _very_ new at this.
> >
> >--
> >Wendy Smoak
> >Applications Systems Analyst, Sr.
> >Arizona State University PA Information Resources Management
>
>
> _________________________________________________________________
> Help STOP SPAM with the new MSN 8 and get 2 months FREE*
> http://join.msn.com/?page=features/junkmail
>
>
> --
> To unsubscribe, e-mail:
> <mailto:[EMAIL PROTECTED]>
> For additional commands, e-mail:
> <mailto:[EMAIL PROTECTED]>
>
--
Kris Schneider <mailto:[EMAIL PROTECTED]>
D.O.Tech <http://www.dotech.com/>
--
To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>