struts2连接MySQL出现HTTP Status 500 问题
packagefunction;importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql...
package function;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class insert {
Connection con=null;
Statement st;
public String execute(){
try {
Class.forName("com.mysql.jdbc.Driver");// 加载Mysql数据驱动
con = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/myuser", "root", "root");// 创建数据连接
} catch (Exception e) {
System.out.println("数据库连接失败" + e.getMessage());
}
try {
String sql = "INSERT INTO staff(name, age, sex,address, depart, worklen,wage)"
+ " VALUES ('Tom3', 32, 'M', 'china','Personnel','3','3000')"; // 插入数据的sql语句
st = (Statement) con.createStatement(); // 创建用于执行静态sql语句的Statement对象
int count = st.executeUpdate(sql); // 执行插入操作的sql语句,并返回插入数据的个数
System.out.println("向staff表中插入 " + count + " 条数据"); //输出插入操作的处理结果
con.close(); //关闭数据库连接
} catch (SQLException e) {
System.out.println("插入数据失败" + e.getMessage());
}
return "success";
}
}
这是我的action函数,单独测试该文件时能正常向数据库内插入数据
但是一旦利用struts2,通过点击index.jsp的提交按钮调用action函数则出错:function.insert.execute(insert.java:23)
即语句: st = (Statement) con.createStatement(); // 创建用于执行静态sql语句的Statement对象
为什么?????
财富值不多 请见谅
我在debug的过程中发现运行到st = (Statement) con.createStatement();时,con是空指针,这是为什么?? 展开
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class insert {
Connection con=null;
Statement st;
public String execute(){
try {
Class.forName("com.mysql.jdbc.Driver");// 加载Mysql数据驱动
con = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/myuser", "root", "root");// 创建数据连接
} catch (Exception e) {
System.out.println("数据库连接失败" + e.getMessage());
}
try {
String sql = "INSERT INTO staff(name, age, sex,address, depart, worklen,wage)"
+ " VALUES ('Tom3', 32, 'M', 'china','Personnel','3','3000')"; // 插入数据的sql语句
st = (Statement) con.createStatement(); // 创建用于执行静态sql语句的Statement对象
int count = st.executeUpdate(sql); // 执行插入操作的sql语句,并返回插入数据的个数
System.out.println("向staff表中插入 " + count + " 条数据"); //输出插入操作的处理结果
con.close(); //关闭数据库连接
} catch (SQLException e) {
System.out.println("插入数据失败" + e.getMessage());
}
return "success";
}
}
这是我的action函数,单独测试该文件时能正常向数据库内插入数据
但是一旦利用struts2,通过点击index.jsp的提交按钮调用action函数则出错:function.insert.execute(insert.java:23)
即语句: st = (Statement) con.createStatement(); // 创建用于执行静态sql语句的Statement对象
为什么?????
财富值不多 请见谅
我在debug的过程中发现运行到st = (Statement) con.createStatement();时,con是空指针,这是为什么?? 展开
展开全部
你的数据库连接函数写在Action中,这是dao跟数据库交互的部分。Action中不允许出现业务逻辑。
你说的错误在 st = (Statement) con.createStatement(); 搞错了,上面都说了调用action函数则出错:function.insert.execute(insert.java:23),执行插入的时候错了。语法错误,没试过插入会不会返回插入数据的条数,可以去掉试试。excute执行方法不止一个好像。错在int count = st.executeUpdate(sql); 你用debug模式运行下,打断点试试。
你说的错误在 st = (Statement) con.createStatement(); 搞错了,上面都说了调用action函数则出错:function.insert.execute(insert.java:23),执行插入的时候错了。语法错误,没试过插入会不会返回插入数据的条数,可以去掉试试。excute执行方法不止一个好像。错在int count = st.executeUpdate(sql); 你用debug模式运行下,打断点试试。
追问
那么数据库连接函数该写哪呢?Action函数的内容的限制有哪些?我其实没有一点JavaWeb基础,但是老师要求做一个小实验,要求利用struts2写个能对数据库进行增删查等操作的小程序。
追答
这个很简单啊,你应该知道Action,po,service,dao这些吧。你可以去查一下java的JDBC部分代码怎么写,而dao,service,action就是方法的调用而已啊,action中定义一个service的实体,这样就可以调用service里的方法了,service里面定义一个dao的实体,service中不就可以调用dao中的方法吗,dao再和数据库交互,dao中写的就是jdbc的代码。你要是不会就加我1169095671,百度知道是学不到很具体的东西的。
展开全部
把错误贴出来看看。。。估计jsp有问题。。。。
追问
message
description The server encountered an internal error () that
prevented it from fulfilling this request.
exception
java.lang.NullPointerException
function.insert.execute(insert.java:23)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我测试通过了呀,所以应该不是这里的错误了
追问
你是单独测试这个文件么?单独测试时确实没问题,但是利用struts2搭建好框架,设置好struts2.xml和web.xml,利用index.jsp访问数据库的时候就出错
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
是不是数据库没开启服务?
追问
应该不是这个问题,因为我单独测试这个文件的时候没问题。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询