基于Struts2框架的分页技术分享

本文介绍了一种基于Struts2框架实现的简洁分页技术。通过自定义PageBean类封装分页属性,结合PageUtil工具类生成分页链接,实现动态展示数据库查询结果的功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

基于Struts2框架的分页技术分享

写在最前面

今天被朋友圈一条京东确认12G数据用户数据泄漏 你要跑赢骗子的说说吓了一跳。记得好像在去年的时候就好像听说过说Struts2存在漏洞,只是没有造成这么大的损失。不过经这么一档子事儿,我相信struts2会越来越完美哈~~~

来看今天的新get√ 以下内容简略的介绍了struts2中的分页技术处理,不适合刚学struts2者学习,有过struts2项目经验的同学无碍。

分页的目的是为了在网页上动态的展示,从数据库中查询出的数据。以前在学校学的分页处理都感觉很复杂,今天学习到一个自己觉得挺简单的处理方法。所以,简单分享一下。

首先

在进行分页处理前需要用到以下几个类:

将有关分页的属性封装成一个名为PageBean的类

 package com.stuinforms.hoictas.entity;

    public class PageBean
    {
    private int page;  //第几页
    private int pageSize;  //每页记录数
    private int start; //第几条数据

    public int getPage()
    {
    return page;
    }

    public void setPage(int page)
    {
    this.page = page;
    }

    public int getPageSize()
    {
    return pageSize;
    }

    public void setPageSize(int pageSize)
    {
    this.pageSize = pageSize;
    }

    public int getStart()
    {
    return (page - 1) * pageSize;
    }

    public void setStart(int start)
    {
    this.start = start;
    }

    @Override
    public String toString()
    {
    return "PageBean{" +
    "page=" + page +
    ", pageSize=" + pageSize +
    ", start=" + start +
    '}';
    }
    }

将通常分页操作的代码提取出来成PageUtil工具类。

    package com.stuinforms.hoictas.util;

    public class PageUtil
    {

    public static String genPagation(String targetUrl, int totalNum, int currentPage, int pageSize)
    {
    int totalPage = totalNum % pageSize == 0 ? totalNum / pageSize : totalNum / pageSize + 1;

    StringBuffer pageCode = new StringBuffer();

    pageCode.append("<li><a href='" + targetUrl + "?page=1'>首页</a></li>");

    if (currentPage == 1)
    {
    pageCode.append("<li class='disabled'><a href='#'>上一页</a></li>");
    } else
    {
    pageCode.append("<li><a href='" + targetUrl + "?page=" + (currentPage - 1) + "'>上一页</a></li>");
    }

    for (int i = currentPage - 2; i <= currentPage + 2; i++)
    {
    if (i < 1 || i > totalPage)
    {
    continue;
    }
    if (i == currentPage)
    {
    pageCode.append("<li class='active'><a href='#'>" + i + "</a></li>");
    } else
    {
    pageCode.append("<li><a href='" + targetUrl + "?page=" + i + "'>" + i + "</a></li>");
    }
    }

    if (currentPage == totalPage)
    {
    pageCode.append("<li class='disabled'><a href='#'>下一页</a></li>");
    } else
    {
    pageCode.append("<li><a href='" + targetUrl + "?page=" + (currentPage + 1) + "'>下一页</a></li>");
    }

    pageCode.append("<li><a href='" + targetUrl + "?page=" + totalPage + "'>尾页</a></li>");

    return pageCode.toString();
    }

    }

现在我们来实际应用一下上面两个类。假设我们现在要做的是一个学生信息管理系统,我们现在需要完善其中的一项功能,叫查看数据字典。就是在网页上用户向后台发送了一个action请求,后台返回一个list集合并进行分页。那么要在对应的Action中写入如下属性:

            if (StringUtil.isEmpty(page))
                {
                page = "1";
                }

因为是第一次访问,所以这个action的page的值为null。程序会进入这个if语句将page赋值为1。
我们使用PagaBean类创建一个对象,并为它设置了page属性和pageSize属性

        PageBean pageBean = new PageBean();

        pageBean.setPage(Integer.parseInt(page));
        pageBean.setPageSize(Integer.parseInt(PropertiesUtil.getValue("pageSize")));

dataDicDao.dataDicList()方法的作用就是将从第0条数据开始到第8条数据(我们假设pageSize取到的值为8,pageSize设置每页数据的条数)的list集合。dataDicListCount()方法是查询所有数据的总条数(total),并返回一个int类型的结果。

            dataDicList = dataDicDao.dataDicList(conn, dataDic, pageBean);

            total = dataDicDao.dataDicListCount(conn, dataDic);

有了这些值后,我们就可以使用PageUtil的genPagation()返回分页拼装出来的html代码,这里PageUtiltargetUrl属性是点击分页中某一页时,所请求的action以及处理方法。

            pageCode = PageUtil.genPagation(httpServletRequest.getContextPath() + "/dataDic!list", total, pageBean.getPage(), pageBean.getPageSize());

这样就大功告成了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值