ajax实现分页

实体类:

package com.zking.mvc.cart.entiy;

import java.io.Serializable;

/**
 * 商品实体
 * @author
 *
 * 2022年4月21日下午6:29:33
 */
public class Goods implements Serializable{
	
	private static final long serialVersionUID = 172021583561153335L;
	
	private int gid;
	private String gname;
	private int gprice;
	private String ginfo;
	private String gpath;
	private String gzt;
	
	
	public int getGid() {
		return gid;
	}
	public void setGid(int gid) {
		this.gid = gid;
	}
	public String getGname() {
		return gname;
	}
	public void setGname(String gname) {
		this.gname = gname;
	}
	public int getGprice() {
		return gprice;
	}
	public void setGprice(int gprice) {
		this.gprice = gprice;
	}
	public String getGinfo() {
		return ginfo;
	}
	public void setGinfo(String ginfo) {
		this.ginfo = ginfo;
	}
	public String getGpath() {
		return gpath;
	}
	public void setGpath(String gpath) {
		this.gpath = gpath;
	}
	public String getGzt() {
		return gzt;
	}
	public void setGzt(String gzt) {
		this.gzt = gzt;
	}
	
	public Goods() {
		// TODO Auto-generated constructor stub
	}
	public Goods(int gid, String gname, int gprice, String ginfo, String gpath, String gzt) {
		this.gid = gid;
		this.gname = gname;
		this.gprice = gprice;
		this.ginfo = ginfo;
		this.gpath = gpath;
		this.gzt = gzt;
	}

	
	public Goods(String gname, int gprice, String ginfo, String gpath, String gzt) {
		this.gname = gname;
		this.gprice = gprice;
		this.ginfo = ginfo;
		this.gpath = gpath;
		this.gzt = gzt;
	}
	@Override
	public String toString() {
		return "Goods [gid=" + gid + ", gname=" + gname + ", gprice=" + gprice + ", ginfo=" + ginfo + ", gpath=" + gpath
				+ ", gzt=" + gzt + "]";
	}

	
	
	
}

dao方法:

package com.zking.mvc.cart.dao.impl;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;

import com.zking.mvc.cart.entiy.Goods;
import com.zking.mvc.cart.utils.DBHelper;

public class GoodsDaoimpl implements IGoodsDao {

	@Override
	public List<Goods> queryGoodsAll() {
		// TODO Auto-generated method stub
		//1.定义对应的三兄弟以及其他相关变量
		Connection con = null;
		PreparedStatement ps = null;
		ResultSet rs = null;
		String sql = "";
		Goods goods = null;
		List<Goods> list = new ArrayList<Goods>();
		//2.给对应的对象以及其他相关变量
		try {
			//获取连接
			con = DBHelper.getCon();
			//定以sql语句
			sql = "select * from tb_goods";
			//执行sql语句
			ps = con.prepareStatement(sql);
			//获得结果集
			rs = ps.executeQuery();
			//遍历结果集
			while(rs.next()) {
				//实例化
				goods = new Goods();
				//赋值
				goods.setGid(rs.getInt(1));
				goods.setGname(rs.getString(2));
				goods.setGprice(rs.getInt(3));
				goods.setGinfo(rs.getString(4));
				goods.setGpath(rs.getString(5));
				goods.setGzt(rs.getString(6));
				//加到集合中
				list.add(goods);
				
			}
			
		} catch (Exception e) {
			// TODO: handle exception
			e.printStackTrace();
		}finally {
			DBHelper.myClose(con, ps, rs);
		}
		//3.返回结果集
		return list;
	}

	
	
	@Override
	public Goods getGoodsByGid(int gid) {
		// TODO Auto-generated method stub
		//1.定义对应的三兄弟以及其他相关变量
		Connection con = null;
		PreparedStatement ps = null;
		ResultSet rs = null;
		String sql = "";
		//实例化
		Goods goods = new Goods();

		//2.给对应的对象以及其他相关变量
		try {
			//获取连接
			con = DBHelper.getCon();
			//定以sql语句
			sql = "select * from tb_goods where gid=?";
			//执行sql语句
			ps = con.prepareStatement(sql);
			//给占位符赋值
			ps.setInt(1, gid);
			//获得结果集
			rs = ps.executeQuery();
			//遍历结果集
			while(rs.next()) {
				//赋值
				goods.setGid(rs.getInt(1));
				goods.setGname(rs.getString(2));
				goods.setGprice(rs.getInt(3));
				goods.setGinfo(rs.getString(4));
				goods.setGpath(rs.getString(5));
				goods.setGzt(rs.getString(6));
			}
			
		} catch (Exception e) {
			// TODO: handle exception
			e.printStackTrace();
		}finally {
			DBHelper.myClose(con, ps, rs);
		}
		//3.返回结果集
		return goods;
	}

	
	@Override
	public List<Goods> queryGoodsListAll(int pageIndex, int pageSize) {
		// 1.定义对应的三兄弟以及其它相关变量
		Connection conn = null;
		PreparedStatement ps = null;
		ResultSet rs = null;
		String sql = "";
		Goods goods = null;
		List<Goods> list = new ArrayList<Goods>();
		
		int start = (pageIndex-1)*pageSize +1;
		int end = pageIndex * pageSize;
		
		
		
		// 2.给对应的对象及变量赋值
		try {
			// 获取链接
			conn = DBHelper.getCon();
			// sql
			sql = "select b.* from ( select a.*,rownum as rid from tb_goods a ) b where rid between "+start+" and "+end+"";
			// 执行sql语句
			ps = conn.prepareStatement(sql);
			// 返回结果集
			rs = ps.executeQuery();
			// 遍历结果集
			while (rs.next()) {
				//实例化
				goods = new Goods();
				//赋值
				goods.setGid(rs.getInt(1));
				goods.setGname(rs.getString(2));
				goods.setGprice(rs.getInt(3));
				goods.setGinfo(rs.getString(4));
				goods.setGpath(rs.getString(5));
				goods.setGzt(rs.getString(6));
				//加到集合中
				list.add(goods);
			}
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			DBHelper.myClose(conn, ps, rs);
		}
		// 3.返回结果
		return list;
	}

