MVC 实现分页效果

一、MVC实现分页
   1、封装分页PageInfo类;
          private int count;//总条数  ---------18 数据库(查询)
          private int totalPage;//总页数    ----------4 算出来的 (计算)
          private int rows=5;//每页显示行数 -------------5 自定义
          private int currentPage=1;//当前页码    ---------1 前端
          private List<UserInfo> list; // 内容---------数据库(查询)

   2、底层数据:
      1)获得总个数: SELECT count(1) from userinfo

      2)当前页的数据:  select * from userinfo limit 0,5
                        select * from userinfo limit 5,5
                        select * from userinfo limit 10,5

       说明:   0=(当前页-1)*每页显示行数 =(1-1)*5 =0
                    5=每页显示行数

    3、控制层 servlet

    4、JSP 显示

二、效果如下图所示:

三、编写代码

PageInfo类

package com.sgj.util;

import com.sgj.entity.UserInfo;

import java.util.List;

/**
 * @ClassName PageInfo
 * @Description: TODO
 * @Author 44401
 * @Date 2020/3/27
 * @Version V1.0
 **/
public class PageInfo {
    private int count;//总条数  ---------18 数据库(查询)
    private int totalPage;//总页数    ----------4 算出来的 (计算)
    private int rows=5;//每页显示行数 -------------5 自定义
    private int currentPage=1;//当前页码    ---------1 前端
    private List<UserInfo> list; // 内容---------数据库(查询)

    //默认的构造方法
    public PageInfo() {
    }

    /**
     *
     * @param count  总个数
     * @param rows  每页显示的个数
     * @param currentPage 当前页
     * @param list  当前页数据
     */
    public PageInfo(int count, int rows, int currentPage, List<UserInfo> list) {
        this.count = count;
        this.rows = rows;
        this.currentPage = currentPage;
        this.list = list;
    }

    public int getCount() {
        return count;
    }

    /**
     * 计算总页数 =总个数/每页显示的个数
     * @return
     */
    public void setCount(int count) {
        this.count = count;
        //计算
        this.totalPage =(int)(Math.ceil(count/(double)rows));
    }

    public int getTotalPage() {
        return totalPage;
    }

    public void setTotalPage(int totalPage) {
        this.totalPage = totalPage;
    }

    public int getRows() {
        return rows;
    }

    public void setRows(int rows) {
        this.rows = rows;
    }

    public int getCurrentPage() {
        return currentPage;
    }

    public void setCurrentPage(int currentPage) {
        this.currentPage = currentPage;
    }

    public List<UserInfo> getList() {
        return list;
    }

    public void setList(List<UserInfo> list) {
        this.list = list;
    }


}

  两个方法:

 分页集合方法

  @Override
    public List<UserInfo> getPageInfo(PageInfo pageInfo) {
        sql = "select * from userinfo limit ?,?";
        //集合对象
        List<UserInfo> list = new ArrayList<>();

        //参数
        Object[] obj = {(pageInfo.getCurrentPage()-1)*pageInfo.getRows(),pageInfo.getRows()};

        //调用方法
        ResultSet rs = this.executeSQL(sql,obj);
        try {
            //遍历
            while (rs.next()) {
                //封装对象
                UserInfo user = new UserInfo(rs.getInt(1), rs.getString(2), rs.getString(3), rs.getString(4), rs.getString(5), rs.getInt(6), rs.getInt(7));
                //添加到集合
                list.add(user);
            }
        } catch (Exception ex) {
            ex.printStackTrace();
        }finally {
            this.closeResource(); //关闭
        }
        return list;
    }

 Servlet控制器

 //查询分页
    protected void findPageInfo(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //设置响应编码
        response.setContentType("text/html;charset=utf-8");
        //输出对象
        PrintWriter out = response.getWriter();

        //具体操作//
        //1.实例化业务对象
        UserInfoService service =new UserInfoServiceImpl();


             //获得当前页参数///
        String str = request.getParameter("pageIndex");
        //当前页 判断
        int pageIndex=(str==null)?(1):(Integer.parseInt(str));
        ///


        //2.调用方法
        //总个数
        int count  = service.getCount();
        //当前页
//        int pageIndex=1;
        //显示每页个数
        int pageSize=5;

        //封装PageInfo
        PageInfo info = new PageInfo();
        //设置总个数
        info.setCount(count);
        //当前页
        info.setCurrentPage(pageIndex);
        //显示每页个数
        info.setRows(pageSize);
//        System.out.println("总数==>"+info.getCount());
//        System.out.println("总页数==>"+info.getTotalPage());

        List<UserInfo> users= service.getPageInfo(info);

        //3.保存数据
        request.setAttribute("users",users);
        //分页bean保存
        request.setAttribute("pageinfo",info);

        //4.跳转
        request.getRequestDispatcher("userAll.jsp").forward(request,response);

       // out.println();
        //关闭
        out.flush();
        out.close();
    }

其他的代码省略.......

 

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
好的,我会尽力回答您的问题。 MVC设计模式是一种经典的软件架构模式,它将整个应用程序分成三个部分:模型(Model)、视图(View)和控制器(Controller)。模型负责封装应用程序的数据和业务逻辑,视图负责用户界面的展示,控制器负责协调模型和视图之间的交互。 在这个问题中,我们可以利用MVC设计模式来实现动态条件的分页显示查询。具体实现方式如下: 1. 模型层 模型层负责封装应用程序的数据和业务逻辑。在这个问题中,我们可以定义一个 JavaBean 类来表示查询结果。该类中包含了需要展示的数据项,如ID、姓名、年龄等等。另外,我们还需要定义一个 DAO类来与数据库进行交互,从而获取查询结果。 2. 视图层 视图层负责用户界面的展示。在这个问题中,我们可以使用 JSP 技术来实现视图层。我们可以将查询条件放在一个表单中,用户可以根据需要设置查询条件。同时,我们还可以在表单下方显示查询结果。需要注意的是,我们需要使用 AJAX 技术来实现动态分页查询。 3. 控制器层 控制器层负责协调模型和视图之间的交互。在这个问题中,我们可以使用 Servlet 技术来实现控制器层。当用户提交查询表单时,Servlet 可以调用 DAO类来获取查询结果,并将查询结果传递给 JSP 页面进行展示。同时,当用户点击分页按钮时,Servlet 可以根据用户的请求参数来获取相应的查询结果,并将查询结果传递给 JSP 页面进行展示。 4. JSTL和JQuery等技术 JSTL和JQuery等技术可以帮助我们更方便地实现动态条件的分页显示查询。例如,我们可以使用 JSTL 标签库来简化 JSP 页面的代码,如<c:forEach>标签可以用来遍历查询结果集合。同时,我们还可以使用 JQuery 技术来实现 AJAX 分页查询,从而实现无刷新分页查询的效果。 综上所述,我们可以利用 MVC设计模式,并使用 JSP、Servlet、JSTL和JQuery 等技术来实现动态条件的分页显示查询。

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值