public class EmpListServlet extends HttpServlet { private static final int PAGEROW = 4;//设置一个页面里面有四条数据 public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); EmpDao ed = new EmpDao();//创建一个数据库操作的对象 int page = 1; String nowPage = request.getParameter("nowPage");//获取当前页数 if(nowPage!=null && !"".equals(nowPage)){ //如果传入的值为非空,则将page设置传入的值,否则page值仍为1 page = Integer.parseInt(nowPage); } int count = ed.getRowCount();//获取数据库中所有的条目的总数 //得到总共的分页数目 int pageCount = count%PAGEROW==0?count/PAGEROW:count/PAGEROW+1; //如果数据库中的条数不能填满最后一个页面,那页面数就加上1 //(整除除不尽会去掉小数部分,因而页面会少一个,所以需要+1) if(page<1){//如果传如的页数小于1了,那就仍旧在第一页 page = 1; } if(page > pageCount){//如果传入的页数超过了最大页数,那么就仍旧到最大页数 page = pageCount; } int start = (page-1) * PAGEROW + 1;//页面里起始的数据行, int end = start + PAGEROW - 1;//页面里最末尾的数据行 List elist = ed.findEmpList(start,end);//根据开始和结束从数据库得到列表 request.setAttribute("elist", elist); request.setAttribute("page", page); request.setAttribute("endPage", pageCount); RequestDispatcher dispatcher = request.getRequestDispatcher("main.jsp"); dispatcher.forward(request, response); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doGet(request, response); } } 接下来是EmpDao中调用数据库的方法 public List findEmpList(int start,int end) { List list = new ArrayList(); Connection con = null; Statement st = null; ResultSet rs = null; try { con = getConnection(); st = con.createStatement(); String sql = "select * from (select e.*, rownum rn from emp e) where rn >="+start+" and rn <="+end; rs = st.executeQuery(sql); while (rs.next()) { Emp emp = new Emp(); emp.setEmpno(rs.getString(1)); emp.setEname(rs.getString(2)); emp.setJob(rs.getString(3)); emp.setMgr(rs.getString(4)); Date d = rs.getDate(5); if (d != null) { emp.setHiredate(d.toString()); } emp.setSal(rs.getString(6)); emp.setComm(rs.getString(7)); emp.setDeptno(rs.getString(8)); list.add(emp); } } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } finally { free(con, st, rs); } return list; } 然后是JS处理手工输入页面的跳转 <script type="text/javascript"> function pageto(){ var np = document.all("nowPage").value; if(!isNaN(np)){ if(np.length>0){ location.href="EmpListServlet?nowPage="+np; } }else{ document.all("nowPage").value=""; alert("请输入合法的数字!"); } } </script> 下面是翻页部分的jsp代码 <tr> <td colspan="10"> <a href="EmpListServlet">首页</a> <a href="EmpListServlet?nowPage=${page-1 }">上一页</a> <a href="EmpListServlet?nowPage=${page+1 }">下一页</a> <a href="EmpListServlet?nowPage=${endPage }">尾页</a> <input type="text" id="nowPage" size="3" /> <input type="button" value="GO" οnclick="pageto()"> </td> </tr>