页码列表参考方案

来源:互联网 发布:乌鱼子淘宝的价格 编辑:程序博客网 时间:2024/05/16 18:05


===================前端=========================


<center>

    第${pageBean.pageCode }页/共${pageBean.totalPage }页
    <a href="${pageBean.url }&pageCode=1">首页</a>
    <c:if test="${pageBean.pageCode>1 }">
    <a href="${pageBean.url }&pageCode=${pageBean.pageCode-1 }">上一页</a>
    </c:if>
   
   <%--计算begin 和 end --%>
   <c:choose>
     <%-- 当总页数不足10页时 --%>
     <c:when test="${pageBean.totalPage<=10 }">
          <c:set var="begin" value="1"/> 
          <c:set var="end" value="${pageBean.totalPage}" />   
     </c:when>
     <%--当总页数大于10页时,通过计算得到begin 和end --%>
     <c:otherwise>
         <c:set  var="begin" value="${pageBean.pageCode-5 }"/> 
         <c:set  var="end" value="${pageBean.pageCode+4 }"/>
          <%--头溢出 --%>
          <c:if test="${begin<1 }">
             <c:set var="begin" value="1"/>
             <c:set var="end" value="10"/>
          </c:if>
          
          <%--尾溢出 --%>
          <c:if test="${end>pageBean.totalPage }">
            <c:set var="begin" value="${pageBean.totalPage-9 }"/>
            <c:set var="end" value="${pageBean.totalPage }"/>
          </c:if>
          
     </c:otherwise>
     
   </c:choose>
   <%--循环遍历页码列表 --%>
   <c:forEach var="i" begin="${begin}" end="${end}">
   
   
       <c:choose>
           <c:when test="${i eq pageBean.pageCode }">
               [${i}]
           
           
           </c:when>
       
           <c:otherwise>
                
           <a href="${pageBean.url }&pageCode=${i }
         ">
            [${i}]
          </a>
           
           </c:otherwise>
       
       </c:choose>
          
          
          
   </c:forEach>
   
 
    <c:if test="${pageBean.pageCode<pageBean.totalPage }">
    <a href="${pageBean.url }&pageCode=${pageBean.pageCode+1 }">下一页</a>
    
    </c:if>
    <a href="${pageBean.url }&pageCode=${pageBean.totalPage }">尾页</a>


</center>

=============== bean=======================

public class PageBean<T> {

private int pageCode;
private int totalRecod;
private int pageSize;
private List<T> beanList;

=================dao=========================

public PageBean<Customer> query(Customer criteria,int pc,int ps){

try{

/**
* 创建pageBean对象 
* 设置已有对象pc ps
* 得到tr
* 得到beanList 

*/
PageBean<Customer> pb=new PageBean<Customer>();

pb.setPageCode(pc);
pb.setPageSize(ps);




List<Object> params=new ArrayList<Object>();
//给出sql语句前半句,以后再追加,考虑到代码重用的问题,我们需要把sql语句拆开
StringBuilder preSql=new StringBuilder("select count(*) from customers");

StringBuilder whereSql=new StringBuilder(" where 1=1");
//切记,and  前面必须要加空格 否则会报 必须声明变量 @p0and的异常 
if(criteria.getName()!=null && !criteria.getName().trim().isEmpty()){

whereSql.append(" and name like ?");
params.add("%"+criteria.getName()+"%");
}
if(criteria.getGender()!=null && !criteria.getGender().trim().isEmpty()){

whereSql.append(" and gender like ?");

params.add("%"+criteria.getGender()+"%");

}
if(criteria.getCellphone()!=null && !criteria.getCellphone().trim().isEmpty()){

whereSql.append(" and cellphone like ?");
params.add("%"+criteria.getCellphone()+"%");
}
if(criteria.getEmail()!=null && !criteria.getEmail().trim().isEmpty()){

whereSql.append(" and email like ?");
params.add("%"+criteria.getEmail()+"%");
}

Number num=(Number) qr.query(preSql.append(whereSql).toString(),new ScalarHandler(), params.toArray());

int tr=num.intValue();
pb.setTotalRecod(tr);

int tp=tr%10==0?tr/10:tr/10+1;
pb.setTotalPage(tp);
//我们还要考虑到分页的问题,所以要把分页条件给出来
// select  top (?) * from customers where id not in( select top (?) id from customers)
StringBuilder sql=new StringBuilder("select top (?) * from customers");
StringBuilder pagesql=new StringBuilder(" and id not in( select top (?) id from customers)");

params.add(0,ps);
   params.add((pc-1)*ps);
   
  
   
  List<Customer>  beanList= qr.query(sql.append(whereSql).append(pagesql).toString(),new BeanListHandler<Customer>(Customer.class), params.toArray());

  pb.setBeanList(beanList);
  
  return pb;



}catch(SQLException e){

throw new RuntimeException(e);


}

}

==================servlet=======================


public String  query(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException, SQLException{



/**  把条件封装到Customer中

* 得到pc 指定ps ,传参数得到pageBean
* 把pageBean保存到request中
* 转发到list中
*/

/**
* 处理get请求的编码问题
*/

Customer criteria=CommonUtils.toBean(request.getParameterMap(), Customer.class);

criteria=encoding(criteria);

int pc=this.getPageCode(request);
int ps=10;
PageBean<Customer> pb=customerService.query(criteria,pc,ps);


    pb.setUrl(this.getUrl(request));
request.setAttribute("pageBean", pb);

return  "f:/list.jsp";

}



0 0
原创粉丝点击