从属性获取Null值

在动态Web应用程序中,我遇到了一些问题,所以我发布了我的代码:

这是我的控制器(servlet):

String select = request.getParameter("select"); // getting proper value String search = request.getParameter("search"); // getting proper value request.setAttribute("select", select); request.setAttribute("search", search); System.out.println("Select : "+select+" Search : "+search); int page = 1; int recordsPerPage = 20; if(request.getParameter("page") != null) page = Integer.parseInt(request.getParameter("page")); SearchDAO searchDAO=new SearchDAO(); List list=searchDAO.searchAllUsers((page-1)*recordsPerPage,recordsPerPage,select,search); int noOfRecords = searchDAO.getNoOfRecords(); System.out.println("4> NoOfRecords : "+noOfRecords); int noOfPages = (int) Math.ceil(noOfRecords * 1.0 / recordsPerPage); System.out.println("5> NoOfPages : "+noOfPages); request.setAttribute("searchList", list); System.out.println("6> List : "+list); request.setAttribute("noOfPages", noOfPages); // Getting null value, 0 request.setAttribute("currentPage", page); // Getting null value, 0 RequestDispatcher view = request.getRequestDispatcher("/jsp/Securex_Anti_Theft_SearchUserList.jsp"); view.forward(request, response); 

这是我的DAO(简单的java类):

 public class SearchDAO { private int noOfRecords; Connection connection; Statement stmt; public List searchAllUsers(int offset ,int noOfRecords,String select,String search){ private static Connection getConnection() throws SQLException,ClassNotFoundException{ Connection con = ConnectionFactory.getInstance().getConnection(); return con; //ConnectionFactory is class for making the connection to DB. } String query="select SQL_CALC_FOUND_ROWS * from info where '"+select+ "' like '%"+search+"%' order by serialNo asc limit " + offset + " , " + noOfRecords; List list1 = new ArrayList(); User user1=null; try { connection = getConnection(); stmt = connection.createStatement(); ResultSet rs=stmt.executeQuery(query); System.out.println("1> :"+rs); while(rs.next()){ user1=new User(); user1.setSerial(rs.getInt(1)); System.out.println("I'm inside a loop"); user1.setName(rs.getString(2)); user1.setEmail(rs.getString(3)); list1.add(user1); } rs.close(); rs = stmt.executeQuery("SELECT FOUND_ROWS()"); System.out.println("2> :" +rs); if(rs.next()) this.noOfRecords = rs.getInt(1); System.out.println("3> :" +this.noOfRecords); } catch (SQLException e) { e.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); }finally { try { if(stmt != null) stmt.close(); if(connection != null) connection.close(); } catch (SQLException e) { e.printStackTrace(); } } return list1; } public int getNoOfRecords() { return noOfRecords; } } 

输出是:

 1> :com.mysql.jdbc.JDBC4ResultSet@1af8502 2> :com.mysql.jdbc.JDBC4ResultSet@455aa8 3> :0 4> NoOfRecords : 0 5> NoOfPages : 0 6> List : [] 

我有相同的servlet和类用于选择所有用户,并且它正常工作,但是从此处获取空值.Even ResultSet返回值即com.mysql.jdbc.JDBC4ResultSet @ 88d319,但无法从DAO获取值到servlet。

//属性获取空值,对我而言,一切都应该没问题,但仍然得到空值,随意指出我的错误,如果我做了什么

很可能你的DAO返回空列表。 所有其他代码看起来很好。 所以,首先我会检查这个电话

 searchDAO.searchAllUsers((page-1)*recordsPerPage,recordsPerPage,select,search); 

page变量的值是多少? 其他参数? 请在以下情况后记录查询

  String query="select SQL_CALC_FOUND_ROWS * from info where '"+select+ "' like '%"+search+"%' order by serialNo asc limit " + offset + " , " + noOfRecords; 

并针对DB单独运行它,它应该给你一个答案。