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 = ; i < ; 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")) < ) {
pageNos = ;
} else {
pageNos = Integer.parseInt(request.getParameter("pageNos"));
}
session.setAttribute("pageNos", pageNos);
// 定义总页数并存到session中
int countPage = ;//这个是总页数,大家可以数据库查询获得
// 在实际开发中我们的总页数可以根据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 最简单的分页技术的更多相关文章
- asp.net core下一个简单的分页技术
在做web应用的时候免不了要对数据进行分页,我最近在做asp.net core的开发的时候就遇到了这个需求,现在简单的记录一下: public class PaginatedList<T> ...
- Javaweb 第15天 web练习和分页技术
第15天 web练习和分页技术 复习day14内容: 学习新技术的思路? 分析功能的思路? 使用queryRunner操作数据库的步骤? ResultSetHandler接口常用实现类(三个重点)? ...
- tp中使用分页技术
1 public function showList() { $m_ld = D ( 'guangxi_ld' ); $page = I ( 'get.p', 1 ); // 在配置中获取分页值 $p ...
- 关于Ajax无刷新分页技术的一些研究 c#
关于Ajax无刷新分页技术的一些研究 c# 小弟新手,求大神有更好的解决方案,指教下~ 以前做项目,用过GridView的刷新分页,也用过EasyUI的封装好的分页技术,最近在老项目的基础上加新功能, ...
- 改进Spring中的分页技术
Spring中有一个PagedListHolder,能够实现分页. 但此类有几个缺点: 1. 使用此类的代码比較繁琐 2. 此类存放的数据源是全部的记录集,即对于记录数为1000条的数据,即使我们仅仅 ...
- 【MFC】利用单一对话框内的分页技术实现向导功能(转)
原文转自 http://blog.csdn.net/yongh701/article/details/43793151 所谓的向导功能,在win32的程序中常常见于安装程序或者程序内的设置向导,该向导 ...
- JAVAEE之-----MySQL分页技术(带搜索)
需求: 为什么须要採用分页技术呢?在数据库中我们查询数据的时候,须要将数据返回到显示页面.数据库中含有大量数据,所有显示在一个页面过于太多,所以我们须要採用分页技术.每一页显示不同数据. 主要解决这个 ...
- Servlet分页技术
这是看韩顺平老师的servlet视频,自己动手写的,楼主看韩顺平老师的servlet是2006制作的,用的是sql server数据库,自己又用的是oracle数据库,所以怕有的同学遇到同样的问题,不 ...
- 简单的分页存储过程,Json格式日期转换为一般日期
简单的分页存储过程 CREATE PROC Paged @pageIndex INT, @pageCount INT OUTPUT, @pageSize INT AS DECLARE @count I ...
随机推荐
- HTTP报文结构及Cookie、session区别
目录 万维网 HTTP超文本传输协议 特点 HTTP的报文结构. 下面介绍http请求报文最主要的一些特点 在服务器上存放用户的信息(Cookie) 实例: 工作原理: cookie中的主要内容: C ...
- java基础多线程
线程的创建 方式1:继承Java.lang.Thread类,并覆盖run() 方法 package com.demo.Thread; public class ThreadDemo01 extends ...
- vbox虚拟机vdi文件用VMware打开
转自:https://blog.51cto.com/dahui09/1863486 方法一: 使用VirtualBox 自带的VBoxManage来进行格式转换: 1.安装VBoxManage 2.使 ...
- java基础面试题(转)
这里收集了一些java 面试题的链接: http://blog.csdn.net/jackfrued/article/details/44921941 原文来自:http://www.cnblogs. ...
- Q12问题
1.我知道公司对我的工作要求吗? 2.我有做好我的工作所需要的材料和设备吗? 3.在工作中,我每天都有机会做我最擅长做的事吗? 4.在过去的七天里,我因工作出色而受到表扬吗? 5.我觉得我的主管或同事 ...
- AngularJS1.X指令
<!DOCTYPE html> <html ng-app='myApp'> <head> <meta charset="utf-8"> ...
- 如何在SecureCRT中上传文件到linux服务器上
1.使用yum安装运行命令sudo yum install lrzsz(默认使没有安装运行命令的) 2.上传命令rz 下载命令sz
- 如何使用IDEA将maven项目打成war包
1.点击IDEA界面右边的maven project 2.双击package
- SpringBoot Date类型插入数据库始终比正确时间早一天问题解决办法
bug描述 昨天的Date插入不进去问题解决后,一直没发现其实插入的时间一直比正确的时间早一天 输出sql语句,发现insert语句还是对的,不知道为什么插入数据库之后结果就早了一天 https:// ...
- jquery源码部分分析
1.整体架构和如何辨别浏览器端和node端 自执行函数,判断在什么端,如果在浏览器端就执行factory函数 //(function(){a,b})(a,b) //jq大架构,闭包,自执行函数,传入函 ...