	@Override
	public List<Goods> queryGoodsListAll(int pageIndex, int pageSize, String searchName) {
		// 1.定义对应的三兄弟以及其它相关变量
				Connection conn = null;
				PreparedStatement ps = null;
				ResultSet rs = null;
				String sql = "";
				Goods goods = null;
				List<Goods> list = new ArrayList<Goods>();
				
				int start = (pageIndex-1)*pageSize +1;
				int end = pageIndex * pageSize;
				// 2.给对应的对象及变量赋值
				try {
					// 获取链接
					conn = DBHelper.getCon();
					// sql
					sql = "select b.* from ( select a.* , rownum as rid from ( select * from tb_goods where gname like '%"+searchName+"%' ) a ) b where b.rid between "+start+" and "+end+"";
					// 执行sql语句
					ps = conn.prepareStatement(sql);
					//System.out.print(sql);
					// 返回结果集
					rs = ps.executeQuery();
					// 遍历结果集
					while (rs.next()) {
						//实例化
						goods = new Goods();
						//赋值
						goods.setGid(rs.getInt(1));
						goods.setGname(rs.getString(2));
						goods.setGprice(rs.getInt(3));
						goods.setGinfo(rs.getString(4));
						goods.setGpath(rs.getString(5));
						goods.setGzt(rs.getString(6));
						//加到集合中
						list.add(goods);
					}
				} catch (Exception e) {
					e.printStackTrace();
				} finally {
					DBHelper.myClose(conn, ps, rs);
				}
				// 3.返回结果
				return list;
	}



	@Override
	public int Count(String table,String searchName) {
		// TODO Auto-generated method stub
		//1.定义对应的三兄弟以及其他相关变量
		Connection con = null;
		PreparedStatement ps = null;
		ResultSet rs = null;
		int n = 0;
		String sql = "";
		//2.给对应的对象以及其他相关变量
		try {
			//获取连接
			con = DBHelper.getCon();
			//定以sql语句
			sql = "select count(*) from "+table+" where gname like '%"+searchName+"%'";
			//执行sql语句
			ps = con.prepareStatement(sql);
			//获得结果集
			rs = ps.executeQuery();
			if(rs.next()) {
				n = rs.getInt(1);
			}
		} catch (Exception e) {
			// TODO: handle exception
			e.printStackTrace();
		}finally {
			DBHelper.myClose(con, ps, null);
		}
		//3.返回结果集
		return n;
	}

	
	
	public static void main(String[] args) {
		//System.out.println(new GoodsDaoimpl().queryGoodsListAll(1, 13, ""));
	}
	
	
	
	
}

Servlet

package com.zking.mvc.cart.servlet;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

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

import com.fasterxml.jackson.databind.ObjectMapper;
import com.zking.mvc.cart.biz.impl.GoodsBizimpl;
import com.zking.mvc.cart.biz.impl.IGoodsBiz;
import com.zking.mvc.cart.entiy.Goods;

/**
 * Servlet implementation class AdminGoosListServlet
 */
@WebServlet("/AdminGoosListServlet")
public class AdminGoosListServlet extends HttpServlet {
	
	//业务逻辑层
	IGoodsBiz igb = new GoodsBizimpl();
	
	
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doPost(request, response);
		
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		//设置编码方式
		request.setCharacterEncoding("utf-8");
		response.setCharacterEncoding("utf-8");
		response.setContentType("text/html;charset=utf-8");
		
		int pageIndex = 1;
		int pageSize = 3;
		
		String searchName = request.getParameter("searchName");
		if(searchName==null) {
			searchName = "";
		}
		//获得总记录数
		int n =igb.Count(" tb_goods",searchName);
		//根据总行数记录数和每页显示的条数  求最大页码
		int pageMax = n/pageSize;
		if(n%pageSize!=0) {
			pageMax++;
		}
		
