分页大致思路:页面每次把当前页传到后台并获得从后台传过来的json数据,解析后布局到这个页面上。

1.服务端代码:

@Controller

public class MemcachedContrller {

@Autowired

private MemcacheReadService memcacheRead ; 



private static final Logger LOG = Logger.getLogger(MemcachedContrller.class);



//页面初始化

@RequestMapping(value="/memcached",method={RequestMethod.GET,RequestMethod.POST})

public ModelAndView memcachedDisplay() {

list.clear();

getMemcachedAll();

return new ModelAndView("/memcached/memcachedShow");

}



//运行上一页、下一页等操作时候运行

@RequestMapping(value = "/memcached/h2", method = { RequestMethod.POST})

@ResponseBody

public List h2(HttpServletRequest request,

 HttpServletResponse response) throws Exception {

  String dt=request.getParameter("dt");

  int current=Integer.parseInt(dt);

  return  result(current);

}



//页面刷新的时候运行

@RequestMapping(value = "/memcached/h3", method = { RequestMethod.POST})

@ResponseBody

public List h3(HttpServletRequest request,

 HttpServletResponse response) throws Exception {

  String dt=request.getParameter("dt");

  int current=Integer.parseInt(dt);

 // System.out.println(dt);

  list.clear(); //清空集合中全部数据

  getMemcachedAll();//获取最新的memcached数据

  return  result(current);

}



List list = new ArrayList();



//获取memcached数据

public List getMemcachedAll(){

  /*for(int i=0;i<10000;i++){

 JsonData p= new JsonData();

 p.setGIX_X("a"+i);

     p.setId("1"+i);

 p.setGIY_Y("a_b"+i);


 list.add(p);

  }

return list;*/

Map<String,String> data=memcacheRead.read();

Set<String> set=data.keySet();

Iterator iter = set.iterator();

int i=0;

List list = new ArrayList();

while(iter.hasNext()){

String key = (String)iter.next();

if(memcacheRead.get(key)!=null){

/*if(i==5) break;

i=i+1;

System.out.println(key);//获取key

System.out.println(get(key));//获取缓存中key相应的value*/

if(i==100) break;

i=i+1;

String[] strSplit=memcacheRead.get(key).toString().split("--");

JsonData p= new JsonData();

p.setGIX_X(strSplit[0]);

p.setId(key);

p.setGIY_Y(strSplit[1]);


list.add(p);

}

}

return list;

//return memcacheRead.getAllValue();

}



//将结果集处理后返回

public List result(int dt){

 int pageSize=40;

  ArrayList list2 = new ArrayList();

    Page pg=new Page(list.size(),dt,pageSize);

PageMessage pm=new PageMessage();

pm.setPagecount(pg.getPagecount());

if(dt<pg.getPagecount()){

for(int i=(dt-1)*40;i<dt*40;i++){

list2.add(list.get(i));

}}

else{

for(int i=(dt-1)*40;i<list.size();i++){

list2.add(list.get(i));

}

}

list2.add(pm);

return list2;


}











}

2.前端代码:

morePage.css

