struts问题---数据库连接正常 ,但方法执行不了,结果出现空指针异常 ,求解中。。。。。

时间:2022-05-01 08:19:20
有个问题请教一下 我用struts写了一个东西  数据库连接没问题  像登录、注册这些操作都能正常完成  可是用到查询数据库表的时候出现问题了 查询的方法名为public ArrayList queryUser() ArrayList下面出现黄色的波浪线  点到上面显示:ArrayList is a raw type. References to generic type ArrayList<E> should be 
 parameterized  我注意到这个方法根本执行不了 结果是出现了空指针异常java.lang.NullPointerException 不知道怎么解决 各位老大帮我分析一下

21 个解决方案

#1


黄色波浪线是警告的意思,是说你没有使用泛型结构。这个可以不用管。
主要的原因是空指针异常,根据提示异常的行号,对应去找,通过debug方式看看那个对象是null。然后进行了对象调用方法。

#2


设断点 debug调试 看哪里出现了空

#3


不一定是这个方法的错误,仔细看看报错信息,或者调用这个方法的代码

#4


报错信息如下
严重: Servlet.service() for servlet jsp threw exception
java.lang.NullPointerException
at org.apache.jsp.query_005fall_jsp._jspService(query_005fall_jsp.java:114)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:393)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at encoding.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:22)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:261)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:581)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Unknown Source)

#5


把代码贴出来看一下, 和黄色线没有任何关系。

#6


这个是我的查询方法,但是根本执行不了

public ArrayList queryUser()
{
ArrayList stus = new ArrayList();
String sql = "select * from kinglds.dbo.news_information";

try
{
this.initConnection();
ResultSet rs = conn.createStatement(1004,1007).executeQuery(sql);
while(rs.next())
{
ConnectionInforationForm cif = new ConnectionInforationForm ();
cif.setId(rs.getString("id"));
cif.setUsername(rs.getString("username"));
cif.setTitle(rs.getString("title"));
cif.setType(rs.getString("type"));
cif.setContent(rs.getString("content"));
cif.setUpdatetime(rs.getString("updatetime"));
stus.add(cif);

}
}
catch(Exception ex)
{
ex.printStackTrace();
}
finally
{
this.closeConnection();
}
return stus;
}

#7


1.打断点调试一下  
看是哪里没有取到值

2.把sql放到数据库执行一下 看有没有数据 

3.query_005fall_jsp.java:114 到编译后的页面文件里看下这个文件 114行 检查下

#8


找到query_005fall_jsp.java这个文件(Tomcat5.0----work-----Catalina-----localhost----项目名称),看看114行代码,114行报的空指针

#9


这个警告和空指针异常没有关系 
好象在几点几以后 就引入了泛式的概念 
简单的说 就是 将 ArrayList stus = new ArrayList();
改为 ArrayList<被储存的数据类型> stus = new ArrayList<被储存的数据类型>();
如: ArrayList<String> stus = new ArrayList<String>();

#10


java.lang.NullPointerException
at org.apache.jsp.query_005fall_jsp._jspService(query_005fall_jsp.java:114)

这句很重要,好好看看114行怎么写的,可以打印出变量值看看。
实在不行你把这段代码发出来。

#11


你这问题好像是出现在jsp页面上的,去检查哈页面  

#12


根本找不到query_005fall_jsp.java这个文件啊  这个文件不是我写的。。。。

#13


报异常的时候  经常出现一些莫名其妙的文件名  根本找不到的

#14


query_005fall.jsp 114行看看

#15


可能是jsp写得有问题 仔细检查下你写的jsp

#16


查看jsp页面

#17


看看你的action中怎么传参数的,jsp页面怎么接收参数的,应该是参数传递时的错误。jsp页面没接收到参数。

#18


  一步一步调是最好的解决办法。。

#19


id是数据库自增的,但是为什么会没有值啊,郁闷
那位帮帮忙啊

#20