		String pIndex = request.getParameter("pageIndex");
		if(null!=pIndex) {
			pageIndex = Integer.valueOf(pIndex);
		}
		
		
		//模糊查询分页
		List<Goods> adminGoodsList = igb.queryGoodsListAll(pageIndex, pageSize, searchName);
		
		PrintWriter out = response.getWriter();
		//创建JSON工具
		ObjectMapper mapper = new ObjectMapper();
		//String result = mapper.writeValueAsString(adminGoodsList);
		//通过ajax传输数据后台---前台有多个值 使用map集合
		Map<String, Object> maps = new HashMap<String, Object>();
		
		maps.put("adminGoodsList", adminGoodsList);
		maps.put("pageMax", pageMax);
		
		String result = mapper.writeValueAsString(maps);
		
		out.write(result);
		out.flush();
		out.close();
		
	}

}

jsp界面

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!--通过taglib标准标签库  -->    
  <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

<!DOCTYPE html >
<html>
<head>
<meta  charset="UTF-8">
<title>Insert title here</title>
<!-- 通过cdn远程服务加载jquery类库 -->
<script src="js/jquery-3.3.1.min.js"></script>
<script type="text/javascript">
	
	//获取全路径
	var path = "${pageContext.request.servletContext.contextPath}";
	//定义全局变量保存当前的页码
	let pageIndex = 1;
	let pageMax = 0;//初始化最大页码
	
	//下一页的点击事件
	function nextBtn(){
		if(pageIndex>=pageMax){
			pageIndex = pageMax;
		}
		else{
			pageIndex++;
		}
		let searchName =$("#searchName").val();
		//alert(searchName);
		//alert(pageIndex);
		indeLoad(searchName);
	}
	
	//上一页的点击事件
	function lastBtn(){
		if(pageIndex<=1){
			pageIndex =1;
		}
		else{
			pageIndex--;
		}
		let searchName =$("#searchName").val();
		//alert(searchName);
		//alert(pageIndex);
		indeLoad(searchName);
	}
	
	//尾页页的点击事件
	function last(){
		pageIndex = pageMax;
		let searchName =$("#searchName").val();
		//alert(searchName);
		//alert(pageIndex);
		indeLoad(searchName);
	}
	
	//首页的点击事件
	function frist(){
		pageIndex = 1;
		let searchName =$("#searchName").val();
		//alert(searchName);
		//alert(pageIndex);
		indeLoad(searchName);
	}
		
	//利用ajax来实现数据分页
	$(function(){
		//alert(123);
		//调用post方法  传入servlet中拿到数据后  返回出来
		indeLoad("");
		$("#searchBtn").click(function(){
			//获取输入框的值
			let searchName = $("#searchName").val();
			//alert(searchName);
			indeLoad(searchName);
		});
		
	});
	
	
	//封装  数据加载的post请求
	function indeLoad(searchName){
		
		$.post(path+"/AdminGoosListServlet",{"pageIndex":pageIndex,"searchName":searchName},function(msg){
			//alert(msg);
			//后台传递过来的数据是字符串,满足JSON格式的定义
			let list = $.parseJSON(msg);
			//servlet中传递过来的最大页码
			pageMax = list.pageMax;
			
			let str = "<table border=\"1\" cellspacing = \"0\" cellpadding = \"0\" width = \"100%\">";
			str+="<tr>";
				str+="<td>商品编号</td>";
				str+="<td>商品名称</td>";
				str+="<td>商品价格</td>";
				str+="<td>商品描述</td>";
				str+="<td>商品图片</td>";
				str+="<td>操作</td>";
			str+="</tr>";

			//console.log(list.adminGoodsList);
			$.each(list.adminGoodsList,function(index,obj){
				//console.log(a,b);
				str+="<tr>";
					str+="<td>"+obj.gid+"</td>";
					str+="<td>"+obj.gname+"</td>";
					str+="<td>"+obj.gprice+"</td>";
					str+="<td>"+obj.ginfo+"</td>";
					str+="<td><img src= '"+path+"/"+obj.gpath+"' width=\"80\" height=\"50\" /></td>";
					str+="<td><a href=\"AddCartServlet?gid="+obj.gid+"\">加入购物车</a></td>";
				str+="</tr>";
			});
			str+="</table>";
			$("#content").html(str);
			
			$("#pIndex").html(pageIndex);
			$("#pMax").html(pageMax);
			
		});
		
	}
	
	
</script>
</head>
	<body>
		<div>
			<input type="text" id="searchName" />
			<button id="searchBtn">搜索</button>
		</div>
		<div id = "content" style ="width:70%;background: pink;height:250px;text-align: center;margin:0 auto;">
		
		</div>
			<div style = "text-align: center">
		《<span id = "pIndex"></span>/<span id = "pMax"></span>》
		<a href = "javascript:frist()">首页</a>
		<a href = "javascript:lastBtn()">上一页</a>
		<a href = "javascript:nextBtn()">下一页</a>
		<a href = "javascript:last()">尾页</a>
	
	</div>
		
	
	
	
	</body>
</html>

效果

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值