使用struts2框架访问mysql出现HTTP Status 500问题

cqq273452415 2014-09-28 11:13:14
web.xml struts.xml设置均无问题
经过测试发现问题出在test.java文件中query()函数的 st = (Statement) conn.createStatement();
但是单独测试test.java文件没问题出现,求解

test文件:
package operation;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class test {
static Connection conn;
static Statement st;
public static Connection getConnection() {
Connection con = null; //创建用于连接数据库的Connection对象
try {
Class.forName("com.mysql.jdbc.Driver");// 加载Mysql数据驱动
con = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/bookdb", "root", "root");// 创建数据连接

} catch (Exception e) {
System.out.println("数据库连接失败" + e.getMessage());
}
return con; //返回所建立的数据库连接
}
public static String query(){
conn = getConnection(); //同样先要获取连接,即连接到数据库
try {
String sql = "select * from author"; // 查询数据的sql语句
st = (Statement) conn.createStatement(); //创建用于执行静态sql语句的Statement对象,st属局部变量

ResultSet rs = st.executeQuery(sql); //执行sql查询语句,返回查询数据的结果集
System.out.println("最后的查询结果为:");
while (rs.next()) { // 判断是否还有下一个数据

// 根据字段名获取相应的值
String name = rs.getString("Name");
int age = rs.getInt("Age");
String country = rs.getString("Country");

//输出查到的记录的各个字段的值
System.out.println(name + " " + age + " " + country );
}
conn.close(); //关闭数据库连接

} catch (SQLException e) {
System.out.println("查询数据失败");
}
return "QResult";
}
}

错误信息:
HTTP Status 500 -

--------------------------------------------------------------------------------

type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

java.lang.NullPointerException
operation.test.query(test.java:26)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
java.lang.reflect.Method.invoke(Method.java:606)
com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:452)
com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:291)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:254)
com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:176)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:263)
org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:133)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:207)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:207)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:190)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:75)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:94)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:243)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:100)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:141)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:267)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:142)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:166)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:176)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:190)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:187)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:52)
org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:485)
org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:91)


note The full stack trace of the root cause is available in the Apache Tomcat/6.0.13 logs.

...全文
305 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
cqq273452415 2014-10-07
  • 打赏
  • 举报
回复
终于找到解决办法了,Window->Preferences->MyEclipse->Database Explorer->Database Drivers->DB Browser打开DB Browser窗口,空白处右键建立New Database Connection Driver,设置完后能通过DB Browser查看你的数据库,并将Mysql的jar包拷到tomcat的lib文件夹下就不会再出现ClassNotFoundException异常了
cqq273452415 2014-10-05
  • 打赏
  • 举报
回复
引用 10 楼 Gemerl 的回复:
问题出在这句哦。。。 写成这样试试看。。 static{ Class.forName("com.mysql.jdbc.Driver");// 加载Mysql数据驱动 } 把这个加载进来。。具体为什么要这样做我也不是很明白,求大神解释。。
static{ try { Class.forName("com.mysql.jdbc.Driver");// 加载Mysql数据驱动 } catch (Exception e) { e.printStackTrace(); System.out.println("驱动加载失败"); } } 结果报错: java.lang.ClassNotFoundException: com.mysql.jdbc.Driver at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1358) at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1204) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Class.java:190) at operation.test.<clinit>(test.java:12)
cqq273452415 2014-10-05
  • 打赏
  • 举报
回复
我想请教一下如何在Myeclipse中建立运用struts2框架的Java Web项目,我得到一份别人的工程代码,导入后能正常使用;但我在本机新建一个一模一样的工程,建立一样的文件,然而我建的工程任然不好用。 这是我的建立过程: 新建Web Project; 右键项目->Myeclipse->Project Facets->Install Apache Struts (2.x) Facet; 新建action包,编写action层,新建dao包,编写dao层; 修改web.xml struts.xml index.jsp; 右键JRE System Library->Build Path->Configure Build path->Add External jars,选择mysql-connector-java-5.1.13-bin.jar 经过对比发现,别人给我的那个好使的工程,src包下还有一个META-INF包,WebRoot->WEB-INF->lib文件夹下有许多jar包,而我的lib文件夹却是空的,求指教
zy_think123 2014-10-03
  • 打赏
  • 举报
回复
引用 6 楼 cqq273452415 的回复:
[quote=引用 5 楼 zy353003874 的回复:] 空指针异常呀,你看看你的数据库驱动包导入正确没有,连接数据库用户名密码输入正确没有呀
应该没问题,因为我单独测试过test文件,能输出数据库中的内容,有人和我说“Action中不允许出现业务逻辑”,但是我还是不太理解。[/quote] 业务逻辑是在Service层中出现的,然后还有都说了报的是空指针异常,肯定是你的Connection对象没有取到呀
沟沟里的农民 2014-10-01
  • 打赏
  • 举报
回复
加载驱动修改成这个试试看: Class.forName("com.mysql.jdbc.Driver").newInstance();
Gemerl 2014-10-01
  • 打赏
  • 举报
回复
问题出在这句哦。。。 写成这样试试看。。 static{ Class.forName("com.mysql.jdbc.Driver");// 加载Mysql数据驱动 } 把这个加载进来。。具体为什么要这样做我也不是很明白,求大神解释。。
  • 打赏
  • 举报
回复
把Connection打印出来看看有没有实例对象。
airoba 2014-09-30
  • 打赏
  • 举报
回复
"com.microsoft.sqlserver.jdbc.SQLServerDriver";数据库驱动语句是这个吧
cqq273452415 2014-09-30
  • 打赏
  • 举报
回复
引用 5 楼 zy353003874 的回复:
空指针异常呀,你看看你的数据库驱动包导入正确没有,连接数据库用户名密码输入正确没有呀
应该没问题,因为我单独测试过test文件,能输出数据库中的内容,有人和我说“Action中不允许出现业务逻辑”,但是我还是不太理解。
zy_think123 2014-09-29
  • 打赏
  • 举报
回复
空指针异常呀,你看看你的数据库驱动包导入正确没有,连接数据库用户名密码输入正确没有呀
cqq273452415 2014-09-29
  • 打赏
  • 举报
回复
引用 1 楼 u012923029 的回复:
空引用。对象没取到。query()里出错了。
我才注意到当我利用index.jsp的提交按钮调用test文件内的query函数时提示:“数据库连接失败com.mysql.jdbc.Driver” 可是单独测试test.java时却没问题。这是为什么?
雪枫之尘 2014-09-28
  • 打赏
  • 举报
回复
空引用。对象没取到。query()里出错了。
zhaoxiaoyueyeu 2014-09-28
  • 打赏
  • 举报
回复
String sql = "select * from author"; // 查询数据的sql语句 建议这句中 * 改为要查的字段名,例如:name,country
yl784248831 2014-09-28
  • 打赏
  • 举报
回复
设置断点进行测试

81,092

社区成员

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

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