这个是根据jsp页面自动生成的。在eclipse里面找不到,你用windows文件搜索找一下
引用 12 楼 heitong123 的回复:
根本找不到query_005fall_jsp.java这个文件啊  这个文件不是我写的。。。。

#21


at org.apache.jsp.query_005fall_jsp._jspService(query_005fall_jsp.java:114)
搜索这个文件,看看你用的方法哪里用到114行的变量了

#1


黄色波浪线是警告的意思,是说你没有使用泛型结构。这个可以不用管。
主要的原因是空指针异常,根据提示异常的行号,对应去找,通过debug方式看看那个对象是null。然后进行了对象调用方法。

#2


设断点 debug调试 看哪里出现了空

#3


不一定是这个方法的错误,仔细看看报错信息,或者调用这个方法的代码

#4


报错信息如下
严重: Servlet.service() for servlet jsp threw exception
java.lang.NullPointerException
at org.apache.jsp.query_005fall_jsp._jspService(query_005fall_jsp.java:114)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:393)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at encoding.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:22)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:261)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:581)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Unknown Source)

#5


把代码贴出来看一下, 和黄色线没有任何关系。

#6


这个是我的查询方法,但是根本执行不了

public ArrayList queryUser()
{
ArrayList stus = new ArrayList();
String sql = "select * from kinglds.dbo.news_information";

try
{
this.initConnection();
ResultSet rs = conn.createStatement(1004,1007).executeQuery(sql);
while(rs.next())
{
ConnectionInforationForm cif = new ConnectionInforationForm ();
cif.setId(rs.getString("id"));
cif.setUsername(rs.getString("username"));
cif.setTitle(rs.getString("title"));
cif.setType(rs.getString("type"));
cif.setContent(rs.getString("content"));
cif.setUpdatetime(rs.getString("updatetime"));
stus.add(cif);

}
}
catch(Exception ex)
{
ex.printStackTrace();
}
finally
{
this.closeConnection();
}
return stus;
}

#7


1.打断点调试一下  
看是哪里没有取到值

2.把sql放到数据库执行一下 看有没有数据 

3.query_005fall_jsp.java:114 到编译后的页面文件里看下这个文件 114行 检查下

#8


找到query_005fall_jsp.java这个文件(Tomcat5.0----work-----Catalina-----localhost----项目名称),看看114行代码,114行报的空指针

#9


这个警告和空指针异常没有关系 
好象在几点几以后 就引入了泛式的概念 
简单的说 就是 将 ArrayList stus = new ArrayList();
改为 ArrayList<被储存的数据类型> stus = new ArrayList<被储存的数据类型>();
如: ArrayList<String> stus = new ArrayList<String>();

#10


java.lang.NullPointerException
at org.apache.jsp.query_005fall_jsp._jspService(query_005fall_jsp.java:114)

这句很重要,好好看看114行怎么写的,可以打印出变量值看看。
实在不行你把这段代码发出来。

#11


你这问题好像是出现在jsp页面上的,去检查哈页面  

#12


根本找不到query_005fall_jsp.java这个文件啊  这个文件不是我写的。。。。

#13


报异常的时候  经常出现一些莫名其妙的文件名  根本找不到的

#14


query_005fall.jsp 114行看看

#15


可能是jsp写得有问题 仔细检查下你写的jsp

#16


查看jsp页面

#17


看看你的action中怎么传参数的,jsp页面怎么接收参数的,应该是参数传递时的错误。jsp页面没接收到参数。

#18


  一步一步调是最好的解决办法。。

#19


id是数据库自增的,但是为什么会没有值啊,郁闷
那位帮帮忙啊

#20



这个是根据jsp页面自动生成的。在eclipse里面找不到,你用windows文件搜索找一下
引用 12 楼 heitong123 的回复:
根本找不到query_005fall_jsp.java这个文件啊  这个文件不是我写的。。。。

#21


at org.apache.jsp.query_005fall_jsp._jspService(query_005fall_jsp.java:114)
搜索这个文件,看看你用的方法哪里用到114行的变量了