spring mvc+ajax分页
分页大致思路:页面每次把当前页传到后台并获得从后台传过来的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+"  "+prevpagehtml+"  "+"共"+resultData[length-1].pagecount+"页 当前第"+dt+"页"+"  "+nextpagehtml+"  "+lastpagehtml+"  "+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分页的更多相关文章
- spring mvc ajax 提交复杂数组类型
The server refused this request because the request entity is in a format not supported by the reque ...
- spring mvc ajax异步文件的上传和普通文件上传
表单提交方式文件上传和ajax异步文件上传 一:首先是我在spring mvc下的表单提交方式上传 ssm的包配置我就不一一详细列出来了,但是上传的包我还是列出来 这一段我也不知道怎么给大家讲解就是直 ...
- Spring MVC+ajax进行信息验证
本文是一个ajax结合Spring MVC使用的入门,首先我们来了解一下什么是Ajax AJAX 不是新的编程语言,而是一种使用现有标准的新方法.AJAX 最大的优点是在不重新加载整个页面的情况下,可 ...
- spring mvc ajax请求
jar包中增加 jackson-annotations-2.5.0.jar jackson-core-2.5.0.jar jackson-databind-2.5.0.jar springmvx.xm ...
- Spring MVC ajax:post/get 的具体实现
Post 方式 1.自动注入 a. pom.xml ---- 配置Maven,添加必要的jar包 <!--用于 String-JSONObject 转换 --> <dependenc ...
- spring mvc ajax 400解决
The request sent by the client was syntactically incorrect. ajax发起请求时报400错误.请求代码如下: var reportId=($( ...
- spring mvc ajax返回值乱码
加入如下配置: <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHan ...
- spring mvc ajax
<%@ page contentType="text/html;charset=UTF-8" %> <%@ include file="/WEB-INF ...
- Spring MVC 关于分页的简单实现
据本人了解,目前较常用的分页实现办法有两种: 1.每次翻页都修改SQL,向SQL传入相关参数去数据库实时查出该页的数据并显示. 2.查出数据库某张表的全部数据,再通过在业务逻辑里面进行处理去取得某些数 ...
随机推荐
- linux 入门教程
linux入门教程 搜索 Linux入门教程 前言 第一章 关于Linux的历史 第二章 图形界面还是命令窗口 第三章 Linux操作系统的安装 第四章 初步进入linux世界 第五章 Linux系统 ...
- poj3694Network(tarjan+lca)
http://poj.org/problem?id=3694 用tarjan算出桥,用lca算出公共祖先 把路上的边更新掉 原来的桥变为不是桥 看一解题报告感觉有一部分是不用加的 不知道是不是数据水 ...
- UEFI GPT
其实关于UEFI的几篇文章很早就写下了,只是自己读了一遍感觉很不满意,就决定重写.目的是想用最简单直白的语言把内容写出来,让每个人都能轻松读懂.当然,如果你已经对这些内容有了很深的理解的话,这篇文章除 ...
- [swustoj 679] Secret Code
Secret Code 问题描述 The Sarcophagus itself is locked by a secret numerical code. When somebody wants to ...
- Hibernate之QBC检索和本地SQL检索
QBC查询就是通过使用Hibernate提供的Query By Criteria API来查询对象,这种API封装了SQL语句的动态拼装,对查询提供了更加面向对象的功能接口 本地SQL查询来完善HQL ...
- [Bhatia.Matrix Analysis.Solutions to Exercises and Problems]ExI.2.8
For any matrix $A$ the series $$\bex \exp A=I+A+\frac{A^2}{2!}+\cdots+\frac{A^n}{n!}+\cdots \eex$$ c ...
- POJ 2828-Buy Tickets(线段树)
题意: 有n个人,每人有一定的价值,给n个安排,每次安排有两个数 p,v p是这个人前面人的个数 (直接插在第p个人后面其他人后移),v是它的价值,n个安排后 求最终的价值序列. 分析: 越在后面的安 ...
- Loadrunner通过sitescope监控mysql
1. Loadrunner通过sitescope监控mysql 1.1. Sitescope下载 第一次在网上下载的是sitescope11.30,安装之后无法破解,所以最后卸载了,重新下载了si ...
- 【转载】shell中的特殊变量$
shell中的特殊变量:变量名含义$0shell或shell脚本的名字$*以一对双引号给出参数列表$@将各个参数分别加双引号返回$#参数的个数$_代表上一个命令的最后一个参数$$代表所在命令的PID$ ...
- POJ-3744 Scout YYF I 概率DP
题目链接:http://poj.org/problem?id=3744 简单的概率DP,分段处理,遇到mine特殊处理.f[i]=f[i-1]*p+f[i-2]*(1-p),i!=w+1,w为mine ...