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

     

    结果展示:

    分页成功

    删除成功

     

  • 相关阅读:
    Win10 主题 美化 动漫
    Win10 主题 美化 动漫
    span 居中
    This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery
    10 Future Web Trends 十大未来互联网趋势
    10 Future Web Trends 十大未来互联网趋势
    使用pycharm进行简单的数据库管理
    使用pycharm进行简单的数据库管理
    Python开发利器PyCharm 2.7附注册码
    Python开发利器PyCharm 2.7附注册码
  • 原文地址:https://www.cnblogs.com/ynzj123/p/13520708.html
Copyright © 2020-2023  润新知