`
jessen163
  • 浏览: 456598 次
  • 性别: Icon_minigender_1
  • 来自: 潘多拉
社区版块
存档分类
最新评论

jsp+struts2+javabean实现长文章分页

 
阅读更多
首先,要说明的是:文章是用fckeditor编辑成的html代码。网上有很多方法,都只是截取字符,html标签很容易就被分开了。以至于前台显示时出错。
1。创建自己的类(用来处理fckeditor编辑器生成的代码,即文章内容):类的代码如下:
public class OnepageUtil {
   
    private int size = 800;// 每页显示内容量
    private int currentPage = 1;//设置第一页为初始页
    public int getCurrentPage() {
        return currentPage;
    }
    public void setCurrentPage(int currentPage) {
        this.currentPage = currentPage;
    }
    private int pages = 0;
    private int length = 0;
    String PageInfo = "";
    //前台显示的文章内容
    public String getSubContent(String content){
        ArrayList newContent = new ArrayList();
        newContent = acticlePager(content);
        String cont = "文章已结束...";
        pages = countPages(content);
        if (currentPage > pages)
            currentPage = pages;
        try{
            cont = newContent.get(currentPage-1).toString();
        }catch(Exception e){
           
        }
        return cont;
    }
    //将文章内容分成数组
    public ArrayList acticlePager(String content) {
        ArrayList list = new ArrayList();
        boolean end = true;
        length = content.length();
        while (end) {
           String temp = "";
           /**
            * 如果内容已经少于默认数,就直接作为结尾返回
            */
           if (size >= length) {
            temp = content;
            list.add(temp);
            break;
           }
            /**
            * temp为本次截取内容段 temp2为余下的内容段
            */
            temp = content.substring(0, size);
            String temp2 = content.substring(size + 1, length);
            String session = temp;
            int a = 0;
            int b = 0;
           /**
            * 首先计算 <和>是否相等
            */
            while (temp.indexOf(" <") > -1) {
                a++;
                temp = temp.substring(temp.indexOf(" <") + 1, temp.length());
            }
            temp = session;
            while (temp.indexOf(">") > -1) {
                b++;
                temp = temp.substring(temp.indexOf(">") + 1, temp.length());
            }
            if (a != b) {
                int p = temp2.indexOf(">");
                temp = content.substring(0, size + p + 2);
                temp2 = content.substring(size + p + 2, length);
                session = temp;
            }
           /**
            * 如果相等就再计算 <P和
            * </p>
            * 是否吻合
            */
            if (a == b) {
                a = 0;
                b = 0;
                temp = session;
                while (temp.indexOf(" <P") > -1) {
                    a++;
                    temp = temp.substring(temp.indexOf(" <") + 1, temp.length());
                }
                temp = session;
                while (temp.indexOf(" </P") > -1) {
                    b++;
                    temp = temp.substring(temp.indexOf(">") + 1, temp.length());
                }
                if (a == b) {
                    break;
                }
                if (a != b) {
                    int p = temp2.indexOf(" </P>");
                    temp = content.substring(0, size + p + 5);
                    try {
                        if ((size + p + 5) < length)
                            temp2 = content.substring(size + p + 5, length);
                    } catch (Exception e) {
                        temp2 = "";
                    }
               }
            }
            /**
            * 余下内容更新
            */
            content = temp2;
            length = content.length();
            // System.out.println("cut after:"+content);
            System.out.println("cut after:" + temp);
            list.add(temp);
            /**
            * 如果不存在余下内容了就结束本次操作
            */
            if (temp2.equals("") || temp2.length() < 1)
                end = false;
        }
        return list;
    }
    //计算总页数
    public int countPages(String content){
        length = content.length();
        if (length % size == 0) {
           pages = length / size;
        } else {
           pages = length / size + 1;
        }
        return pages;
    }
    //生成页码导航
    public String pageInfo(String content,int pageNo){
        pages = countPages(content);
        for (int i = 1; i <= pages; i++)
        {
            if (i == currentPage)
                PageInfo += "" + i + "";
            else
                PageInfo += " <a href=/article/"+pageNo+"_" + i + ".html>[" + i + "] </a> ";

        }
        if (currentPage > 1)
            PageInfo = " <a href=/article/"+pageNo+"_" + (currentPage - 1) + ".html>上一页 </a>" + PageInfo;
        if (currentPage < pages)
            PageInfo += " <a href=/article/"+pageNo+"_" + (currentPage + 1) + ".html>下一页 </a>";
        return PageInfo;
    }
}

2。页面用以下方式直接调用:
<jsp:useBean id="htmlUtil" class="com.yzfc.util.OnepageUtil"></jsp:useBean>

   用此方法获取当前页码并设置为   htmlUtil   的属性:
    <%
    if (request.getAttribute("ps") != null){ 
           int currentPage = Integer.parseInt((String)request.getAttribute("ps"));
           htmlUtil.setCurrentPage(currentPage);
    }
    %>
用此方法显示内容:
<%=htmlUtil.getSubContent(article.getContent().toString()) %>
3.   编辑调用的action :加入如下代码:
    private String ps;      //用来传递参数
    public String getPs() {
        return ps;
    }

    public void setPs(String ps) {
        this.ps = ps;
    }

4。 利用apache的 url  静态化转化为真正的请求url:   此规则在.htaccess文件中
      RewriteRule ^article/([0-9].*)_([0-9].*).html$ findArticleById.action?article.articleid=$1&ps=$2
5。
分享到:
评论

相关推荐

    jsp+sqlserver分页

    sqlserver 2005 + Struts+javaBean 实现的一个简单的分页功能。我就不附带数据库了,自己按JAVAbean建立一个表吧,很简单

    javabean分页的例子

    javabean分页程序,适合初学jsp的朋友 &lt;br&gt;1、数据库表中有GoodsType表 2、新建TypeList.jsp页面 3、新建GoodsType的实体类 4、新建GoodsTypeDAO的操作类 5、在BusinessDelegate类中注册相应的方法...

    JAVA WEB典型模块与项目实战大全.part2(第二卷)

    第23章 在线音乐管理系统(AJAX+JSP+Struts 2.X) 第24章 数据汇聚系统(Struts 2.X+Spring+iBATIS) 第25章 投票管理系统(Struts 2.X+Spring+Hibernate) 第26章 权限管理系统(Struts 2.X+Spring+JPA) 第27章 ...

    JAVA WEB典型模块与项目实战大全.part4

    第23章 在线音乐管理系统(AJAX+JSP+Struts 2.X) 第24章 数据汇聚系统(Struts 2.X+Spring+iBATIS) 第25章 投票管理系统(Struts 2.X+Spring+Hibernate) 第26章 权限管理系统(Struts 2.X+Spring+JPA) 第27章 ...

    JAVA WEB典型模块与项目实战大全.part3(第三卷)

    第23章 在线音乐管理系统(AJAX+JSP+Struts 2.X) 第24章 数据汇聚系统(Struts 2.X+Spring+iBATIS) 第25章 投票管理系统(Struts 2.X+Spring+Hibernate) 第26章 权限管理系统(Struts 2.X+Spring+JPA) 第27章 ...

    JAVA WEB典型模块与项目实战大全.part1(第一卷)

    第23章 在线音乐管理系统(AJAX+JSP+Struts 2.X) 第24章 数据汇聚系统(Struts 2.X+Spring+iBATIS) 第25章 投票管理系统(Struts 2.X+Spring+Hibernate) 第26章 权限管理系统(Struts 2.X+Spring+JPA) 第27章 ...

    jsp页面数据分页通用组件

    该组件为jsp页面数据分页通用组件,可用于所有struts或jsp+javabean的页面分页功能!在实际项目中完全可以适用!内含源码以及详细注释!!好东西,给大家一起学习分享!

    ssh部门员工管理系统,实现部门和员工的增删改查和分页等

    jsp+servlet+javaBean构成的MVC 员工、部门的增删改查、分页等 ssh 开发环境 window7 eclipse: Mars.2 Release (4.5.2)(插件:springsource-tool,hibernatetools-Update) Mysql 5.5.1 Tocat7.0 框架版本 Spring...

    JAVA WEB典型模块与项目实战大全

    3.4 实现spring、struts2.x和hibernate框架集成  3.5 小结  第2篇 典型模块开发  第4章 在线文本编辑器(fckeditor)  4.1 分析fckeditor在线文本编辑器  4.2 fckeditor在线文本编辑器初级应用  4.3 ...

    web源码(多套)

    [其他类别]jsp+servlet+javaBean实现MVC_jspmvc [其他类别]Jsp考试系统_jspks [其他类别]JSP网页HTML编辑器 v1.0 beat_jsphtmleditor [其他类别]JSP无限级分类目录树_sorttree [其他类别]MeyboMail Web(Java)开源...

    jsp网络编程从基础到实践

    实例41 用jspSmartUpload组件来实现文件下载 实例42 分页读取文件内容 第7章 在JSP中使用数据库 实例43 顺序查询数据库表中的数据 实例44 移动查询 实例45 参数查询 实例46 模糊查询 实例47 综合查询 实例...

    JSP网络编程从基础到实践的实例代码

    实例41 用jspSmartUpload组件来实现文件下载 实例42 分页读取文件内容 第7章 在JSP中使用数据库 实例43 顺序查询数据库表中的数据 实例44 移动查询 实例45 参数查询 实例46 模糊查询 实例47 综合查询 实例...

    JSP网络编程从基础到实践

    实例48 追加记录 实例49 删除记录 实例50 更新记录 实例51 分页显示记录 实例52 调用存储过程 实例53 事务处理 实例54 利用连接池访问数据库 JSP中JavaBean的应用 实例55 在JSP...

    JSP网络编程从基础到实践 实例代码

    实例41 用jspSmartUpload组件来实现文件下载 实例42 分页读取文件内容 第7章 在JSP中使用数据库 实例43 顺序查询数据库表中的数据 实例44 移动查询 实例45 参数查询 实例46 模糊查询 实例47 综合查询 实例...

    员工管理系统基于ssh实现员工部门增删改查

    开发环境 window7 eclipse: Mars.2 Release (4.5.2)(插件:springsource-tool,hibernatetools-Update) Mysql 5.5.1 Tocat7.0 框架版本 ...jsp+servlet+javaBean构成的MVC 员工、部门的增删改查、分页等

    精通JSP-Web开发技术与典型应用 光盘代码

    \ch18\* 第18章 JSP页面分页技术实现所有例程代码 \ch19\* 第19章 上传下载文件模块所有例程代码 \ch20\* 第20章 使用JSP发送邮件所有例程代码 \ch21\* 第21章 异常及日志模块所有例程代码 \ch22\* 第22章 保护...

    java(ssh员工管理系统)

    jsp+servlet+javaBean构成的MVC 员工、部门的增删改查、分页等 ssh 开发环境 window7 eclipse: Mars.2 Release (4.5.2)(插件:springsource-tool,hibernatetools-Update) Mysql 5.5.1 Tocat7.0 框架版本 Spring...

    ssh员工管理系统源码

    jsp+servlet+javaBean构成的MVC 员工、部门的增删改查、分页等 ssh 开发环境 window7 eclipse: Mars.2 Release (4.5.2)(插件:springsource-tool,hibernatetools-Update) Mysql 5.5.1 Tocat7.0 框架版本 Spring...

    管理信息系统-ssh员工管理系统

    jsp+servlet+javaBean构成的MVC 员工、部门的增删改查、分页等 ssh 开发环境 window7 eclipse: Mars.2 Release (4.5.2)(插件:springsource-tool,hibernatetools-Update) Mysql 5.5.1 Tocat7.0 框架版本 Spring...

    ssh员工管理系统/ssh员工管理系统

    jsp+servlet+javaBean构成的MVC 员工、部门的增删改查、分页等 ssh 开发环境 window7 eclipse: Mars.2 Release (4.5.2)(插件:springsource-tool,hibernatetools-Update) Mysql 5.5.1 Tocat7.0 框架版本 Spring...

Global site tag (gtag.js) - Google Analytics