Demo之JavaEE的Web中数据分页显示
2012-07-26 18:52
309 查看
[b]JavaWeb分页技术[/b]
关于java web上实现分页技术,方式实际上有很多,也各有特点,此处我只写我的认识。Java web分页无外乎两种,一种直接取出来,放到一个集合了,通过传begin和end参数控制分页,还有一种就是把分页工作交给数据库,让数据库读取需要的begin和end直接的数据。
我使用的是后一种方式就是将分页的工作交给了数据库:我使用的是MySQL数据库
页面显示效果:
![](data:image/png;base64,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)
页面代码:
Servlet中的Post方法的代码:
在这里自己写了一个存储数据的类PageBean
写了一个数据访问层的类EmpBiz:
还需要用到一个访问数据库的工具类:DBCon,这里也贴出来了:
关于java web上实现分页技术,方式实际上有很多,也各有特点,此处我只写我的认识。Java web分页无外乎两种,一种直接取出来,放到一个集合了,通过传begin和end参数控制分页,还有一种就是把分页工作交给数据库,让数据库读取需要的begin和end直接的数据。
我使用的是后一种方式就是将分页的工作交给了数据库:我使用的是MySQL数据库
页面显示效果:
页面代码:
<form action="PageServlet" method="post" id="myform"> <table border="1"> <c:forEach items="${pageBean.arrayObjs }" var="obj"> <tr> <td>${obj }</td> </tr> </c:forEach> <tr> <td colspan="3"> 跳转到:<input id="currentPageNum" type="text" name="currentPageNum" value="${pageBean.currentPageNum }" /> 每页记录数:<input type="text" name="pageCount" value="${pageBean.pageCount }" /> <br /> <input type="submit" value="跳转" /> 共有${pageBean.totalPage } <c:if test="${pageBean.previous }"> <a onclick="page(${pageBean.currentPageNum}-1);">上一页</a> </c:if> <c:if test="${pageBean.next }"> <a onclick="page(${pageBean.currentPageNum}+1);">下一页</a> </c:if> <a onclick="page(${pageBean.totalPage});">最后一页</a> </td> </tr> </table> </form>
Servlet中的Post方法的代码:
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub EmpBiz biz=new EmpBiz(); int currentPageNum=1; int pageCount=4; String currentPageNumStr=request.getParameter("currentPageNum"); String pageCountStr=request.getParameter("pageCount"); if(currentPageNumStr!=null){ currentPageNum=Integer.parseInt(currentPageNumStr); } if(pageCountStr!=null){ pageCount=Integer.parseInt(pageCountStr); } PageBean pageBean = biz.lisEmps(currentPageNum, pageCount); request.setAttribute("pageBean", pageBean); request.getRequestDispatcher("list.jsp").forward(request, response); }
在这里自己写了一个存储数据的类PageBean
package com.leejie.page.bean; import java.util.List; public class PageBean { private List arrayObjs; //从数据库中读出的集合 private int totalCount; //总条数 private int currentPageNum; //页数 private int pageCount; //每页的条数 public PageBean(List arrayObjs,int pageCount,int currentPageNum,int totalCount){ this.arrayObjs=arrayObjs; this.pageCount=pageCount; this.currentPageNum=currentPageNum; this.totalCount=totalCount; } public List getArrayObjs() { return arrayObjs; } public void setArrayObjs(List arrayObjs) { this.arrayObjs = arrayObjs; } public int getTotalCount() { return totalCount; } public void setTotalCount(int totalCount) { this.totalCount = totalCount; } public int getPageCount() { return pageCount; } public void setPageCount(int pageCount) { this.pageCount = pageCount; } public int getCurrentPageNum() { return currentPageNum; } public void setCurrentPageNum(int currentPageNum) { this.currentPageNum = currentPageNum; } public int getTotalPage(){ if(this.totalCount%this.pageCount==0){ return this.totalCount/this.pageCount; }else{ return this.totalCount/this.pageCount+1; } } public boolean isNext(){ return this.currentPageNum<this.getTotalPage(); } public boolean isPrevious(){ return this.currentPageNum>1; } }
写了一个数据访问层的类EmpBiz:
package com.leejie.page.biz; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; import com.leejie.dbcon.util.DBCon; import com.leejie.page.bean.PageBean; public class EmpBiz { public EmpBiz(){ } public PageBean lisEmps(int currentPageNum,int pageCount){ List emps = new ArrayList(); int a = currentPageNum; int b = pageCount; String sql="select * from scores limit ?,?"; PreparedStatement ps=DBCon.getPreparedStatement(sql); try { ps.setInt(1, a); ps.setInt(2, b); ResultSet rs=ps.executeQuery(); int i=10; while(rs.next()){ emps.add(i); i+=5; } String sqlTotal="select count(*) from scores"; PreparedStatement psTotal = DBCon.getPreparedStatement(sqlTotal); int totalCount=0; ResultSet rsTotal=psTotal.executeQuery(); while(rsTotal.next()){ totalCount=rsTotal.getInt(1); } PageBean pageBean=new PageBean(emps, pageCount, currentPageNum, totalCount); return pageBean; } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } finally { DBCon.close(); } return null; } }
还需要用到一个访问数据库的工具类:DBCon,这里也贴出来了:
package com.leejie.dbcon.util; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.SQLException; public class DBCon { private static final String DRIVERNAME="com.mysql.jdbc.Driver"; private static final String URL="jdbc:mysql://localhost:3306/school"; private static final String USERNAME="root"; private static final String PASSWORD="li257298"; private static Connection conn; private static PreparedStatement ps; static{ try { Class.forName(DRIVERNAME); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public static Connection getConnection() { try { conn=DriverManager.getConnection(URL,USERNAME,PASSWORD); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } return conn; } public static PreparedStatement getPreparedStatement(String sql){ try { ps=getConnection().prepareStatement(sql); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } return ps; } public static void close(){ if(ps!=null){ try { ps.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } if(conn!=null){ try { conn.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } }
相关文章推荐
- jQuery实现数据分页显示Demo
- Web分页显示数据
- SSH框架中 分页显示数据Demo
- Tomcat与JavaWeb 4.3 分页显示批量数据、 Ch4小结
- UltraWebGrid在不分页的情况下默认只能显示50条数据的问题
- web 中的数据分页显示
- 数据分页显示大搜索
- 总结ASP.NET MVC Web Application中将数据显示到View中的几种方式
- JSP页面分页显示数据
- FusionChart实现柱状图、饼状图的动态数据显示 附Demo
- JDBC:JSP分页显示数据
- 分页显示数据
- [百万级]通用分页存储过程.[千万级]实现千万级数据的分页显示!(转)
- ajax 笔记--不用刷新实现数据的分页显示
- JSP分页显示数据
- 在ASP.NET 2.0中操作数据之五十三:在Data Web控件显示二进制数据
- 我的ASPxGridView控件的数据是在后台绑定的,但是实现不了筛选和分页的功能,只能显示一页的数据?
- 总结ASP.NET MVC Web Application中将数据显示到View中的几种方式
- Bootstrap 分页插件 ajax获取数据显示
- Spring boot分页显示数据库中数据(不刷新页面)