ajax 对分页进行改造

ajax 对分页进行改造

 
StudentDaoImpl

package sim.dao.StudentDaoImpl;

import com.mchange.v2.c3p0.ComboPooledDataSource;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanListHandler;
import org.apache.commons.dbutils.handlers.ScalarHandler;
import sim.dao.StudentDao;
import sim.entity.Student;

import javax.sql.DataSource;
import java.sql.SQLException;
import java.util.List;

public class StudentDaoImpl implements StudentDao {
    private DataSource ds = new ComboPooledDataSource();
    private QueryRunner qr = new QueryRunner(ds);  // 必有的两句

    @Override
    public List<Student> selectAll(Integer currentPageNo, Integer pageSize) {
        List<Student>  studentList = null;
        try {
            String sql  ="select *  from  user  limit ?,?";
            Object[] objects={(currentPageNo-1)*pageSize,pageSize};  //页面数量,页面大小
            studentList = qr.query(sql,new BeanListHandler<Student>(Student.class),objects);  //很多地方少写了 r currentPageNo
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return studentList;
    }


    @Override
    public Integer selectCount() {
        Long count = null;
        try {
            String sql ="select count(1) from  user";   //把 Long 写成 long
            count = (Long) qr.query(sql,new ScalarHandler());  //总页数
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return Integer.parseInt(count+"");
    }
    @Override
    public int deleteById(int uid)  {
        int num = 0;
        try {
            String sql ="delete  from  user where  uid = ? ";
            num = qr.update(sql,uid);
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return num;
    }
}

 

dao


import sim.Utils.PageUtils;
import sim.entity.Student;

import java.util.List;

public interface StudentDao {
    //查询出当前页的集合
    List<Student> selectAll(Integer curentPageNo, Integer pageSize);  //一个u
    //查询总记录数
    Integer selectCount();

    int  deleteById(int uid);
}

 

StudentServiceImpl

package sim.service.StudentServiceImpl;

import sim.Utils.PageUtils;
import sim.dao.StudentDao;
import sim.dao.StudentDaoImpl.StudentDaoImpl;
import sim.entity.Student;
import sim.service.StudentService;

import java.util.List;

public class StudentServiceImpl implements StudentService {
    private StudentDao studentDao  = new StudentDaoImpl();  //必有的实例
    @Override
    public List<Student> selectAll(Integer currentPageNo, Integer pageSize) {   //
        return studentDao.selectAll(currentPageNo,pageSize);
    }

    @Override
    public Integer selectCount() {
        return studentDao.selectCount();
    }

    @Override
    public PageUtils<Student> getPageUtils(String currentPageNoStr, String pageSizeStr) {
        //让页面不出现无数据的页面
        Integer pageSize = null;
        if (pageSizeStr == null || pageSizeStr == "") {
            pageSize = 2;
        } else {
            pageSize = Integer.parseInt(pageSizeStr);

        }
        Integer totalPageSize=selectCount() % pageSize  ==0 ?selectCount() / pageSize :selectCount() / pageSize+1;

            //对当前页进行非null判断
            //定义一个当前页的变量
            Integer currentPageNo = null;
            if (currentPageNoStr == null || currentPageNoStr == "") {
                currentPageNo = 1;   //页数为零,则赋值为1

            } else {
                currentPageNo = Integer.parseInt(currentPageNoStr);
                if (currentPageNo<=0){
                    currentPageNo=1;
                }
                if (currentPageNo>=totalPageSize){
                    currentPageNo=totalPageSize;
                }
            }


            //实例化工具类对象(让jsp页面可以调用对象)
            PageUtils<Student> pageUtils = new PageUtils<Student>();
            pageUtils.setCurrentPageNo(currentPageNo);
            pageUtils.setPageSize(pageSize);
            pageUtils.setTotalPageCount(selectCount());
            pageUtils.setTotalPageSize(totalPageSize);
            pageUtils.setList(selectAll(currentPageNo,pageSize));

            return pageUtils;
    }

    @Override
    public int deleteById(int uid) {
        return studentDao.deleteById(uid);
    }
}

 

service

package sim.service;

import sim.Utils.PageUtils;
import sim.entity.Student;

import java.util.List;

public interface StudentService {
    //查询出当前页的集合
    List<Student> selectAll(Integer currentPageNo, Integer pageSize);
    //查询总记录数
    Integer selectCount();
    //获取分页工具类对象
    PageUtils<Student> getPageUtils(String currentPageNoStr, String pageSizeStr);

    int  deleteById(int uid);
}

 

servlet

package sim.servlet;

import com.alibaba.fastjson.JSON;
import sim.Utils.PageUtils;
import sim.entity.Student;
import sim.service.StudentService;
import sim.service.StudentServiceImpl.StudentServiceImpl;

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 java.io.IOException;
import java.io.PrintWriter;
import java.util.List;

@WebServlet(name = "studentServlet" ,urlPatterns = "/studentServlet")
public class StudentServlet extends HttpServlet {
    private StudentService studentService;  //一定有的一句

    @Override
    public void init() throws ServletException {
        studentService = new StudentServiceImpl();   //一定有的一句
    }

    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

        //设置请求 与响应的编码格式
        req.setCharacterEncoding("utf-8");
        resp.setContentType("text/html;charset=utf-8");
        PrintWriter out  = resp.getWriter();

        //获取到标记
        String flag  =  req.getParameter("flag");
        if ("deleteById".equals(flag)){
        //获取前端传递的id
            String uidStr = req.getParameter("uid");
        //调用service
            int num  =  studentService.deleteById(Integer.parseInt(uidStr));
            //定义一个标记来记录是否删除成功
            boolean deleteFlag  = false;
            if(num>0){
                deleteFlag = true;

                out.print(deleteFlag);
            }else{
                out.print(deleteFlag);
            }
        }else {
            //获取前端传递参数
            String pageSizeStr = req.getParameter("pageSize");
            String currentPageNoStr = req.getParameter("currentPageNo");

            //调用service 方法
            PageUtils<Student> pageUtils = studentService.getPageUtils(currentPageNoStr, pageSizeStr);

            //把对象转化为json
            String json = JSON.toJSONString(pageUtils);
            out.print(json);
            out.close();

            req.setAttribute("pageUtils", pageUtils);        //把工具类存入到作用域中
            req.getRequestDispatcher("index.jsp").forward(req, resp);    //转发到首页

        }
    }
}

 

index1.jsp


<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<html>
  <head>
    <title>ajax 对分页进行改造</title>
    <script src="${pageContext.request.contextPath}/js/jquery-1.8.3.js"></script>
  </head>
  <body>

<table border="1" width="700px" align="center" id="tv_table">  <%--绑定表格--%>


</table>

<div style="margin-left: 320px" id="tv_div">   <%--绑定类型--%>

</div>

<script>

  //用于发送ajax请求
function showInfo(currentPageNo) {
    $.ajax({
        "url":"${pageContext.request.contextPath}/studentServlet",
        "type":"post",
        "data":{"currentPageNo":currentPageNo},
        "dataType":"text",
        "success":callBack,
        "error":function () {
            alert("请求失败")
        }
    })
}

  //调用这个方法
  showInfo(1);

function callBack(data) {

  $("#tv_table").html("<tr><td>编号</td><td>名字</td><td>年龄</td></tr>")
  $("#tv_div").html("");

  //转换成前端支持的json格式
  var json = JSON.parse(data);
  var jsonList =json.list;

  //转换成jquery 对象
  var $jsonList = $(jsonList);

  $jsonList.each(function () {
    var temp = "<tr>";
    temp+="<td>"+this.uid+"</td>";
    temp+="<td>"+this.uname+"</td>";
    temp+="<td>"+this.uage+"</td>";
    temp+="<td><a href='javaScript:void(0)' onclick='deleteInFo("+this.uid+")'>删除</a></td>";
    temp+="</tr>";
    //把节点追加表格中
    $("#tv_table").append(temp)
  });

  //#拼接首页 上一页 下一页  末页
  //href='javaScript:void(0)' 表示禁用本身的事件 使用 onclick 事件
  var testData = "<a href='javaScript:void(0)' onclick='showInfo(1)'>首页</a>";
  testData += "<a href='javaScript:void(0)' onclick='showInfo("+( json.currentPageNo-1)+")'>上一页"+"</a>";
  testData += "<a href='javaScript:void(0)'  onclick='showInfo(" + (json.currentPageNo + 1) + ")'>下一页" + "</a>";
  testData += "<a href='javaScript:void(0)'  onclick='showInfo(" + (json.totalPageSize) + ")'>末页" + "</a>";    /* 一个" 被写成 ' 导致错误*/
  testData += "<span>共" + json.totalPageSize + "页</span>"
  testData += "<span>" + json.currentPageNo + "/" + json.totalPageSize + "</span>"
  $("#tv_div").append(testData);
}

  //删除的方法
function deleteInFo(uid) {
  //发送ajax请求
  $.ajax({
    "url":"${pageContext.request.contextPath}/studentServlet",
    "type":"post",
    "data":{"flag":"deleteById","uid":uid},
    "dataType":"text",
    "success":callBack2,
    "error":function () {
      alert("请求失败")
    }
  })
}
function callBack2(data) {
    if (data=="true"){      //弹框的形式展示结果
    alert("请求成功");
    showInfo(1)
    }else {
      alert("请求失败")
    }
  }
  
</script>

  </body>
</html>

 

结果展示:

分页成功

删除成功

 

posted @ 2020-08-17 22:58  ping4  阅读(150)  评论(0编辑  收藏  举报