`

datatables 带查询条件java服务端分页处理

 
阅读更多

最近做东西有一个需求,因为数据量很大,而实际上用户并不会对所有数据都感兴趣,如果用户直接翻页到最后一页的话,查询速度会很慢,影响用户体验,所以将分页控件处理成百度检索的效果,也就是用户不能直接点击到最后一页。


在这里我决定使用强大的datatables。datatables的“simple_numbers”的分页模式,比较接近需要的效果。

那么问题来了,因为数据量比较大,分页是需要在服务端进行的,同时还需要传递查询条件到服务端。怎样传递数据到后台呢?

先来看前台代码

 

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<link rel="shortcut icon" type="image/ico"
	href="http://www.datatables.net/favicon.ico">
<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">

<link rel="stylesheet" type="text/css"
	href="../../js/DataTables-1.10.8/media/css/jquery.dataTables.css">
<script type="text/javascript" language="javascript"
	src="../../js/DataTables-1.10.8/media/js/jquery.js"></script>
<script type="text/javascript" language="javascript"
	src="../../js/DataTables-1.10.8/media/js/jquery.dataTables.js"></script>
<script type="text/javascript" language="javascript" class="init">
	var table;
$(document).ready(function() {
	table = $('#example').DataTable( {
		"pagingType": "simple_numbers",//设置分页控件的模式
		 searching: false,//屏蔽datatales的查询框
		 aLengthMenu:[10],//设置一页展示10条记录
		 "bLengthChange": false,//屏蔽tables的一页展示多少条记录的下拉列表
		 "oLanguage": {  //对表格国际化
			"sLengthMenu": "每页显示 _MENU_条",  
			"sZeroRecords": "没有找到符合条件的数据",  
		//	"sProcessing": "&lt;img src=’./loading.gif’ /&gt;",  
			"sInfo": "当前第 _START_ - _END_ 条 共计 _TOTAL_ 条",  
			"sInfoEmpty": "木有记录",  
			"sInfoFiltered": "(从 _MAX_ 条记录中过滤)",  
			"sSearch": "搜索:",  
			"oPaginate": {  
			"sFirst": "首页",  
			"sPrevious": "前一页",  
			"sNext": "后一页",  
			"sLast": "尾页"  
				 
			}  
		},
	"processing": true, //打开数据加载时的等待效果
        "serverSide": true,//打开后台分页
        "ajax": {
            "url": "../../alarms/datatablesTest", 
            "dataSrc": "aaData", 
            "data": function ( d ) {
            	var level1 = $('#level1').val();
                //添加额外的参数传给服务器
                d.extra_search = level1;
            }
        },
        "columns": [
            { "data": "total" },
            { "data": "level" }
        ]
	
	} );
} );


function search1()
{
	table.ajax.reload();
}

	</script>
</head>

<body class="dt-example">


	<div>
		<input type="text" id="level1"> 
		<input type="button" onclick="search1()"  value="查询">
	</div>

	<table id="example" class="display" cellspacing="0" width="100%">
		<thead>
			<tr>
				<th>Name</th>
				<th>Position</th>
			</tr>
		</thead>
	</table>



</body>
</html>

 java代码如下,使用spring的 @ResponseBody将结果转换成json格式返回给前台

 

 

@RequestMapping(value="/datatablesTest", method=RequestMethod.GET)
	@ResponseBody
	public DatatablesViewPage<Alarm> datatablesTest(HttpServletRequest request){
//获取分页控件的信息
		String start = request.getParameter("start");
		System.out.println(start);
                String length = request.getParameter("length");
		System.out.println(length);
//获取前台额外传递过来的查询条件
		String extra_search = request.getParameter("extra_search");
		System.out.println(extra_search);
                //随便组织的查询结果
		List<Alarm> list  = new ArrayList<Alarm>();
		Alarm alarm = new Alarm();
		alarm.setLevel(1);
		alarm.setTotal(100L);
		list.add(alarm);
		alarm = new Alarm();
		alarm.setLevel(2);
		alarm.setTotal(100L);
		list.add(alarm);
		
		
		DatatablesViewPage<Alarm> view = new DatatablesViewPage<Alarm>();
		view.setiTotalDisplayRecords(100);
		view.setiTotalRecords(100);
		
		view.setAaData(list);
		return view;
	}

 

DatatablesViewPage的声明如下:

public class DatatablesViewPage<T> {

	private List<T> aaData; //aaData 与datatales 加载的“dataSrc"对应
	private int iTotalDisplayRecords; 
	private int iTotalRecords;
	public DatatablesViewPage() {
		
	}
//get set方法 此处省略

}

 处理完效果如下:




 
 此处稍微修改了jquery.dataTables.js的内容,使分页的效果成这样。

 

 

 

 

  • 大小: 14.5 KB
  • 大小: 28.2 KB
分享到:
评论
1 楼 zx445146042zx 2016-01-11  
楼主有 跳转指定页 的实现吗?

相关推荐

    datatables 带查询条件java服务端分页处理实例

    /datatables 带查询条件java服务端分页处理实例 /datatables 是一个非常流行的基于 jQuery 的 DataTables 插件,它提供了许多实用的功能,如排序、过滤、分页等,今天我们将介绍如何使用 DataTables 实现带查询条件...

    基于SpringMVC+Bootstrap+DataTables实现表格服务端分页、模糊查询

    服务端分页是在服务器端进行数据的分页处理,而不是在客户端。这样可以避免一次性加载大量数据导致的性能问题。在本项目中,当用户滚动表格或更改每页显示条数时,DataTables会向服务器发送包含当前页码和每页大小...

    DataTables自行封装请求参数和返回数据的零耦合服务端分页示例(PHP&JAVA)

    使用方法: 支持JAVA和PHP两种后台。...分页栏增加跳页功能(直接修改了dataTables.bootstrap.js和dataTables.bootstrap.css) CSS实现单元格超长文字省略号显示 CSS实现单元格连续纯字母数字强制换行显示

    datatables+springmvc+bootstrap实现分页

    datatables+springmvc+bootstrap实现分页,包含数据库 Datatables是一款jquery表格插件。它是一个高度灵活的工具,可以将任何HTML表格添加高级的交互功能。 分页,即时搜索和排序 几乎支持任何数据源:DOM, ...

    java初学者教程,前端jquery.datatables.js分页

    总的来说,这个教程涵盖了前后端交互的基本流程,从用户在前端输入分页和搜索条件,到后端的处理和数据库查询,再到结果的返回和前端展示。对于Java初学者来说,这是一个很好的实践项目,可以帮助他们理解如何结合...

    ThinkPHP整合datatables实现服务端分页的示例代码

    3. **服务端处理**:在ThinkPHP的控制器中,我们需要接收前端传递的参数,如`draw`(用于验证)、`search`(搜索条件)以及`start`和`length`(分页参数,分别表示当前页开始位置和每页显示条数)。根据这些参数,...

    JQuery DataTables示例,包含分页、拖拽、导出

    服务器端分页在每次改变页码或搜索条件时向服务器发送请求,获取当前页的数据;客户端分页则将所有数据一次性加载到客户端,然后进行本地处理。这个示例中提到了前后端分页,这意味着项目同时支持这两种方式,可以...

    DataTables自行封装请求参数和返回数据的零耦合服务端分页示例

    使用DataTable默认的ajax交互功能,对传给后台和从后台获取的数据都有命名格式要求,这样一来耦合度较高,不利于后期扩展,不能...分页栏增加跳页功能(直接修改了dataTables.bootstrap.js和dataTables.bootstrap.css)

    03 datatables分页查询1

    本篇将深入讲解 Datatables 分页查询的相关知识。 一、Datatables 官网地址 Datatables 的官方网站是 https://datatables.net/,在这里你可以找到最新的文档、示例、插件以及 API 参考,是学习和使用 Datatables 的...

    strut2.0 + hibernate3.0 + jquery.datatables+mysql 5.0实现的 hibernate分页

    hibernate分页(无排序,搜索,仅仅分页显示),服务器端分页在datatables上展现,有关 datatables的知识请关注它的官网http://www.datatables.net/,datatables的功能很 全面。 2,建表的sql--studentinfo和插入...

    仿jquery.dataTables的分页(查询+排序)

    仿jquery.dataTables的分页(查询+排序),jquery插件式开发简单示例。

    java分页控件.rar

    Java分页控件是Java开发中常用的一种组件,主要用于在大量数据展示时提供翻页功能,提高用户体验。在Web应用中,特别是在数据密集型的应用如电商、报表系统中,分页控件扮演着至关重要的角色。它允许用户按需加载...

    Spring Boot+MybatisPlus使用JQuery DataTables表格插件展示数据、实现分页和模糊查询等功能

    最后,编写后端Controller,处理来自DataTables的请求,返回分页和模糊查询的结果。 7. **性能优化** 在实际应用中,除了基本功能外,还需要考虑性能优化,比如使用缓存来减少数据库访问,或者使用懒加载策略只在...

    dataTables java后台解析http请求参数demo

    在这个"datatables java后台解析http请求参数demo"中,我们将探讨如何利用Java技术在后台处理来自前端DataTable库的HTTP请求参数。DataTable是一款功能强大的jQuery插件,常用于实现动态、可排序、可搜索的数据表格...

    java 分页demo

    Java分页是数据库查询中非常常见的一种技术,用于在大量数据中有效地展示和导航。在Web应用程序开发中,尤其是在处理用户界面时,分页能够提高用户体验,避免一次性加载过多数据导致页面响应慢或者内存压力过大。这...

    ASP.NET MVC+EF在服务端分页使用jqGrid以及jquery Datatables的注意事项

    以上内容详细介绍了在使用*** MVC和Entity Framework进行服务端分页时,结合jqGrid和jquery Datatables两种流行的前端分页控件需要关注的细节和注意事项,以及如何选择合适的UI框架和处理常见的前端开发问题。

    jquery 表格分页处理插件 DataTables

    jquery 表格分页处理插件 DataTables 官方最新版本:1.62 作者:Allan Jardine 官網:http://sprymedia.co.uk/article/DataTables 展示:http://sprymedia.co.uk/article/DataTables 一个中文使用案例: ...

    jquery 分页插件 dataTables

    4. **交互处理**:利用dataTables提供的API进行交互响应,例如监听排序、分页事件,执行相应的逻辑。 ### 示例代码 ```html &lt;!DOCTYPE html&gt; &lt;script type="text/javascript" src="jquery.js"&gt;&lt;/script&gt; ...

Global site tag (gtag.js) - Google Analytics