这个题目,总共分4个部分
1.查询总页数,把页码显示在页面上
2.把每页的内容显示在页面上
3.首页,尾页,上一页,下一页
4.下拉列表中的页数,(根据页数变动,选中第几页提交到第几页)
详解如下:(一部分代码在servlet中,一部分代码在JSP中)
Servlet
package com.lianxi; import java.io.IOException; 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; /** * Servlet implementation class WorkServletB */ @WebServlet("/WorkServletB") public class WorkServletB extends HttpServlet { //外层定义一个变量(每页显示的数量) private final int PageSize=3; protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //1.1调用dao类中的方法,查出总页数; int PageCount=new WorkDao().select(PageSize); //1.2把总页数传到页面,显示 request.setAttribute("pagecount", PageCount); //2.1找出每页显示的内容传给界面,但是当我第一次进入页面时没有选择页码,页码要默认在第一页,所以首先定义一个PageNum,在进行判断! int PageNum=1; int PageNow=1;//3.2定义当前页是1 if(request.getParameter("pagenum") != null){ //2.2如果接收的pagenum不是空的说明我在选择页数,那么就让PageNum=接收过来的值,以为接收过来的是一个字符串所以在这里需要强制转换一下 PageNum=Integer.parseInt(request.getParameter("pagenum")); //3.3如果接收的pagenum不是空的说明我在选择页数,那么就让PageNow=接收过来的值,以为接收过来的是一个字符串所以在这里需要强制转换一下 PageNow=Integer.parseInt(request.getParameter("pagenum")); } //2.3把每页的内容穿到页面 ArrayList<Work> list=new WorkDao().select(PageNum, PageSize); request.setAttribute("list", list); //3.1设置一个上一页和下一页,首先我们要知道他的当前页(PageNow)是什么?还要判断当前页大于1时上一页才可用,当前页小于总页数时下一页才可用 //3.4三元运算判断 int PageS=PageNow>1?PageNow-1:1; int PageX=PageNow<PageCount?PageNow+1:PageCount; //3.5网页面传值 request.setAttribute("pages", PageS); request.setAttribute("pagex", PageX); //4.1设置下拉菜单显示页数,首先把当前页PageNum传到页面去 request.setAttribute("pagenow", PageNow); request.getRequestDispatcher("FenYeChaXun.jsp").forward(request, response); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub doGet(request, response); } }
JSP
<%@page import="com.lianxi.Work"%> <%@page import="java.util.ArrayList"%> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!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=UTF-8"> <title>Insert title here</title> </head> <body> <form action="WorkServletB" method="post" id="i"> <table style="background-color: #000; color: #FFF"> <tr> <td>编号</td> <td>学号</td> <td>单位</td> <td>部门</td> <td>工龄</td> <td>操作</td> </tr> <% ArrayList<Work> list=(ArrayList<Work>)request.getAttribute("list");//接受每页显示的内容 for(Work w:list){ //循环输出 %> <tr style="background-color: #FFF; color: #000"> <td><%=w.getIds() %></td> <td><%=w.getInfoCode() %></td> <td><%=w.getFirm() %></td> <td><%=w.getDepart() %></td> <td><%=w.getOrders() %></td> <td>操作</td> </tr> <% } int pages=(int)request.getAttribute("pages");//接受上一页数 int pagex=(int)request.getAttribute("pagex");//接受下一页数 int pagenow=(int)request.getAttribute("pagenow");//接受当前页码 %> </table> <a href="WorkServletB?pagenum=<%=1 %>">首页</a><!-- 设置一个首页所以它的pagenum必然是1 --> <a href="WorkServletB?pagenum=<%=pages %>">上一页</a> <% int pagecount=(int)request.getAttribute("pagecount");//接受总页数 for(int i=1;i<=pagecount;i++){ //利用循环输出页码,并且把a标签地址设置为动态的,点击谁就提交谁的pagenum %> <a href="WorkServletB?pagenum=<%=i %>"><%=i %></a> <% } %> <a href="WorkServletB?pagenum=<%=pagex %>">下一页</a> <a href="WorkServletB?pagenum=<%=pagecount %>">尾页</a><br><!-- 设置一个尾页所以它的pagenum必然是总页数,所以我们要从servlet中传过一个总页数pagecount来 --> <select name="pagenum" onchange="change()"><!-- 状态改变时触发change方法 --> <% for(int i=1;i<=pagecount;i++){ //判断一下当前页是不是等于i,如果是当前页就是selected if(i==pagenow){ %> <option value="<%=i %>" selected="selected"><%=i %></option> <% }else{ %> <option value="<%=i %>"><%=i %></option> <% } } %> </select> </form> </body> <!-- 当我选中下拉列表中的某一项时,自动提交 --> <script type="text/javascript"> function change(){ document.getElementById("i").submit(); } </script> </html>
原文:http://www.cnblogs.com/AnswerTheQuestion/p/6308931.html