请问一下我的这些代码,为什么会出现空异常?

billfranck 2008-04-16 11:53:50
实现接口,代码:
public List querAll() throws Exception
{
List<User> all= new ArrayList<User>();
String sql="SELECT UserId, UserName, UserPwd, UserQx FROM User";
PreparedStatement pstmt = null;
DateBaseConn dbc=null;

try
{
dbc = new DateBaseConn();
pstmt = dbc.getConnection().prepareStatement(sql);

ResultSet rs = pstmt.executeQuery();

while (rs.next())
{
User user= new User();
user.setUserId(rs.getString(1));
user.setUserName(rs.getString(2));
user.setUserPwd(rs.getString(3));
user.setUserQx(rs.getString(4));

all.add(User);
}
rs.close();
pstmt.close();
}
catch (Exception e)
{
throw new Exception("操作出现异常") ;
}
finally
{
dbc.close();
}

return all;

}

调用:jsp中调用
<%
UserDaoImpl usdoim =new UserDaoImpl();

List allList = usdoim.querAll();

Iterator iter = allList.iterator() ;

while(iter.hasNext())
{
User user = (User)iter.next() ;
// 进行循环打印,打印出所有的内容,以表格形式
// 从数据库中取出内容
%>
<td><%=user.getUserId() %></td>
<td><%=user.getUserName() %></td>
<td><%=user.getUserPwd() %></td>
<td><%=user.getUserQx() %></td>
<%
}
%>


...全文
241 36 打赏 收藏 转发到动态 举报
写回复
用AI写文章
36 条回复
切换为时间正序
请发表友善的回复…
发表回复
li_d_s 2008-04-18
  • 打赏
  • 举报
回复
不能吧?这样编译能通过?
海边岩石 2008-04-18
  • 打赏
  • 举报
回复
^_^,楼主,恭喜你啊,问题解决了啊。
看来还是细节问题啊,与语法无关啊。这种问题是解决后最让人无奈的……
billfranck 2008-04-18
  • 打赏
  • 举报
回复
我自己找出来了,为什么会出现空异常!! all.add(User); 应为all.add(user);
悠游一叶 2008-04-17
  • 打赏
  • 举报
回复
应该是list里 有一个user是空的
或者user里的那个字段是空的 数据库字段有空值
li_d_s 2008-04-17
  • 打赏
  • 举报
回复
[Quote=引用 28 楼 xby123 的回复:]
引用 17 楼 li_d_s 的回复:
user.getUserId()出错,user是空的?看你的代码应该不会空的哦


List是空的
[/Quote]

净扯淡,list是空的话Iterator iter = allList.iterator() ; 就报错了
xby123 2008-04-17
  • 打赏
  • 举报
回复
[Quote=引用 27 楼 yuanjun_xf 的回复:]
java.lang.NullPointerException
org.apache.jsp.web.list_jsp._jspService(list_jsp.java:94)
到tomcat上面找到
楼上的
user.setUserId(rs.getString(1));
System.out.println(rs.getString(1));
user.setUserName(rs.getString(2));
System.out.println(rs.getString(2));
user.setUserPwd(rs.getString(3));
System.out.println(rs.getString(3));
user.setUserQx(rs.getString(4));
System.out.println(rs.getStr…
[/Quote]
很有可能
UserDaoImpl usdoim =new UserDaoImpl();
List allList = usdoim.querAll();

楼主把这2行弄到页面的头部去
再检查user这个BEAN里的get和set方法是否重写了
xby123 2008-04-17
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 li_d_s 的回复:]
user.getUserId()出错,user是空的?看你的代码应该不会空的哦
[/Quote]

List是空的
yuanjun_xf 2008-04-17
  • 打赏
  • 举报
回复
java.lang.NullPointerException
org.apache.jsp.web.list_jsp._jspService(list_jsp.java:94)
到tomcat上面找到
楼上的
user.setUserId(rs.getString(1));
System.out.println(rs.getString(1));
user.setUserName(rs.getString(2));
System.out.println(rs.getString(2));
user.setUserPwd(rs.getString(3));
System.out.println(rs.getString(3));
user.setUserQx(rs.getString(4));
System.out.println(rs.getString(4));

是不是set的时候就有错误了!
怎么不用jstl语言?
你在页面中打印你的list 看是不是未空,又没有set出去
request.setAttribute("list",list);
xby123 2008-04-17
  • 打赏
  • 举报
