`

java web常用到的ajax分页思路

阅读更多
有时候其实用同步的分页可以在url上记录页数 这样把链接分享给别人的时候可以直接到那一页
当然 这里用的是ajax的分页 自己写的一个简单的小demo 没有链接数据库 自己初始化的一个list 代码如下

因为是用的纯servlet+jsp 没用任何别的框架 所以写了2个servlet

第一个servlet

package com.controller;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.entity.Page;

public class PageController extends HttpServlet {

	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		doPost(req, resp);
	}

	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		/**
		 * 跳转到分页页面 两种方法:1.现在就把page的第一页带入进去 2.跳转直接到页面通过自定义标签带过去
		 */
		Page page = new Page();
		List al = new ArrayList();
		for (int i = 0; i < 3; i++) {
			al.add("name" + i);
		}
		page.setParam(0, 10, 3, al);
		String display = "<a>第1页</a>"+"&nbsp;&nbsp;"+"<a onclick=\"ajaxpage('1')\">下一页</a>";
		page.setDisplay(display);
		req.setAttribute("page", page);
		req.getRequestDispatcher("page.jsp").forward(req, resp);
	}
}


第二个servlet
package com.controller;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.entity.Page;

public class AjaxPageController extends HttpServlet{

	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		doPost(req, resp);
	}

	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
			String pageno = req.getParameter("currentPage");
			String pageSize = req.getParameter("pageSize");
			String totleSize = req.getParameter("totleSize");
			long pageno_ = Integer.valueOf(pageno);
			long totleSize_ = Integer.valueOf(totleSize);
			int pageSize_ = Integer.valueOf(pageSize);
			
			List date = new ArrayList();
			for(long i=pageno_*pageSize_;i<totleSize_;i++){
				date.add("name"+i);
				// 如果够了那么多个就返回
				if(date.size()==pageSize_){
					break;
				}
			}
			String display = "<a>第"+pageno+"页</a>"+"&nbsp;&nbsp;"+"<a onclick=\"ajaxpage("+(pageno_+1)+")\">下一页</a>";
			Page page = new Page(pageno_+1, totleSize_, pageSize_, date);
			page.setDisplay(display);
			req.setAttribute("page", page);
			req.getRequestDispatcher("subpage/subPage.jsp").forward(req, resp);
	}
}


一个page的实体类

package com.entity;

import java.io.Serializable;
import java.util.ArrayList;

/**
 * 分页的实体类
 * @author Jay_Lee
 *
 */
public class Page implements Serializable{

	private static final long serialVersionUID = 1L;
	private static int DEFAULT_PAGE_SIZE = 10;
    private int pageSize = DEFAULT_PAGE_SIZE;
    private long start;
    private Object data;
    private long totalCount;
    private long currentPageNo = 1;
    private String display;

    public Page() {
        this(0, 0, DEFAULT_PAGE_SIZE, new ArrayList());
    }

    public Page(long start, long totalSize, int pageSize, Object data) {
        this.setParam(start, totalSize, pageSize, data);
    }

    public void setParam(long start, long totalSize, int pageSize, Object data) {
        this.pageSize = pageSize;
        this.start = start;
        this.totalCount = totalSize;
        this.data = data;
    }

    public long getTotalCount() {
        return this.totalCount;
    }

    public long getTotalPageCount() {
        if (this.totalCount % (long)this.pageSize == 0) {
            return this.totalCount / (long)this.pageSize;
        }
        return this.totalCount / (long)this.pageSize + 1;
    }

    public int getPageSize() {
        return this.pageSize;
    }

    public Object getResult() {
        return this.data;
    }

    public long getCurrentPageNo() {
        return this.currentPageNo;
    }

    public boolean hasNextPage() {
        return this.getCurrentPageNo() < this.getTotalPageCount() - 1;
    }

    public boolean hasPreviousPage() {
        return this.getCurrentPageNo() > 1;
    }

    protected static int getStartOfPage(int pageNo) {
        return Page.getStartOfPage(pageNo, DEFAULT_PAGE_SIZE);
    }

    public static int getStartOfPage(int pageNo, int pageSize) {
        return (pageNo - 1) * pageSize;
    }

    public void setCurrentPageNo(long pageNo) {
        this.currentPageNo = pageNo;
    }

	public String getDisplay() {
		return display;
	}

	public void setDisplay(String display) {
		this.display = display;
	}
    
}


然后再就是jsp页面 有两个页面 一个是主的页面 一个子页面专门放分页的

page主页面
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core_rt" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Insert title here</title>
<script type="text/javascript" src="js/jquery-1.8.3.min.js"></script>

</head>
<body>
	<div id="pageDiv">
		<jsp:include page="subpage/subPage.jsp"></jsp:include>
	</div>
</body>
<script type="text/javascript">
	function ajaxpage(currentPage){
		 $.ajax({
				url:"subpage.do?currentPage="+currentPage+"&pageSize=${page.pageSize}&totleSize=${page.totalCount}",
				dataType:"html",
				async: false, 
				success:function(html){
					 $("#pageDiv").html(html);
				},
				error:function(){
					alert("糟糕,出错了:(");
				}
			});
	}      
</script>
</html>


subpage子页面

<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core_rt" %>
	<table>
		<c:forEach items="${page.result}" var="pname"  varStatus="pt">
			<tr>
				<td>
					${pt.index}
				</td>
				<td>
					${pname}
				</td>
			</tr>	
		</c:forEach>
	</table>
	${page.display}


最后就是xml的配置了
<?xml version="1.0" encoding="utf-8"?>

<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
                      http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
	version="3.0" metadata-complete="true">

	<servlet>
		<servlet-name>pageServlet</servlet-name>
		<servlet-class>com.controller.PageController</servlet-class>
	</servlet>

	<servlet-mapping>
		<servlet-name>pageServlet</servlet-name>
		<url-pattern>/page.do</url-pattern>
	</servlet-mapping>
	
	<servlet>
		<servlet-name>subpageServlet</servlet-name>
		<servlet-class>com.controller.AjaxPageController</servlet-class>
	</servlet>

	<servlet-mapping>
		<servlet-name>subpageServlet</servlet-name>
		<url-pattern>/subpage.do</url-pattern>
	</servlet-mapping>
	
	<jsp-config>
		<taglib>
			<taglib-uri>PageTagUri</taglib-uri>
			<taglib-location>WEB-INF/testTag.tld</taglib-location>
		</taglib>
	</jsp-config>
</web-app>


// 下面的代码有上传 直接放入到tomcat就能使用 其中有几个类是没用到的 只是做了一部分记录而已

tar包是tomcat中导出的直接可以放到tomcat跑起来:http://localhost:8080/PageDemo/page.do
zip是源代码
分享到:
评论

相关推荐

    javaajax分页技术

    Java AJAX 分页技术是Web开发中的一个重要组成部分,它允许用户在不刷新整个页面的情况下加载新的数据,提升用户体验。本教程将深入探讨如何在Java后端与AJAX前端交互实现动态分页。 首先,我们需要理解AJAX...

    java web论坛模块

    Java Web论坛模块是基于Java技术构建的Web应用程序,主要用于实现在线讨论、信息交流等功能。它通常包括用户注册、登录、发帖、回帖、搜索、话题分类、个人中心等核心功能,是社交网络中常见的一种服务组件。在这个...

    struts2+hibernate(文件批量上传至数据库+Ajax分页显示)

    Ajax分页显示通常用于提高用户体验,避免整个页面刷新。在本项目中,可能有一个Ajax请求发送到服务器获取特定页码的数据,服务器端的Struts2 Action处理请求,查询数据库并返回结果。前端使用JavaScript(例如jQuery...

    新闻管理系统java web

    总的来说,"新闻管理系统java web"是一个集成了Struts框架和Ajax技术的Web应用,通过Java编程语言实现了新闻的增删改查、分页、搜索等功能,提供了良好的用户体验。开发者需要熟悉Java Web开发的基本概念和技术,...

    精通Java Web动态图表编程.rar

    同时,对Java集合框架(如List、Set、Map)的熟练运用,以及对Java Swing或JavaFX(用于创建桌面应用,有时也会用到图形生成)的了解也是制作图表的前提。 2. **Web开发框架**:在Java Web中,常见的框架有Spring ...

    无刷新分页实例

    在实现无刷新分页时,我们通常会有一个前端的用户界面,包含一个分页导航条,用户可以通过点击页码或“上一页”、“下一页”按钮触发Ajax请求。这些按钮的点击事件可以绑定到jQuery的`click`函数,当被触发时,将...

    jsp +mysql+分页

    标题中的"jsp +mysql+分页"涉及到的是Web开发中的几个关键概念,主要集中在Java服务器页面(JSP)、MySQL数据库以及分页技术的应用。这里我们将深入探讨这些知识点。 首先,JSP(JavaServer Pages)是一种动态网页...

    SSH+Mysql无刷新分页实例

    在SSH框架中实现这一功能,通常会用到AJAX(Asynchronous JavaScript and XML)技术。AJAX可以向服务器发送异步请求,获取新的数据,并在客户端更新页面的一部分,从而实现无刷新效果。 1. **Spring**:在Spring中...

    分页显示源程序、源代码

    在Java Web开发中,我们通常会用到以下几种技术来实现分页: 1. **JSP(JavaServer Pages)与Servlet**:JSP用于创建动态网页,而Servlet则是服务器端的Java程序,两者结合可以实现分页。JSP页面中可以设置表单元素...

    easyUI+MySQL分页

    在这个过程中,我们将涉及到前端的JavaScript库easyUI,以及后端的MySQL数据库和可能用到的Java编程。 **EasyUI** 是一个基于jQuery的UI库,提供了丰富的组件,如表格(DataGrid)、对话框、下拉框等,用于快速构建...

    Ajax相关源码jar包下载

    总结,Ajax技术是现代Web应用中不可或缺的一部分,它提高了用户体验,使得前端与后端的交互更加灵活。而jar包则为Java开发提供了便利,封装了大量功能,便于开发者快速构建Ajax相关功能。通过学习和实践这些案例,...

    分页需要的一些文件

    10. **AJAX分页**:为了提升用户体验,可以使用AJAX实现无刷新分页,通过异步请求获取新页数据并局部更新页面。 综上所述,"分页需要的一些文件"可能包含JSP页面、Servlet或Controller类、配置文件(如web.xml)、...

    struts2分页模型

    Struts2分页模型是Java Web开发中一种常见的技术,用于在用户界面展示大量数据时进行数据的组织和浏览。分页的主要目的是提高用户体验,避免一次性加载过多数据导致页面响应变慢或者内存压力过大。本篇文章将深入...

    java写的BBS论坛,包括数据库

    在展示时,可能需要用到分页技术,以避免一次性加载大量数据导致性能下降。 此外,论坛可能还包括搜索功能,这就需要用到全文搜索或者关键字匹配技术,对数据库中的内容进行高效的检索。为了优化用户体验,论坛还...

    SSH分页源码

    SSH框架,全称为Struts2 + Spring + Hibernate,是Java Web开发中常用的一种技术栈,它结合了MVC设计模式的Struts2、依赖注入的Spring以及对象关系映射的Hibernate,大大简化了Web应用程序的开发。在这个"SSH分页...

    java开发的网络论坛网络论坛BBS

    4. **分页与搜索**:大量的话题和回复需要良好的分页机制,同时,高效的全文搜索功能也是必不可少的,可能需要用到Lucene或Solr等搜索引擎。 5. **并发处理**:考虑到多用户同时访问,论坛需要处理并发问题,例如...

    STRUTS分页

    10. **Ajax分页**:现代Web应用中,为了提供更好的用户体验,常常使用Ajax技术实现异步分页,即用户在不刷新整个页面的情况下,仅更新数据部分。 总的来说,Struts分页涉及到前端界面的交互设计、后端数据的查询和...

    在SSM框架下用laypage和ajax实现分页和数据交互的方法

    在现代Web应用开发中,分页功能是必不可少的组件之一,尤其是在处理大量数据的列表显示时。SSM框架(Spring、SpringMVC、Mybatis)是Java开发中非常流行的组合,能够高效地完成数据的处理和展示。而LAYUI,是一款...

Global site tag (gtag.js) - Google Analytics