java后台分页实例一
后台框架:jfinal + velocity、前台框架:jquery
页面
<!DOCTYPE html>
<html> <head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<link rel="stylesheet" type="text/css" href="./student.css"/>
<script type="text/javascript" src="./jquery.min.js"></script>
<script type="text/javascript" src="./common.js"></script>
<style >
.pager a{display:inline-block;background: red;color:#ffffff;padding: 10px;text-decoration: none;}
</style>
</head> <body>
<table cellpadding="0" cellspacing="0">
<tr>
<th>序号</th>
<th>姓名</th>
<th>性别</th>
</tr>
#foreach($!stu in $!pager.list)
<tr>
<td>
$velocityCount
</td>
<td>
$!stu.name
</td>
<td>
$!stu.sex
</td>
</tr>
#end
</table>
</div> <div class ="pager">
<a href="javascript:void(0);" onclick="firstPage();" >首页</a>
<a href="javascript:void(0);" onclick="previousPage();" >上一页</a>
<a href="javascript:void(0);" onclick="nextPage();" >下一页</a>
<a href="javascript:void(0);" onclick="lastPage();" >尾页</a>
</div> <div class="pager-info">
当前页数:<span>$!pager.currentPage</span>
总记录数:<span>$!pager.totalRecord</span>
总记页数:<span>$!pager.totalPage</span>
</div> <script type="text/javascript"> var currentPage = "$!pager.currentPage";
if(!currentPage){
currentPage = 1;
}
var totalPage = "$!pager.totalPage"; //首页
function firstPage(){
if(currentPage == 1){
alert("已经是第一页数据");
return
}else{
common.requestForm({
url:"/oaweb/datatask/paginate",
data:{pageSize:5,pageNo:1}
});
}
} //上一页
function previousPage(){
if(currentPage == 1){
alert("已经是第一页数据");
return
}else{
common.requestForm({
url:"/oaweb/datatask/paginate",
data:{pageSize:5,pageNo:parseInt(currentPage)-1}
});
}
} //下一页
function nextPage(){
if(currentPage == totalPage){
alert("已经是最后一页数据");
return
}else{
common.requestForm({
url:"/oaweb/datatask/paginate",
data:{pageSize:5,pageNo:parseInt(currentPage)+1}
});
}
} //尾页
function lastPage(){
if(currentPage == totalPage){
alert("已经是最后一页数据");
return
}else{
common.requestForm({
url:"/oaweb/datatask/paginate",
data:{pageSize:5,pageNo:totalPage}
});
}
} </script>
</body>
</html>
js封装请求方法(common.js)
function Common(){
} Common.prototype = {
requestForm:function(option) {
var _option = {
url : "",
data : {}
};
$.extend(_option, option);
var form = $("<form>").attr("action",_option.url).attr("method","POST").appendTo($("body"));
$.each(_option.data,function(k,v){
$("<input>").attr("type","hidden").attr("name",k).attr("value",v).appendTo(form)
});
form.submit();
}
}
Controller
public class StudentController extends Controller{ public void paginate(){
Integer pageNo = getParaToInt("pageNo");
pageNo = pageNo==null?1:pageNo;
Integer pageSize =getParaToInt("pageSize");
pageSize = pageSize==null?5:pageSize;
Record record = new Record();
Pager<Record> pager = StudentService.myPaginate(record,pageNo,pageSize);
setAttr("page", pager);
render("/school/html/student/student_index.htm");
} }
Service
public class StudentService{ public static Pager<Record> myPaginate(Record record,int pageNo,int pageSize){
List<Record> list = getDataList();
Pager<Record> pager = new Pager<Record>(pageNo,pageSize,list);
return pager;
} }
Pager类封装分页信息
import java.util.List; public class Pager<T> { private Integer pageSize; private Integer totalRecord; private Integer totalPage; private Integer currentPage; private List<T> list; public Integer getPageSize() {
return pageSize;
} public void setPageSize(Integer pageSize) {
this.pageSize = pageSize;
} public Integer getTotalRecord() {
return totalRecord;
} public void setTotalRecord(Integer totalRecord) {
this.totalRecord = totalRecord;
} public Integer getTotalPage() {
return totalPage;
} public void setTotalPage(Integer totalPage) {
this.totalPage = totalPage;
} public Integer getCurrentPage() {
return currentPage;
} public void setCurrentPage(Integer currentPage) {
this.currentPage = currentPage;
} public List<T> getList() {
return list;
} public void setList(List<T> list) {
this.list = list;
} public Pager(Integer pageNo,Integer pageSize,List<T> sourceList){
if(sourceList==null){
return;
} //总记录数
this.totalRecord = sourceList.size(); //每页显示多小条数据
this.pageSize = pageSize; //总页数
this.totalPage = this.totalRecord % this.pageSize == 0?this.totalRecord/this.pageSize:this.totalRecord/this.pageSize+1; //当前第几页
if(this.totalPage < pageNo){
this.currentPage = this.totalPage;
}else{
this.currentPage = pageNo;
} //起始索引
Integer fromIndex = this.pageSize * (this.currentPage - 1); //结束索引
Integer endIndex = null;
if(this.pageSize * this.currentPage >this.totalRecord){
endIndex = this.totalRecord;
}else{
endIndex = this.pageSize * this.currentPage;
} this.list = sourceList.subList(fromIndex, endIndex);
} }
总结:
此实例用subList功能分页,后续会用数据库SQL来完成分页。
java后台分页实例一的更多相关文章
- JAVA RMI 实例
下面我将介绍一个完整的实例,让初学者能快速体验RMI的功用. 分为以下四个步骤 1. 创建远程接口及声明远程方法(HelloInterface.java)2. 实现远程接口及远程方法(继承Unicas ...
- Java多线程-实例解析
Java多线程实例 3种实现方法Java中的多线程有三种实现方式:1.继承Thread类,重写run方法.Thread本质上也是一个实现了Runnable的实例,他代表一个线程的实例,并且启动线程的唯 ...
- Thrift入门初探--thrift安装及java入门实例
什么是thrift? 简单来说,是Facebook公布的一款开源跨语言的RPC框架. 那么问题来了. 什么是RPC框架? RPC全称为Remote Procedure Call,意为远程过程调用. 假 ...
- [Java初探实例篇02]__流程控制语句知识相关的实例练习
本例就流程控制语句的应用方面,通过三个练习题来深入学习和巩固下学习的流程控制语句方面的知识,设计到,if条件判断语句,switch多分支语句,for循环语句及其嵌套多层使用,while循环语句. 练习 ...
- 【thrift】thrift入门初探--thrift安装及java入门实例
转载:https://www.cnblogs.com/fingerboy/p/6424248.html 公司的一些平台服务框架底层封装了thrift提供服务,最近项目不是很紧,于是研究了一下,刚刚入门 ...
- Redis缓存Mysql模拟用户登录Java实现实例[www]
Redis缓存Mysql模拟用户登录Java实现实例 https://jingyan.baidu.com/article/09ea3ede1dd0f0c0aede3938.html redis+mys ...
- Flex Socket与Java通信实例说明(转)
Flex Socket与Java通信实例说明(转) 这两天一直在flex的Socket ,现在终于懂了很多.由浅到深一步一步深入.慢慢体会实例,虽然实例都是在网上找的,但也经过了我的测试.我比较喜欢注 ...
- Java 正则表达式实例操作
Regular Expression正则表达式,简称RegExp,常规通用的表达式,在多个开发语言中都有它的实现,可以通过正则表达式来快速的检索.匹配.查找.替换字符串中的文本. 简单实例 匹配网址 ...
- 从Java String实例来理解ANSI、Unicode、BMP、UTF等编码概念
转(http://www.codeceo.com/article/java-string-ansi-unicode-bmp-utf.html#0-tsina-1-10971-397232819ff9a ...
随机推荐
- Google Chrome 39.0.2171.71 正式发布
Google Chrome,又称Google浏览器,是一个由Google(谷歌)公司开发的网页浏览器.该浏览器是基于其他开源软件所撰写,包括WebKit,目标是提升稳定性.速度和安全性,并创造出简单且 ...
- android 广告平台 keymob
访问地址: http://www.keymob.com/
- 虚拟机网络配置详解(NAT、桥接、Hostonly) z
http://www.cnblogs.com/beginmind/p/6379881.html VirtualBox中有四种网络连接方式: NAT Bridged Adapter Internal H ...
- Linux使用RPM安装软件
什么是RMP? RPM 的为Redhat Package Manager (RPM软件包管理器)的缩写. RPM包,这种软件包就像windows的EXE安装文件一样,各种文件已经编译好,并打了包,哪个 ...
- 数学图形(2.12)spherical cycloid球面外摆曲线
查了半天也没搜到其具体的定义,先把脚本代码和截图发下. #http://www.mathcurve.com/courbes3d/cycloidspheric/cycloidspheric.shtml ...
- PowerDesigner概念设计模型(CDM)中的3种实体关系
CDM 是大多数开发者使用PD时最先创建的模型,也是整个数据库设计最高层的抽象.CDM是建立在传统的ER图模型理论之上的,ER图中有三大主要元素: 实体型,属性和联系.其中实体型对应到CDM中的Ent ...
- Centos7 安装pycharm
可以通过浏览器访问http://www.jetbrains.com/pycharm/,选择需要下载的版本,也可以通过wget下载可执行程序. [root@localhost ~] wget https ...
- Kotlin(2): 优雅地扩展类的方法和属性
欢迎Follow我的GitHub, 关注我的CSDN. 个人博客: http://www.wangchenlong.org/, 最新内容. Kotlin由JetBrains公司推出, 是兼容Java的 ...
- jdk1.7下载路径
http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html
- (剑指Offer)面试题39:二叉树的深度
题目: 输入一棵二叉树,求该树的深度.从根结点到叶结点依次经过的结点(含根.叶结点)形成树的一条路径,最长路径的长度为树的深度. 结点的定义如下: struct TreeNode{ int val; ...