JSPCN主页 | JSP空间 | 网站制作 | JSP下载 | JSP论坛 | JSP教程 | 关于JSPCN | 联系我们
JSP虚拟主机,jsp空间,java空间,java虚拟空间,详细请点击进入
做最专业的JSP中文网站 当前位置首页--JSP技术--STRUTS  
文章搜索:
关键字 标题
  
JSP中文网内容管理系统(JCMS)
JSP虚拟主机
网络笔记本
网摘,图片,笔记收藏
虚拟服务器

JSPCN文章目录分类
JSP配置[219]JSP基础[136]
中文问题[69]上传问题[27]
JAVABEAN[46]数据库[212]
文件操作[126]图片声音[17]
JSP其他[57]时间相关[16]
JAVAMAIL[72]STRUTS[144]
开发工具[28]教程系列[157]
JSP实例[89]
JAVA基础[421]APPLET[78]
JAVA网络[179]Applica[115]
Servlet[98]XML[163]
J2ME[257]J2EE[374]
考试相关[63]JAVA线程[90]
EJB[261]Swing[26]
Java API[141]声音图片[28]
异常处理[33]JAVA实例[290]
JAVA类[139]SUN[89]
Hibernate[6]JMX[8]
Spring[34]
本版推荐文章 
本版热点文章 
相关文章链接 
 
在STRUTS中如何处理查询的到的RESULT SET
作者:usabcd     文章来源:JSP中文网
访问次数:2317次     加入时间:2004年03月17日
关于这个问题可能每个人有自己的解决办法。
但如果要按照struts的风格来做,应该是这样的:
1) 自己写个类(假定为DataMap),这个类继承HashMap,并实现DynaBean
2) 将ResultSet中的数据取出填充到这个DataMap中
3)将多条数据(也就是多个DataMap)填到一个ArrayList
4) 将这个ArrayList放到你的ActionForm中
5)在jsp中引用, 仿照 struts-example中的例子引用。
例如:
<logic:iterate id="subscription" name="user" property="subscriptions">
<tr>
<td align="left">
<bean:write name="subscription" property="host" filter="true"/>
</td>
<td align="left">
<bean:write name="subscription" property="username" filter="true"/>
</td>
<td align="center">
<bean:write name="subscription" property="type" filter="true"/>
</td>
<td align="center">
<bean:write name="subscription" property="autoConnect"/>
</td>
</tr>
</logic:iterate>
这里subscriptions就是刚才讲的 那个ArrayList
user是ActionForm的名字
subscription就是你那个DataMap的实例,代表一条记录
那些property实际上就是字段名了。
 
本贴对您是否有帮助? 投票: 是  否    投票结果:  0    0
 
 
-----------------------------------------------------------

看到很多朋友在问这个问题,我愿意再重复一遍。希望能对大家有用

下面是我在回答 "单选框如何用? 发表时间: 2003-3-10 下午7:20 "
时的参考代码,很有代表性。现略作改动(下面的所有代码都经过实际验证)

这是一个最小实现:

后台处理代码:
////////////////////////
ResultSet rs = ...
ResultSetMetaData rsmd = rs.getMetaData();
int columnCount = rsmd.getColumnCount();
ArrayList rows = new ArrayList();
while(rs.next()) {
HashMap row = new HashMap();
for (int i = 1; i <= columnCount; i++) {
String name = rsmd.getColumnName(i);
row.put(name, rs.getObject(i));
}
rows.add(row);
}
///////////////////////////
request.setAttribute("rows",rows); //将包装好的ArrayList放到Request里以便jsp使用。

注意 ////之间的代码其实可作为公用代码,写到组件里去
(传入ResultSet做参数,返回包装好的ArrayList)

前台处理代码:假设这是一个单选框
<logic:iterate id="row" name="rows"> 
<html:radio property="roleId" value="id" idName="row"/> 
<bean:write name="row" property="roleDesc"/> 
</logic:iterate>

前台注释:
第1行 这里name="rows"就是后台setAttribute的名字 id="row"是给出循环里要引用每一行的标识
第2行 这里property="roleId"是html表单的变量名 
value="id" 是字段的名字 
idName="row" 就是第1行的id的值
第3行 这里name="row" 就是第1行的id的值 property="roleDesc"是字段名

如果是要显示这个resultset的记录,方法就跟 struts例子里的基本一样了:

<logic:iterate id="row" name="rows">
<tr>
<td>
<bean:write name="row" property="host"/>
</td>
<td>
<bean:write name="row" property="username"/>
</td>
<td>
<bean:write name="row" property="type"/>
</td>
<td>
<bean:write name="row" property="autoConnect"/>
</td>
</tr>
</logic:iterate>

这里的各项属性意义与上一样。

需要提醒的是:因为我们是将记录集放到request中的,所以这个<logic:iterate标签中不需要使用property属性,struts的例子是把这个记录集放到ActionForm中所以
在他的例子中<logic:iterate的name是ActionForm的名字,property是在ActionForm中定义的记录集(就是我们上面的rows)的名字了.

用struts这样的表示方式还有一些另外的好处,例如可以用bean:write的 format属性
格式化字段的值,这是我们经常要用到的功能,象格式化日期和数字等。

通过这个例子大家可以做到举一反三的效果,凡是需要用到数据库中记录集的地方都可以依此类推,
想下拉表单,多选框等等。
JSP虚拟主机 | JSP空间 | JSP主机 | JSP双线虚拟主机 | JAVA空间 | JAVA虚拟主机 | 虚拟服务器 | JSP 虚拟服务器 | VPS
Virtual Private Server | JAVA虚拟服务器 | VM服务器 | VHOST | 虚拟操作系统 | JSP论坛 | JAVA论坛 | JSP站点论坛
Copyright © 2002-2005 JSPCN.net. All rights reserved.
JSP中文网    备案序号:蜀ICP备05001583号
成都恒海科技发展有限公司    成都市一环路南二段6号新瑞楼三楼8号