javaweb 最简单的分页技术
Posted 两袖清风怎敢误佳人
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javaweb 最简单的分页技术相关的知识,希望对你有一定的参考价值。
原文来自于https://www.cnblogs.com/xwlych/p/6017833.html
个人由加了一点注释,他的代码我运行不起来,弄了好一会
bean包 User.java
package bean;
public class User {
private String username;
private String password;
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
PageServlet.java
package com;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import bean.User;
/**
* Servlet implementation class PageServlet
*/
@WebServlet("/PageServlet")
public class PageServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
ArrayList<User> list = new ArrayList<User>();//这个应该理解吧自定义数组对象[泛型]
// 在这里我不再连接数据库而是用虚拟的数据进行测试效果,小伙伴可以连接数据库查询到之后返回一个list
for (int i = 1; i < 7; i++) {
User user1 = new User();
user1.setUsername("第" + i + "个用户名");
user1.setPassword("第" + i + "密码");
user1.setName("第" + i + "名字");
list.add(user1);
}
HttpSession session =request.getSession();//获取session对象
// 将数据存到session中以便于在前台获取
session.setAttribute("userList", list);
//获取当前页的页数并转为int类型,最终将数据存到session中
int pageNos;
if (request.getParameter("pageNos") == null
|| Integer.parseInt(request.getParameter("pageNos")) < 1) {
pageNos = 1;
} else {
pageNos = Integer.parseInt(request.getParameter("pageNos"));
}
session.setAttribute("pageNos", pageNos);
// 定义总页数并存到session中
int countPage = 6;//这个是总页数,大家可以数据库查询获得
// 在实际开发中我们的总页数可以根据sql语句得到查询到的总条数,然后用总条数除每页的条数得到总页数
session.setAttribute("countPage", countPage);
request.getRequestDispatcher("index.jsp").forward(request, response);//带参数的重定向
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}
index.jsp
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>在此处插入标题</title>
</head>
<body>
<!-- 这个是jstl 表达式和EL表达式,大家可以去下一个jstl jar包 复制到 web-inf目录下(eclipse) 然后包含 <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>这个头文件 至于语法我不懂 这个foreach要写在body
下面,要不循环不出来,因为我写了一个大的报表(如果只把这个foreach 放在我写的表格table前面 无法循环 ,原因不知)下面的
begin="${(pageNos-1)*1 为开始页数 和 end="${pageNos*1-1}"结束页数,我这里是每页显示一个,如果大家要显示多个更改此代码
例如两个的话begin="${(pageNos-1)*2 }" end="${pageNos*2-1}" 嗯嗯那没太注意算法,不求甚解吧哈哈哈-->
<c:forEach items="${userList}" var="user" begin="${(pageNos-1)*1 }"
end="${pageNos*1-1}"> <!-- 这里是控制每页显示的个数 -->
<center>
<div>${user.username}</div>
</center>
<center>
<div>${user.password}</div>
<div>${user.name}</div>
</center>
</c:forEach>
<center>
<c:if test="${pageNos>1 }"> <!-- 这里是一个判断你页数是不是大于1如果把这行去了会出现什么情况,自己试试吧 -->
<a href="PageServlet?pageNos=1" >首页</a>
<a href="PageServlet?pageNos=${pageNos-1 }">上一页</a>
</c:if>
<c:if test="${pageNos <countPage }">
<a href="PageServlet?pageNos=${pageNos+1 }">下一页</a>
<a href="PageServlet?pageNos=${countPage }">末页</a>
</c:if>
</center>
<form action="PageServlet" method="get"><!-- 这里建立一个表单提交到服务器 -->
<h4 align="center">共${countPage}页
<input type="text" value="${pageNos}" name="pageNos" size="1">页
<input type="submit" value="go">
</h4>
</form>
</body>
</html>
一定注意你运行的时候要从servlet运行 就是点中你的servlet文件运行从服务器运行,要不会报错的,原因是,我觉得你们懂吧!....要不前台会报错的...自己想吧,
一定要下载jstl 包 并且包含头文件 --------------上面有解释
还有那个jsp页面 把我的这个注释删了运行---要不报错----一定删了啊啊啊 注释如下:
【
<!-- 这个是jstl 表达式和EL表达式,大家可以去下一个jstl jar包 复制到 web-inf目录下(eclipse) 然后包含 <%//@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>这个头文件 至于语法我不懂 这个foreach要写在body
下面,要不循环不出来,因为我写了一个大的报表(如果只把这个foreach 放在我写的表格table前面 无法循环 ,原因不知)下面的
begin="${(pageNos-1)*1 为开始页数 和 end="${pageNos*1-1}"结束页数,我这里是每页显示一个,如果大家要显示多个更改此代码
例如两个的话begin="${(pageNos-1)*2 }" end="${pageNos*2-1}" 嗯嗯那没太注意算法,不求甚解吧哈哈哈-->
】
运行截图:
代码结构:
代码打包下载:链接: https://pan.baidu.com/s/1uednZQBmR_AVKbGUw-mIIA 密码: ndwa
以上是关于javaweb 最简单的分页技术的主要内容,如果未能解决你的问题,请参考以下文章