后台框架: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后台分页实例一的更多相关文章

  1. JAVA RMI 实例

    下面我将介绍一个完整的实例,让初学者能快速体验RMI的功用. 分为以下四个步骤 1. 创建远程接口及声明远程方法(HelloInterface.java)2. 实现远程接口及远程方法(继承Unicas ...

  2. Java多线程-实例解析

    Java多线程实例 3种实现方法Java中的多线程有三种实现方式:1.继承Thread类,重写run方法.Thread本质上也是一个实现了Runnable的实例,他代表一个线程的实例,并且启动线程的唯 ...

  3. Thrift入门初探--thrift安装及java入门实例

    什么是thrift? 简单来说,是Facebook公布的一款开源跨语言的RPC框架. 那么问题来了. 什么是RPC框架? RPC全称为Remote Procedure Call,意为远程过程调用. 假 ...

  4. [Java初探实例篇02]__流程控制语句知识相关的实例练习

    本例就流程控制语句的应用方面,通过三个练习题来深入学习和巩固下学习的流程控制语句方面的知识,设计到,if条件判断语句,switch多分支语句,for循环语句及其嵌套多层使用,while循环语句. 练习 ...

  5. 【thrift】thrift入门初探--thrift安装及java入门实例

    转载:https://www.cnblogs.com/fingerboy/p/6424248.html 公司的一些平台服务框架底层封装了thrift提供服务,最近项目不是很紧,于是研究了一下,刚刚入门 ...

  6. Redis缓存Mysql模拟用户登录Java实现实例[www]

    Redis缓存Mysql模拟用户登录Java实现实例 https://jingyan.baidu.com/article/09ea3ede1dd0f0c0aede3938.html redis+mys ...

  7. Flex Socket与Java通信实例说明(转)

    Flex Socket与Java通信实例说明(转) 这两天一直在flex的Socket ,现在终于懂了很多.由浅到深一步一步深入.慢慢体会实例,虽然实例都是在网上找的,但也经过了我的测试.我比较喜欢注 ...

  8. Java 正则表达式实例操作

    Regular Expression正则表达式,简称RegExp,常规通用的表达式,在多个开发语言中都有它的实现,可以通过正则表达式来快速的检索.匹配.查找.替换字符串中的文本. 简单实例 匹配网址 ...

  9. 从Java String实例来理解ANSI、Unicode、BMP、UTF等编码概念

    转(http://www.codeceo.com/article/java-string-ansi-unicode-bmp-utf.html#0-tsina-1-10971-397232819ff9a ...

随机推荐

  1. Ext面板

    <HTML> <HEAD> <TITLE>面板</TITLE> <link rel="stylesheet" type=&qu ...

  2. 【spring cloud】子模块module -->导入一个新的spring boot项目作为spring cloud的一个子模块微服务,怎么做/或者 每次导入一个新的spring boot项目,IDEA不识别子module,启动类无法启动/右下角没有蓝色图标

    如题:导入一个新的spring boot项目作为spring cloud的一个子模块微服务,怎么做 或者说每次导入一个新的spring boot项目,IDEA不识别,启动类无法启动,怎么解决 下面分别 ...

  3. 使用HttpClient发送请求接收响应

    1.一般需要如下几步:(1) 创建HttpClient对象.(2)创建请求方法的实例,并指定请求URL.如果需要发送GET请求,创建HttpGet对象:如果需要发送POST请求,创建HttpPost对 ...

  4. oracle汉字转拼音

    CREATE OR REPLACE FUNCTION F_PINYIN(P_NAME IN VARCHAR2) RETURN VARCHAR2 AS V_COMPARE VARCHAR2(100); ...

  5. nmap速查表v1.0

    基本语法: #nmap [扫描方式] [命令选项] {目标}   扫描目标格式: IPv4 地址: 192.168.1.1IPv6 地址:AABB:CCDD::FF%eth0主机名:www.targe ...

  6. oracle中database links的使用

    1.在pl/sql developer中创建database links 2.使用database links select * from table1@xtbg 注意:@xtbg是database ...

  7. java创建二叉树并递归遍历二叉树

    二叉树类代码: package binarytree; import linkqueue.LinkQueue; public class BinaryTree { class Node { publi ...

  8. 从主机系统向虚拟机系统里面copy 文件

    从主机系统向虚拟机系统里面copy 文件: 一:请确保你的虚拟机里面安装了 VMTools 1:安装VMTools 2: 进入虚拟机系统里面,如果没有自动运行 VMtool安装程序,请打开我的电脑,手 ...

  9. Bash Shell的环境配置文件

    login shell:取得bash时需要完整的登录流程 non-login shell:取得bash接口的方法不需要重复登录,举例来说,你以x window登录Linux后,再以x的图形界面启动终端 ...

  10. POI生成EXCEL文件(字体、样式、单元格合并、计算公式)

    创建一个封装类: package com.jason.excel; import java.io.FileNotFoundException; import java.io.FileOutputStr ...