jsp hashmap get 错误,请高手帮助
不知道为什么会报错:root causejava.lang.NullPointerException
org.apache.jsp.liuyan2_jsp._jspService(liuyan2_jsp.java:100)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
页面代码如下:<link rel="stylesheet" type="text/css" href="mycss2.css" />
<body>
<% int page_count = 1;
int row = 5;
int sum_page = 1;
Messagebean mbean = new Messagebean();
int sum_row = mbean.getallcount();
System.out.println("sum_row"+sum_row);
System.out.println(page_count);
HashMap map = mbean.getallmessage(page_count, row);
%>
<div id="main">
<div id="lcol">
<div class="lbox"><div class="h2">你好,欢迎登陆</div>
<div class="lboxpic"><img src="images/center_onepiece.jpg"></div>
<div class="lboxpic"><img src="images/center_onepiece.jpg" /></div>
<div class="lboxpic"><img src="images/center_onepiece.jpg"></div>
<div class="lboxpic"><img src="images/center_onepiece.jpg"></div>
</div>
</div>
<div id="rcol">
<table width="90%" border="0" cellpadding="0" cellspacing="0">
<%
List list = (List) map.get("all");
System.out.println("wangkang4");
for (int i=0;i<list.size();i++)
{System.out.println(list.get(i));
}
if (list.size() < 1) {
%>
<p align="center">目前没有留言 </p>
<%
}
for (int i = 0; i < list.size(); i++) {
Message me = (Message) list.get(i);
%>
<tr>
<td class="context">
<table width="100%" border="0" cellpadding="0"> <tr> <td><strong><%=me.getname()%></strong></td></tr>
<tr>
<td><strong><%=me.getcontext()%></strong></td>
</tr> </table> </td> </tr>
<% } %> </table> </div> </div>
</body>
package com.jsp.bean;
import com.jsp.util.*;
import java.text.SimpleDateFormat;
public class Messagebean {
Connection con = null;
public boolean Insertmessage(Message message)
{略……
}
public HashMap getallmessage(int page_count,int row)
{
HashMap map = new HashMap();
List list = new ArrayList();
con=DataBaseConnection.getConnection();
String sql="select * from message order by id desc limit "+(page_count-1)*row+","+row;
Statement st=null;
ResultSet rs = null;
System.out.println("wangkang");
try {
System.out.println("wangkang3");
st=con.createStatement();
rs=st.executeQuery(sql);
while(rs.next())
{
DateFormat dataformat= new SimpleDateFormat();
Message message = new Message();
message.setid(rs.getInt("id"));
System.out.println(message.getid());
message.setname(rs.getString("name"));
System.out.println(message.getname());
message.setmotify(rs.getString("motif"));
System.out.println(message.getmotify());
message.setcontext(rs.getString("context"));
System.out.println(message.getcontext());
list.add(message);
}
System.out.println("wangkang2");
rs.close();
st.close();} catch (SQLException e) {
e.printStackTrace();
}
return map;
}
public int getallcount()
{
int count=0;
con=DataBaseConnection.getConnection();
String sql="select count(id) from message";
try {
PreparedStatement pst= con.prepareStatement(sql);
ResultSet rst= pst.executeQuery();
if(rst.next())
{
count=rst.getInt(1);
}
rst.close();
pst.close();
} catch (SQLException e) {
e.printStackTrace();
} return count;
}
起先是
List list = (List) map.get("all");
老是老错,我怀疑是这句话搞错了,但真心不明白是怎么错的,这里设置了个hashmap的列表list来接受servlet里面传来的map,但是我还是想不明白是哪里搞错的
[解决办法]
前面的mapnull了把
[解决办法]
Messagebean中的getallmessage定义了返回的map和准备放入map中的list,但是你没把list真正放入map中,所以,在页面上List list = (List) map.get("all")这样使用的时候,list为null,然后你用了for循环,list.size,于是NullPointerException