2016-11-21 3 views
0

Имея проблемы с извлечением элементов из базы данных, следующий мой код:Извлечение данных из HSQLDB с использованием JSP и сервлетов

UserDAO.java

public class UserDAO { 

    public static Connection getConnection() { 
     Connection con = null; 
     try { 
      Class.forName("org.hsqldb.jdbcDriver"); 
      con = DriverManager.getConnection(
       "jdbc:hsqldb:hsql://localhost/oneDB", "sa", ""); 
     } catch(Exception e) { 
      e.printStackTrace(); 
     } 
     return con; 
    } 

    public static List<User> list() { 
     try{ 
      Connection connection = getConnection(); 

      List<User> users = new ArrayList<User>(); 

      try { 
       PreparedStatement statement = connection.prepareStatement("SELECT * FROM user"); 
       ResultSet rs = statement.executeQuery(); 

       while (rs.next()) { 
        int id = rs.getInt("id"); 
        String name = rs.getString("name"); 
        String address = rs.getString("address"); 
        User user = new User(id, name, address); 
        System.out.println("user:" + user.getTheName()); 
        users.add(user); 
       } 
       statement.close(); 
       connection.close(); 
      } catch (SQLException e) { 
       e.printStackTrace(); 
      } 

      return users; 
     } catch (Exception e) { 
      e.printStackTrace(); 
      return null; 
     } 
    } 
} 

doGet в моем сервлета:

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
     List<User> users = UserDAO.list(); 
     request.setAttribute("users", users); 
     request.getRequestDispatcher("showUser.jsp").forward(request, response); 
} 

showUser.jsp

<c:forEach items="${users}" var="user"> 
     Name: <c:out value="${users.theName}" /> <br> 
     Address: <c:out value="${users.theAddress}" /><br> 
</c:forEach> 

Стек след:

root cause 
java.lang.NumberFormatException: For input string: "name" 
    java.lang.NumberFormatException.forInputString(Unknown Source) 
    java.lang.Integer.parseInt(Unknown Source) 
    java.lang.Integer.parseInt(Unknown Source) 
    javax.el.ListELResolver.coerce(ListELResolver.java:157) 
    javax.el.ListELResolver.getValue(ListELResolver.java:70) 
    org.apache.jasper.el.JasperELResolver.getValue(JasperELResolver.java:110) 
    org.apache.el.parser.AstValue.getValue(AstValue.java:169) 
    org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:184) 
    org.apache.jasper.runtime.PageContextImpl.proprietaryEvaluate(PageContextImpl.java:943) 
    org.apache.jsp.showUser_jsp._jspx_meth_c_005fout_005f0(showUser_jsp.java:217) 
    org.apache.jsp.showUser_jsp._jspx_meth_c_005fforEach_005f0(showUser_jsp.java:178) 
    org.apache.jsp.showUser_jsp._jspService(showUser_jsp.java:134) 
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:729) 
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:438) 
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:396) 
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:340) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:729) 
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 
    controllers.GetUserServlet.doGet(GetUserServlet.java:37) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:622) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:729) 
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 

Я новичок в JSP и сервлетов, поэтому я не знаю, где я не так. Любая помощь будет оценена по достоинству.

ответ

0

Внутри фрагмента foreach вы должны обратиться к элементу как user, который является именем, указанным в атрибуте var. Также, скорее всего, поля класса User составляют name и address или theName и theAddress.

<c:forEach items="${users}" var="user"> 
     Name: <c:out value="${user.name}" /> <br> 
     Address: <c:out value="${user.address}" /><br> 
</c:forEach> 
+0

Отредактировал пользователей, и это сработало. Я не знаю, как я это пропустил. Спасибо!! – Paul

+0

Отлично. Вы также можете проверить, как вы обрабатываете закрытие соединения и оператора в случае исключений, поскольку вы можете утечка ресурсов. Взгляните на http://stackoverflow.com/questions/11160557/java-jdbc-best-design-pattern-to-close-database-connection-when-exception-occ. – cjungel

+0

Я сейчас загляну в него, спасибо за помощь! – Paul

Смежные вопросы