分页

本文详细介绍了Java Web中如何实现数据分页,通过Servlet处理请求,利用LIMIT关键字进行数据库查询,展示分页后的学生信息。内容包括获取页码、设置每页显示条数、计算总页数、判断页码范围、查询数据以及前端JSP页面的展示。同时,展示了DAO层的方法,用于数据的增删改查和分页查询。
摘要由CSDN通过智能技术生成

分页

概念:在页面中展示数据,如果数据较多的情况下,不采取分页的形式就会发现数据查询较慢,如果过多,则页面展示就会出现很长的滚动条,会打乱页面的整体布局。展示效率比较低,用户的客观性较差。为了解决这些问题,通过以分页的形式来展示数据。
内容:
使用limit关键字,从数据库中查询数据
select * from 表名 limit 开始下标(startInde) , 每页显示数据数(pageNum)
开始下标 startIndex (pageNum-1)*pageSize
每页展示数据条数 pageSize 自定义
访问的页码 pageNum 前端发送
总数据条数 count select count(1) from 表名
总页数 pageCount 计算出来
计算公式:(count%pageSize==0)?(count/pageSize):(count/pageSize+1)
代码实现

Servlet

@WebServlet("/studentPageServlet")
public class StudentPageServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// 1  获取访问的页码
		String num = request.getParameter("pageNum");
		int pageNum = Integer.parseInt(num);  // 1   -10    3  5
		// 2  定义每页展示的条数
		int pageSize = 4;
		// 3 获取总条数
		StudentDao studentDao = new StudentDaoImpl();
		int count = studentDao.selectStudentsCount();
		// 4 计算总页数
		int pageCount = (count%pageSize==0)?(count/pageSize):(count/pageSize+1);
		// 5 判断要访问的页码
		if(pageNum > pageCount) {
			pageNum = pageCount;
		}
		if(pageNum <=0) {
			pageNum = 1;
		}
		// 6 计算查询的开始下标
		int startIndex = (pageNum-1)*pageSize;
		// 7 分页查询
		List<Student> list = studentDao.selectStudentsByPage(startIndex, pageSize);
		// 8 给响应
		request.setAttribute("count", count);
		request.setAttribute("pageCount", pageCount);
		request.setAttribute("pageNum", pageNum);
		request.setAttribute("list", list);
		request.getRequestDispatcher("listpage.jsp").forward(request, response);
	}


	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(request, response);
	}

}

前端jsp

<body>
<div class="container">
    <h3 style="text-align: center">用户信息列表</h3>
	<br/>
	<div style="color: red;">${mess }</div>
    <table border="1" class="table table-bordered table-hover">
        <tr class="success">
            <th>编号</th>
            <th>姓名</th>
            <th>性别</th>
            <th>年龄</th>
            <th>出生日期</th>
            <th>籍贯</th>
            <th>QQ</th>
            <th>邮箱</th>
            <th>图片</th>
            <th>操作</th>
        </tr>
        <c:forEach items="${list }" var="stu">
	        <tr>
	            <td>${stu.id }</td>
	            <td>${stu.name }</td>
	            <td>${stu.sex }</td>
	            <td>${stu.age }</td>
	            <td>${stu.birthday }</td>
	            <td>${stu.address }</td>
	            <td>${stu.qq }</td>
	            <td>${stu.email }</td>
	            <td style="padding: 5px;">
	            	<c:forTokens items="${stu.img }" delims=";" var="im" begin="0" end="0">
		            	<a href="studentServlet?action=down&fname=${im }">
		            		<img alt="" src="file/${im }" style="width: 70px;">
		            	</a>
	            	</c:forTokens>
	            	
	            </td>
	            <td>
	            	<a class="btn btn-default btn-sm" href="studentServlet?action=selectStudentById&id=${stu.id }">修改</a>&nbsp;
	            	<a class="btn btn-default btn-sm" href="">删除</a>
	            </td>
	        </tr>
        </c:forEach>
        <tr>
            <td colspan="10" align="center"><a class="btn btn-primary" href="add.jsp">添加联系人</a></td>
        </tr>
        <tr>
            <td colspan="10" align="center">
            	共${count }条 ${pageCount }页  当前${pageNum }页
            	<a href="studentPageServlet?pageNum=1">首页</a>
            	<a href="studentPageServlet?pageNum=${pageNum-1 }">上一页</a>
            	<a href="studentPageServlet?pageNum=${pageNum+1 }">下一页</a>
            	<a href="studentPageServlet?pageNum=${pageCount }">尾页</a>
            </a></td>
        </tr>
    </table>
</div>
</body>

dao层:数据处理

public class StudentDaoImpl implements StudentDao {

	@Override
	public int addStudent(Student stu) {
		String sql = "insert into student values(null,?,?,?,?,?,?,?,?)";
		Object obj[] = {stu.getName(),stu.getSex(),stu.getAge(),stu.getBirthday(),stu.getAddress(),stu.getQq(),stu.getEmail(),stu.getImg()};
		return JDBCUtil.update(sql, obj);
	}

	@Override
	public int delStudent(int id) {
		String sql = "delete from student  where id=?";
		Object obj[] = {id};
		return JDBCUtil.update(sql, obj);
	}

	@Override
	public int updateStudent(Student stu) {
		String sql = "update student set name=?,sex=?,age=?,birthday=?,address=?,qq=?,email=?,img=? where id=?";
		Object obj[] = {stu.getName(),stu.getSex(),stu.getAge(),stu.getBirthday(),stu.getAddress(),stu.getQq(),stu.getEmail(),stu.getImg(),stu.getId()};
		return JDBCUtil.update(sql, obj);
	}

	@Override
	public Student selectStudentById(int id) {
		Student stu = new Student();
		String sql = "select * from student where id=?";
		Object obj[] = {id};
		ResultSet res = JDBCUtil.query(sql, obj);
		try {
			if(res.next()) {
				 stu = new Student(res.getInt(1), res.getString(2), res.getString(3), res.getInt(4), res.getDate(5), res.getString(6), res.getString(7), res.getString(8), res.getString(9));
			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		JDBCUtil.close();
		return stu;
	}

	@Override
	public List<Student> selectStudents() {
		List<Student> list = new ArrayList<Student>();
		
		String sql = "select * from student";
		Object obj[] = {};
		ResultSet res = JDBCUtil.query(sql, obj);
		try {
			while(res.next()) {
				Student stu = new Student(res.getInt(1), res.getString(2), res.getString(3), res.getInt(4), res.getDate(5), res.getString(6), res.getString(7), res.getString(8), res.getString(9));
				list.add(stu);
			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		JDBCUtil.close();
		return list;
	}

	@Override
	public List<Student> selectStudentsByPage(int startIndex, int pageSize) {
		List<Student> list = new ArrayList<Student>();
		
		String sql = "select * from student limit ?,?";
		Object obj[] = {startIndex,pageSize};
		ResultSet res = JDBCUtil.query(sql, obj);
		try {
			while(res.next()) {
				Student stu = new Student(res.getInt(1), res.getString(2), res.getString(3), res.getInt(4), res.getDate(5), res.getString(6), res.getString(7), res.getString(8), res.getString(9));
				list.add(stu);
			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		JDBCUtil.close();
		return list;
	}

	@Override
	public int selectStudentsCount() {
		int count = 0;
		String sql = "select count(1) from student";
		Object obj[] = {};
		ResultSet res = JDBCUtil.query(sql, obj);
		try {
			if(res.next()) {
				count = res.getInt(1);
			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		JDBCUtil.close();
		return count;
	}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值