jsp-分页

分页步骤*******
需要:
当前的页码(请求)、
每页显示的数目(自定义)、
新闻总数(数据库查)、
页的总数(计算)、
当前页面的新闻集合(数据库查)
dao层:
新闻总数(数据库查)
public int getCount();
sql语句:select count(1) from news;

当前页面的新闻集合(数据库查)
//pageIndex:当前页码 pageSize:每页显示的数量
public List getNewsByPage(int pageIndex,int pageSize);
sql语句:select * from news limit ?,?
?1.根据当前的页码决定从第几条数据开始 0,5 5,5 10,5 15,5 (当前页面-1)*每页显示的数量
(pageIndex-1)*pageSize
?2.pageSize:每页显示的数量

service层:
调用dao层

封装Page类:
当前的页码、每页显示的数目、新闻总数、页的总数、当前页面的新闻集合
当前的页码:请求的时候赋值
每页显示的数目:用户自定义
新闻总数:通过service层的getCount()进行查询
页的总数:在用户给新闻总数赋值后,通过新闻总数和每页显示的数量进行计算
页的总数=新闻总数%每页显示的数目==0?新闻总数/每页显示的数目:新闻总数/每页显示的数目+1
当前页面的新闻集合:通过service层的getNewsByPage(int pageIndex,int pageSize)进行查询

jsp:
index.jsp:
转发到do_news.jsp界面,并且传入opr=page以及pageIndex=1
<jsp:forward page=“news/do_news.jsp?opr=page&pageIndex=1”></jsp:forward>
do_news.jsp:
1.设置编码
request.setCharacterEncoding(“utf-8”);
2.实例化service层
NewsService service=new NewsServiceImpl();
3.拿到用户传入的opr的值
String opr=request.getParameter(“opr”);
4.判断用户传过来的opr是否等于page
if(“page”.equals(opr)){
5.拿到用户传过来的pageIndex
String str=request.getParameter(“pageIndex”);
6.默认pageIndex的值为1,如果用户传过来的pageIndex不为空,那么pageIndex等于用户传过来的
int pageIndex=1;
if(!"".equals(str)||str!=null){
pageIndex=Integer.parseInt(str);
}
7.设置每页显示的条数
//一页显示五条
int pageSize=5;
8.通过service层查询一共有多少条新闻
//获取一共有多少条新闻
int totalCount=service.getCount();
9.实例化page类,用来存储以上的值
Page page1=new Page();
page1.setPageSize(pageSize);
page1.setTotalCount(totalCount);
10.如果用户传过来的pageIndex小于1,那么就让他等于1,如果大于最大页数,那么就让他等于最大页数
把pageIndex也赋值给page1对象
if(pageIndex<1)pageIndex=1;
if(pageIndex>page1.getPageCount())pageIndex=page1.getPageCount();
page1.setPageIndex(pageIndex);
11.所有数据都得到后,通过service层查询当前页面所需要的数据
page1.setNews(service.getNewsByPage(page1.getPageIndex(),page1.getPageSize()));
12.将封装好的page1对象放入request作用域中,转发到show_news.jsp页面
request.setAttribute(“page”, page1);
request.getRequestDispatcher(“show_news.jsp”).forward(request, response);
show_new.jsp:
1.先的得到request作用域中的page对象
Page page1=(Page)request.getAttribute(“page”);
2.循环遍历page1对象中的news集合


  • <%
    for(News n:page1.getNews()){
    %>
  • <%=n.getId() %>|<%=n.getTitle() %>|<%=n.getContent() %>

  • <%
    }
    %>

3.首 页:请求do_news.jsp,并且传入pageIndex=1(第一页)
上一页:拿到page1对象中的当前页码(page1.getPageIndex()),-1
下一页:拿到page1对象中的当前页码(page1.getPageIndex()),+1
尾 页: 请求do_news.jsp,并且传入pageIndex的值为总页数page1.getPageCount()(最后一页)
首页
上一页
下一页
尾页

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值