如何在 JSP.. 中进行分页?
How To Do Pagination In JSP..?
请不要低估我的问题,因为我是 JSP/JavaEE..
的新手
我看了很多关于 JSTL、Pagination 的教程,但是我没有一个正确的想法来做 Pagination..有没有简单的方法来执行 Pagination..?
在我的程序中,我使用 java class 从数据库中检索搜索结果的记录,并将它们放入 ArrayList 和 returns ArrayList 到 Servlet。然后将接收到的 ArrayList 对象分配到一个应用程序属性中,就像这样
request.setAttribute("Results", results_List);
然后使用请求调度程序,我正在加载显示 jsp 页面的结果,如下所示。
RequestDispatcher rd = request.getRequestDispatcher("searchresults.jsp");
rd.forward(request, response);
请告诉我下一步对我的搜索结果进行分页..
在 Servlet 中,我们首先获取“page”参数的值并将其存储在“page”变量中。我们希望每页显示五 (5) 条记录,我们将这些记录作为参数传递给 viewAllEmployees(offset, 5)。我们在请求范围内存储三个属性并将请求转发到 JSP 页面;
Servlet Class:
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
int page = 1;
int recordsPerPage = 5;
if(request.getParameter("page") != null)
page = Integer.parseInt(request.getParameter("page"));
EmployeeDAO dao = new EmployeeDAO();
List<Employee> list = dao.viewAllEmployees((page-1)*recordsPerPage,
recordsPerPage);
int noOfRecords = dao.getNoOfRecords();
int noOfPages = (int) Math.ceil(noOfRecords * 1.0 / recordsPerPage);
request.setAttribute("employeeList", list);
request.setAttribute("noOfPages", noOfPages);
request.setAttribute("currentPage", page);
RequestDispatcher view = request.getRequestDispatcher("employee.jsp");
view.forward(request, response);
}
Jsp 文件:
<table border="1" cellpadding="5" cellspacing="5">
<tr>
<th>Emp ID</th>
<th>Emp Name</th>
<th>Salary</th>
<th>Dept Name</th>
</tr>
<c:forEach var="employee" items="${employeeList}">
<tr>
<td>${employee.employeeId}</td>
<td>${employee.employeeName}</td>
<td>${employee.salary}</td>
<td>${employee.deptName}</td>
</tr>
</c:forEach>
</table>
<%--For displaying Previous link except for the 1st page --%>
<c:if test="${currentPage != 1}">
<td><a href="employee.do?page=${currentPage - 1}">Previous</a></td>
</c:if>
<%--For displaying Page numbers.
The when condition does not display a link for the current page--%>
<table border="1" cellpadding="5" cellspacing="5">
<tr>
<c:forEach begin="1" end="${noOfPages}" var="i">
<c:choose>
<c:when test="${currentPage eq i}">
<td>${i}</td>
</c:when>
<c:otherwise>
<td><a href="employee.do?page=${i}">${i}</a></td>
</c:otherwise>
</c:choose>
</c:forEach>
</tr>
</table>
<%--For displaying Next link --%>
<c:if test="${currentPage lt noOfPages}">
<td><a href="employee.do?page=${currentPage + 1}">Next</a></td>
</c:if>
请不要低估我的问题,因为我是 JSP/JavaEE..
的新手我看了很多关于 JSTL、Pagination 的教程,但是我没有一个正确的想法来做 Pagination..有没有简单的方法来执行 Pagination..?
在我的程序中,我使用 java class 从数据库中检索搜索结果的记录,并将它们放入 ArrayList 和 returns ArrayList 到 Servlet。然后将接收到的 ArrayList 对象分配到一个应用程序属性中,就像这样
request.setAttribute("Results", results_List);
然后使用请求调度程序,我正在加载显示 jsp 页面的结果,如下所示。
RequestDispatcher rd = request.getRequestDispatcher("searchresults.jsp");
rd.forward(request, response);
请告诉我下一步对我的搜索结果进行分页..
在 Servlet 中,我们首先获取“page”参数的值并将其存储在“page”变量中。我们希望每页显示五 (5) 条记录,我们将这些记录作为参数传递给 viewAllEmployees(offset, 5)。我们在请求范围内存储三个属性并将请求转发到 JSP 页面;
Servlet Class:
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
int page = 1;
int recordsPerPage = 5;
if(request.getParameter("page") != null)
page = Integer.parseInt(request.getParameter("page"));
EmployeeDAO dao = new EmployeeDAO();
List<Employee> list = dao.viewAllEmployees((page-1)*recordsPerPage,
recordsPerPage);
int noOfRecords = dao.getNoOfRecords();
int noOfPages = (int) Math.ceil(noOfRecords * 1.0 / recordsPerPage);
request.setAttribute("employeeList", list);
request.setAttribute("noOfPages", noOfPages);
request.setAttribute("currentPage", page);
RequestDispatcher view = request.getRequestDispatcher("employee.jsp");
view.forward(request, response);
}
Jsp 文件:
<table border="1" cellpadding="5" cellspacing="5">
<tr>
<th>Emp ID</th>
<th>Emp Name</th>
<th>Salary</th>
<th>Dept Name</th>
</tr>
<c:forEach var="employee" items="${employeeList}">
<tr>
<td>${employee.employeeId}</td>
<td>${employee.employeeName}</td>
<td>${employee.salary}</td>
<td>${employee.deptName}</td>
</tr>
</c:forEach>
</table>
<%--For displaying Previous link except for the 1st page --%>
<c:if test="${currentPage != 1}">
<td><a href="employee.do?page=${currentPage - 1}">Previous</a></td>
</c:if>
<%--For displaying Page numbers.
The when condition does not display a link for the current page--%>
<table border="1" cellpadding="5" cellspacing="5">
<tr>
<c:forEach begin="1" end="${noOfPages}" var="i">
<c:choose>
<c:when test="${currentPage eq i}">
<td>${i}</td>
</c:when>
<c:otherwise>
<td><a href="employee.do?page=${i}">${i}</a></td>
</c:otherwise>
</c:choose>
</c:forEach>
</tr>
</table>
<%--For displaying Next link --%>
<c:if test="${currentPage lt noOfPages}">
<td><a href="employee.do?page=${currentPage + 1}">Next</a></td>
</c:if>