Struts中实现分页

首先是效果

Struts中实现分页

1.建立页数类

public class PageBean
{
 private int curPage = 1; //当前页
 private int totalPages; //总页数
 private int rowsPerPage =5;   //每页显示行数
 private inttotalRows;   //总行数
 private String order ="all";  //排序实际没用,当有检测排序的时候有用
 
 public int getCurPage() {
  return curPage;
 }
 public void setCurPage(int curPage) {
  this.curPage = curPage;
 }
 public int getTotalPages() {
  return totalPages;
 }
 public void setTotalPages(int totalPages) {
  this.totalPages =totalPages;
 }
 public int getRowsPerPage() {
  return rowsPerPage;
 }
 public void setRowsPerPage(int rowsPerPage){
  this.rowsPerPage =rowsPerPage;
 }
 public int getTotalRows() {
  return totalRows;
 }
 public void setTotalRows(int totalRows) {
  this.totalRows =totalRows;
 }
 public String getOrder() {
  return order;
 }
 public void setOrder(String order) {
  this.order = order;
 }
}

 

2.BIZ

//根据条件查出宠物信息
 public ArrayList findPetInfoByParamer( PetInfopetInfo,PageBean page )
 {
  ArrayList list = newArrayList();
  String sql1 = "";
  String sql2 = "";
  String sql3 = "";
  String sql4 = "";
  String sql5 = "";
  String sql6 = "";
  String sql7 = "";
  
  String name =petInfo.getPet_name();
  if(name!=null&& !name.equals(""))
  {
   sql1 = "andpet_name like '%"+name+"%'";
   sql5 =sql5+sql1;
  }
  
  int type =petInfo.getPet_type();
  if( type!=-1 ){
   sql2 = "andpet_type=" + type; 
   sql5 =sql5+sql2;
  }
  
  String owner =petInfo.getPet_owner_name();
  if( owner!=null&& !owner.equals("") ){
   sql3 = "andpet_owner_name like '%" + owner + "%'"; 
   sql5 =sql5+sql3;
  }
  
  //排序
  String order =page.getOrder();
  if(!order.equals("all") )
  {
   sql7 =" orderby " + order + "desc";   
  }
  else
  {
   sql7 =" orderby (pet_strength+pet_cute+pet_love) desc";
  }
  
  //not in 后的查询
  sql4 = "select top " +(page.getCurPage()-1)*page.getRowsPerPage() + " pet_id from PetInfowhere 1=1 ";
  sql4 = sql4+sql5+sql7;
  
  //对查询结果进行分页
  sql6 = "select top " +page.getRowsPerPage() + " * from PetInfo where pet_id notin("
   + sql4 + ") "+ sql5;
  

  if(!order.equals("all"))
  {
   sql6 = sql6 +" order by " + order + "desc";   
  }
  else
  {
   sql6 = sql6 +" order by (pet_strength+pet_cute+pet_love) desc";
  }
  
  System.out.println("sql=" +sql6);
  
  try
  {
   conn =super.getConnection();
   pst =conn.prepareStatement(sql6);
   rs =pst.executeQuery();
   
   while(rs.next())
   {
    PetInfopet = new PetInfo();
    
    pet.setPet_id(rs.getInt(1));
    pet.setPet_name(rs.getString(2));
    pet.setPet_sex(rs.getString(3));
    pet.setPet_strength(rs.getInt(4));
    pet.setPet_cute(rs.getInt(5));
    pet.setPet_love(rs.getInt(6));
    pet.setPet_intro(rs.getString(7));
    pet.setPet_owner_name(rs.getString(8));
    pet.setPet_owner_email(rs.getString(9));
    pet.setPet_password(rs.getString(10));
    pet.setPet_pic(rs.getString(11));
    pet.setPet_type(rs.getInt(12));
    
    list.add(pet);
   }
  }
  catch (SQLException e)
  {
   e.printStackTrace();
  }
  finally
  {
   super.closeAll(conn,pst, rs);
  }
  return list;
 }
 
 //根据条件查询总行数
 public int findTotalRows( PetInfopetInfo,PageBean page ){
  int totalRows = 0;
  String sql1 = "";
  String sql2 = "";
  String sql3 = "";
  String sql4 = "";
  String sql5 = "";
  
  String name =petInfo.getPet_name();
  if( name!=null&& !name.equals("") ){
   sql1 = "andpet_name like '%" + name + "%'";
   sql5 =sql5+sql1;
  }
  
  int type =petInfo.getPet_type();
  if( type!=-1 ){
   sql2 = "andpet_type=" + type; 
   sql5 =sql5+sql2;
  }
  
  String owner =petInfo.getPet_owner_name();
  if( owner!=null&& !owner.equals("") ){
   sql3 = "andpet_owner_name like '%" + owner + "%'"; 
   sql5 =sql5+sql3;
  }
  
  sql4 = "select count(*) pet_idfrom PetInfo where 1=1 ";
  sql4 = sql4+sql5;
  
  //执行SQL语句
  try
  {
   conn =super.getConnection();
   pst =conn.prepareStatement(sql4);
   rs =pst.executeQuery();
   
   if(rs.next())
   {
    totalRows= rs.getInt(1);
   }
  }
  catch (SQLException e)
  {
   e.printStackTrace();
  }
  finally
  {
   super.closeAll(conn,pst, rs);
  }
  
  return totalRows;
 }
 
 //根据条件查询总页数
 public int findTotalPages( PetInfopetInfo,PageBean page ){
  int totalPages = 0;
  int totalRows = 0;
  
  totalRows =this.findTotalRows(petInfo, page);
  
  if(totalRows%page.getRowsPerPage()==0 ){
   totalPages =totalRows / page.getRowsPerPage();
  } else {
   totalPages =totalRows / page.getRowsPerPage() +1;
  }
  
  return totalPages;
 }

 

