`

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]     [下一页] 

分享到:
评论

相关推荐

    jsp使用自定义标签taglib分页系列——完整例子

    jsp使用自定义标签taglib分页系列——完整例子(其中struts控件和包我没有加入,需要自己加入)

    JspRun!社区论坛系统 v6.0.0 build 20110516 GBK 源码版.zip

    系统采用struts、hibernate框架及中间件的结合既实现了业务逻辑与控制逻辑的有效分离,提高了层次结构的清晰度,提高了复用的粒度降低了开发代价和维护代价,同时保证了软件的质量使其更具有鲁棒性和可维护性。...

    JspRun!社区论坛系统 v6.0.0 build 20110516 UTF-8 安装版.zip

    系统采用struts、hibernate框架及中间件的结合既实现了业务逻辑与控制逻辑的有效分离,提高了层次结构的清晰度,提高了复用的粒度降低了开发代价和维护代价,同时保证了软件的质量使其更具有鲁棒性和可维护性。...

    java开源包2

    JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (&lt;jcaptcha:image label="Type the text "/&gt; ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...

    java开源包3

    JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (&lt;jcaptcha:image label="Type the text "/&gt; ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...

    java开源包4

    JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (&lt;jcaptcha:image label="Type the text "/&gt; ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...

    千方百计笔试题大全

    233、说出在JSP页面里是怎么分页的? 55 234、存储过程和函数的区别 55 235、事务是什么? 55 236、游标的作用?如何知道游标已经到了最后? 55 237、触发器分为事前触发和事后触发,这两种触发有和区别。语句级触发...

    java面试宝典

    233、说出在JSP页面里是怎么分页的? 55 234、存储过程和函数的区别 55 235、事务是什么? 55 236、游标的作用?如何知道游标已经到了最后? 55 237、触发器分为事前触发和事后触发,这两种触发有和区别。语句级触发...

    java开源包1

    JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (&lt;jcaptcha:image label="Type the text "/&gt; ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...

    java开源包11

    JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (&lt;jcaptcha:image label="Type the text "/&gt; ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...

    java开源包6

    JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (&lt;jcaptcha:image label="Type the text "/&gt; ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...

    java开源包5

    JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (&lt;jcaptcha:image label="Type the text "/&gt; ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...

    java开源包10

    JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (&lt;jcaptcha:image label="Type the text "/&gt; ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...

    java开源包8

    JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (&lt;jcaptcha:image label="Type the text "/&gt; ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...

    java开源包7

    JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (&lt;jcaptcha:image label="Type the text "/&gt; ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...

    java开源包9

    JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (&lt;jcaptcha:image label="Type the text "/&gt; ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...

    java开源包101

    JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (&lt;jcaptcha:image label="Type the text "/&gt; ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...

    Java资源包01

    JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (&lt;jcaptcha:image label="Type the text "/&gt; ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...

Global site tag (gtag.js) - Google Analytics