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 ...
随机推荐
- 第3节 storm高级应用:1、上次课程回顾,今日课程大纲,storm下载地址、运行过程等
上次课程内容回顾: ConcurrentHashMap是线程安全的,为什么多线程的时候还不好使,为什么还要加static关键字 1.storm的基本介绍:strom是twitter公司开源提供给apa ...
- struts2--action请求与Action类
1.action:代表一个sturts2的请求: 2.Action类:能够处理Struts2请求的类: --属性名必须遵守与JavaBean属性名相同的命名规则: --属性的类型可以使任意类型.从字符 ...
- 如何使用Docker部署PHP开发环境
本文主要介绍了如何使用Docker构建PHP的开发环境,文中作者也探讨了构建基于Docker的开发环境应该使用单容器还是多容器,各有什么利弊.推荐PHP开发者阅读.希望对大家有所帮助. 环境部署一直是 ...
- 074、Java面向对象之构造方法重载
01.代码如下: package TIANPAN; class Book { // 定义一个新的类 private String title; // 书的名字 private double price ...
- c++生成的动态库移到其他电脑上,动态库不能运行
最近的一个项目中遇到了一个问题,C++的一个动态库在我自己的电脑上可以被C#程序引用,我把程序安装到其他电脑上出现了异常,提示找不到DLL,偶然间发现我安装vsc++,C#的程序就不会报错.因为这个C ...
- Cadence套件:Capture + Allegro应用笔记
1.在Allegro中导入Netlist时,需要进行封装路径的设定: 在Setup->User Preference的Path->Library下面,设定所需封装文件(psm).焊盘文件( ...
- Matplotlib 入门
章节 Matplotlib 安装 Matplotlib 入门 Matplotlib 基本概念 Matplotlib 图形绘制 Matplotlib 多个图形 Matplotlib 其他类型图形 Mat ...
- hdu 3549 Flow Problem 最大流问题 (模板题)
Flow Problem Time Limit: 5000/5000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)Tota ...
- Vue的7属性-8方法-7指令
Vue的7属性: el属性 绑定id,用来指示vue编译器从什么地方开始解析 vue的语法,可以说是一个占位符 data属性 用来组织从view中抽象出来的属性,可以说将视图的数据抽象出来存放在dat ...
- HDU - 1754 I Hate It (线段树点修改求最大值)
题意:有N个学生M条操作,0<N<=200000,0<M<5000,要么查询某区间内学生的最高分,要么更改某学生的成绩. 分析:原理和线段树点修改求和类似. #include& ...