关于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自动关闭
我以前用(二)时,则会出现连接对象不关闭的错误!
我想问问各位好手有什么意见,请各书己见,谢谢!
...全文
72 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
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的

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