/**
* @author zhangshuling E-mail:zhangshuling1214@126.com
* @version createtime:Apr 2, 2009 9:20:07 AM 此类用于整合 ajax 进行分页 返回一个
* java.util.Hashtable 里面分别有两个对象 一个为分页的字符串 ( < << 1 | 2 | 3 | 4 |5 |
* ..... >> >) 一个为分页的数据(java.util.List) 暂时没做Hibernate的相关的查询,有需要就自己添吧
* ^_^
*/
public class AjaxPage {
private int pageSize = 10; // 分页刻度 (多少条记录为一页)
private int pageTotal = 0; // 分页总数 (一共有多少页)
// 分页所需图片
private String firstPageImage = "http://www.kaogoo.com/english/images/back2.gif";
private String previousPageImage = "http://www.kaogoo.com/english/images/backing.gif";
private String nextPageImage = "http://www.kaogoo.com/english/images/next.gif";
private String lastPageImage = "http://www.kaogoo.com/english/images/next2.gif";
public static final String KEY_PAGELIST = "PAGELIST";
public static final String KEY_PAGELINK = "PAGELINK";
public AjaxPage() {
}
public AjaxPage(int pageSize, int pageTotal, String firstPageImage,
String previousPageImage, String nextPageImage, String lastPageImage) {
setPageSize(pageSize);
setPageTotal(pageTotal);
setFirstPageImage(firstPageImage);
setPreviousPageImage(previousPageImage);
setNextPageImage(nextPageImage);
setLastPageImage(lastPageImage);
}
public String getFirstPageImage() {
return firstPageImage;
}
public void setFirstPageImage(String firstPageImage) {
this.firstPageImage = firstPageImage;
}
public String getLastPageImage() {
return lastPageImage;
}
public void setLastPageImage(String lastPageImage) {
this.lastPageImage = lastPageImage;
}
public String getNextPageImage() {
return nextPageImage;
}
public void setNextPageImage(String nextPageImage) {
this.nextPageImage = nextPageImage;
}
public int getPageSize() {
return pageSize;
}
public void setPageSize(int pageSize) {
this.pageSize = pageSize;
}
public int getPageTotal() {
return pageTotal;
}
public void setPageTotal(int pageTotal) {
this.pageTotal = pageTotal;
}
public String getPreviousPageImage() {
return previousPageImage;
}
public void setPreviousPageImage(String previousPageImage) {
this.previousPageImage = previousPageImage;
}
/**
*
* @param sqlTotal
* //查询所有记录条数
* @param sql
* //查询所需记录
* @param currentPage
* //当前页码
* @param parameter
* //参数() parameter所带的& 必须用&转义 不然在会在传递的时候出错 ¶meter=1&...
* 应该写成 &parameter=1&...
* @param ajaxMethod
* //ajaxMethod 指的是ajax调用的javascript方法 格式为
* ajaxMethod(parameter,page);
* @param connection
* @param preparedStatement
* @param resultSet
* @return
*/
public java.util.Hashtable ajaxPage(String sqlTotal, String sql,
int currentPage, String parameter, String ajaxMethod,
java.sql.Connection connection,
java.sql.PreparedStatement preparedStatement,
java.sql.ResultSet resultSet) {
java.util.Hashtable pageContent = new java.util.Hashtable();
java.util.List pageList = new java.util.ArrayList();
StringBuffer pageLink = new StringBuffer(
"<table width="100%" align="center" cellspacing="0" cellpadding="0">");
try {
preparedStatement = connection.prepareStatement(sqlTotal);
resultSet = preparedStatement.executeQuery();
resultSet.next();
setPageTotal(resultSet.getInt(1));
} catch (java.sql.SQLException e) {
setPageTotal(0);
} catch (Exception e) {
setPageTotal(0);
}
if (getPageTotal() > 0) {
int pageCount = (int) Math.ceil((double) getPageTotal()
/ getPageSize()); // 总共该分多少页
int start = currentPage - 4;
int end = currentPage + 4;
if (start <= 1) {
start = 1;
end = start + 9;
}
if (end >= pageCount) {
end = pageCount;
start = end - 9;
if (start <= 0) {
start = 1;
}
}
int previous = (currentPage - 1 > 0 ? (currentPage - 1) : 1);
int next = ((currentPage + 1) < pageCount ? (currentPage + 1)
: pageCount);
pageLink
.append("<tr><td align="center" height="30" width="100%">");
pageLink.append("<a href="javascript:").append(ajaxMethod)
.append("('").append(parameter).append("',1)").append(
"" title="转到第1页" >");
pageLink.append("<img boder="0" src="");
pageLink.append(getFirstPageImage())
.append(""/></a>");
pageLink.append("&nbsp;&nbsp;");
pageLink.append("<a href="javascript:").append(ajaxMethod)
.append("('").append(parameter).append("',").append(
previous).append(")" title="转到第").append(
previous).append("页" >");
pageLink.append("<img boder="0" src="");
pageLink.append(getPreviousPageImage()).append(
""/></a>");
pageLink.append("&nbsp;&nbsp;");
for (int i = start; i <= end; i++) {
if (i != currentPage) {
pageLink.append("<a href="javascript:").append(
ajaxMethod).append("('").append(parameter).append(
"',").append(i).append(")" title="转到第")
.append(i).append("页">").append(i).append(
"</a>");
} else {
pageLink
.append("<span title="当前第")
.append(i)
.append(
"页"><font color="red">")
.append(i).append("</font></span>");
}
if (i < end) {
pageLink.append("&nbsp;|&nbsp;");
}
}
pageLink.append("&nbsp;&nbsp;");
pageLink.append("<a href="javascript:").append(ajaxMethod)
.append("('").append(parameter).append("',").append(next)
.append(")" title="转到第").append(next).append(
"页" >");
pageLink.append("<img boder="0" src="");
pageLink.append(getNextPageImage()).append(""/></a>");
pageLink.append("&nbsp;&nbsp;");
pageLink.append("<a href="javascript:").append(ajaxMethod)
.append("('").append(parameter).append("',").append(
pageCount).append(")" title="转到第")
.append(pageCount).append("页" >");
pageLink.append("<img boder="0" src="");
pageLink.append(getLastPageImage()).append(""/></a>");
pageLink.append("&nbsp;&nbsp;");
pageLink.append("</td></tr>");
if (currentPage - 1 < previous) {
currentPage = previous;
}
if (currentPage + 1 > next) {
currentPage = next;
}
int focus = ((currentPage - 1) * getPageSize()) + 1;
try {
preparedStatement = connection.prepareStatement(sql);
resultSet = preparedStatement.executeQuery();
pageList = parseResultSet(pageList, resultSet, this
.getPageSize(), focus);
} catch (java.sql.SQLException e) {
setPageTotal(0);
} catch (Exception e) {
setPageTotal(0);
}
} else { // 总记录为0 无记录
pageLink
.append("<tr><td align="center" width="100%">");
pageLink.append("没有符合条件的数据!");
pageLink.append("</td></tr>");
}
pageLink.append("</table>");
pageContent.put(AjaxPage.KEY_PAGELIST, pageList);
pageContent.put(AjaxPage.KEY_PAGELINK, pageLink.toString());
return pageContent;
}
/**
* 将一个记录集ResultSet转化成一个存放Object[]的List
*
* @param pageList
* @param resultSet
* @param size
* //取多少条记录
* @param focus
* //从第几条开始去
* @return
*/
public java.util.List parseResultSet(java.util.List pageList,
java.sql.ResultSet resultSet, int size, int focus) {
try {
resultSet.absolute(focus); // 定位到第多少格
resultSet.previous(); // 前移一格
int col = resultSet.getMetaData().getColumnCount();
Object[] obj;
int index = 1;
while (resultSet.next()) {
if (index > size)
break;
obj = new Object[col];
for (int i = 1; i <= col; i++) {
obj[(i - 1)] = resultSet.getString(i);
}
pageList.add(obj);
index++;
}
} catch (java.sql.SQLException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
return pageList;
}
}
分享到:
相关推荐
总结来说,实现Java AJAX分页和JSP分页涉及前后端的协作。前端通过AJAX与后端通信,后端处理请求并从数据库获取数据,然后将数据返回给前端,前端再更新页面内容。这个过程提升了用户体验,使得浏览大数据集变得更加...
本教程重点讨论如何利用Ajax与Java结合实现高效、动态的分页功能。 首先,理解Ajax(Asynchronous JavaScript and XML)的核心概念:异步更新页面内容,无需刷新整个页面。这极大地提高了用户体验,因为用户可以...
Java和Ajax分页是Web开发中的重要技术,用于在不刷新整个页面的情况下加载大量数据,提升用户体验。在大型数据集的展示中,分页尤为重要,因为它可以有效地管理资源,减少服务器压力,同时使用户能够更方便地浏览和...
这篇博客“java web常用到的ajax分页思路”可能就是探讨如何结合Ajax与后端技术实现高效、动态的分页。 在传统的Web应用中,用户每次点击分页按钮,整个页面都会重新加载。而使用Ajax,我们可以在后台获取新的分页...
Java AJAX 分页技术是Web开发中的一个重要组成部分,它允许用户在不刷新整个页面的情况下加载新的数据,提升用户体验。本教程将深入探讨如何在Java后端与AJAX前端交互实现动态分页。 首先,我们需要理解AJAX...
使用java,jsp,mysql实现Ajax分页。可以观察到ajax按需获取数据,异步交互的过程。这个代码可以直接引用到其他需要分页的地方。booklist.jsp是前台显示页面,getbooks.jsp是后台与数据库操作页面,creathttp.js是...
本实例提供了完整的Java AJAX无刷新分页解决方案,允许用户在不重新加载整个页面的情况下浏览多页数据,提高网页交互的效率。下面我们将详细探讨这个实例中的关键知识点。 1. **AJAX基础**:AJAX是一种在后台与...
本篇将详细探讨如何使用Ajax和Java技术来实现分页,特别是在Struts、Hibernate和Spring这三大框架集成的环境中。 首先,我们来看Ajax(Asynchronous JavaScript and XML)的作用。Ajax允许我们在不刷新整个页面的...
【Ajax分页技术详解】 Ajax(Asynchronous JavaScript and XML)是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。在Web开发中,Ajax分页是实现数据展示时提高用户体验的有效手段,它允许用户在不...
【描述】提到的"Ajax分页查询完美示例.rar"可能包含了一个完整的项目源代码和数据库文件,用于演示如何结合Java后端和Ajax前端实现这一功能。重复的文件名可能表示压缩包内包含了不同版本或不同阶段的代码或数据。 ...
"前端Ajax分页"就是这样的一个实现方式,它结合了Ajax(异步JavaScript和XML)技术和JavaScript来实现动态加载内容。 Ajax的核心在于它可以向服务器发送异步请求,获取新数据,并在后台更新部分页面,而不会影响...
在IT行业中,Ajax分页是一种常见且高效的数据加载方式,特别是在网页应用中,它能够提供流畅的用户体验,而无需每次用户交互时都刷新整个页面。本篇将详细讲解如何使用SSH(Spring、Struts2、Hibernate)框架结合...
http://blog.csdn.net/qq_22778717/article/details/52596686 数据库在我以前发过的http://blog.csdn.net/qq_22778717/article/details/52538703里面有贴过截图 实在需要就去那里看看吧 这个用了map和JSONObject来...
一、Ajax分页原理 Ajax(Asynchronous JavaScript and XML)技术允许我们在不刷新整个页面的情况下,通过JavaScript与服务器进行异步数据交换。在分页场景中,用户点击分页按钮时,Ajax发送请求到服务器获取对应...
通过结合jQuery的事件处理、AJAX异步请求和Spring MVC的控制器,我们可以实现一个高效的AJAX分页系统。用户可以在不刷新页面的情况下浏览不同页的数据,从而提升Web应用的性能和用户体验。同时,MySQL作为关系型...
总的来说,JSP环境下的AJAX分页是一个涉及前端和后端交互的过程,通过JavaScript和服务器端的配合,实现了无刷新的分页效果,提高了用户的浏览效率。这个过程中,需要注意的是数据的安全性、效率以及前后端的通信...
在这个案例中,我们将深入探讨如何在Java EE(J2EE)环境中实现Ajax分页,提升用户体验。 【描述】虽然描述信息为空,但通常Ajax分页的实现旨在提高数据加载效率,避免用户等待整个页面重新加载,尤其是在处理大量...
在本主题中,我们将深入探讨Ajax分页组件的实现原理、优势以及如何在Web应用中集成和使用。 首先,让我们了解什么是Ajax。Ajax并非一种单一的技术,而是一组技术的集合,包括HTML、CSS、JavaScript、XML以及DOM等,...
在实体类上添加@PageableAsPagination注解,配置分页参数,如pageSize和pageNum。 2. **创建Controller接口**: 在Spring Boot的Controller层,创建一个处理分页请求的方法,接收前端传来的页码和每页大小参数。...