`

jsp 开发 百度 google 分页控件 struts2 实现(转)

 
阅读更多

分页输出的实体

package com.loongtao.lucene.search.model;

import java.io.Serializable;

public class PageControl implements Serializable, Cloneable {

    private static final long serialVersionUID = 3686354990469630498L;
    private String pageName;
    private String href;
    private String isThisPage = "0";

    public String getPageName() {
        return pageName;
    }

    public void setPageName(String pageName) {
        this.pageName = pageName;
    }

    public String getHref() {
        return href;
    }

    public void setHref(String href) {
        this.href = href;
    }

    public String getIsThisPage() {
        return isThisPage;
    }

    public void setIsThisPage(String isThisPage) {
        this.isThisPage = isThisPage;
    }
}

  * 搜索引擎检索分页控件
 *
 * @author xiao.bin
 *

public class SearchPageControl {

   
    public static List<PageControl> getQueryPageControlByApi(ApiObject api) {
        List<PageControl> list = new ArrayList<PageControl>();
        // 获取当前页
        int page = api.getPage();
        // 获取所有条数
        int allarticleCount = api.getArticlescount();
        // 获取当前页面大小
        int pagesize = api.getPagesize();
        // 计算页数
        int countPage = allarticleCount / pagesize;
        // 计算是否需要多加一页
        if (allarticleCount % pagesize != 0) {
            countPage++;
        }
        int startX = 1;
        // 计算开始位置
        if (page > 4 && page <= countPage) {
            startX = page - 4;
        }
        // 上一页
        if (page > 1 && page <= countPage) {
            PageControl c = new PageControl();
            c.setPageName("上一页");
            c.setHref(appendHref(api, page - 1));
            list.add(c);
        }
        for (int i = startX; i < startX + 10 && i <= countPage; i++) {
            // 判断是否等于当前页
            PageControl c = new PageControl();
            c.setPageName(i + "");
            c.setHref(appendHref(api, i));
            if (i == page) {
                c.setIsThisPage("1");
            }
            list.add(c);
        }
        // 上一页
        if (page < countPage) {
            PageControl c = new PageControl();
            c.setPageName("下一页");
            c.setHref(appendHref(api, page + 1));
            list.add(c);
        }
        return list;
    }

   
    public static String appendHref(ApiObject api, int page) {
        StringBuffer sb = new StringBuffer("?");
        if (api.getTitle().length() > 0) {
            sb.append(appendField("title", api.getTitle()));
        }
        if (api.getContent().length() > 0) {
            sb.append(appendField("content", api.getContent()));
        }
        sb.append(appendField("page", page + ""));
        sb.append("pagesize=" + api.getPagesize());
        return sb.toString();
    }

   
    public static String appendField(String urlField, String urlValue) {
//urlencode转码
        return urlField + "="
                + StringUtils.StringToUrlEncode(urlValue, StringUtils.UTF8)
                + "&";
    }

    public static void main(String[] args) {

        ApiObject api = new ApiObject();
        api.setArticlescount("365");
        api.setPage("3");
        api.setTitle("xiao.bin");

        List<PageControl> list = getQueryPageControlByApi(api);

        for (PageControl pageControl : list) {
            System.out.println(pageControl.getHref());
        }
    }

}

由action 发送 List<PageControl>  到页面上.

  struts2 标签 输出
    <div id="page">
                            <s:iterator  value="#request.pagectr" id="id"   status="pagelist">
                                <s:if test="%{#id.isThisPage == 1}">
                                    <strong>${pageName}</strong>
                                </s:if>
                                <s:else>
                                <a href="<%=basePath%>search/list.html${href}">[${pageName}]</a>
                                </s:else>   
                                &nbsp;&nbsp;
                            </s:iterator>
                        </div>

实现效果
[上一页]     [1]     2     [3]     [4]     [5]     [6]     [7]     [8]     [9]     [10]     [下一页] 

分享到:
评论

相关推荐

    Struts2分页-自定义标签-类似百度分页

    Struts2分页是Web开发中的一个重要概念,它主要用于处理大量数据时,避免一次性加载所有数据导致页面响应慢或者浏览器崩溃。在这个场景中,我们提到的是使用自定义标签实现类似于百度分页的效果,这是一种常见的用户...

    struts2实现分页

    ### Struts2 实现分页及 `&lt;s:bean&gt;` 标签详解 #### 一、Struts2 分页概述 在 Java Web 开发中,为了提高用户体验并减轻服务器负担,通常采用分页技术来展示数据。Struts2 框架提供了一套强大的工具和标签库来帮助...

    JSP Struts2 分页 导出Excel

    - `JSP页面`:显示查询结果和分页控件,使用jQuery与服务器通信。 - `DAO(数据访问对象)`:与数据库交互的接口和实现类。 - `模型类`:对应数据库中的表结构,用于封装数据。 - `lib`:存放项目依赖的jar包,...

    java分页控件.rar

    在Java Web开发中,实现分页控件的方法有很多,常见的有以下几种: 1. **JSP标签库**:例如,使用开源项目DisplayTag或者Struts2的分页插件。这些标签库提供了一套完整的分页解决方案,只需在JSP页面中插入相应的...

    Struts2+jsp自定义分页组件以及源码

    总的来说,"zoo-paging-1.0.jar"是一个自定义的JSP分页组件,适用于Struts2框架。通过使用这个组件,开发者可以快速实现高效、易于维护的分页功能。对于初学者,这是一个很好的学习资源,能帮助他们深入理解Java Web...

    java分页。struts2标签

    在Struts2中,分页可以通过多种方式实现,其中一种常用的方法是结合Action、JSP页面和Struts2提供的标签库。 #### 使用Struts2标签实现分页 Struts2提供了丰富的标签库,其中包括用于分页的标签。在实际操作中,...

    ssh 分页 控件 (分页插件)

    SSH(Struts2 + Spring + Hibernate)是一种经典的Java Web开发框架,它提供了强大的MVC(模型-视图-控制器)架构支持。在处理大量数据时,分页是必不可少的功能,可以提高用户体验并优化服务器性能。这里提到的是一...

    struts2+hibernate(文件批量上传至数据库+Ajax分页显示)

    5. index.jsp:首页,包含文件列表和分页控件。 6. JavaScript脚本:处理Ajax请求和页面更新。 总之,这个项目展示了如何将Struts2和Hibernate结合使用,以实现文件批量上传到数据库以及Ajax分页显示的功能。通过...

    完整Struts2 HIBERNATE实现分页

    根据提供的标题、描述以及部分内文,我们可以梳理出关于如何使用Struts2与Hibernate实现分页功能的关键知识点。 ### Struts2与Hibernate简介 - **Struts2**:这是一个基于MVC架构的开源Web框架,它能帮助开发者...

    一个简单好用的jsp翻页控件

    创建一个简单的JSP分页控件,我们需要考虑以下几个核心组件: 1. **模型(Model)**:这部分通常由JavaBean或DAO(Data Access Object)实现,负责与数据库交互,获取所需的数据量并进行分页计算。例如,我们可能...

    Struts2分页程序

    根据提供的信息,我们可以深入探讨如何在Struts2框架中实现分页功能。Struts2是一个开源的、用于创建企业级Java Web应用的框架。它基于MVC(模型-视图-控制器)架构模式,能够帮助开发者高效地组织代码并简化Web开发...

    封装好直接使用的jsp分页插件

    为了应对这一问题,开发社区推出了诸多分页插件,其中,“封装好直接使用的jsp分页插件”便是这样一款简化开发者工作的工具。 这款分页插件面向的是希望在项目中快速实现分页功能的开发者,它针对jsp+servlet原生...

    struts2组件化分页

    Struts2是一款强大的Java web开发框架,它简化了MVC(模型-视图-控制器)架构的实现。在这个“struts2组件化分页”项目中,开发者已经为常见的分页功能提供了组件化的解决方案,避免了重复编写大量页面和后台处理...

    Struts 2 自定义标签分页

    8. **页面展示**:最后,在JSP页面中,我们可以使用Struts 2的内置标签结合自定义分页标签来展示数据和分页控件。 总结一下,实现Struts 2 自定义标签分页需要对Struts 2框架有深入理解,包括标签库的创建、Java类...

    分页page_struts2_.rar

    标题“分页page_struts2_.rar”暗示了这是一个关于Struts2框架中实现分页功能的示例或教程。Struts2是一个流行的Java web应用框架,它提供了强大的MVC(模型-视图-控制器)架构来组织和管理应用程序。在处理大量数据...

    分页功能实现java

    同时,JSP页面需要展示分页控件,并能够响应用户的分页操作请求。在JSP中通常会用到EL表达式和JSTL标签库来显示分页信息和数据。例如,使用JSTL的标签来迭代显示分页后的数据集合。 另外,文章中提及的...

    Login_ssh_struts2_分页

    这个文件可能展示了如何在Struts2的动作类中处理分页逻辑,如何配置Struts2的XML配置文件来支持分页请求,以及如何在JSP页面上展示分页控件。 总的来说,这个主题涵盖了SSH框架下的登录功能,特别是Struts2中的分页...

    STRUTS2+JavaScript 的分页,而且国际化

    JavaScript可以通过绑定事件监听器,比如jQuery的`click`事件,来监听用户对分页控件的操作,并发送异步请求到服务器获取新的数据。 接着,我们来看看"国际化"。STRUTS2提供了强大的国际化支持,允许应用程序根据...

    Struts2+MySQL+c3p0+MVC_增删查改+分页

    7. **Struts2_02_CRUD**:这可能是项目中的一个目录或者文件,可能包含实现了上述功能的源代码,比如Action类、DAO接口和实现、JSP视图页面等。 在实际开发中,这样的组合使得开发者能够快速搭建具备数据管理功能的...

    Struts2+Hiberntate+Spring最简单的曾删节修改分页系统

    Struts2、Hibernate和Spring是Java Web开发中的三大框架,它们的组合被称为S2SH,是构建企业级应用的常用技术栈。这个项目是一个基于S2SH实现的最简单的增删改查(CRUD)与分页系统的实例,旨在帮助开发者理解和实践...

Global site tag (gtag.js) - Google Analytics