您的位置:首页 > 其它

页码列表参考方案

2015-07-27 16:30 387 查看
===================前端=========================

<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";

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: