我从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
并提供将方法addCar添加到此servlet,但这不可能是正确的。 addCar方法必须在DAO类中(在Database文件夹中)。
我不知道这是否令人困惑?如何将正在进行数据传输的try-catch移动到另一个类?
答案 0 :(得分:1)
错误消息说它正在MainServlet类中寻找一个名为addCar
的方法(当然它没有找到它)。
您需要指定addCar方法的位置。 servlet需要引用DAO对象,servlet代码需要调用DAO对象上的方法。
假设这个DAO没有状态,你可以在servlet中为它创建一个实例变量,如:
private Database.DAO dao = new Database.DAO();
并从doPost方法调用addCar:
dao.addCar(newCar);