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 ...
随机推荐
- rt-80启动tomcat
1 #!/bin/sh 2 cd /mnt/tomcat/tomcat_8082; 3 ps -ef|grep /tomcat_8082/ |awk '{print $2}'|xargs kill - ...
- 如何使用Omnifocus做时间管理 4 多项目管理
这一篇和大家分享作为一个管理者,可能遇到的时间管理挑战和如何用omnifocus应对这些挑战. 张经理在一家IT公司上班,从程序员开始打拼了5年,凭借权威的技术能力当上了项目经理,同时管理三个项目,苦 ...
- pytest文档3-pycharm运行pytest
前言 上一篇pytest文档2-用例运行规则已经介绍了如何在cmd执行pytest用例,平常我们写代码在pycharm比较多 写完用例之后,需要调试看看,是不是能正常运行,如果每次跑去cmd执行,太麻 ...
- 如何使用V7包中ActionBar(Eclipse版)
转自:http://blog.csdn.net/appte/article/details/11712591 以前3.0以前的版本要使用ActionBar,必须使用国外大牛写的ActionBarShe ...
- matlab中m文件与m函数的学习与理解
1. m文件与m函数的区别 所谓 MATLAB 程序,大致分为两类: M 脚本文件 (M-Script) 和 M 函数 (M-function), 它们均是普通的 ASCII 码构成的文件. M 脚本 ...
- matlab strel
>>se3 = strel('square',3)Neighborhood: 1 1 1 1 1 1 1 1 1 >> se3 = strel('line',3 , 45)Ne ...
- LaTeX排版设置图表的位置 Positioning images and tables
Positioning images and tables LATEX is an editing tool that takes care of the format so you only hav ...
- 数学图形(2.5)Loxodrome曲线
这也是一种贴在球上的曲线 #http://www.mathcurve.com/courbes3d/loxodromie/sphereloxodromie.shtml vertices = 1000 t ...
- css整站规划
准备1 css reset /** * Eric Meyer's Reset CSS v2.0 (http://meyerweb.com/eric/tools/css/reset/) * http:/ ...
- 关于vs2013调试的偶然错误发现与总结(vs2013的承载进程)---ShinePans
当项目的属性选择为 启用 vs2013承载进程 或出现一下错误: 尝试运行项目时出错:未能加载文件或程序集"GroupBoxTest" 或它的某一个依赖项.给定程序集名称" ...