2014-01-24 59 views
1

我正在從JSP請求信息並通過Java Servlet將它們放入數據庫。我有這種(簡化的)Java Servlet。將一個servlet類拆分爲servlet和DAO類

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 ... 

,然後我就打電話addCar從Servlet的是這樣的:

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?

+2

怎麼辦你的意思是*它不工作*?你得到哪種錯誤或異常? –

+1

你得到什麼錯誤? –

+0

你的例子似乎是正確的,使用不同的包不是問題,但你需要將它導入Servlet – Teg

回答

1

錯誤信息是說它正在MainServlet類中尋找一個名爲addCar的方法(當然,它沒有找到它)。

您需要指定它應該在哪裏查找addCar方法。該servlet需要引用DAO對象,並且該servlet代碼需要調用DAO對象上的方法。

假設這個DAO也沒有狀態,就可以使一個實例變量它在servlet,如:

private Database.DAO dao = new Database.DAO(); 

和doPost方法調用它addCar:

dao.addCar(newCar); 
相關問題