`
jessen163
  • 浏览: 465702 次
  • 性别: 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+servlet+javaBean实现MVC

    **简单的jsp+servlet+javaBean实现MVC** 在Web开发中,MVC(Model-View-Controller)模式是一种广泛使用的架构模式,它将应用程序的逻辑分为三个主要组件:模型(Model)、视图(View)和控制器(Controller)。...

    java--easyUI+struts+JSP+MySQL实现简单的增删查改

    【标题】"java--easyUI+struts+JSP+MySQL实现简单的增删查改" 涉及到的是一个基于Java技术栈的Web应用程序开发,主要包括以下几个关键知识点: 1. **Struts框架**:Struts是Apache组织提供的一个开源MVC框架,用于...

    基于JSP+Struts+JDBC的个人通讯录管理系统

    总的来说,这个基于JSP+Struts+JDBC的个人通讯录管理系统展示了Web开发中常用的技术栈,通过合理地分离视图、控制和模型,实现了功能完善、易于维护的个人通讯录管理。它不仅能够满足用户的基本需求,也为开发者提供...

    jsp+javabean分页技术.rar

    本资料"jsp+javabean分页技术.rar"主要探讨了如何在Java Web开发中利用JSP和JavaBean实现高效的分页功能。 首先,JSP(JavaServer Pages)是一种动态网页技术,它允许开发者在HTML代码中嵌入Java代码,服务器端执行...

    jsp+sqlserver分页

    本项目基于`SQL Server 2005`数据库,结合`Struts`框架和`JavaBean`组件,实现了在JSP页面上进行数据分页的功能。下面我们将详细探讨这一技术实现的关键知识点。 **1. SQL Server 2005 数据库分页** 在SQL Server ...

    【原创】struts+mysql+jsp 分页

    在Struts中,Controller由Action类实现,Model通常由JavaBean或EJB代表,而View则通过JSP页面来展示数据。 分页功能是Web应用中常见的需求,尤其在处理大量数据时,它能提高用户体验,避免一次性加载过多数据导致的...

    javabean分页的例子

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

    struts1.2实现分页

    总之,Struts1.2实现分页需要结合Action、DAO、数据模型和JSP视图等多个层面进行协调工作,理解并掌握这一过程有助于提升Web应用的性能和用户体验。在实际开发中,还需要根据项目需求进行适当的调整和优化。

    简易的JSP信息管理程序,JSP+MVC+数据分页_增删改查

    这是一个基于Java技术的简易JSP信息管理程序,它采用了经典的MVC(Model-View-Controller)设计模式,并实现了数据的分页、增删改查功能。在这个程序中,JSP作为视图层,负责展示数据;MVC模式帮助分离业务逻辑和...

    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章 ...

    SSH + Ajax + 分页 小项目(层次分明,代码易懂)

    SSH + Ajax + 分页 小项目是一个典型的Web应用程序开发实例,它结合了Spring、Struts2和Hibernate这三大主流Java企业级开发框架,并利用Ajax技术实现了页面无刷新的分页功能。下面将详细介绍这个项目中的关键技术和...

    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章 ...

    Struts2实现分页代码

    ### Struts2 实现分页代码详解 #### 一、背景与目的 在Web应用程序的开发过程中,数据分页是一项非常重要的功能。特别是在处理大量数据时,为了提高用户体验及减轻服务器压力,通常需要将数据分成若干个小部分进行...

    struts+hibernate分页

    在这个“MyPaging”项目中,开发者可能已经实现了上述功能,包括定义Action类处理分页请求,编写Hibernate查询语句,创建表示分页信息的JavaBean,以及在JSP页面上显示分页链接。这为其他开发者提供了一个参考示例,...

    一个高效简洁的Struts分页方法

    在Struts中实现分页功能是常见的需求,特别是对于处理大量数据时,分页能提供更好的用户体验。下面将详细解释如何在一个高效简洁的方式下实现Struts分页。 首先,我们需要理解分页的基本原理。分页通常是通过在...

    struts写的分页

    6. **创建JSP页面**:在JSP页面上,使用JSTL或其他标签库(如Struts的DisplayTag库)来显示数据并构建分页链接。这些链接会携带页码参数,当用户点击时,会触发新的Action请求。 7. **处理用户交互**:当用户点击...

    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章 ...

    struts2+hibernate模仿分页效果

    ### Struts2+Hibernate 实现分页效果详解 在 Web 开发中,为了提升用户体验、减少服务器负担,分页功能的应用十分广泛。本篇将基于一个具体的案例——使用 Struts2 和 Hibernate 模块实现分页功能,进行深入剖析。 ...

Global site tag (gtag.js) - Google Analytics