servlet实现分页

import javax.servlet.http.*;
import javax.servlet.*;
import java.io.*;
import java.sql.*;

public class welcome extends HttpServlet {
	public void doGet(HttpServletRequest request, HttpServletResponse response) {
		Connection conn = null;
		PreparedStatement ps = null;
		ResultSet rs = null;
	
		try {
			response.setCharacterEncoding("GBK");
			PrintWriter out = response.getWriter();
			String driver = "com.mysql.jdbc.Driver";
			String url = "jdbc:mysql://localhost/test";
			String user = "root";
			String passWord = "java";
			
			out.println("<html>");
			out.println("<body>");
			out.println("<h1>");
			out.println("<center>");
			out.println("Welcome to my Web!");
			out.println("</center>");
			out.println("</h1>");
			out.println("</body>");
			out.println("</html>");
			
			int pageSize = 3;
			int pageNow = 1;
			int rowCount = 0;
			int pageCount = 0;
			
			String sPageNow = request.getParameter("pageNowOk");
			if(sPageNow != null) {
				pageNow = Integer.parseInt(sPageNow);
				}
			
			Class.forName(driver);
			conn = DriverManager.getConnection(url, user, passWord);
			ps = conn.prepareStatement("select count(*) from user");
			rs = ps.executeQuery();
			if(rs.next()) {
				rowCount = rs.getInt(1);
				}
				
			if(rowCount % pageSize == 0) {
				 pageCount = rowCount / pageSize;
				}
			else {
				pageCount = rowCount / pageSize + 1;
				}
			ps = conn.prepareStatement("select * from user limit " + pageSize * (pageNow - 1) + ", " + pageSize);
			rs = ps.executeQuery();
			out.println("<html>");
			out.println("<body>");
			out.println("<center>");
			out.println("<img src = imgs/1.jpg>");
			out.println("<table border = 1>");
			out.println("<tr><th>ID</th><th>NAME</th><th>PW</th><th>UNIT</th><th>ROLE</th></tr>");
			
			while(rs.next()) {
				out.println("<tr>");
				out.println("<td>" + rs.getInt(1) +"</td>");
				out.println("<td>" + rs.getString(2) +"</td>");
				out.println("<td>" + rs.getString(3) +"</td>");
				out.println("<td>" + rs.getInt(4) +"</td>");
				out.println("<td>" + rs.getString(5) +"</td>");
				out.println("<tr>");
				}
			out.println("</table>");
			if(pageNow != 1) {
				out.println("<a href=wel?pageNowOk=" + (pageNow - 1) + ">上一页</a>");
				}
				
			for(int i = 1; i <= pageCount; i++) {
				if(pageNow != i) {
					out.println("<a href=wel?pageNowOk=" + i + ">" + i + "</a>");
					}
				else {
					out.println("<a>" + i + "</a>");
					}
				}
				
			if(pageNow != pageCount) {
				out.println("<a href=wel?pageNowOk=" + (pageNow + 1) + ">下一页</a>");
				}
			out.println("</center>");
			out.println("</body>");
			out.println("<body background = imgs/2.jpg>");
			out.println("</html>");
			}catch(Exception ex) {
				ex.printStackTrace();
				}
	}
		
	public void doPost(HttpServletRequest request, HttpServletResponse response) {
		this.doGet(request, response);
		}
	}

转载于:https://my.oschina.net/are1OfBlog/blog/181862

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
单从表现层来说分页不是一个复杂的工作,稍微理一下思路,处于不同competence level的同学应该都能自己搞出来。 以上面的文章列表分页为例,我觉得分页有两点重要的, 一是:分页我们必须首先自己搞清楚,文章总数、每页显示文章数(页大小)、页数 二是:如何做好页脚的分页导航条 实际应用中,文章总数这个值我们从数据库可以得到;每页显示的文章数即分页的页大小可以自己定义;页数我们可以通过下面的个表达式简单得出。 假设: int pageSize = 10; //分页大小 int totalPosts = PagingDAO.entryList.size(); //总文章数 int totalPages = totalPosts/pageSize + ((totalPosts%pageSize)>0?1:0); //计算得出的总页数 每页的文章怎么取出来? 知道分页的大小之后,我们生成了页好的选取下拉框,每次选择第几页的时候,都会向Servlet传递当前选择页号的参数,这样Servlet调用后面的DAO相应的方法,取得文章列表信息,再回传到JSP以供显示。 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> page Size : ${pageSize} <br /> Total Posts: ${totalPosts} <br /> Total Pages: ${totalPages} <br /> Current Page: ${pageNumber} <hr /> <table> <thead> <tr align="center"> <td width="10%">Article ID</td> <td width="70%">Article Title</td> <td colspan="3">Actions</td> </tr> </thead> <tbody> <c:forEach items="${entryList}" var="entry"> <tr align="center"> <td>${entry.entryID}</td> <td>${entry.title}</td> <td><a href="viewEntry?entryID=${entry.entryID}">View</a></td> <td><a href="editEntry?entryID=${entry.entryID}">Edit</a></td> <td><a href="deleteEntry?entryID=${entry.entryID}">Delete</a></td> </tr> </c:forEach> </tbody> <tfoot> <tr align="center"> <td colspan="5"> <jsp:include page="paging_footer.jsp"></jsp:include> </td> </tr> </tfoot> </table> <hr/>
好的,下面是使用layui和servlet实现分页的步骤: 1. 在前端页面引入layui的css和js文件,并添加一个div作为分页的容器: ``` <link rel="stylesheet" href="layui/css/layui.css"> <script src="layui/layui.js"></script> <div id="page"></div> ``` 2. 在servlet中获取需要分页的数据,并将其封装为一个json对象返回给前端页面: ``` protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { int page = Integer.parseInt(request.getParameter("page")); // 获取当前页码 int limit = Integer.parseInt(request.getParameter("limit")); // 获取每页显示的记录数 // 根据页码和记录数从数据库中获取数据 List<User> userList = userService.getUserListByPage(page, limit); // 将数据封装为json对象返回给前端页面 JSONObject result = new JSONObject(); result.put("code", 0); result.put("msg", ""); result.put("count", userService.getUserCount()); result.put("data", userList); response.getWriter().write(result.toJSONString()); } ``` 3. 在前端页面使用layui的table组件展示数据,并添加分页功能: ``` <script> layui.use(['table', 'laypage'], function(){ var table = layui.table; var laypage = layui.laypage; table.render({ elem: '#table', url: 'userList', // 获取数据的servlet的url page: true, // 开启分页 cols: [[ {field:'id', title:'ID'}, {field:'name', title:'用户名'}, {field:'age', title:'年龄'} ]] }); laypage.render({ elem: 'page', limit: 10, // 每页显示的记录数 layout: ['prev', 'page', 'next', 'skip'], jump: function(obj, first){ if(!first){ // 点击页码时重新加载表格数据 table.reload('table', { where: { page: obj.curr, limit: obj.limit } }); } } }); }); </script> ``` 这样就完成了使用layui和servlet实现分页的过程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值