Arraylist +数据库+ servlet + DAO

时间:2011-11-05 14:15:37

标签: java arrays jsp foreach dao

您好我是hava的新手,我在JSP页面中从arraylist查看记录时遇到问题, 每当我加载页面,我得到: [content.animalBean@1e8614a,content.animalBean @ 14b52aa,content.animalBean @ 2026f3,content.animalBean @ dd20b6,content.animalBean @ 18eb00c] 1这不是数据库记录 这是我的代码: selectAnimalServlet:

package content;

import java.util.Iterator;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class selectAnimalServlet extends HttpServlet {

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

try
{       

    List<animalBean> beans = DAO.selectListAnimal(); 
    request.setAttribute("beans", beans); 
    request.getRequestDispatcher("checkAnimal.jsp").forward(request, response); 


}

catch (Throwable theException)      
{
     System.out.println(theException); 
}
       }
    }

AnimalBean:

package content;

public class animalBean {

    private String animalName;
    private String animalDob;
    private String animalGender;
    private String animalSource;
    private String animalBreed;
    private String animalRemark;

    public String getAnimalName() {return animalName;}
    public String getAnimalDob() {return animalDob;}
    public String getAnimalGender() {return animalGender;}
    public String getAnimalSource() {return animalSource;}
    public String getAnimalBreed() {return animalBreed;}
    public String getAnimalRemark() {return animalRemark;}

    public void setAnimalName(String animalName) {this.animalName = animalName;}
    public void setAnimalDob(String animalDob) {this.animalDob = animalDob;}
    public void setAnimalGender(String animalGender) {this.animalGender = animalGender;}
    public void setAnimalSource(String animalSource) {this.animalSource = animalSource;}
    public void setAnimalBreed(String animalBreed) {this.animalBreed = animalBreed;}
    public void setAnimalRemark(String animalRemark) {this.animalRemark = animalRemark;}


}

DAO课程:

package content;


import java.sql.*;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;


public class DAO    
{
   static Connection currentCon = null;
   static ResultSet rs = null;  



   public static loginAuth login(loginAuth bean) {

      //preparing some objects for connection 
      Statement stmt = null;    

      String username = bean.getUsername();    
      String password = bean.getPassword();   

      String searchQuery =
            "select * from user where username='"
                     + username
                     + "' AND password='"
                     + password
                     + "'";

   // "System.out.println" prints in the console; Normally used to trace the process
   System.out.println("Your user name is " + username);          
   System.out.println("Your password is " + password);
   System.out.println("Query: "+searchQuery);

   try 
   {
      //connect to DB 
      currentCon = dbConnection.getConnection();
      stmt=currentCon.createStatement();
      rs = stmt.executeQuery(searchQuery);          
      boolean more = rs.next();

      // if user does not exist set the isValid variable to false
      if (!more) 
      {
         System.out.println("Sorry, you are not a registered user! Please sign up first");
         bean.setValid(false);
      } 

      //if user exists set the isValid variable to true
      else if (more) 
      {
         String firstName = rs.getString("FirstName");
         String lastName = rs.getString("LastName");

         System.out.println("Welcome " + firstName);
         bean.setfname(firstName);
         bean.setlname(lastName);
         bean.setValid(true);
      }
   } 

   catch (Exception ex) 
   {
      System.out.println("Log In failed: An Exception has occurred! " + ex);
   } 

   //some exception handling
   finally 
   {
      if (rs != null)   {
         try {
            rs.close();
         } catch (Exception e) {}
            rs = null;
         }

      if (stmt != null) {
         try {
            stmt.close();
         } catch (Exception e) {}
            stmt = null;
         }

      if (currentCon != null) {
         try {
            currentCon.close();
         } catch (Exception e) {
         }

         currentCon = null;
      }
   }

return bean;

   }    




