ajax+servlet+mysql表格分页

3 篇文章 0 订阅
2 篇文章 0 订阅

分页,就是利用ajax异步获取servlet中查询的数据,但是数据是分页返回的(即每次查询返回一页数据)。效果大概是这个模样:

每次打开网页都会自动显示第一页的数据,也就是当$(document).ready()。

因为是根据页码page显示数据,上一页下一页只是判断页码是否超过界限,然后page-1或page+1,所以我写了一个函数,下面是js代码:

function ajaxPage(num) {
	$.ajax({
		type: "post",
		url: "servlet/UserFindPagingServlet",
		data: {
			page: num,
			department: departmentValue,
			position: positionValue
		},
		dataType: "json",
		success: function(result) {
			$("#sumdata").html(result.sumdata);
			$("#nowpage").html(result.nowpage);
			$("#sumpage").html(result.sumpage);
			$("#mainTable").empty();
			$("#mainTable").append(
					"<tr><td>id</td><td>姓名</td><td>性别</td><td>手机</td><td>部门</td><td>职位</td><td></td></tr>"
			);
			$.each(result.list, function(i) {
				
				$("#mainTable").append(
						"<tr><td>"+result.list[i].id+"</td><td>"+result.list[i].username+"</td><td>"+result.list[i].sex+"</td>"
						+"<td>"+result.list[i].phone+"</td><td>"+result.list[i].department+"</td><td>"
						+result.list[i].position+"</td><td><input type=\"checkbox\" name=\"deleteId\" value="+result.list[i].id+"></td></tr>"
				);
			});
		}
	});
}

$(document).ready(function(){
	ajaxPage(1);

        $("#btn_firstpage").click(function() {
		ajaxPage(1);
	});
	
	$("#btn_previouspage").click(function() {
		if($("#nowpage").html() != 1) {
			ajaxPage((parseInt($("#nowpage").html()) - 1));
		}
	});
	
	$("#btn_nextpage").click(function() {
		var now_page = parseInt($("#nowpage").html());
		var sum_page = parseInt($("#sumpage").html());
		if(now_page < sum_page) {
			ajaxPage((now_page + 1));
		}
	});
	
	$("#btn_lastpage").click(function() {
		ajaxPage($("#sumpage").html());
	});
}

首先显示第一页的内容,发page=1通过JQuery.ajax()发送到servlet然后接收返回的result,当然也通过后台查找到的数据设置好总数据数、当前页码、总页码,然后把数据append。下面是servlet中的doPost()代码:

public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		response.setContentType("text/html;charset=UTF-8");
		PrintWriter out = response.getWriter();
		
		String department = request.getParameter("department");
		String position = request.getParameter("position");
		String page = request.getParameter("page");
		
		System.out.println("department: " + department + "  position : " + position);
		
		StaticMethod.find(department, position, page, out);
		
	}

department和position是用于分部门和职位查询用的。由于增删改之后都需要调用select重新查找数据,所以我单独写了一个StaticMethod类,下面是StaticMethod中的find()方法代码(只列出最简单的全查询):

public static void find(String department, String position, String page, PrintWriter out) {
			List<UserBean> list = UserPagingDAO.findAll(page);
			List<UserBean> listnum = UserPagingDAO.findAll();
			int sumdata = listnum.size();
			int nowpage = Integer.parseInt(page);
			int sumpage = sumdata / 10 + 1;
			
			
			/*JSONArray json = JSONArray.fromObject(list);
			JSONObject jsonobject = JSONObject.fromObject(json);*/
			JSONObject jsonobject=new JSONObject();
			jsonobject.put("sumdata", sumdata);
			jsonobject.put("nowpage", nowpage);
			jsonobject.put("sumpage", sumpage);
			jsonobject.put("list", list);
			out.print(jsonobject);
			out.flush();
			out.close();
}
最重要的关于数据库的分页查询了,我用的是mysql,sql语句如下:

select * from user order by id asc limit ? , ?;

第一个参数是从第几个开始,第二个参数是查询多少个数据。每次根据page更改就可以了。


  • 1
    点赞
  • 3
    收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页
评论

打赏作者

人非生而知之者

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值