回复
看这个是查出来的List是空的。
建议在迭代List时,先判断List是否为空

UserDaoImpl usdoim =new UserDaoImpl();  

List allList = usdoim.querAll();
if(allList !=null&&allList .size()>0){
Iterator iter = allList.iterator() ;

while(iter.hasNext())
{
User user = (User)iter.next() ;
// 进行循环打印,打印出所有的内容,以表格形式
// 从数据库中取出内容

out.write(" \r\n");
out.write(" <h1>");
94 out.print(user.getUserId() );
out.write(" </h1> \r\n");
out.write(" <h1> ");
out.print(user.getUserName() );
out.write(" </h1> \r\n");
out.write(" <h1> ");
out.print(user.getUserPwd() );
out.write(" </h1> \r\n");
out.write(" <h1> ");
out.print(user.getUserQx() );
out.write(" </h1> \r\n");
out.write(" ");

}

out.write(" \r\n");
out.write("\r\n");
out.write(" \r\n");
out.write(" </body>\r\n");
out.write(" </html>\r\n");
shadowlin 2008-04-17
  • 打赏
  • 举报
回复
你不到jsp上试试你的那个dao可以用不?
s_liangchao1s 2008-04-17
  • 打赏
  • 举报
回复
楼主跟踪下JSP看看具体是哪句的异常
billfranck 2008-04-17
  • 打赏
  • 举报
回复
[Quote=引用 22 楼 s_liangchao1s 的回复:]
看下allList返回的是什么值
[/Quote]

public List querAll() throws Exception
{
List<User> all= new ArrayList<User>();
。。。。。。。。。。。

return all;
}
s_liangchao1s 2008-04-17
  • 打赏
  • 举报
回复
看下allList返回的是什么值
billfranck 2008-04-17
  • 打赏
  • 举报
回复
没人啊
billfranck 2008-04-17
  • 打赏
  • 举报
回复
目前为止没有人回答上,为什么会出现异常
billfranck 2008-04-17
  • 打赏
  • 举报
回复
重复一下问题:实现接口,代码:
public List querAll() throws Exception
{
List <User> all= new ArrayList <User>();
String sql="SELECT UserId, UserName, UserPwd, UserQx FROM User";
PreparedStatement pstmt = null;
DateBaseConn dbc=null;

try
{
dbc = new DateBaseConn();
pstmt = dbc.getConnection().prepareStatement(sql);

ResultSet rs = pstmt.executeQuery();

while (rs.next())
{
User user= new User();
user.setUserId(rs.getString(1));
user.setUserName(rs.getString(2));
user.setUserPwd(rs.getString(3));
user.setUserQx(rs.getString(4));

all.add(User);
}
rs.close();
pstmt.close();
}
catch (Exception e)
{
throw new Exception("操作出现异常") ;
}
finally
{
dbc.close();
}

return all;

}

调用:jsp中调用
<%
UserDaoImpl usdoim =new UserDaoImpl();

List allList = usdoim.querAll();

Iterator iter = allList.iterator() ;

while(iter.hasNext())
{
User user = (User)iter.next() ; //出错的地方 空异常
// 进行循环打印,打印出所有的内容,以表格形式
// 从数据库中取出内容
%>
<td> <%=user.getUserId() %> </td>
<td> <%=user.getUserName() %> </td>
<td> <%=user.getUserPwd() %> </td>
<td> <%=user.getUserQx() %> </td>
<%
}
%>
seeSkyblue 2008-04-16
  • 打赏
  • 举报
回复
第一句空就是说new出来的对象是个null?
那你去看看构造函数里面怎么写的。

还有接口是不能被实例化的(就算实例化也没有意义),
只有申明一个接口然后用它的实现类去实例化。
比如:List l = new List(); 错误
List l = new ArrayList(); 正确
billfranck 2008-04-16
  • 打赏
  • 举报
回复
jsp中的第一句就是空
whmjxa 2008-04-16
  • 打赏
  • 举报
回复
调试下就出来,对每个变量都输出下,就知道是哪个变量空值了
billfranck 2008-04-16
  • 打赏
  • 举报
回复
在接口中都能取到值,在jsp中就没有值了!是不是一实例化就没有值了呢?UserDaoImpl usdoim =new UserDaoImpl(); 那也不可能啊!,谁帮忙解决一下
加载更多回复(16)

81,094

社区成员

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

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