收藏 分享(赏)

《java ee开发技术教学课件》java web分页技术.doc

上传人:dzzj200808 文档编号:4219408 上传时间:2018-12-16 格式:DOC 页数:14 大小:56KB
下载 相关 举报
《java ee开发技术教学课件》java web分页技术.doc_第1页
第1页 / 共14页
《java ee开发技术教学课件》java web分页技术.doc_第2页
第2页 / 共14页
《java ee开发技术教学课件》java web分页技术.doc_第3页
第3页 / 共14页
《java ee开发技术教学课件》java web分页技术.doc_第4页
第4页 / 共14页
《java ee开发技术教学课件》java web分页技术.doc_第5页
第5页 / 共14页
点击查看更多>>
资源描述

1、Java Web 分页技术关于在 java web 上实现分页技术,方式实际上有很多,也各有个的特点,此处我只写些我的认识。java web 分页无外乎两种,一种是直接取出来,放到一个集合里,通过传 begin 和 end 参数控制分页,还有一种就是把分页工作交给数据库,让数据库读取需要的 beginend 之间的数据。我们这里,先看从数据库中读取的情况操作数据库就需要 tsql 语句,mssqlserver2005 新推出了一个 row_number()很好用,还有就是 mysql 的 limit 也非常好使。mssqlserver2005 的如下:select * from (select

2、 row_number() over (order by ename) as rn, f.* from emp f) b where b.rn between 6 and 10;mysql 的:select * from emp limit 5,5mysql 的应注意,使用 limit 时,表中必须用主键,还有 limit 后的两个参数分别代表(标识位,长度),标识位从 0 开始现在开始一步步完成,首先完成 model 模块,建立 pagebeanimport java.util.*;public class PageBean private Collection objs;/从数据库中读的集

3、合private int totalCount;/总的条数private int pageNo;/当前的页数private int pageCount;/每页的条数public int getPageCount() return pageCount;public void setPageCount(int pageCount) this.pageCount = pageCount;public void setPageNo(int pageNo) this.pageNo = pageNo;public int getTotalPage()if(totalCount % pageCount =

4、0)return totalCount/pageCount; else return totalCount/pageCount + 1;/多写一个判断下一页的方法public boolean isNext()return pageNo 1;public Collection getObjs() return objs;public void setObjs(Collection objs) this.objs = objs;public int getPageNo() return pageNo;public int getTotalCount() return totalCount;publ

5、ic void setTotalCount(int totalCount) this.totalCount = totalCount;public PageBean(Collection objs, int totalCount, int pageNo, int pageCount) this.objs = objs;this.totalCount = totalCount;this.pageNo = pageNo;this.pageCount = pageCount;之后开始实现 biz 模块我们写一个具体分页的逻辑import java.util.*;import java.sql.*;p

6、ublic class EmpBiz public EmpBiz() /具体实现分页的方法,传递两个参数,一个第几页,一个每页的数量public PageBean listEmps(int pageNo, int pageCount)Connection con = null;Statement stmt = null;ResultSet rs = null;ArrayList emps = new ArrayList();/次数我使用 mssqlserver 的方式,所以计算前后两个范围,用 a,b 表示int a = pageNo* pageCount;int b = (pageNo-1)

