2016-07-08 77 views
-1

MainServ.java无法使用JSTL

package servs.com; 

import java.io.IOException; 
import java.io.PrintWriter; 
import java.sql.Connection; 
import java.sql.DriverManager; 
import java.sql.ResultSet; 
import java.sql.SQLException; 
import java.sql.Statement; 
import java.util.ArrayList; 

import javax.servlet.ServletException; 
import javax.servlet.annotation.WebServlet; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 

import serv.com.Users; 

@WebServlet(name="mainServ",urlPatterns={"/mainServ"}) 
public class haha extends HttpServlet { 
    private static final long serialVersionUID = 1L; 

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
     // TODO Auto-generated method stub 
     // JDBC driver name and database URL 
      final String DB_URL="jdbc:mysql://localhost/test"; 

      // Database credentials 
      final String USER = "root"; 
      final String PASS = "root"; 

      Connection conn = null; 
      Statement stmt = null; 
      ArrayList<Users> usersArr = new ArrayList<Users>(); 
      // Set response content type 
      response.setContentType("text/html"); 
      PrintWriter out = response.getWriter(); 
      String title = "Database Result"; 
      String docType = 
      "<!doctype html public \"-//w3c//dtd html 4.0 " + 
      "transitional//en\">\n"; 
      out.println(docType + 
      "<html>\n" + 
      "<head><title>" + title + "</title></head>\n" + 
      "<body bgcolor=\"#f0f0f0\">\n" + 
      "<h1 align=\"center\">" + title + "</h1>\n"); 
      try{ 
      // Register JDBC driver 
      Class.forName("com.mysql.jdbc.Driver"); 

      // Open a connection 
      conn = DriverManager.getConnection(DB_URL, USER, PASS); 

      // Execute SQL query 
      stmt = conn.createStatement(); 
      String sql; 
      sql = "SELECT id, first, last, age FROM Employees"; 
      ResultSet rs = stmt.executeQuery(sql); 





      while(rs.next()){ 
       //Retrieve by column name 
       int id = rs.getInt("id"); 
       int age = rs.getInt("age"); 
       String first = rs.getString("first"); 
       String last = rs.getString("last"); 

       Users u = new Users(); 
       u.setAge(age); 
       u.setId(id); 
       u.setFirst(first); 
       u.setLast(last); 

       usersArr.add(u); 

      } 

     rs.close(); 
     stmt.close(); 
     conn.close(); 
    }catch(SQLException se){ 
     //Handle errors for JDBC 
     se.printStackTrace(); 

    }catch(Exception e){ 
     //Handle errors for Class.forName 
     e.printStackTrace(); 

    }finally{ 
     //finally block used to close resources 
     try{ 
      if(stmt!=null) 
       stmt.close(); 
     }catch(SQLException se2){ 
     }// nothing we can do 
     try{ 
      if(conn!=null) 
      conn.close(); 
     }catch(SQLException se){ 
      se.printStackTrace(); 

     }//end finally try 
    } //end try 

    request.setAttribute("users", usersArr); 
    request.getRequestDispatcher("NewFile.jsp").forward(request,response); 
    System.out.println(usersArr.size()); 
    } 
} 

NewFile.JSP

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" 
    pageEncoding="ISO-8859-1"%> 
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>  

<!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=ISO-8859-1"> 
<title>Insert title here</title> 
</head> 
<body> 

<c:forEach items="${users}" var="rowss"> 
    <c:forEach items="${rowss}" var="item"> 
    <c:out value="${item}"/> 
    </c:forEach> 
</c:forEach> 
<!-- 
<c:forEach var="user" items="${users}"> 
    <c:out value="${users.first}"/> 
    <c:out value="${users.last}"/> 
    <c:out value="${users.ageIp}"/> 
    <c:out value="${users.id}"/> 
</c:forEach> 

--> 
</body> 
</html> 

Users.java

package servs.com; 

final public class Users { 
    private int id; 
    private int age; 
    private String first; 
    private String last; 

    public void setId(int i){ 
     this.id=i; 
    } 
    public void setAge(int i){ 
     this.age=i; 
    } 
    public void setFirst(String i){ 
     this.first=i; 
    } 
    public void setLast(String i){ 
     this.last=i; 
    } 
} 

当我试图在NEWFILE以打印对象的ArrayList打印.jsp我收到以下错误。

javax.servlet.jsp.JspTagException:不知道如何遍历在<的forEach超过 提供的“项目” >

我不知道错误是在打印或我在将对象放入Arraylist(userArr)时做错了什么。我正在从数据库中成功地获取数据,因为我先打印了它。

请让我知道我可以修改什么来打印数据。我会开放如果有相同的任何不同的方法。

回答

0

在类用户中添加Getter方法后,问题已解决。但是我仍然怀疑我从来没有在任何地方使用getter方法。 getter方法怎么起作用?

public String getFirst(){ 
    return this.first; 
} 

public String getLast(){ 
    return this.last; 
} 
public int getId(){ 
    return this.id; 
} 
public int getAge(){ 
    return this.age; 
} 

这是我在Users.java

的末尾追加