JavaWeb(分页)
1.分页显示的步骤:(1)确定每页显示的数据量(2)计算显示的页码(3)编写SQL语句当数据多起来的时候 ,记得需要一个容器将它包装起来,所以大容量数据显示可以派上用场(这只是其中一种方式)2.大容量数据显示特点:(1)以列表方式显示数据的特点优势:数据能够按照指定格式显示,布局清晰不受信息数量的限制缺点:当数据量较多,页面显示不完全时,需要用户拖动页面才能浏览更多信息那么大容量数据显示...
1.分页显示的步骤:
(1)确定每页显示的数据量
(2)计算显示的页码
(3)编写SQL语句
当数据多起来的时候 ,记得需要一个容器将它包装起来,所以大容量数据显示可以派上用场(这只是其中一种方式)
2.大容量数据显示特点:
(1)以列表方式显示数据的特点
优势:数据能够按照指定格式显示,布局清晰
不受信息数量的限制
缺点:当数据量较多,页面显示不完全时,需要用户拖动页面才能浏览更多信息
那么大容量数据显示会降低用户体验度,有没有更好的方式呢?
这就得采用到分页实现批量数据的页面显示
分页显示在生活中随处可见
《如图所示》
实现分页的步骤:
(1)获取总记录
(2)根据每页显示的记录与总记录计算总页数
《代码演示》
(count%pageSize ==0)?(count/pageSize):(count/pageSize+1);计算分页页码
public int getTotalPages(int count, int pageSize){ int totalpages =0; totalpages = (count%pageSize ==0)?(count/pageSize):(count/pageSize+1); return totalpages; }
--分页的sql语句
--伪列:rownum 不能作用于大于符号以及between..and 把伪列-->明列(实列)=取别名--以emp表为例
--假设每页5条记录
--取第一页select * from( select a.*,rownum as rid from emp a where ename like '%a%' ) b where b.rid between 5 and 10
《代码演示》
提示:sql语句是先排序后编号 在需要分页的界面调用如下方法即可
public List<News> getPage(int pageIndex,int pageSize){ List<News> ls = new ArrayList<News>(); int a = (pageIndex-1)*pageSize+1; int b = pageIndex*pageSize; try { //jdbc连接数据库 con = DBHelper.getCon(); //定义sql 语句 String sql = "select * from (\r\n" + "select a.*,rownum as rid from(\r\n" + " select nid,ntitle,nauthor from tb_news order by nid desc\r\n" + ")a\r\n" + ")b where b.rid between ? and ?"; //获得执行对象 ps=con.prepareStatement(sql); //给占位符赋值 ps.setInt(1, a); ps.setInt(2, b); //获得结果集 rs = ps.executeQuery(); } catch (Exception e) { e.printStackTrace(); }finally { DBHelper.myClose(con, ps, rs); } return ls; }
《获取当前页码》
思路:获取显示页的页码
如果获取的页码为NULL,则设置当前页为首页
如果获取的页码不为NULL,则该页码即为当前页页码
《代码演示》
String currentPage = request.getParameter("pageIndex");//读取页码 //判断页码 if(currentPage == null){ currentPage = "1"; } int pageIndex = Integer.parseInt(currentPage); //将当前页码赋值给变量进行后续的出传递
《分页的设置》
根据已确认的当前页,设置上页和下页
根据总页数设置首页和末页
《如图所示》
《 首页和末页的控制》
通过判断pageIndex变量实现首页末页的控制
String currentPage = request.getParameter("pageIndex"); if(currentPage == null){ currentPage = "1"; } int pageIndex = Integer.parseInt(currentPage); //对首页与末页进行控制 if(pageIndex < 1){ pageIndex = 1; }else if(pageIndex > totalpages){ pageIndex = totalpages; }
《 带模糊查询的分页》
@param pageIndex 第几页
@param pageSize 每页多少条记录
@param title 关键字
@return 新闻的集合public List<News> getPage(int pageIndex,int pageSize,String title){ List<News> ls = new ArrayList<News>(); int a = (pageIndex-1)*pageSize+1; int b = pageIndex*pageSize; try { //jdbc连接数据库 con = DBHelper.getCon(); //定义sql 语句 String sql = "select * from (\r\n" + "select a.*,rownum as rid from(\r\n" + " select nid,ntitle,nauthor from tb_news where ntitle like '%"+title+"%' order by nid desc\r\n" + ")a\r\n" + ")b where b.rid between 5 and 10\r\n" + ""; //获得执行对象 ps=con.prepareStatement(sql); //给占位符赋值 ps.setInt(1, a); ps.setInt(2, b); //获得结果集 rs = ps.executeQuery(); } catch (Exception e) { e.printStackTrace(); }finally { DBHelper.myClose(con, ps, rs); } return ls; }
调用方法即可
《如图所示》
提示:此处一定要加上title,不然title就会为空值,因为title返回的是查询全部
更多推荐
所有评论(0)