在Servlet中实现分页


可以在服务器端的servlet中实现分页,首先在JSP中,通过Java Servlet来检索数据,然后用JSP来调用结果来显示。


要点:


将查询条件保存到session中,取session中的查询条件


设置Statement对象的MaxRows(确定一页显示多少行数据)


顺序地通过执行SQL语句查询数据,按maxRows来检索一个maxRows的数据,


下一页再检索下一maxRows的数据,以此类推。


下面的例子18.2实现了在Servlet中对userinfo表的数据进行分页显示。


1)在Servlet目录下,新建一个文件UserListServlet.java,代码如下:


packagech18.Servlet;


import java.io.IOException;


import java.util.Collection;


 


importjavax.servlet.ServletException;


importjavax.servlet.http.HttpServletRequest;


importjavax.servlet.http.HttpServletResponse;


 


import ch18.JavaBean.DB_User;


 


/**


* 用户列表分页显示UserListServlet


*/


publicclass UserListServlet extends javax.servlet.http.HttpServlet implements


  javax.servlet.Servlet {


 


  public UserListServlet() {


  super();


  }


 


  protected void doGet(HttpServletRequestrequest,


  HttpServletResponseresponse) throws ServletException,IOException{


 


  response.setHeader("Pragma","No-cache");


  response.setHeader("Cache-Control","no-cache");


  response.setDateHeader("Expires",0);


intpagesize = 5;


  String page = request.getParameter("page");


  DB_Userdbuser= new DB_User();


  intcount = dbuser.getCount();// 记录总数


  int totalPageNum= count / pagesize;// 计算总页数


 


  // 如果纪录总数除以每页的显示个数,余数大于0,那么


  // 总页数应该为商+1


  if ((count % pagesize)> 0) {


  totalPageNum+= 1;


  }


  if (page == null) {


  page = "1";


  }


  request.setAttribute("totalPageNum",new Integer(totalPageNum));


  Collection c = dbuser.getAll(pagesize,Integer.parseInt(page));


  request.setAttribute("c",c);


  try {


  request.getRequestDispatcher("userlist.jsp").forward(request,


  response);


  }


  catch (Throwablet) {


  getServletContext().log(t.getMessage());


  }


  }


}


2)新建一个文件userlist.jsp,代码如下:


<%@ pagecontentType="text/html; charset=gb2312" %>


<%@ pagepageEncoding="GB2312"%>


<%@ pagelanguage="java" %>


 


<%@ pageimport="java.util.Collection,java.util.Iterator"%>


<%@ pageimport="ch18.JavaBean.DB_Conn"%>


<%@ pageimport="ch18.JavaBean.DB_User"%>


<%@ pageimport="ch18.JavaBean.User"%>


<table align=center border=0width=100% cellspacing=1cellpadding=1>


  <tr>


  <tdwidth=100% colspan=5bgcolor=#3399ff>


      <center><font color=#ffffff>成员列表</font></center>


  </td>


  </tr>


  <tr>


  <tdwidth=10% bgcolor=#fcfcfc>用户名</td>


  <tdwidth=10% bgcolor=#fcfcfc>登录密码</td>


  <tdwidth=15% bgcolor=#fcfcfc>邮件地址</td>


  </tr>


  <%


     if (request.getAttribute("c")== null) {


  %> 


  <tr>


  <td width= 75% colspan=5bgcolor=#fcfcfcalign=center>没有用户数据!</td>


  </tr>


  <% } else {


  Collection c = (Collection) request.getAttribute("c");


      if(c == null) {


    %>


  <tr>


  <td width=100% colspan=5bgcolor=#fcfcfcalign=center>没有用户数据!</td>


  </tr>


<%}else {


     inttotalPageNum= ((Integer) (request.getAttribute("totalPageNum"))).intValue();


     intcurrentPage= 1;


     if (request.getParameter("page")!= null) {


         currentPage= Integer.parseInt(request.getParameter("page"));


     }


     //输出用户数据


    Iterator iterator = c.iterator();


     while(iterator.hasNext()) {


  User user = (User) iterator.next();


  %>


<tr>


  <tdwidth=10% bgcolor=#fcfcfc><%=user.getUsername()%></a></td>


  <tdwidth=15% bgcolor=#fcfcfc><%=user.getPassword()%></td>


  <tdwidth=15% bgcolor=#fcfcfc><%=user.getEmail()%></td>


  </tr>


  <%}%>


 


  <formname="list" method="GET">


  <tr>


  <tdwidth=100% colspan=5align=right bgcolor=#efefef>


      <%for(inti= 1; i<= totalPageNum; i++) {%>


      <a href="UserListServlet?page=<%=i %>">[<%=i%>]</a>


<%} %>[<%=request.getAttribute("totalPageNum") %>]


      <inputtype="text" size="2" name="page"value="">


      <inputtype="submit" name="go" value="Go">


  </td>


  </tr>


  </form>


  <%}


    }


    %>


  <tr>


  <td colspan=2align=right>&nbsp;</td>


    </tr>


 


</table>


3)在web.xml文件中输入以下配置代码。


<?xmlversion="1.0" encoding="UTF-8" ?>


<web-appid="WebApp_ID"version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"


         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"


         xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee


        http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">


  <display-name>Login-Register-UserManager</display-name>


  <servlet>


    <description />


<display-name>PageServlet</display-name> 


   <servlet-name>PageServlet</servlet-name>


   <servlet-class>ch18.Servlet.UserListServlet</servlet-class>


 </servlet>


<servlet-mapping>


   <servlet-name>PageServlet</servlet-name>


   <url-pattern>/UserListServlet</url-pattern>


 </servlet-mapping>


 


</web-app>


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值