据说ResultSet结果集最好不要传递到JSP页面,那该怎么处理? 将ResultSet中的数据封装为实体对象放到List中,然后将此List放到request的attribuite中,在jsp中就可通过标签输出数据 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 最简单、常用的就是用HashMap->List来存放返回数据当然了,用一些其他的封装类也不错,比如javax.sql.RowSet 现在我们做的都是像 yz_ming(JavaMan)所说的一样,先取出放到一个封装对像中 然后传到JSP 我一般是用楼上的方法 HashMap - List - ResultSet 用servlet 形成xml 格式再用js 或xsl形成界面 result关闭之后就得不到了,所以我常用ArrayList中 把每一行数据封装到DTO(有人喜欢叫Value Object,BO, POJO, Entity等等,其实都差不多)对象,然后放到集合类比如List, Map之类的传输到业务层或者表现层 自己封装一个对象,在把 对象放到,,Collection里....传到 JSP..... 用servlet 形成xml 格式 再用js 或xsl形成界面好!!!! 根据数据生成一个javabean,然后把这个bean的实例放到Collection中,再传递到jsp 把每一条记录放到VECTOR里,然后再把所有的记录(VECTOR)放到ArrayList中,传到页面,在页面用Iterator迭带一个就可以了 晕!我都是放在数组里返回到jsp的! 做一个相应的数据类,然后把这个对象放到LinkedList中,在JSP中调用LinkedListLinkedList lkAllData= new LinkedList();expBean dataBean=null;while(rs.next()){ dataBean= new expBean(); dataBean.setName(rs.getString(1)); dataBean.setAddress(rs.getString(2)); if(dataBean!=null) lkAllData.add(dataBean);} return lkAllData;////献丑了:> 以上的方法本人都不赞同,我觉得应该自己写一个标签。比如为 display.java然后将起定义为标签,对于你每次要显示的内容,其实你只要传递关键字,比如:sql 语句。就可以了!然后在你的页面中利用自定义的标签:比如为: <app:display> 就可以实现了!以下是本人写的一个很简单的标签,在struts中! displayTag.java-----------------------------------------------------------------import javax.servlet.jsp.tagext.TagSupport;import java.io.IOException;import javax.servlet.jsp.PageContext;import javax.servlet.jsp.JspWriter;import javax.servlet.jsp.JspException;import javax.servlet.http.HttpSession;import java.sql.*;public final class DisplayTag extends TagSupport { public int doEndTag()throws JspException{ UserDao userdao=new UserDao(); JspWriter out=pageContext.getOut(); HttpSession session=pageContext.getSession(); try{ String name="name"; String password="password"; String strSql=(String)session.getAttribute("strSql"); ResultSet rs=userdao.disPlay(strSql); out.println("<table border=1>"); out.println("<tr>"); out.println("<th width=100>"+name+"</th>"); out.println("<th width=100>"+password+"</th>"); out.println("</tr>"); while(rs.next()){ out.println("<tr>"); out.println("<td>"+rs.getString(name)+"</td>" ); out.println("<td>"+rs.getString(password)+"</td>" ); out.println("</tr>"); } out.println("</table>"); } catch(Exception e){} return super.doEndTag(); }} app.tld--------------------------------------------------------------------<?xml version="1.0" encoding="ISO-8859-1" ?><!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN" "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd"><taglib> <tlib-version>1.0</tlib-version> <jsp-version>1.2</jsp-version> <short-name>Application Tag Library</short-name> <tag> <name>display</name> <tag-class>netregister.DisplayTag</tag-class> <body-content>empty</body-content> </tag></taglib> web.xml---------------------------------------------------------------添加以下内容: <taglib> <taglib-uri>/WEB-INF/app.tld</taglib-uri> <taglib-location>/WEB-INF/app.tld</taglib-location> </taglib> displayAction.do------------------------------------------------------------------ String strSql=new String("select * from yonghu"); HttpSession session=httpServletRequest.getSession(); session.setAttribute("strSql",strSql) ; return actionMapping.findForward("success") ;如果不是用的struts,可以通过其他方法,实现这步! display.jsp-----------------------------------------------------------------<%@ page contentType="text/html; charset=GBK" %><%@ taglib uri="/WEB-INF/app.tld" prefix="app" %><html><head><title>display</title></head><body bgcolor="#ffffff"><app:display /></body></html> 这样,在你的每一个jsp中,只要想输出查询结果,就只需要调用 <app:display/>就可以了!以上代码不一定完全正确,但是思想就是这样!而且在大的项目中,非常推崇!它体现了java 代码重用的思想,而且也使结果集的相关操作不直接暴露与用户,也实现了安全!供参考! zeq258(近朱者赤) 的很实用 简单一点的就是把数据集先存入哈希表中,然后再存入矢量中,传给jsp页面再遍历就可以了。 将ResultSet中的数据封装为实体对象放到List中,然后将此List放到request的attribuite中,在jsp中就可通过标签输出数据 为什么struts2 加了DEVMODE就报错 sqlserver 分组查询 请问博客的模版更换如何实现? myeclipse 8耗内存问题 求助~~~ Tomcat 怎么不要jdk 也可以运行? 请帮忙看一下这两段代码的问题.谢谢指点! jsp中的ubb问题 处理乱码问题 急:在JRun Management Console里选择JRun Default Server,然后点击start server居然出现无法显示该页,是怎么回事? jsp用什么运行环境好一些呀!大家来讨论一下 急,急,急,50分求jsp做的下载代码!!!!!!
当然了,用一些其他的封装类也不错,比如javax.sql.RowSet
再用js 或xsl形成界面
再用js 或xsl形成界面好!!!!
Iterator迭带一个就可以了
expBean dataBean=null;while(rs.next())
{
dataBean= new expBean();
dataBean.setName(rs.getString(1));
dataBean.setAddress(rs.getString(2));
if(dataBean!=null)
lkAllData.add(dataBean);
}
return lkAllData;
////献丑了:>
我觉得应该自己写一个标签。比如为 display.java
然后将起定义为标签,
对于你每次要显示的内容,其实你只要传递关键字,比如:sql 语句。就可以了!
然后在你的页面中利用自定义的标签:比如为: <app:display> 就可以实现了!以下是本人写的一个很简单的标签,在struts中! displayTag.java
-----------------------------------------------------------------
import javax.servlet.jsp.tagext.TagSupport;
import java.io.IOException;
import javax.servlet.jsp.PageContext;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.JspException;
import javax.servlet.http.HttpSession;
import java.sql.*;public final class DisplayTag extends TagSupport {
public int doEndTag()throws JspException{
UserDao userdao=new UserDao();
JspWriter out=pageContext.getOut();
HttpSession session=pageContext.getSession();
try{
String name="name";
String password="password";
String strSql=(String)session.getAttribute("strSql");
ResultSet rs=userdao.disPlay(strSql); out.println("<table border=1>");
out.println("<tr>");
out.println("<th width=100>"+name+"</th>");
out.println("<th width=100>"+password+"</th>");
out.println("</tr>");
while(rs.next()){
out.println("<tr>");
out.println("<td>"+rs.getString(name)+"</td>" );
out.println("<td>"+rs.getString(password)+"</td>" );
out.println("</tr>");
}
out.println("</table>");
}
catch(Exception e){}
return super.doEndTag();
}}
app.tld
--------------------------------------------------------------------
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE taglib
PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"
"http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">
<taglib>
<tlib-version>1.0</tlib-version>
<jsp-version>1.2</jsp-version>
<short-name>Application Tag Library</short-name>
<tag>
<name>display</name>
<tag-class>netregister.DisplayTag</tag-class>
<body-content>empty</body-content>
</tag>
</taglib>
web.xml
---------------------------------------------------------------
添加以下内容:
<taglib>
<taglib-uri>/WEB-INF/app.tld</taglib-uri>
<taglib-location>/WEB-INF/app.tld</taglib-location>
</taglib>
displayAction.do
------------------------------------------------------------------
String strSql=new String("select * from yonghu");
HttpSession session=httpServletRequest.getSession();
session.setAttribute("strSql",strSql) ;
return actionMapping.findForward("success") ;如果不是用的struts,可以通过其他方法,实现这步!
display.jsp
-----------------------------------------------------------------
<%@ page contentType="text/html; charset=GBK" %>
<%@ taglib uri="/WEB-INF/app.tld" prefix="app" %>
<html>
<head>
<title>
display
</title>
</head>
<body bgcolor="#ffffff">
<app:display />
</body>
</html> 这样,在你的每一个jsp中,只要想输出查询结果,就只需要调用 <app:display/>
就可以了!
以上代码不一定完全正确,但是思想就是这样!
而且在大的项目中,非常推崇!
它体现了java 代码重用的思想,而且也使结果集的相关操作不直接暴露与用户,也实现了安全!
供参考!