   public static List<animalBean> selectListAnimal() throws SQLException {

       Statement stmt = null;
       List<animalBean> beans = new ArrayList<animalBean>(); 
       try { 
           currentCon = dbConnection.getConnection();
           String animalSearchQuery = "select a.aname ,a.dob,  a.gender , a.source, s.sname, a.remark from animal as a , specie as s where a.specie_id = s.specie_id and a.available ='y'";        
           stmt=currentCon.createStatement(); 
           rs = stmt.executeQuery(animalSearchQuery);       

           while (rs.next()) { 
               animalBean bean = new animalBean();
               bean.setAnimalName(rs.getString("aname"));
               bean.setAnimalDob(rs.getString("dob"));
               bean.setAnimalGender(rs.getString("gender"));
               bean.setAnimalSource(rs.getString("source"));
               bean.setAnimalBreed(rs.getString("sname"));
               bean.setAnimalRemark(rs.getString("remark"));
               beans.add(bean);
                 }


       } finally { 
           if (rs != null) try { rs.close(); } catch (SQLException logOrIgnore) {} 
           if (stmt != null) try { stmt.close(); } catch (SQLException logOrIgnore) {} 
           if (currentCon != null) try { currentCon.close(); } catch (SQLException logOrIgnore) {} 
       } 
       return beans; 


       }



   }

并持续JSP页面animalCheck.jsp:

<%@ page language="java" 
         contentType="text/html; charset=windows-1256"
         pageEncoding="windows-1256"
         import="content.animalBean"
         import="content.DAO"




   %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1256">
<title>Animal list</title>
<link rel="stylesheet"
      href="./css/styles.css"
      type="text/css"/>
</head>
<body>
<table class="title">
  <tr><th>Zoo keeper</th></tr>
</table>


<h1>Animal list</h1>
 <center>
 <table width="100 % " id='table1'  border="1" cellspacing="2" cellpadding="2"> 
    <tr class="tab-highlighted-2"> 
        <td class="tab-highlighted-2" width="15"> 
          <div align="left">Name</div> 
        </td> 
        <td class="tab-highlighted-2" width="20"> 
          <div align="left">Age</div> 
        </td>
         <td class="tab-highlighted-2" width="15"> 
          <div align="left">Gender</div> 
        </td>
        <td class="tab-highlighted-2" width="15"> 
          <div align="left">Status</div> 
        </td>    
        <td class="tab-highlighted-2" width="15"> 
          <div align="left">Breed</div> 
        </td>  
        <td class="tab-highlighted-2" width="15"> 
          <div align="left">Remarks</div> 
        </td> 

    </tr> 

    <c:forEach items="${beans}" var="view"> 
        <tr> 
            <td>${view.animalName} </td> 
            <td>${view.animalDob}</td>
            <td>${view.animalGender}</td>
            <td>${view.animalSource}</td>
            <td>${view.animalBreed}</td>
            <td>${view.animalRemark}</td>

        </tr> 
    </c:forEach> 
</table> 

         </center>

</body></html>

自从2天以来,我一直在讨论这个问题,我检查了许多网站并遵循了许多指南,但仍然没有对我有用:( 我感谢任何帮助

2 个答案:

答案 0 :(得分:1)

您忘记声明JSTL核心taglib。将以下内容添加到JSP的顶部:

<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

另见:


对于具体问题

无关,您的代码中还有其他一些问题:

  • 您永远不应将数据库资源声明为static。这不是线程安全的,并且容易出现资源泄漏。在执行SQL查询的同一方法块中声明它们。
  • login()方法中有一个SQL注入漏洞。 Use PreparedStatement
  • 如果您没有使用任何 scriptlet ,则无需在JSP中使用@page import
  • 类名是supposed,以大写字母开头。

答案 1 :(得分:0)

你可以在页面上尝试这样的事吗

 <% List<animalBean> animals = (animalBean)request.getAttribute("beans"); %> 

然后更改你的c:forEach标签,将其指向动物而不是豆类?