我从 JSP 请求信息并通过 Java Servlet 将它们放入数据库。我有这种(简化的)Java Servlet。
protected void doPost(//parameters etc.){
String brand = request.getParameter("brand");
String model = request.getParameter("model");
CarBean newCar = new CarBean(brand, model);
try {
Connection con = ConnectionFactory.getInstance().getConnection();
PreparedStatement ps = con.prepareStatement("INSERT INTO Cars (brand, model)"
+ "VALUES (?, ?)";
ps.setString(1, newCar.getBrand());
ps.setString(2, newCar.getModel());
ps.executeUpdate();
ps.close();
} catch ... {
}
一切工作正常,但现在我想将此数据库连接分离到它自己的类。我想做一个只有三个数据库方法(添加、删除、编辑)的类。
我可以在不同包中的类中以某种方式使用 newCar 对象作为参数吗?我已经这样做了,但这不起作用。
public class DAO{
public void addCar(CarBean newCar) throws ServletException {
try {
Connection con = ConnectionFactory.getInstance().getConnection();
PreparedStatement ps = con.prepareStatement("INSERT INTO Cars (brand, model)"
+ "VALUES (?, ?)";
ps.setString(1, newCar.getBrand());
ps.setString(2, newCar.getModel());
ps.executeUpdate();
ps.close();
} catch (SQLException e) {
throw new ServletException(e);
}
...
public void deleteCar ...
public void editCar ...
然后我就从 Servlet 调用 addCar,如下所示:
protected void doPost(//parameters etc.){
String brand = request.getParameter("brand");
String model = request.getParameter("model");
CarBean newCar = new CarBean(brand, model);
addCar(newCar);
它说的是
cannot find symbol, symbol: method addCar(CarBean), location: class MainServlet
并提出为该 servlet 创建方法 addCar,但这不可能是正确的。该 addCar 方法必须位于 DAO 类中(位于数据库文件夹中)。
不知道这样说是不是很困惑?如何将正在进行数据传输的 try-catch 移动到另一个类?
最佳答案
错误消息表明它正在 MainServlet 类上查找名为 addCar
的方法(当然没有找到)。
您需要指定在哪里查找 addCar 方法。 servlet 需要引用 DAO 对象,并且 servlet 代码需要调用 DAO 对象上的方法。
假设这个 DAO 没有状态,您可以在 servlet 中为它创建一个实例变量,例如:
private Database.DAO dao = new Database.DAO();
并从 doPost 方法调用 addCar:
dao.addCar(newCar);
关于java - 将一个 servlet 类拆分为 servlet 和 DAO 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21337549/