Struts中实现分页

来源:互联网 发布:文字排版软件下载 编辑:程序博客网 时间:2024/04/28 15:33

首先是效果

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>
   <buttononclick="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})
  


原创粉丝点击