Java如何做到分页显示
来源:互联网 发布:淘宝获取商品id 编辑:程序博客网 时间:2024/05/16 07:15
Java如何做到分页显示
分析需求:
必须返回:总页数(int)+查询的表数据(List<Map<String,String>>)
因此可封装成:
int pageCount; List<Map<String,String>> datas; Map<String,Object> map = new HashMap<String,Object>(); map.put("pageCount",pageCount); map.put("datas",datas);
Java方面
写一个DAO:
public interface PageDAO { public Map<String,Object> query(Integer pageNo) throws Exception;}
他的实现类
@Override public Map<String, Object> query(Integer pageNo) throws Exception { Map<String, Object> result= new HashMap<String, Object>(); //每一页显示10个数据 int pageSize= 10; //计算总页数 总页数= 行数 / pageSize +(行数%pageSize==0 ? 0:1) //总行数 String sql = "SELECT COUNT(1) FROM stud "; QueryRunner run = new QueryRunner(C3p0Pool.getDataSource()); int rows = Integer.parseInt(""+run.query(sql, new ScalarHandler())); int pageCount = rows/pageSize +(rows%pageSize==0? 0 : 1 ) ; result.put("pageCount",pageCount);//封装总页数 //查询表数据 int stratN= (pageNo-1)*pageSize; sql= "select * from stud limit "+ stratN +","+ pageSize; List<Map<String,Object>> datas = run.query(sql, new MapListHandler()); result.put("datas",datas); return result; }
Web方面:
在indexjsp页面直接跳转
PageServlet:
public class PageServlet extends HttpServlet { // 注入service IPageService service = new PageService(); public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request, response); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 当前要查询的页 序号 String sPageNo = request.getParameter("page"); if (sPageNo == null || sPageNo.trim().length() == 0) { sPageNo = "1"; } Integer pageNo = null; try { pageNo = Integer.parseInt(sPageNo); } catch (NumberFormatException e) { System.out.println("页面异常"); } // 调用service try { Map<String, Object> res = service.query(pageNo); //往res中 添加当前的页序号 res.put("currentPage", pageNo); //导向分页后的页面 request.setAttribute("res", res); request.getRequestDispatcher("/jsps/show.jsp").forward(request, response); } catch (Exception e) { System.out.println("导向错误页面"); } }}
show.jsp
导入标准标签库:
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
然后从后台用EL表达式拿数据:
<body> <h3>学生信息</h3> <!-- 类似于增强for循环,从res.datas(后台把查询到的信息放到此)中拿, 放到map中,在从map中用EL表达式拿 --> <c:forEach items="${res.datas}" var="map"> ${map.id} , ${map.name }<br /> </c:forEach> <hr /><!-- 后台封装了一个当前页currentPage,判断是否是第一页,不是就加一个上一页 --> <c:set value="${res.pageCount}" var="pageCount"></c:set> <c:if test="${res.currentPage != 1}"> <a href="<c:url value='/PageServlet?page=${res.currentPage-1}'/>">上一页</a> </c:if><!-- 用for循环,从1开始到总页数pageCount, --> <c:forEach begin="1" end="${pageCount}" var="idx"> <c:if test="${res.currentPage == idx}"> ${idx} </c:if><!-- 判断是否为当前页,不是则将现在的页码,用url传到后台,由后台处理 --> <c:if test="${res.currentPage != idx}"> <a href="<c:url value='/PageServlet?page=${idx}'/>">${idx}</a> </c:if> </c:forEach> <c:if test="${res.currentPage != pageCount}"> <a href="<c:url value='/PageServlet?page=${res.currentPage+1}'/>">下一页</a> </c:if> <hr /> <!--这是用下拉菜单的形式做分页查询 --> <select onchange="sub(this)"> <c:forEach begin="1" end="${pageCount}" var="idx"> <option <c:if test='${idx==res.currentPage }'>selected</c:if> value="${idx }">第${idx }页</option> </c:forEach> </select> <script type="text/javascript"> function sub(obj) { window.location.href="<c:url value='/PageServlet?page='/>"+ obj.value; } </script></body>
连接池的工具包
http://pan.baidu.com/s/1hrQBXyO
阅读全文
0 1
- Java如何做到分页显示
- oracle如何做到分页
- 【分页查询】Page如何做到分页查询
- java如何做到实时
- 如何做到java线程安全
- 如何做到java线程安全
- 留言板如何分页显示
- 如何做到有扎实的 Java 基础
- 如何做到有扎实的Java基础
- 如何做到扎实的Java基础?【转载】
- Java分页显示
- java的分页显示
- 教你如何做到显示 Dialog Box(对话框)
- RadioButton 如何做到页面的显示和切换
- java list分页显示 假分页
- 如何实现分页(Java)
- Java如何实现分页
- Java jsp 分页显示数据
- 【数论】线性求[1,p-1]所有数逆元的方法
- ORACLE 如何查询被锁定表及如何解锁释放session
- Mysql常见连接问题汇总
- css居中总结
- [Zabbix] Kafka 监控
- Java如何做到分页显示
- 使用Android NDK中的独立toolchain来开发C/C++程序
- 解决RecyclerView与SwipeRefreshLayout滑动冲突
- MySQL编译选项 -fno-strict-aliasing随手记
- 未来5年大机遇:做贩卖多巴胺的超级玩家
- delele Open Hub DTP
- User <anonymous> does not have permission on weblogic.management.adminhome to perform lookup operati
- logback日志写入数据库的配置
- squid 的ACL访问控制