【问题标题】:Servlet to access DAO and invoke a working method (java) [duplicate]Servlet 访问 DAO 并调用工作方法(java)[重复]
【发布时间】:2016-03-06 14:21:21
【问题描述】:

我无法让 servlet 在我的动态 Web 项目中工作。我的 StudentUtils 类中有一个方法可以正常工作。它连接到我的 sql 数据库并将内容打印到控制台。见下文。

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 中的方法填充这个数组列表,我们将不胜感激。

【问题讨论】:

  • 不应该 getAllStudents() 返回列表吗?

标签: java servlets arraylist dao


【解决方案1】:

您的方法getAllStudents() 应该可能返回List&lt;Student&gt;。另外,请注意,在您当前的实现中,List 是在循环内创建的,并在每次迭代中重新创建它,这可能不是您想要的行为。您应该在循环之外创建它。

除此之外,您可能应该在使用 Connection 之后关闭您的资源。

【讨论】:

  • 谢谢。我已将 List 添加到我的方法中并设置了返回值。我还将列表移到了循环之外。我需要向我的 servlet 添加什么来迭代这个 is/run 方法?
  • 当我这样做并运行 servlet 时,我从 DAO (StudentUtils) 获得了 System.out.println("could not add") 异常。
  • 然后使用e.printStackTrace()找出抛出了什么异常
  • 我在 getAllStudents() 处得到空指针异常。它还显示了一个空数组列表,因为我也将它打印到控制台。
猜你喜欢
  • 2014-09-19
  • 2023-03-20
  • 2021-06-24
  • 2014-09-06
  • 2012-06-02
  • 2011-03-02
  • 1970-01-01
  • 2020-07-27
  • 2017-12-12
相关资源
最近更新 更多