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)
<%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)
首先根据这信息,确定是哪行出现的空指针。
然后在去研究是否有空对象调用方法的可能。
用完rs的时候,最好也关闭了!
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。
关注Java
即为出错的行,代码已经贴出。
这里面应用的dao.AllComents(sql);
也已经贴在上面,在这个dao.AllComents(sqll)方法中有调用db.close();方法,释放资源。close方法也已经贴出。一次关闭了,rs,stat,conn。
response.setHeader("Refresh", "3; URL=重新指定个请求URL");
另外,我用过这个方法来刷新,效果跟URL相同;如下:
var time = 10000;
window.setInterval('CheckTime()',time);
function CheckTime()
{
window.location.href="<%=request.getContextPath()%>/coments.do?method=toauditcoments";
}
327是哪一行??你这样的错误只能自己去打印出每次的变量,在ConnDB db=new ConnDB();下面打印一下这个db和rs信息,看看出错的时候,这两个对象是不是为空,感觉这个除了连接没获取到,好像没什么地方会出现空指针了