3.Action

//查找宠物
 public ActionForward toGetPets(ActionMappingmapping, ActionForm form,
   HttpServletRequestrequest, HttpServletResponse response)
 {
  PetInfoForm petInfoForm =(PetInfoForm) form;
  if(request.getParameter("name")!=null)
  {
   petInfoForm.getPet().setPet_name(request.getParameter("name"));
  }
  
  System.out.println(request.getParameter("what"));
  
  if(request.getParameter("what")==null)
  {
  }
  else
  {
   petInfoForm.getPet().setPet_name("");
   petInfoForm.getPet().setPet_type(-1);
   petInfoForm.getPet().setPet_owner_name("");
  }

  HttpSession session =request.getSession();
  PetInfoBiz biz = newPetInfoBiz();
  //后面这才是有用的
  ArrayList list =biz.findPetInfoByParamer(petInfoForm.getPet(),petInfoForm.getPage());
  session.setAttribute("allpet",list);
  
  int totalPages =biz.findTotalPages(petInfoForm.getPet(),petInfoForm.getPage());
  int totalRows =biz.findTotalRows(petInfoForm.getPet(),petInfoForm.getPage());
  petInfoForm.getPage().setTotalPages(totalPages);
  petInfoForm.getPage().setTotalRows(totalRows);
  
  returnmapping.findForward("petlist");
 }

 

4.显示页面