body{ 

font-size:18px;

text-align:30%;



table{ 

border-collapse:collapse; 



li{ 

list-style:none; 

border:1px solid; 

width:20px; 

height:20px; 

text-align:center; 

margin:5px; 

padding:2px; 

float:left; 

cursor:pointer; 

}

#dataDisplay{

margin-left:30%;

margin-top:20px;

}

js:

var current=0;

var t=0;

function test2(dt){

window.t=dt;

$.ajax({

url:"/bdms-web/memcached/h2?

dt="+dt,

type:'POST',

dataType:'json ',

timeout:2000,

cache:false,

error:function(resultData){

alert("xml");

},





success:function(resultData){



  showPage(resultData,dt);     

}

})}





function update(dt){

//window.t=dt;

$.ajax({

url:"/bdms-web/memcached/h3?

dt="+dt,

type:'POST',

dataType:'json ',

timeout:2000,

cache:false,

error:function(resultData){

alert("xml");

},





success:function(resultData){



  showPage(resultData,dt);     

}

})}













function showPage(resultData,dt){

var fristpagehtml;

var prevpagehtml; 

var nextpagehtml;

var lastpagehtml;

var gopagehtml;

var length =resultData.length;

var t=resultData[length-1].pagecount;

gopagehtml="<input id='edit_count' size='4' type='text' /> <input type='button'  value='go' onclick='test3();'/>";



fristpagehtml = "<a onclick='test2("+(0+1)+");' href='javascript:void(0);'>首页</a>";

if((dt-0)<=1){

prevpagehtml = "<a>上一页</a>";

}else{

prevpagehtml = "<a onclick='test2("+(dt-1)+");' href='javascript:void(0);'>上一页</a>";

}

if((dt-0)<(t-0)){

nextpagehtml = "<a onclick='test2("+(dt-0+1)+");' href='javascript:void(0);'>下一页</a>";

}else{

nextpagehtml = "<a>下一页</a>";

}



lastpagehtml = "<a onclick='test2("+t+");' href='javascript:void(0);'>未页</a>";



var html = "<table border=1px  style='font-size: 12px; color: red; text-align:center'><tr><td width='160'>ID</td><td width='200'>GIX_X</td><td width='160'>GIX_Y</td></tr>";

   for(var i=0;i<resultData.length-1;i++){

   

   html = html+ "<tr ><td>"

   +resultData[i].id+"</td><td>"

   +resultData[i].GIX_X+"</td><td>"

   +resultData[i].GIY_Y

   +"</td></tr>";

   }

html = html + "<tr ><td colspan=3 text-align=center>"+fristpagehtml+"&nbsp&nbsp"+prevpagehtml+"&nbsp&nbsp"+"共"+resultData[length-1].pagecount+"页&nbsp;当前第"+dt+"页"+"&nbsp&nbsp"+nextpagehtml+"&nbsp&nbsp"+lastpagehtml+"&nbsp&nbsp"+gopagehtml+"</td></tr>";

html = html+"</table>";

document.getElementById("div").innerHTML=html; 



}





function test3(){

var str=document.getElementById("edit_count").value;

test2(str);

}

setInterval('update(window.t)',1000*10);

/*function tt()

{

alert("hello");



}

setInterval('tt()',1000*15);*/

//setTimeout('tt()',15000);

jsp:

memcachedShow.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

<!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>

<link rel="stylesheet"  type="text/css"  href="<c:url value="/style/css/morePage.css" />"/>

<script type="text/javascript" src="<c:url value="/js/jquery.js" />"></script>

<script type="text/javascript" src="<c:url value="/js/jquery.min.js" />"></script>

<script type="text/javascript" src="<c:url value="/js/AjaxPage.js" />"></script>

<!--<script type="text/javascript" src="/script/AjaxPage.js"></script> -->

</head>

<body onload='test2(1)'>

<!-- <p style="text-align:center"><input type="button" size="10"  value="提交" onclick="validate();"/></p> -->

<center>

  <div id="div"> </div>

</center>

  <!--<form action="update" method="post"><input type="submit" value="xml生成"></form> -->





</body>

</html>

页面效果:

模拟后台数据:

//获取memcached数据

public List getMemcachedAll(){

  for(int i=0;i<10000;i++){

 JsonData p= new JsonData();

 p.setGIX_X("a"+i);

     p.setId("1"+i);

 p.setGIY_Y("a_b"+i);


 list.add(p);

  }

return list;

spring mvc+ajax分页的更多相关文章

  1. spring mvc ajax 提交复杂数组类型

    The server refused this request because the request entity is in a format not supported by the reque ...

  2. spring mvc ajax异步文件的上传和普通文件上传

    表单提交方式文件上传和ajax异步文件上传 一:首先是我在spring mvc下的表单提交方式上传 ssm的包配置我就不一一详细列出来了,但是上传的包我还是列出来 这一段我也不知道怎么给大家讲解就是直 ...

  3. Spring MVC+ajax进行信息验证

    本文是一个ajax结合Spring MVC使用的入门,首先我们来了解一下什么是Ajax AJAX 不是新的编程语言,而是一种使用现有标准的新方法.AJAX 最大的优点是在不重新加载整个页面的情况下,可 ...

  4. spring mvc ajax请求

    jar包中增加 jackson-annotations-2.5.0.jar jackson-core-2.5.0.jar jackson-databind-2.5.0.jar springmvx.xm ...

  5. Spring MVC ajax:post/get 的具体实现

    Post 方式 1.自动注入 a. pom.xml ---- 配置Maven,添加必要的jar包 <!--用于 String-JSONObject 转换 --> <dependenc ...

  6. spring mvc ajax 400解决

    The request sent by the client was syntactically incorrect. ajax发起请求时报400错误.请求代码如下: var reportId=($( ...

  7. spring mvc ajax返回值乱码

    加入如下配置: <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHan ...

  8. spring mvc ajax

    <%@ page contentType="text/html;charset=UTF-8" %> <%@ include file="/WEB-INF ...

  9. Spring MVC 关于分页的简单实现

    据本人了解,目前较常用的分页实现办法有两种: 1.每次翻页都修改SQL,向SQL传入相关参数去数据库实时查出该页的数据并显示. 2.查出数据库某张表的全部数据,再通过在业务逻辑里面进行处理去取得某些数 ...

随机推荐

  1. 中国海洋大学第四届朗讯杯高级组 A 2718 Rocky(模拟)

    题目:http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=2718 题意:优先直走,右 左 后.... ...

  2. poj 3253 Fence Repair (哈夫曼树 优先队列)

    题目:http://poj.org/problem?id=3253 没用long long wrong 了一次 #include <iostream> #include<cstdio ...

  3. poj3321

    树映射到树状数组上 非常好的题目,给了我很多启发 题目要求动态求一个棵子树的节点个数 不禁联想到了前缀和,只要我们能用一个合适的优先级表示每个顶点,那么就好做了 我们可以考虑将子树表示成区间的形式 这 ...

  4. [Unity3d]小地图的制作

    继续今天的学习心得,unity中小地图的制作,实现了小地图中红色小箭头代表场景中的主角,然后人物方向的转变,小地图中箭头也随之改变方向. 效果图     右上角就是小地图,上面有个红色小箭头就是代表主 ...

  5. SGU 326 Perspective ★(网络流经典构图の竞赛问题)

    [题意]有n(<=20)只队伍比赛, 队伍i初始得分w[i], 剩余比赛场数r[i](包括与这n只队伍以外的队伍比赛), remain[i][j]表示队伍i与队伍j剩余比赛场数, 没有平局, 问 ...

  6. nginx多域名的配置方法

    方法一:多个.conf方法 1. 到/usr/local/nginx/ 新建一个目录 vhosts  并创建两个conf文件,如:wodejj.com.conf ,xiaobing.com.conf. ...

  7. 【转】提示框第三方库之MBProgressHUD iOS toast效果 动态提示框效果

    原文网址:http://www.zhimengzhe.com/IOSkaifa/37910.html MBProgressHUD是一个开源项目,实现了很多种样式的提示框,使用上简单.方便,并且可以对显 ...

  8. windows系统下的文件夹链接功能mklink/linkd

    vista及以上系统的mklink命令可以创建文件夹的链接(感觉像是文件夹的映射).因为是从底层实现文件夹链接,所以这个链接是对应用程序透明的. (windows 2000,xp,server 200 ...

  9. ASDL + WN725N 配置无线AP

    1.  ASDL 正常拨号上网 2.  安装TP-LINK无线客户端应用程序 打开之后选择模拟AP 如下图设置----应用 3.  本地连接----属性----高级 如下图设置 4.  宽带连接--- ...

  10. HGE初始化状态设置

    HGE_FRAMEFUNC:     最重要的设置,每个HGE应用必须设置.游戏的主循环就是他了.类型为bool*(),返回真那么主循环退出,游戏也就结束了.否则进行必要的处理后返回假.必须在调用进入 ...