关于Jsp中JavaBean返回值的优化问题

funnyball 2003-11-13 06:17:29
看如下两个例子,请指教其使用价值,附加说明为谢:
(一)
调用JavaBean
public String GetAttach(String Sql){
String AttTable = "";
try{
rs=st.executeQuery(Sql);
while(rs.next()){
String FileName = rs.getString(1);
AttTable+="<input type='button' name='Bt' value='"+FileName+"'>";
}
rs.close();
}catch(SQLException e){
System.err.println("GetAttach():" + e.getMessage());
}
return AttTable;
}
Jsp处理<body><%=Bean.GetAttach(Sql)%></body>

(二)
调用JavaBean
public ResultSet GetAttach(String Sql){
try{
rs=st.executeQuery(Sql);
}catch(SQLException e){
System.err.println("GetAttach():" + e.getMessage());
}
return rs;
}
Jsp处理
<body>
<%while(rs.next()){
String FileName = rs.getString(1);%>
<input type='button' name='Bt' value="<%=FileName%>">
<%rs.close();}%>
</body>

我现在用(一)时,经常出现莫名错误,TomCat自动关闭
我以前用(二)时,则会出现连接对象不关闭的错误!
我想问问各位好手有什么意见,请各书己见,谢谢!
...全文
29 点赞 收藏 9
写回复
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
gks_cn 2003-12-16
强烈建议
封装数据库操作方法。不然数据库的操作还会出很多问题。
回复
zxdhaha 2003-12-16
不要在循环里边关掉rs
写bean最好是返回一个数组,这样会减少很多指针错误
和结果集操作错误
回复
funnyball 2003-11-17
谢谢大家的建议,我现在又遇见了另一个严重的问题,TomCat会出现什么“连接战线,导致另一个hstmt",然后一大堆查询记录只返回最后一条记录,接着TomCat很可能会死掉,请问这是什么原因,应该如何解决呢?谢谢帮忙!
回复
giftxi 2003-11-16
真是没搞懂,为什么数据集不返回一个Collection,返回ResultSet的话,你不如别写JAVABEAN,直接把所有东西都写在JSP里。JAVABEAN里也不要进行页面的处理,这样把本来比较好的结构都破坏了。
你这个思路可以把程序写成servlet,这样的话会比较好。
resultset在得到一个数据集的时候就会关闭了,所以用Collection的ArrayList返回比较好。
回复
huyizhen 2003-11-16
你 在 “rs=st.executeQuery(Sql);”
再重新加上 Statement st =con.createStatement();
应该有用
回复
wuyg719 2003-11-16
为什么要去掉rs.close()??
回复
100health 2003-11-16
up
回复
dext 2003-11-16
第一个的话:
去掉
rs.close();
回复
hykwolf 2003-11-13
你的第一种情况我就不清楚~~
第二种你的rs.close()写在while(){}里了。当你第二次判断的时候会出sqlexception;
结果集的话我习惯在jsp里处理;
注:这里有一个get实例,它是一个处理参数的bean,getString()方法自动将null转换成"";

<%while(rs.next()){%>
<input type="text" name="test" value="<%=get.getString(rs.getString(1))%>">
<%}
try{
rs.close();
}catch(Exception e){}
finally{
dbconn.Close();//你的bean里应该有一个Close()方法用于关闭stmt和connection
}
%>
这样的好处是可以方便的处理html和script.比如说你要在input里放上一些事件。
如果写在bean里感觉和写servlet查不错...一堆的html输出;
而且写在bean里的话,那些html都是String,占用资源.
控制好了在jsp里是不会出现没有关闭的现象的。
至于你的第一种方法会导致tomcat自动关闭,到事不太了解,你用的是5.0么?
我感觉5。0不太稳定,一直用4.127的
回复
发动态
发帖子
Web 开发
创建于2007-09-28

7.9w+

社区成员

Java Web 开发
申请成为版主
社区公告
暂无公告