分页算法;
public class AjaxPage {
//总记录数
private int totalRows;
//当前页
private int currpage;
//分页单位
private int pagesize;
//总页数
private int totalPages;
//每页数据的开始下标
private int startRow;
public AjaxPage(int totalRows,int currpage, int pagesize){
this.totalRows =(totalRows);
this.setCurrpage(currpage);
this.setPagesize(pagesize);
}
public int getTotalRows() {
return totalRows;
}
public void setTotalRows(int totalRows) {
this.totalRows = totalRows;
}
public int getCurrpage() {
return currpage;
}
public void setCurrpage(int currpage) {
this.currpage = currpage;
}
public int getPagesize() {
return pagesize;
}
public void setPagesize(int pagesize) {
this.pagesize = pagesize;
}
public int getTotalPages() {
//调用设置总页数方法
this.setTotalPages();
return totalPages;
}
//设置总页数
public void setTotalPages() {
this.totalPages = this.getTotalRows()/this.getPagesize();
}
public int getStartRow() {
//调用设置行号方法
this.setStartRow();
return startRow;
}
//设置每页的起始行号
public void setStartRow(){
this.startRow = (this.getCurrpage()-1)*this.getPagesize();
}
public void setStartRow(int startRow) {
this.startRow = startRow;
}
JSP页面采用ajax解析XML
<script type="text/javascript">
var XMLHttpReq;
function createXMLHttpRequest() {
if(window.XMLHttpRequest) { //Mozilla 浏览器
XMLHttpReq = new XMLHttpRequest();
}
else if (window.ActiveXObject) { // IE浏览器
try {
XMLHttpReq = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
XMLHttpReq = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) {}
}
}
}
//主调函数,以当前页作为参数
function AjaxTest(currpage){
createXMLHttpRequest();
XMLHttpReq.open("post","AjaxServlet.do?currpage="+currpage,true);
XMLHttpReq.onreadystatechange= callback;
XMLHttpReq.send(null);
}
//回调函数
function callback(){
if(XMLHttpReq.readyState!=4){
//div.innerHTML = "<font color='red'>数据加载中...</font>" ;
}
else{
if(XMLHttpReq.status == 200){
var xmlDOM = XMLHttpReq.responseXML;
parse(xmlDOM);
}
}
}
function parse(xmlDOM){
var person=xmlDOM.getElementsByTagName("person");
var page = xmlDOM.getElementsByTagName("page")[0];
var currpage = page.getElementsByTagName("currpage")[0].firstChild.data;
var pagecount = page.getElementsByTagName("pagecount")[0].firstChild.data;
var prevpagehtml;
var nextpagehtml;
if((currpage-0)<=1){
prevpagehtml = "<a>上一页</a>";
}else{
prevpagehtml = "<a onclick='AjaxTest("+(currpage-1)+");' href='javascript:void(0);'>上一页</a>";
}
if((currpage-0)<(pagecount-0)){
nextpagehtml = "<a onclick='AjaxTest("+(currpage-0+1)+");' href='javascript:void(0);'>下一页</a>";
}else{
nextpagehtml = "<a>下一页</a>";
}
var html = "<table><tr><td width='80'>编号</td><td width='100'>姓名</td><td width='80'>年龄</td><td width='80'>班级</td></tr>";
for(i=0;i<person.length;i++){
html = html+ "<tr><td>"+person[i].getElementsByTagName("sid")[0].firstChild.data+"</td><td>"+person[i].getElementsByTagName("sname")[0].firstChild.data+"</td><td>"+person[i].getElementsByTagName("sage")[0].firstChild.data+"</td><td>"+person[i].getElementsByTagName("sclass")[0].firstChild.data+"</td></tr>";
}
html = html + "<tr><td width='50'>"+prevpagehtml+"</td><td width='80'>当前第"+currpage+"页</td><td width='100'>共"+pagecount+"页</td><td width='80'>"+nextpagehtml+"</td></tr>";
html = html+"</table>";
document.getElementById("div").innerHTML=html;
}
</script>
</head>
<body onload="AjaxTest(1);">
<div style="text-align: center">
<div id="div"> </div>
</div>
PS:虽然很古老,但是我个人觉得初学者 了解了解也是很有帮助的。
action内容:
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
AjaxDao dao=new AjaxDaoImp();
//当前页
int currpage = Integer.parseInt(request.getParameter("currpage")==null?"1":request.getParameter("currpage"));
//总的记录数
int total =dao.getResultCount();
int pagesize=1000;
//Page类对象
AjaxPage page=new AjaxPage(total, currpage, pagesize);
//用于返回给前台页面的XML文档
StringBuffer xmlDOM = new StringBuffer();
//取出所有信息
// System.out.println("开始1"+page.getCurrpage());
// System.out.println("开始2"+(page.getCurrpage()-1));
//
System.out.println("开始3"+(page.getCurrpage()-1)*page.getPagesize());
System.out.println("当前第几页"+page.getCurrpage());
List ajaxList=dao.findAll((page.getCurrpage()-1)*page.getPagesize(), page.getPagesize());
//添加XML
response.setContentType("text/xml; charset=UTF-8");
response.setHeader("Cache-Control","no-cache");
xmlDOM.append("<?xml version='1.0' encoding='UTF-8' standalone='no' ?>" );
xmlDOM.append("<root>");
//添加数据库查询出来的数据
for(int i=0;i<ajaxList.size();i++){
Pojo bean=(Pojo) ajaxList.get(i);
xmlDOM.append("<person>");
xmlDOM.append("<sid>"+bean.getSid()+"</sid>");
xmlDOM.append("<sname>"+bean.getSname()+"</sname>");
xmlDOM.append("<sage>"+bean.getSname()+"</sage>");
xmlDOM.append("<sclass>"+bean.getSclass()+"</sclass>");
xmlDOM.append("</person>");
}
//添加分页信息
xmlDOM.append("<page>");
xmlDOM.append("<currpage>"+page.getCurrpage()+"</currpage>");
xmlDOM.append("<pagecount>"+page.getTotalPages()+"</pagecount>");
xmlDOM.append("</page>");
xmlDOM.append("</root>");
//调用打印方法
this.print(request, response, xmlDOM.toString());
}
private void print(HttpServletRequest request, HttpServletResponse response,String xmlDOM) throws IOException{
response.setCharacterEncoding("gb2312");
response.setContentType("text/xml");
PrintWriter out = response.getWriter();
out.print(xmlDOM);
out.close();
}
}
以上是一个 技术ajax的无刷新分页。希望对初学者有些帮助,在下也是个初学者,刚踏入工作不久,希望各位高手看到我的代码不要嘲讽。写法是参照网上的一个demo而写。
大家学习吧。
分享到:
相关推荐
在Java Web开发中,"Ajax分页-增删改查-Oracle数据库...这个项目是一个完整的Java Web学习案例,涵盖了从数据库操作到前端交互的多个层次,对于初学者来说,是一个很好的实践平台,可以帮助他们巩固和提升Web开发技能。
**jQuery AJAX分页技术详解** ...对于初学者,这个实例是学习和理解AJAX分页的宝贵资源,而对于经验丰富的开发者,它则提供了灵感和参考。在实践中不断探索和优化,将能创造出更多适应不同场景的分页解决方案。
通过深入学习和实践Ajax,初学者可以提升网页开发技能,打造更加交互性和响应性的Web应用程序。同时,结合其他前端框架(如React、Vue或Angular),Ajax可以发挥更大的作用,为用户提供更优质的网络体验。
功能基础,增,显,分页。适合初学者。 ajax+.net小例子 ajax+C#示例 ajax+.net 示例ajax+.net小例子 ajax+C#示例 ajax+.net 示例ajax+.net小例子 ajax+C#示例 ajax+.net 示例
总结,Ajax分页是Web开发中的常见功能,通过学习和实践,初学者可以轻松掌握这一技能,提升网页的交互性和性能。在实际项目中,可以结合前端框架如jQuery、Vue.js等进一步优化代码结构和用户体验。
在PHP开发中,分页是不可或缺的一个功能,特别是在处理大量数据时,为了提高用户体验和页面加载速度,分页显得尤为重要。本压缩包“超强php分页打包 通用分页 ...无论是初学者还是经验丰富的开发者,都可以从中受益。
本AjaxDEMO适合初学者学习,旨在提供一个基础的实践平台,帮助理解Ajax的工作原理及其在实际开发中的应用。** ### 1. Ajax基础知识 Ajax的核心是JavaScript对象XMLHttpRequest,它允许在后台与服务器端通信。当...
对于初学者来说,理解并创建自定义分页控件是一项基础但重要的技能。 在ASP.NET中,我们通常使用ASP.NET内置的GridView、ListView等控件配合Paging属性来实现分页,但有时为了满足特定需求或优化性能,可能需要...
使用Servlet+Jsp+JDBC实现增删改查,前台显示界面使用JavaScript、Ajax与后台交互进行登录验证,并对查询结果实现分页、局部刷新,以及复选框(全选、反选)操作,适合Web开发的初学者
通过研究和学习这些代码,初学者可以深入理解如何结合AJAX和GridView来实现高效且用户友好的分页功能。 总的来说,AJAX实现的分页功能使得Web应用能够更加动态和响应式,提高了用户的浏览效率,降低了服务器的压力...
对于初学者来说,研究这个示例可以帮助理解如何在实际项目中运用这些技术。 总的来说,SSH整合提供了强大的Web开发能力,分页和校验优化了用户体验和数据质量,而Ajax则让交互更加流畅。掌握这些知识点,对提升Java...
Ajax分页小代码开源代码提供了实现这一功能的基础框架,非常适合初学者进行学习和实践。 在Ajax分页中,主要涉及以下几个核心概念和技术: 1. **Ajax(Asynchronous JavaScript and XML)**:Ajax并不是一种单一的...
在这个"js+ajax动态分页.rar"压缩包中,包含了一个实现这一功能的实例,对于初学者来说非常有帮助,因为注释详尽,易于理解。 动态分页是网页设计中的一个重要组成部分,尤其是在数据量庞大的情况下,如新闻列表、...
在网页开发中,数据的展示往往需要分页处理,尤其是...对于初学者来说,这些基础知识足够构建起对分页的基本理解和应用。通过实践和深入学习,可以进一步优化分页性能,比如加入缓存机制、错误处理等,以提升用户体验。
总的来说,这个压缩包为学习者提供了一个实践前端开发技能的实际项目,涵盖了前端开发的基本技术栈,适合初学者巩固理论知识并提升动手能力。通过分析和重构这个“黑灰分页”模板,可以深入理解前端开发的各个环节,...
这些资源可以帮助开发者更深入地理解和应用Ajax分页技术,对于初学者和有经验的开发者来说都是有价值的参考材料。在实际项目中,可以根据具体需求对示例进行调整和优化,以适应不同的数据库结构和前端框架。
**Ajax(Asynchronous JavaScript and XML)**是一种在无需...通过以上内容,初学者可以对Ajax有一个全面的认识,并逐步掌握其实现方式和应用场景。在实际项目中灵活运用Ajax,可以显著提升Web应用的性能和用户体验。
总结起来,这个学习资源主要是为了帮助初学者了解如何在ThinkPHP框架中实现AJAX分页功能,以及如何处理相关的前端交互。通过实际操作这些小实例,初学者可以更好地掌握ThinkPHP的基本架构和核心功能,从而提升自己的...
这个压缩包文件中的"分页控件"可能包含了实现上述步骤的具体代码和资源,对于初学者和开发者来说,是一个很好的学习和参考素材。通过研究这些代码,你可以更好地理解Ajax分页的实现细节,提升你的Web开发技能。
在IT行业中,分页是一种常见的用户界面设计技术,主要用于处理大量数据的展示,避免一次...无论是对于初学者还是经验丰富的开发者,这都是一个有价值的资源集合,可以帮助他们在项目中实现更加个性化和高效的分页功能。