<div>
    <divclass="input_title">总积分排名</div>
    
    
    <tableclass="data_table">
    <tr>
     <thwidth="40px">序号</th>
     <thwidth="200px">宠物名</th>
     <thwidth="50px">类别</th>
     <thwidth="50px">总积分</th>
     <thwidth="40px">力量</th>
     <thwidth="40px">聪明</th>
     <thwidth="40px">爱心</th>
     <thwidth="150px">主人</th>
    </tr>    
    
    <logic:iterateid="pet" name="allpet" indexId="i">
     <tr>
      <tdstyle="text-align:right;">
       ${i+1+(petInfoForm.page.curPage-1)*(petInfoForm.page.rowsPerPage)}
      </td>
      <td>
       <ahref="petInfo.do?method=toLookPet&id=${pet.pet_id}"target="_blank">
       ${pet.pet_name}
       </a>
      </td>
      
      <logic:equalvalue="1" name="pet" property="pet_type">
      <tdstyle="text-align:right;">千禧猪</td>
      </logic:equal>
      <logic:equalvalue="2" name="pet" property="pet_type">
      <tdstyle="text-align:right;">猫咪</td>
      </logic:equal>
      <logic:equalvalue="3" name="pet" property="pet_type">
      <tdstyle="text-align:right;">哥斯拉</td>
      </logic:equal>
      
      <tdstyle="text-align:right;">
      ${pet.pet_strength+pet.pet_cute+pet.pet_love}
      </td>
      <tdstyle="text-align:right;">${pet.pet_strength}</td>
      <tdstyle="text-align:right;">${pet.pet_cute}</td>
      <tdstyle="text-align:right;">${pet.pet_love}</td>
      <tdstyle="text-align:center;"><ahref="mailto:${pet.pet_owner_email}">${pet.pet_owner_name}</a></td>
     </tr>
    </logic:iterate>
    
    </table>
   共${petInfoForm.page.totalRows}条记录 
   每页显示<inputname="page.rowsPerPage" value="${petInfoForm.page.rowsPerPage }"size="3" />条
   第<inputname="page.curPage" value="${petInfoForm.page.curPage }" size="3"/>页
   /共${petInfoForm.page.totalPages }页
   <ahref="javascript:page_first();">第一页</a>
   <ahref="javascript:page_pre();">上一页</a>
   <ahref="javascript:page_next();">下一页</a>
   <ahref="javascript:page_last();">最后一页</a>
   <buttonοnclick="javascript:page_go();">GO</button>

 

  <script>
  function page_go()
  {
   page_validate();  
   document.forms[0].submit();
  }
  function page_first()
  {
   document.forms[0].elements["page.curPage"].value= 1;
   document.forms[0].submit();
  }
  function page_pre()
  {
   var pageNo =document.forms[0].elements["page.curPage"].value;
   document.forms[0].elements["page.curPage"].value= parseInt(pageNo) - 1;
   page_validate();
   document.forms[0].submit();
  }
  function page_next()
  {
   var pageNo =document.forms[0].elements["page.curPage"].value;
   document.forms[0].elements["page.curPage"].value= parseInt(pageNo) + 1;
   page_validate();
   document.forms[0].submit();
  }
  function page_last()
  {
   document.forms[0].elements["page.curPage"].value= ${petInfoForm.page.totalPages };
   document.forms[0].submit();
  }
  function page_validate()
  {
   var pageNo =document.forms[0].elements["page.curPage"].value;
   if(pageNo<1)
    pageNo=1;
   if(pageNo>${petInfoForm.page.totalPages})
  


说明:<br>一、含演示数据库建立脚本(较简单)<br>二、使用Struts、Hibernate和display超简单的实现分页,你不用在页面上再写很多<%%>和很多判断,简单到只需要几行语句:<br><html:form method="post" action="/displayList"><br> <display:table name="lst" cellspacing="0" border="1" cellpadding="0" requestURI="displayList.do" export="true"><br> <display:column property="id" title="编号" /><br> <display:column property="name" title="名字" /><br> <display:column property="age" title="年龄" /><br> </display:table><br> <pag:pagination name="pv" requestUri="displayList.do"></pag:pagination><br></html:form><br>这就是全部语句,不用写任何代码。<br>三、由于使用了display,所以自动实现了Excel | XML | CSV 的导出功能。<br>四、生成页面导航的样式是:<br>[首页/前一页] [后一页/尾页] 显示第1到1条 共3项 每页显示2项 共3页 第1页 GO<br>其每页显示2项的项操作人员可以随便改,“第1页”的页号可以随便改,操作相当的灵活。我看到的样式暂只这一种,我想在display应可以方便的改变导航样式,不行的话你就去修改display的标签源码,想改成什么样就改成什么样。<br><br>心得:<br>一、今天才明白使用Hibernate还有一个好处,你可以随便改数据库,你可以一会用oracle,一会用sqlserver,一会用mysql,总之你写成的代码换一种数据库,最多就是改一下那几个xml文件,个人感觉这才是java一个地方编写到处运行呢。<br>二、明白了使用标签的好处。<br><br>另提示一点:<br>打开测试用“http://localhost:8080/StrutsHibernateDisplay/displayList.do”,如果直接打开list.jsp会告诉你没有数据的。<br><br>代码是wenlong342的,我只是稍做修改,然后写了上面的说明文字。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值