2016-03-06 17 views
0

我在獲取servlet以在我的動態Web項目中工作時遇到問題。我在我的StudentUtils類中有一個工作正常的方法。它連接到我的sql數據庫並打印內容到控制檯。見下文。訪問DAO並調用工作方法的Servlet(java)

public class StudentUtils { 

public static void main (String[] args) throws Exception { 

getAllStudents(); 

} 

public static void getAllStudents() throws Exception { 

    try { 

     Connection dbase = getConnection(); 
     String mysql = "select * from course"; 

     PreparedStatement output = dbase.prepareStatement(mysql); 

     ResultSet rs = output.executeQuery(); 

     while(rs.next()) { 

      ArrayList <Student> list = new ArrayList<Student>(); 

      Student s = new Student(null, null, null); 

      s.setStudentID(result.getString(1)); 
      s.setStudentName(result.getString(2)); 
      s.setStudentLevel(result.getString(3)); 

      list.add(s); 

      System.out.println(s.toString()); 

      System.out.println("added"); } } 

    catch(Exception e) { 

      System.out.println("could not add"); 
    } 

此方法時運行打印每個學生控制檯屏幕和消息added的。但是,我需要創建一個運行此方法的servlet。

到目前爲止,在我的servlet中,我創建了一個我的dao(studentUtils)實例和一個空數組列表,但隨後我試圖使用dao中的方法填充數組列表。見下文。

public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 

    StudentUtils studetUtils = new StudentUtils(); 
    ArrayList <Student> list = new ArrayList<Student>(); 

任何幫助讓我的servlet填充這個數組列表使用我在dao的方法將不勝感激。

+1

不應該getAllStudents()返回列表? – OldProgrammer

回答

0

您的方法getAllStudents()應該可能返回List<Student>。另外請注意,在您當前的實現中,List在循環內部創建,在每次迭代中重新創建它,這可能不是您想要的行爲。你應該在循環之外創建它。

除此之外,您應該在使用它們之後關閉像Connection這樣的資源。

+0

謝謝。我已將List 添加到我的方法並設置了返回。我也將列表移到了循環之外。我需要添加到我的servlet迭代這是/運行該方法? – JavaNewbie

+0

@JavaNewbie:你可以在你的servlet中調用'List list = StudentUtils.getAllStudents()',然後輸出一些東西或(更好地)使用JSP,如重複問題中所述。 – user140547

+0

當我這樣做並運行servlet時,我從DAO(StudentUtils)中得到'System.out.println(「could not add」)異常。 – JavaNewbie