2016-11-21 3 views
0

ein Problem Abrufen von Nachrichten von Datenbank zu haben, finden Sie mein Code:Abrufen von Daten aus hsqldb mit jsp und Servlets

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 in meinem Servlet:

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> 

Stapelüberwachung:

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) 

Ich bin neu in jsp und Servlets so dass ich nicht sicher bin, wo ich falsch gegangen. Jede Hilfe wäre willkommen.

Antwort

0

Innerhalb des foreach Fragments sollten Sie auf das Element als user verweisen, das ist der Name, der im var Attribut angegeben wird. Ebenfalls höchstwahrscheinlich sind die Felder der User Klasse name und address statt oder theName und theAddress.

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

Benutzer zu Benutzer geändert und es hat funktioniert. Ich weiß nicht, wie ich das vermisst habe. Vielen Dank!! – Paul

+0

Großartig. Möglicherweise möchten Sie auch überprüfen, wie Sie das Schließen der Verbindung und der Anweisung im Falle von Ausnahmen durchführen, da möglicherweise Ressourcen verloren gehen. Werfen Sie einen Blick auf http://stackoverflow.com/questions/11160557/java-jdbc-best-design-pattern-to-close-database-connection-when-exception-occ. – cjungel

+0

Ich werde jetzt nachsehen, danke für deine Hilfe! – Paul

Verwandte Themen