首先,要说明的是:文章是用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。
分享到:
相关推荐
sqlserver 2005 + Struts+javaBean 实现的一个简单的分页功能。我就不附带数据库了,自己按JAVAbean建立一个表吧,很简单
javabean分页程序,适合初学jsp的朋友 <br>1、数据库表中有GoodsType表 2、新建TypeList.jsp页面 3、新建GoodsType的实体类 4、新建GoodsTypeDAO的操作类 5、在BusinessDelegate类中注册相应的方法...
第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章 ...
第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章 ...
第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章 ...
第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页面数据分页通用组件,可用于所有struts或jsp+javabean的页面分页功能!在实际项目中完全可以适用!内含源码以及详细注释!!好东西,给大家一起学习分享!
jsp+servlet+javaBean构成的MVC 员工、部门的增删改查、分页等 ssh 开发环境 window7 eclipse: Mars.2 Release (4.5.2)(插件:springsource-tool,hibernatetools-Update) Mysql 5.5.1 Tocat7.0 框架版本 Spring...
3.4 实现spring、struts2.x和hibernate框架集成 3.5 小结 第2篇 典型模块开发 第4章 在线文本编辑器(fckeditor) 4.1 分析fckeditor在线文本编辑器 4.2 fckeditor在线文本编辑器初级应用 4.3 ...
[其他类别]jsp+servlet+javaBean实现MVC_jspmvc [其他类别]Jsp考试系统_jspks [其他类别]JSP网页HTML编辑器 v1.0 beat_jsphtmleditor [其他类别]JSP无限级分类目录树_sorttree [其他类别]MeyboMail Web(Java)开源...
实例41 用jspSmartUpload组件来实现文件下载 实例42 分页读取文件内容 第7章 在JSP中使用数据库 实例43 顺序查询数据库表中的数据 实例44 移动查询 实例45 参数查询 实例46 模糊查询 实例47 综合查询 实例...
实例41 用jspSmartUpload组件来实现文件下载 实例42 分页读取文件内容 第7章 在JSP中使用数据库 实例43 顺序查询数据库表中的数据 实例44 移动查询 实例45 参数查询 实例46 模糊查询 实例47 综合查询 实例...
实例48 追加记录 实例49 删除记录 实例50 更新记录 实例51 分页显示记录 实例52 调用存储过程 实例53 事务处理 实例54 利用连接池访问数据库 JSP中JavaBean的应用 实例55 在JSP...
实例41 用jspSmartUpload组件来实现文件下载 实例42 分页读取文件内容 第7章 在JSP中使用数据库 实例43 顺序查询数据库表中的数据 实例44 移动查询 实例45 参数查询 实例46 模糊查询 实例47 综合查询 实例...
开发环境 window7 eclipse: Mars.2 Release (4.5.2)(插件:springsource-tool,hibernatetools-Update) Mysql 5.5.1 Tocat7.0 框架版本 ...jsp+servlet+javaBean构成的MVC 员工、部门的增删改查、分页等
\ch18\* 第18章 JSP页面分页技术实现所有例程代码 \ch19\* 第19章 上传下载文件模块所有例程代码 \ch20\* 第20章 使用JSP发送邮件所有例程代码 \ch21\* 第21章 异常及日志模块所有例程代码 \ch22\* 第22章 保护...
jsp+servlet+javaBean构成的MVC 员工、部门的增删改查、分页等 ssh 开发环境 window7 eclipse: Mars.2 Release (4.5.2)(插件:springsource-tool,hibernatetools-Update) Mysql 5.5.1 Tocat7.0 框架版本 Spring...
jsp+servlet+javaBean构成的MVC 员工、部门的增删改查、分页等 ssh 开发环境 window7 eclipse: Mars.2 Release (4.5.2)(插件:springsource-tool,hibernatetools-Update) Mysql 5.5.1 Tocat7.0 框架版本 Spring...
jsp+servlet+javaBean构成的MVC 员工、部门的增删改查、分页等 ssh 开发环境 window7 eclipse: Mars.2 Release (4.5.2)(插件:springsource-tool,hibernatetools-Update) Mysql 5.5.1 Tocat7.0 框架版本 Spring...
jsp+servlet+javaBean构成的MVC 员工、部门的增删改查、分页等 ssh 开发环境 window7 eclipse: Mars.2 Release (4.5.2)(插件:springsource-tool,hibernatetools-Update) Mysql 5.5.1 Tocat7.0 框架版本 Spring...