Jsp分页的简单制作
Jsp分页的简单制作
运行环境:jsp+tomcat+eclipse
技术:servlet+jsp+mysql
分页技术还区分两个:假分页和真分页
假分页:一次性从数据库读出表的所有数据一次性的返回给客户端,由js来控制每一页的显示。
真分页:由程序控制,每一次只返回一页大小的数据,显示到客户端。
由此可以很清楚的分辨出真假分页各自的优缺点:
假分页:由于一次性读出所有数据并返回给客户端,如果数据量庞大,所以这一次的动作可能是非常消耗服务器资源和带宽的,
但是返回给客户端以后就非常轻松了,客户在一段时间内不会再像服务器端请求资源。但不代表可能出现一些意外情况,
比如说客户将浏览器关闭,重新访问网站等。
真分页:假分页每次只取需要的数据返回给客户端,比起真分页没有那么大的数据库压力。但也因为这个工作特性,所以假分页
的方法需要频繁和服务器端进行交互。既然频繁交互,自然也会给服务器带来负担。
综上:如果数据量较小,使用假分页的效果会更优,如果数据量庞大,使用真分页的效果更优。
在制作分页的时候你需要了解,分页的数据,分页的一些属性有哪些
- 分页的数据:这些数据可以从数据库中提取出来的,也可以网上搜索得到的
- 分页的属性:
- 数据总数
- 页面的数据多少条
- 总的页面数
- 最后一页
- 第一页
- 当前页
我们可以将这些属性变成一个实体类中的属性来调用,会感觉更加的清晰
先创建一个实体类:
public class Paging {
private int page;//当前页
private int pagesize;//页面数据条数
private int indexpage=1;//首页
private int endpage;//尾页
private int count;//总数据条数
private int pagenumber;//总页面数
private List<Object> list;//得到的数据放入list集合中
public int getPage() {
return page;
}
public void setPage(int page) {
this.page = page;
}
public int getPagesize() {
return pagesize;
}
public void setPagesize(int pagesize) {
this.pagesize = pagesize;
}
public int getIndexpage() {
return indexpage;
}
public void setIndexpage(int indexpage) {
this.indexpage = indexpage;
}
public int getEndpage() {
return endpage;
}
public void setEndpage() {
this.endpage=pagenumber;
}
public int getCount() {
this.count=list.size();
return count;
}
public void setCount() {
this.count=list.size();
}
public int getPagenumber() {
return pagenumber;
}
public void setPagenumber() {
this.pagenumber=(count%pagesize==0)?count/pagesize:count/pagesize+1;
}
public List<Object> getList() {
return list;
}
public void setList(List<Object> list) {
this.list = list;
}
}
需要创建一个servlet
public class Staff_ListServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
Stuff stuff=new Stuff();
stuff.setStaff("1");
List<Object> list= DAO.query(stuff);
//页面当前页
int page=0;
//得到传过来的当前页
String str_page= request.getParameter("page");
/**
* 创建分页的关于一些内容的工具bean
*
* */
Paging paging=new Paging();
paging.setList(list);//从数据库得到数据存入的list集合
paging.setCount();//数据总数
paging.setPagesize(5);//一个页面的数据多少条
paging.setPagenumber();//总的页面数
paging.setEndpage();//最后一页
paging.setIndexpage(1);//第一页
if (str_page!=null) {
//将页转换整型判断其大小
int pag=Integer.parseInt(str_page);
//当大于零,将传过来的pag值赋给当前页page
if (pag>=0) {
page=pag;
//如果小于最大值时则,将其传过来的值减1在赋值给当前页,让其一直在最后一页
if (pag>(paging.getPagenumber()-1)) {
page=pag-1;
}
}
}
paging.setPage(page);//最终确认当前页
List<Object> list_page =new ArrayList<>();
//将当前页的值传给新的list_page集合中,list集合是全部数据综合,用i调用其中的几条数据给list_page
for (int i = paging.getPage()*paging.getPagesize(); i <(paging.getPage()+1)*paging.getPagesize()&&i<list.size(); i++) {
list_page.add(list.get(i));
}
//将paging对象其设置在作用域中,以便后面页面调用
request.setAttribute("paging", paging);
request.setAttribute("list", list_page);
request.getRequestDispatcher("staff_list.jsp").forward(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}
在页面中用EL表达式调用这些request请求设置的可让数据在页面显示,这是个jsp页面,EL表达式只能在jsp页面使用
关键点在下面的可以问号传参,返回servlet中将当前操作传过去,这个可以结合js中的ajax,实现页面的刷新了
<div id="content_right">
<br />
<br /> <div class="btwz">
人员列表
</div>
<br>
<form name="form1" action="Staff_InfoServlet" method="post">
<table cellspacing="1" class="table">
<tr class="table_header">
<td valign="middle" align="left">
姓名
</td>
<td valign="middle" align="left">
性别
</td>
<td valign="middle" align="left">
入职时间
</td>
<td valign="middle" align="left">
职位
</td>
<td valign="middle" align="left">
详细信息
</td>
<td valign="middle" align="left">
</td>
</tr>
<c:forEach items="${list}" var="list">
<tr class="row2" onMouseOver="this.className='row1'"
onMouseOut="this.className='row2'">
<td valign="middle" align="left">
${list.name}
</td>
<td valign="middle" align="left">
${list.sex}
</td>
<td valign="middle" align="left">
${list.hiredate}
</td>
<td valign="middle" align="left">
${list.position}
</td>
<td valign="middle" align="left">
<input type="radio" name="choose" value="${list.id}"/>
</td>
<td valign="middle" align="left">
<input type="checkbox" name="empId" value="${list.id}">
</td>
</tr>
</c:forEach>
</table>
</form>
<p align="right">
<input type="button" class="button" value="添加人员"
onclick="location='createStaff.jsp'" />
<input type="button" class="button" value="详细信息"
onClick=" document.forms[0].submit();" />
<input type="button" Class="button" value=" 删 除 "
onClick="go()" />
</p>
${Nochoose}
<p class="paging">
<a href="Staff_ListServlet?page=${paging.indexpage-1}"><< 首页 </a>
<a href="Staff_ListServlet?page=${paging.page-1 }"> < 上一页 </a>
<strong>第${paging.page+1}页/共${paging.pagenumber}页</strong>
<a href="Staff_ListServlet?page=${paging.page+1}">下一页 ></a>
<a href="Staff_ListServlet?page=${paging.pagenumber-1}">末页 >></a>
</p>
<br />
<br />
</div>
</div>
</div>
就这样一个分页解决了,很有复用性,可能有点麻烦,给大家参考一下
其实也可以不用建一个页面的属性实体类制作,大家可以尝试一下
Jsp分页的简单制作的更多相关文章
- JSP分页显示实例(基于Bootstrap)
首先介绍一款简单利落的分页显示利器:bootstrap-paginator 效果截图: GitHub官方下载地址:https://github.com/lyonlai/bootstrap-pagina ...
- 转:JSP 分页显示数据 (Oracle)
JSP 分页显示数据 (Oracle) 标签: Oracle分页JSP分页 2013-11-19 20:40 3598人阅读 评论(1) 收藏 举报 分类: Web(11) 版权声明:本文为博主原 ...
- JSP 分页显示数据 (Oracle)
要实现分页,首先我们要做的就是如何来编写SQL语句,网上也有很多,大家可以搜一下.在这里,我们使用一种比较常用的方式来编写SQL语句.代码如下: ----分页显示 select * from (sel ...
- 第一次做的jsp分页,详细代码。。。。
自己学jsp也有了一段时间,而且自己现在上的课是java web现在雪儿基础做了一个最简单的jsp页面,代码都放在一个页面,自己准备在改进,一步步来,这里的代码可能不是很完美,没事,下面接下来会有大概 ...
- php对文本文件进行分页功能简单实现
php对文本文件进行分页功能简单实现 <!DOCTYPE> <html> <head> <meta http-equiv="Content-type ...
- 第一个jsp代码实现简单计算器
a.新建mycal.Jsp,把简单计算机的框架写出来: <form action="myresult.jsp"> 请输入第一个数:<input type=&quo ...
- JSP自定义标签——简单标签(1)
前面一篇博客介绍了自定义标签的传统标签使用方式,但是我们会发现,使用传统标签非常的麻烦,而且接口还多,现在传统标签基本都没用了,除了一些比较久的框架.Sun公司之后推出了一个新的标签使用方式,称之为简 ...
- 简单制作 OS X Yosemite 10.10 正式版U盘USB启动安装盘方法教程 (全新安装 Mac 系统)
原文地址: http://www.iplaysoft.com/osx-yosemite.html 简单制作 Mac OS X Yosemite 正式版 USB 启动盘的方法教程: 其实制作 OS X ...
- JSP 分页代码
jsp 分页模板 后台分页代码: 说明: 在 com.zc.domain 包下: PageBean.java 文件 package cn.itcast.customer.domain; impor ...
随机推荐
- MATLAB命令大全和矩阵操作大全
转载自: http://blog.csdn.net/dengjianqiang2011/article/details/8753807 MATLAB矩阵操作大全 一.矩阵的表示在MATLAB中创建矩阵 ...
- Linux系统网卡设置
由于做了虚拟机的克隆,发现克隆机和被克隆机的MAC地址相同了,下面我将要介绍一下linux中网卡的配置步骤,我使用的linux是CentOS release 6.9 (Final) 1.root用户编 ...
- accp8.0转换教材第4章MySQL高级查询(二)理解与练习
知识点:EXISTS子查询.NOT EXISTS子查询.分页查询.UNION联合查询 一.单词部分 ①exist存在②temp临时的③district区域 ④content内容⑤temporary暂时 ...
- maven编译常见错误解决方法整理
程序包com.sun.xml.internal.ws.spi不存在 当maven项目里面有用到JDK内部的一些类,接口(如:com.sun.xml.internal.ws.spi.ProviderIm ...
- CentOS下源码安装vsftpd-3.0.0,并设置指定用户访问指定目录(附带完整配置文件)
1.卸载系统已经存在的ftp服务器 因为是源码安装,所以不能通过rpm -qa的方式查看是否已经安装ftp服务器,可以通过find / | grep vsftp*方式查看系统中存在哪些与vsftpd相 ...
- window.onload的使用心得
如果我问你window.onload是什么意思,恐怕你会回答我:"这不是页面加载完就执行吗". 但是答案是不一定,得看你怎么用.看一下例子吧 例1: 代码如下: <! ...
- 解决win10系统以太网适配器的驱动程序可能出现问题
插上网线显示未连接-连接可用,连上无线显示未连接-连接不可用,右下角显示感叹号 ,以太网和无线属性显示ipv4未连接详细信息为空,在设备管理器里卸载网卡驱动重装上仍然没有,通过windoes自带的网络 ...
- 基于Node.js的微信JS-SDK后端接口实现
做了一个网站,放到线上,用微信打开,点击分享,可是分享后发给朋友的链接卡片是微信默认自带的,如下: 这标题,描述以及图片是默认自带的,丑不说,分享给别人还以为是盗号网站呢,而接入微信的JSSDK后,分 ...
- 某天U盘插在笔记本打不开了,是U盘坏了还是电脑的问题?
五六月份忙着毕业设计与毕业论文,U盘在这个时候就是大功臣啦! 然而打印完最终版本论文上交后,再次把U盘插在自己的笔记本上读取失败了... 只有一个空白的图标,打不开,也无法格式化. 试着删除,拔了又插 ...
- Domains域
一个域是一个criteria(度量标准)列表,每个criterion(标准尺度)是一个三元列表或者元组:field_name,operator,value. field_name(str) 当前模型的 ...