JSP实现添加功能和分页显示实例分析(2)

① 界面上增加分页显示的超链接;
② 修改User.java,在遍历结果集的时候进行控制,另外需要增加获取页码数的方法;
③ 在控制器中传递需要的页码和总页码。

9、 在界面上增加分页显示功能

<%@ page contentType="text/html;charset=gb2312"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <font color="red"> ${addinfo} </font> <br> <a href="getAllUser?pageNo=1">第一页</a> <a href="getAllUser?pageNo=${pageNo-1}">上一页</a> <a href="getAllUser?pageNo=${pageNo+1}">下一页</a> <a href="getAllUser?pageNo=${pageCount}">最后一页</a> <br> <c:forEach var="user" items="${users}"> 用户名:${user.username} 口令:${user.userpass} <br> </c:forEach>

其中,pageNo表示当前页码,pageCount表示总页数。

10、在User.java中增加获取总页码的方法

public int getPageCount() { Connection con = null; Statement stmt = null; ResultSet rs = null; try{ // 指出连接数据库所需要的驱动程序 Class.forName("oracle.jdbc.driver.OracleDriver"); // 建立与数据库之间的连接 con = DriverManager.getConnection("jdbc:oracle:thin:@myserver:1521:mydb","scott","tiger"); // 编写查询数据库信息的SQL语句 String sql="select count(*) from usertable"; // 创建语句对象,用于执行SQL语句 stmt = con.createStatement(); // 执行SQL语句得到结果集 rs = stmt.executeQuery(sql); rs.next(); // 得到总的记录数 int number = rs.getInt(1); return (number-1)/10+1; }catch(Exception e){ return 0; } finally{ // 关闭相关对象 if(rs!=null) try{ rs.close(); }catch(Exception ee){} if(stmt!=null) try{ stmt.close(); }catch(Exception ee){} if(con!=null) try{ con.close(); }catch(Exception ee){} } }

11、增加按照页码获取信息的方法

public ArrayList getUserByPage(int pageNo) { int number=10; // 每一页显示的记录数 int begin = (pageNo * number) - 9; int end = pageNo * number; int index=1; Connection con = null; Statement stmt = null; ResultSet rs = null; ArrayList users = new ArrayList(); try{ // 指出连接数据库所需要的驱动程序 Class.forName("oracle.jdbc.driver.OracleDriver"); // 建立与数据库之间的连接 con = DriverManager.getConnection("jdbc:oracle:thin:@192.168.0.170:1521:fhdn","scott","tiger"); // 编写查询数据库信息的SQL语句 String sql="select * from usertable"; // 创建语句对象,用于执行SQL语句 stmt = con.createStatement(); // 执行SQL语句得到结果集 rs = stmt.executeQuery(sql); // 遍历结果集 while(rs.next()) { // 在begin之前的记录是不显示的 if(index<begin){ index++; continue; } // 在end之后的记录也不显示 if(index>end) break; index++; String username = rs.getString(1); String userpass = rs.getString(2); // java.util.Date birthday = rs.getDate(3); // int age = rs.getInt(4); User user = new User(); user.setUsername(username); user.setUserpass(userpass); users.add(user); } }catch(Exception e){ System.out.println(e.getMessage()); } finally{ // 关闭相关对象 if(rs!=null) try{ rs.close(); }catch(Exception ee){} if(stmt!=null) try{ stmt.close(); }catch(Exception ee){} if(con!=null) try{ con.close(); }catch(Exception ee){} } return users; }

12、修改控制器

package servlet; import java.io.*; import javax.servlet.*; import javax.servlet.http.*; import javabean.*; import java.util.*; public class GetAllUser extends HttpServlet { public void doGet(HttpServletRequest request,HttpServletResponse response) throws IOException,ServletException { // 第一步:获取用户的输入信息 String pageNo=request.getParameter("pageNo"); int iPageNo=1; if(pageNo!=null) { iPageNo = Integer.parseInt(pageNo); } // 第二步:调用JavaBean User user = new User(); ArrayList users=null; users = user.getUserByPage(iPageNo); int pageCount=user.getPageCount(); // 第三步:传值 request.setAttribute("users",users); request.setAttribute("pageNo",new Integer(iPageNo)); request.setAttribute("pageCounter",new Integer(pageCount)); // 第四步:选择一个界面对用户进行响应 String forward="userlist.jsp"; RequestDispatcher rd = request.getRequestDispatcher(forward); rd.forward(request,response); } public void doPost(HttpServletRequest request,HttpServletResponse response) throws IOException,ServletException { doGet(request,response); } }

13、之后再进行测试运行

14、增加对第一页和最后一页的控制

如果已经在第一页,就不能再点击第一页或者首页。如果已经在最后一页,就不能再点击最后一页或者下一页。修改userlist.jsp中代码如下(部分代码):

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wzfzzy.html