jsp,struts,mysql
<%response.setHeader("Refresh","10");%>
使用上面命令来刷新,一段时间后,就报下面的错误了,请问有知道如何解决的吗?
相关代码:com.its.bean.materialService.AllComents(materialService.java:43)
public List AllComents()
{
String sql="select * from infocoments  order by time desc";
return dao.AllComents(sql);
}
AllComents(sql)的代码:
public List<materialForm> AllComents(String sql)
{
ConnDB db=new ConnDB();
ResultSet rs=db.select(sql);
List<materialForm> list=new ArrayList<materialForm>();
try {
while(rs.next())
{
materialForm form=new materialForm();
form.setId(rs.getInt("id"));
form.setAuthor_id(rs.getInt("author_id"));
form.setTime(rs.getString("time"));
String uploadtime = rs.getString("uploadtime");
String audittime = rs.getString("audittime");
String releasetime = rs.getString("releasetime");
form.setUploadtime(uploadtime);
form.setAudittime(audittime);
form.setReleasetime(releasetime);
form.setNid(rs.getString("nid"));
int status = rs.getInt("status");
form.setAuditor(rs.getString("author"));
if(status == 0){
form.setStatus("未审核");
form.setColor("#FF0000");
}else if(status == 1){
form.setStatus("已审核");
}else if(status == 3){
form.setStatus("未修改");
}else if(status == 4){
form.setStatus("已修改");
}else if(status ==5){
form.setStatus("已发布");
form.setColor("#6A6AFF");
}

form.setTitle(rs.getString("title"));
form.setAuthor(AllAuthor(rs.getInt("author_id")));
form.setContent(rs.getString("content"));
form.setDetailed_info(rs.getString("audit"));
list.add(form);
}
db.close();
} catch (SQLException e) {
e.printStackTrace();
}
return list;
}报错信息:
javax.servlet.ServletException
org.apache.struts.action.RequestProcessor.processException(RequestProcessor.java:545)
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:486)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:274)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:507)
javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
com.ruigao.its.filter.EncodingFilter.doFilter(EncodingFilter.java:42)
root cause java.lang.NullPointerException
com.mysql.jdbc.ResultSet.findColumn(ResultSet.java:2660)
com.mysql.jdbc.ResultSet.getString(ResultSet.java:2195)
com.ruigao.its.bean.baseDao.AllComents(baseDao.java:327)
com.ruigao.its.bean.materialService.AllComents(materialService.java:43)
com.ruigao.its.action.ComentsAction.toauditcoments(ComentsAction.java:178)
sun.reflect.GeneratedMethodAccessor84.invoke(Unknown Source)
sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
java.lang.reflect.Method.invoke(Unknown Source)
org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:280)
org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:216)
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:484)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:274)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:507)
javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
com.ruigao.its.filter.EncodingFilter.doFilter(EncodingFilter.java:42)

解决方案 »

  1.   

    com.ruigao.its.bean.materialService.AllComents(materialService.java:43)
    首先根据这信息,确定是哪行出现的空指针。
    然后在去研究是否有空对象调用方法的可能。
    用完rs的时候,最好也关闭了!
      

  2.   

    //关闭
    public void close() {
    try {
    if (rs != null)
    rs.close();
    if (stat != null)
    stat.close();
    if (conn != null)
    conn.close();
    } catch (SQLException e) {
    e.printStackTrace();
    }
    }
    这是我DBConnt的close代码
    我在调用的时候,也就是,
    public List<materialForm> AllComents(String sql)
    {
    ConnDB db=new ConnDB();
    ResultSet rs=db.select(sql);
    List<materialForm> list=new ArrayList<materialForm>();
    try {
    while(rs.next())
    {
    materialForm form=new materialForm();
    form.setId(rs.getInt("id"));
    form.setAuthor_id(rs.getInt("author_id"));
    form.setTime(rs.getString("time"));
    String uploadtime = rs.getString("uploadtime");
    String audittime = rs.getString("audittime");
    String releasetime = rs.getString("releasetime");
    form.setUploadtime(uploadtime);
    form.setAudittime(audittime);
    form.setReleasetime(releasetime);
    form.setNid(rs.getString("nid"));
    int status = rs.getInt("status");
    form.setAuditor(rs.getString("author"));
    if(status == 0){
    form.setStatus("未审核");
    form.setColor("#FF0000");
    }else if(status == 1){
    form.setStatus("已审核");
    }else if(status == 3){
    form.setStatus("未修改");
    }else if(status == 4){
    form.setStatus("已修改");
    }else if(status ==5){
    form.setStatus("已发布");
    form.setColor("#6A6AFF");
    }form.setTitle(rs.getString("title"));
    form.setAuthor(AllAuthor(rs.getInt("author_id")));
    form.setContent(rs.getString("content"));
    form.setDetailed_info(rs.getString("audit"));
    list.add(form);
    }
    db.close();
    } catch (SQLException e) {
    e.printStackTrace();
    }
    return list;
    }
    有调用这个close。
      

  3.   

    有道理
    关注Java
      

  4.   

    上面贴的代码,public List AllComents()
    即为出错的行,代码已经贴出。
    这里面应用的dao.AllComents(sql);
    也已经贴在上面,在这个dao.AllComents(sqll)方法中有调用db.close();方法,释放资源。close方法也已经贴出。一次关闭了,rs,stat,conn。
      

  5.   

    先放到普通class里面单元测试一下吧。
      

  6.   

    代码很简单,又没什么花哨,该关闭的都关闭了,尝试过,把mysql的链接数放到最大。还是出现刷新一段时间后,报空指针的错误
      

  7.   

    上面应该是在该页面进行刷性,那么我们能不能换成重新指定请求?
    response.setHeader("Refresh", "3; URL=重新指定个请求URL");
      

  8.   

    回楼上的,这个感觉没有区别,我在页面中刷新,也是重新去请求数据,换成URL,同样也是去重新请求。
    另外,我用过这个方法来刷新,效果跟URL相同;如下:
    var time = 10000;
    window.setInterval('CheckTime()',time);
    function CheckTime() 

     window.location.href="<%=request.getContextPath()%>/coments.do?method=toauditcoments";
    }
      

  9.   

    com.ruigao.its.bean.baseDao.AllComents(baseDao.java:327)
    327是哪一行??你这样的错误只能自己去打印出每次的变量,在ConnDB db=new ConnDB();下面打印一下这个db和rs信息,看看出错的时候,这两个对象是不是为空,感觉这个除了连接没获取到,好像没什么地方会出现空指针了
      

  10.   

    http://bugs.mysql.com/bug.php?id=41484