现有表uload,内有name,pwd.想查询出里面的内容并叠代显示.当程序一运行的时候index直接跳转到action类.
错误提示无法为这个集合创建iterate标签.
严重: Servlet.service() for servlet debugjsp threw exception
javax.servlet.jsp.JspException: Cannot create iterator for this collection
at org.apache.struts.taglib.logic.IterateTag.doStartTag(IterateTag.java:267)
at org.apache.jsp.showMsg_jsp._jspService(org.apache.jsp.showMsg_jsp:81)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)代码如下:连接数据库类:
package DBManage;
import java.sql.*;
/**
* <p>Title: </p>
*
* <p>Description: </p>
*
* <p>Copyright: Copyright (c) 2008</p>
*
* <p>Company: </p>
*
* @author not attributable
* @version 1.0
*/
public class Dao {
public Dao() {
}
private Connection conn;
private Statement stmt;
private ResultSet rs;
public Connection myConnection() {
try {
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
conn = DriverManager.getConnection("jdbc:microsoft:sqlserver://localhost:1433;databaseName=mytest;","sa","sa"); } catch (Exception ex) {
ex.printStackTrace(); //以下省略不写
}
return conn;
} public Statement myStatement() { try {
conn=this.myConnection();
stmt = conn.createStatement();
} catch (SQLException ex) {
}
return stmt;
} public ResultSet myResultSet(String sql) {
try {
stmt=this.myStatement();
rs = stmt.executeQuery(sql);
} catch (SQLException ex) {
}
return rs;
} public void closeAll() {
try {
if (stmt != null) {
stmt.close();
}
if (rs != null) {
rs.close();
}
if (conn != null) {
conn.close();
}
} catch (SQLException ex) { }
}
}action类
package search;import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionForm;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.Action;
import java.util.*;
import DBManage.*;
import java.sql.*;
public class SearchAction extends Action {
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request,
HttpServletResponse response) {
List list=new ArrayList();
Dao dao=new Dao();
try {
ResultSet rs = dao.myResultSet("select * from uload");
while (rs.next()) {
SearchActionForm searchActionForm =new SearchActionForm();
searchActionForm.setName(rs.getString(1));
searchActionForm.setPwd(rs.getString(2));
list.add(searchActionForm);
}
if(list!=null)
{
System.out.print("ok~~~"+list.get(1)+"\n");
} request.setAttribute("list","list");
} catch (SQLException ex) {
ex.printStackTrace();
}
return mapping.findForward("showMsg");
}
}JSP显示:<%@ page contentType="text/html; charset=GBK" %>
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<html>
<head>
<title>
showMsg
</title>
</head>
<body bgcolor="#ffffff">
<logic:iterate name="list" id = "ls">
<bean:write name="ls" property="name"/>
<bean:write name="ls" property="pwd"/>
</logic:iterate> </body>
</html>
错误提示无法为这个集合创建iterate标签.
严重: Servlet.service() for servlet debugjsp threw exception
javax.servlet.jsp.JspException: Cannot create iterator for this collection
at org.apache.struts.taglib.logic.IterateTag.doStartTag(IterateTag.java:267)
at org.apache.jsp.showMsg_jsp._jspService(org.apache.jsp.showMsg_jsp:81)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)代码如下:连接数据库类:
package DBManage;
import java.sql.*;
/**
* <p>Title: </p>
*
* <p>Description: </p>
*
* <p>Copyright: Copyright (c) 2008</p>
*
* <p>Company: </p>
*
* @author not attributable
* @version 1.0
*/
public class Dao {
public Dao() {
}
private Connection conn;
private Statement stmt;
private ResultSet rs;
public Connection myConnection() {
try {
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
conn = DriverManager.getConnection("jdbc:microsoft:sqlserver://localhost:1433;databaseName=mytest;","sa","sa"); } catch (Exception ex) {
ex.printStackTrace(); //以下省略不写
}
return conn;
} public Statement myStatement() { try {
conn=this.myConnection();
stmt = conn.createStatement();
} catch (SQLException ex) {
}
return stmt;
} public ResultSet myResultSet(String sql) {
try {
stmt=this.myStatement();
rs = stmt.executeQuery(sql);
} catch (SQLException ex) {
}
return rs;
} public void closeAll() {
try {
if (stmt != null) {
stmt.close();
}
if (rs != null) {
rs.close();
}
if (conn != null) {
conn.close();
}
} catch (SQLException ex) { }
}
}action类
package search;import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionForm;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.Action;
import java.util.*;
import DBManage.*;
import java.sql.*;
public class SearchAction extends Action {
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request,
HttpServletResponse response) {
List list=new ArrayList();
Dao dao=new Dao();
try {
ResultSet rs = dao.myResultSet("select * from uload");
while (rs.next()) {
SearchActionForm searchActionForm =new SearchActionForm();
searchActionForm.setName(rs.getString(1));
searchActionForm.setPwd(rs.getString(2));
list.add(searchActionForm);
}
if(list!=null)
{
System.out.print("ok~~~"+list.get(1)+"\n");
} request.setAttribute("list","list");
} catch (SQLException ex) {
ex.printStackTrace();
}
return mapping.findForward("showMsg");
}
}JSP显示:<%@ page contentType="text/html; charset=GBK" %>
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<html>
<head>
<title>
showMsg
</title>
</head>
<body bgcolor="#ffffff">
<logic:iterate name="list" id = "ls">
<bean:write name="ls" property="name"/>
<bean:write name="ls" property="pwd"/>
</logic:iterate> </body>
</html>
{
System.out.print("ok~~~"+list.get(1)+"\n");
}
这一段代码有危险.
List list=new ArrayList(); 这里的list并不是null,但它是空的.你用list.get(1)就会报下标越界了,它的下标也是从0开始的
if(list.size()>0)
{
System.out.print("ok~~~"+list.get(0)+"\n");
}
if(list.size()>0)
{
System.out.print("ok~~~"+list.get(0)+"\n");
}