当前位置: 代码迷 >> 综合 >> java_web 快速入门之第九章 新闻发布系统中的分页功能
  详细解决方案

java_web 快速入门之第九章 新闻发布系统中的分页功能

热度:62   发布时间:2023-12-05 09:26:03.0

一:伪列思路

若要实现分页功能,需要依赖于伪列

例:根据伪列实现查询tb_news表中的第一条到第五条记录(不考虑排序)

注意:如果一个select插叙语句中包含rownum字段,那么对于区间查询中的算术运算符(>)无效

解决方法:将rownum伪列字段变成明列字段即可

select b.* from ( select a.*,rownum as rid from tb_news a ) b where b.rid between 1 and 5; 

案例:在某一个显示区域显示新闻 通过分页显示

     假设:一次性只能显示5条数据  默认显示第一页
     规律:默认第一页    每一页显示5条数据

    int pageIndex = 1;//页码  默认从第一页开始显示
    int pageSize = 5;//每一页显示的新闻的条数

  • 当pageIndex = 1 pageSize = 5的情况下  显示第一页数据

select b.* from (select a.*,rownum as rid from tb_news a
) b where b.rid between (pageIndex-1)*pageSize+1 and pageIndex * pageSize;--1-5

  • 当pageIndex = 2 pageSize = 5的情况下  

select b.* from (select a.*,rownum as rid from tb_news a
) b where b.rid between (pageIndex-1)*pageSize+1 and pageIndex*pageSize;
  • 当pageIndex = 3 pageSize = 5的情况下

select b.* from (select a.*,rownum as rid from tb_news a
) b where b.rid between (pageIndex-1)*pageSize+1 and pageIndex*pageSize;

二:未带模糊查询功能的分页功能显示

      -------代码如下----------

  <ul class="classlist"><%//定义分页标记(分页三要素)int pagesize=1;int rows=5;int max=1;//接收分页按钮传递过来的页码pagesizeif(null!=request.getParameter("pagesize")){pagesize=Integer.parseInt(request.getParameter("pagesize"));}//实例化dao类NewDao newsDao=new NewDao();//查询新闻信息List<News> lst=newsDao.queryNews(pagesize,rows);//获取新闻的总记录数Integer total=newsDao.getNewsCount(title);//计算最大页码max=total/rows;//除不尽,有余数,最大页码+1if(total%rows!=0)max++;for(News news : lst){%><li> <a href="/web_05/admin/read.jsp?nid=<%=news.getNid() %>"><%=news.getNtitle() %></a><span> 作者:<%=news.getNauthor() %> &#160;&#160;&#160;&#160; <a href='/web_05/admin/update.jsp?nid=<%=news.getNid() %>'>修改</a> &#160;&#160;&#160;&#160; <a href='/web_05/admin/dodel.jsp?nid=<%=news.getNid() %>' onclick='return clickdel()'>删除</a> </span> </li><%}%><p align="right"> 当前页数:[<%=pagesize %>/<%=max %>]&nbsp;<a href="admin/index.jsp?pagesize=1">首页</a> <a href="admin/index.jsp?pagesize=<%=pagesize-1<1?1:pagesize-1%>&title=<%=title%>">上一页</a> <a href="admin/index.jsp?pagesize=<%=pagesize+1>max?max:pagesize+1%>">下一页</a> <a href="admin/index.jsp?pagesize=<%=max%>">末页</a> </p></ul>

三:带模糊查询功能的分页功能显示

      -------代码为主-------

	<div style = "width:100%;height:40px;text-align: center;line-height:40px; "><form action = "admin.jsp" method = "post"><label>新闻标题</label><input type = "text" name = "strName" autocomplete="off"/><input type = "submit" value = "搜索"/></form></div><ul class="classlist"><%	//request请求对象设置编码request.setCharacterEncoding("utf-8");//实例化DAOINewsDao ind = new NewsDaoImpl();//pageIndex  页码 默认第一页int pageIndex = 1;//pageSize  每页显示的条数  5条int pageSize = 5;//当手动点击了下一页按钮   获取pageIndex  赋值给第75处的那个pageINdexString pIndex = request.getParameter("pageIndex");if(null!=pIndex){//说明点击了下一页pageIndex = Integer.valueOf(pIndex);}//手动点击了搜索提交按钮   获取到模糊查询的关键字  否则没有点击的情况下 null  转换String strName = request.getParameter("strName");if(strName==null){//没有手动点击搜索strName="";}else{//手动点击了搜索//编码和解码//strName = new String(strName.getBytes("ISO-8859-1"),"utf-8");}//不考虑不糊查询int count = ind.getNewsCount(strName);//6  int pageMax = 0;if(count % pageSize == 0){pageMax = count / pageSize;}else{pageMax = count / pageSize +1;}//调用查看所有的新闻的方法List<News> listNews = ind.queryNewsAll5(pageIndex,pageSize,strName);//第一个参数页码  第二个参数:条数for(News news:listNews){%><!-- 填充新闻标题以及时间或者作者 --><li> <!-- 新闻标题 --><a href='#'><%=news.getNtitle() %></a> <span> 作者:<%=news.getNauthor() %> &#160;&#160;&#160;&#160; <a href='#'>修改</a> &#160;&#160;&#160;&#160; <a href='javascript:void(0)' onclick='clickdel()'>删除</a></span> </li><%}%><li class='space'></li><p align="right" style = "font-size:20px;font-weight: bold"> 当前页数:[<%=pageIndex %>/<%=pageMax %>]&nbsp; <a href="admin.jsp?pageIndex=1&strName=<%=null!=strName?strName:""%>">首页</a><a href="admin.jsp?pageIndex=<%=pageIndex-1<0?1:pageIndex-1%>&strName=<%=null!=strName?strName:""%>">上一页</a><a href="admin.jsp?pageIndex=<%=pageIndex+1>pageMax?pageMax:pageIndex+1%>&strName=<%=null!=strName?strName:""%>">下一页</a><a href="admin.jsp?pageIndex=<%=pageMax%>&strName=<%=null!=strName?strName:""%>">末页</a> </p></ul></div></div>