7、* pageCount;try Class.forName(“com.microsoft.sqlserver.jdbc.SQLServerDriver“);con=DriverManager.getConnection(“jdbc:sqlserver:/localhost:1433;databaseName=Master;“,“sa“,“sa“);stmt = con.createStatement();rs = stmt.executeQuery(“select * from (select row_number() over (order by ename) as rn, f.* from

8、 emp f) b where b.rn between “+a+“ and “+b);while(rs.next()Employee e = new Employee();e.setEmpno(rs.getInt(“empno“);e.setEname(rs.getString(“ename“);e.setSal(rs.getDouble(“sal“);emps.add(e);rs = stmt.executeQuery(“select count(*) from emp“);int totalCount=0;if(rs.next()totalCount = rs.getInt(1);Pag

9、eBean pageBean = new PageBean(emps,totalCount,pageNo,pageCount);return pageBean;catch (Exception ex) System.out.println(“发生错误,错误是:“ + ex.getMessage();return null; finally if(stmt != null) try stmt.close(); catch (SQLException ex1) if(con != null) try con.close(); catch (SQLException ex1) 实现完 EmpBiz

10、之后,开始写 servlet 类import java.io.*;import java.util.*;public class EmpServletextends HttpServlet private static final String CONTENT_TYPE = “text/html; charset=GBK“;/Initialize global variablespublic void init() throws ServletException /Process the HTTP Get requestpublic void doGet(HttpServletRequest

11、request, HttpServletResponse response) throwsServletException, IOException response.setContentType(CONTENT_TYPE);EmpBiz biz = new EmpBiz();/给页数和每页数量一个初始值int pageNo = 1;int pageCount = 5;String pageNoStr = request.getParameter(“pageNo“);String pageCountStr = request.getParameter(“pageCount“);if(pageN

12、oStr != null)pageNo = Integer.parseInt(pageNoStr);if(pageCountStr != null)pageCount = Integer.parseInt(pageCountStr);PageBean pageBean = biz.listEmps(pageNo,pageCount);request.setAttribute(“pageBean“,pageBean);request.getRequestDispatcher(“listemp.jsp“).forward(request,response);/Process the HTTP Po

13、st requestpublic void doPost(HttpServletRequest request, HttpServletResponse response) throwsServletException, IOException doGet(request, response);/Clean up resourcespublic void destroy() 业务逻辑完了之后,只要实现 jsp 页面即可listempa color:blue;text-decoration=underline;cursor:pointer;function page(s)var myform =

14、 document.getElementByIdx(“myform“);var pageNo = document.getElementByIdx(“pageNo“);pageNo.value = s;myform.submit();JBuilder Generated JSP$t.empno$t.ename$t.sal跳转到:每页记录数:共有 $pageBean.totalPage页上一页下一页最后一页从库中读出全部数据,放到一个集合里边,直接在页面上显示分页,直接给出jsp 源码:PagingPagingPrevNextContent此是 Java Web 分页技术 2 的后续,原理完全是

15、 Java Web 分页技术 2 的原理,只不过写了一个自定义的 tag,但是自定义的 tag 要注意一点,tag 的作用域pageContext我们现在就是把 Java Web 分页技术 2 的内容写成自定义标签,先完成SimpleTagSupport 类package org.taglib;import javax.servlet.jsp.tagext.SimpleTagSupport;import java.io.*;import java.util.*;import javax.servlet.*;import javax.servlet.http.*;import javax.ser

16、vlet.jsp.*;import javax.servlet.jsp.tagext.*;public class PageTag extends SimpleTagSupport private Collection items;/数据的集合private String var;/同理 foreach 标签的 varprivate int pagesize;/每页的数量private ServletRequest request;/这个 request 是必须的,jstl 作用域是 pageContext,我们要做到本页提交private String next;/下一页private St

17、ring previous;/上一页private String status;/同理 foreach 标签的 statuspublic PageTag() public void doTag()throws JspException, IOExceptionString strpre=“;String strnext=“;HttpServletRequest req=(HttpServletRequest)request;int listsize=items.size();JspWriter out=this.getJspContext().getOut();int pagebegin=0;

18、if(req.getParameter(“pagebegin“)!=null)pagebegin=Integer.parseInt(request.getParameter(“pagebegin“);int pageend=pagebegin+pagesize;if(pagebegin=pagesize)strpre=“Previous“;if(pageendNext“;if(pageend=listsize)pageend=listsize;ArrayList templist=new ArrayList();for(int i=pagebegin;iJSTL 1.1 core libraryJSTL core1.1pageusers/tagspageorg.taglib.PageTagscriptlessvartruetrue定义变量itemstruetrue分页集合pagesizetruetrue每页分几条requesttruetrue请求,必须写“$pageContext.request”nexttruetrue下一页previoustruetrue上一页statustruetrue每条信息索引写好之后,只要完成 jsp 页面即可“My JSP index.jsp starting pageThis is my JSP page. $t$next|$pre

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 网络科技 > Java

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报