使用struts2框架访问mysql出现HTTP Status 500问题
经过测试发现问题出在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.
相关推荐
基于JSP+Struts2+Spring+MySQL的宠物网站开发实战与架构解析
Java Web开发是构建企业级应用的核心技术体系,其核心在于理解MVC架构模式如何将用户请求、业务逻辑与数据持久化分离。通过依赖注入、面向切面编程等原理,Spring框架实现了组件解耦与事务管理,而Struts2则通过拦截器机制集中处理请求控制。这些技术的组合为构建可维护、可扩展的Web应用提供了坚实基础,尤其在内容管理、电商平台及社区论坛等需要动态数据交互的场景中广泛应用。本文以宠物社区网站为例,深入探讨了如何整合JSP、Struts2、Spring与MySQL这一经典技术栈,并重点解析了用户认证安全与
Java Web毕业设计实战:基于JSP+Struts2+Spring+MySQL的宠物网站开发
Java Web开发是构建企业级应用的核心技术体系,其核心在于通过MVC架构实现业务逻辑、数据与展示的分离。Spring框架通过控制反转和依赖注入管理对象生命周期,实现组件解耦;Struts2作为控制器负责请求分发与处理;JSP则承担视图层渲染,结合MySQL完成数据持久化。这种分层架构的价值在于提升代码可维护性、可扩展性,是理解Web应用从请求到响应完整闭环的经典实践。在宠物领养、电商等业务场景中,此类技术组合能有效支撑用户管理、商品信息CRUD、订单流程等核心功能。本文以宠物网站为例,详细解析如何整合S
基于SSH的百货中心供应链管理系统设计与实现
JavaWeb开发中,分层架构与ORM映射是构建企业级系统的基石。SSH框架(Struts2、Spring、Hibernate)通过表现层、业务层与持久层的清晰分离,系统解决了传统JDBC代码冗长、事务管理混乱的问题。Spring负责对象依赖注入与事务控制,Hibernate通过ORM将数据表与实体类映射,大幅提升开发效率。这种组合不仅增强了业务代码的可维护性,也为后续迁移Spring Boot等现代化框架打下坚实基础。在百货中心这类场景中,供应链管理涉及采购、库存、销售、结算等多个环节,SSH框架能有效支
Ubuntu 14.04 手动部署 LAMP 栈:Apache MySQL PHP 底层原理实战
LAMP 是 Web 服务最经典的开源技术栈,其核心在于 Linux 操作系统基座、Apache HTTP 服务器、MySQL 关系型数据库与 PHP 脚本解释器的协同机制。理解 Apache 的 MPM 多路处理模型、MySQL 的 socket/TCP 连接差异、PHP 的 SAPI 运行模式(如 mod_php),是掌握 Web 服务底层逻辑的关键。这类知识不仅支撑传统网站运维,更直接影响 ThinkPHP 等框架的部署调试、CVE 漏洞复现及老旧生产环境排障。本文以 Ubuntu 14.04 为教学
基于SSM框架的汽车售后服务管理系统:从设计到部署的全链路实践
企业级Web应用开发通常围绕B/S架构展开,其核心在于通过浏览器与服务器的高效交互,实现业务流程的线上化与数据管理。SSM(Spring+SpringMVC+MyBatis)作为经典的Java Web开发框架组合,通过Spring的IOC容器管理组件依赖、AOP处理横切关注点,SpringMVC提供清晰的MVC分层与请求分发,而MyBatis则以其半自动化ORM特性,在对象关系映射与复杂SQL灵活控制之间取得平衡,尤其擅长处理多表关联查询与报表统计。这种技术栈的价值在于能够稳健地支撑包含复杂状态流转与数据一


Web 开发

