SpringSide开发实战(七):在项目中整合FCKeditor

Web 2.0时代时代的Web项目,是无论如何也少不了一个在线编辑器的,因此在我们的项 目中整合一个Web编辑器就显得至关重要。在这里,我依然以前面的xkland项目为例,来探 讨在项目中整合FCKeditor的方方面面。

一、关于用户发表文章的功能设计

用户发表文章的功能,大家见过不少,也用过不少,最简单的,莫过于提供一个文本框 ,数据提交后直接写入数据库了事,稍复杂一点的最少也要提供一个输入标题和选择分类的 功能。当然,我们也可以把我们的功能设计得更有特色。在这个示例项目中,我假设开发的 是一个以图文为中心的网络社区,我们每一篇文章都需要用户在它上传的图片中选择一个作 为主题图片,那么,在网站首页的文章列表上,大家看到的将不仅仅只是一个文字的标题, 还有主题图片的缩略图。

先来看看数据表的结构,创建数据表的SQL语句如下:

CREATE  TABLE `topics` (
  `id` int ( 11 ) NOT  NULL auto_increment,
  `catalogid` int ( 11 ) NOT  NULL ,
  `subject` varchar ( 60 ) default  NULL ,
  `content` text ,
  `pictures` varchar ( 2000 ) NOT  NULL ,
  `mainpicture` varchar ( 40 ) NOT  NULL ,
  `userid` int ( 11 ) NOT  NULL ,
  `time` timestamp  NOT  NULL  default  CURRENT_TIMESTAMP  on  update   CURRENT_TIMESTAMP ,
  `lastedittime` timestamp  NOT  NULL  default  ' 2007-01-01 00:00:00 ' ,
  `lastreplytime` timestamp  NOT  NULL  default  ' 2007-01-01 00:00:00 ' ,
  `visitcount` int ( 11 ) NOT  NULL ,
  PRIMARY  KEY  (`id`),
  KEY `subject` (`subject`),
  KEY `userid` (`userid`),
  KEY `time` (`time`),
  KEY `lastreplytime` (`lastreplytime`)
) ENGINE = InnoDB DEFAULT CHARSET = utf8 |

其中,catalogid字段为文章分类,subject字段为标题,content字段为正文。比较特殊 的是pictures字段和mainpicture字段,pictures保存文章中包含的所有图片的url,以“| ”符号分割,如“001.jpg|002.jpg|003.jpg...”,而mainpicture就是主题图片的url了。 有人会问:“保存主题图片的url就够了,为什么还要保存所有的图片url呢?”,这样设计 主要是为了考虑到用户有时候会修改文章,重新选择别的图片作为主题图片,这个时候 pictures字段就派上用场了,因为它可以向用户提供候选项。

这样的功能设计应该提供如下的用户界面,该页面文件名为EditPosts.jsp:

在这里,我们还没有Web编辑器可用,暂时用一个文本区域代替。

时间: 2024-08-31 01:11:51

SpringSide开发实战(七):在项目中整合FCKeditor的相关文章

SpringSide开发实战(八):不是结局的结局,谈谈程序员的境界

SpringSide是个好东西,对我来说,它的好主要体现在两个方面:一.它提供了一个敏 捷开发的框架,省去了我自己整合Spring.Hibernate.Struts.ActiveMQ等等开源组件的 时间,而且还是最佳实践:二.它指导了我的学习目标,在SpringSide中整合的各种组件, 都是在同一类组件中最优秀的,而且要想熟练使用这些组件,都必须对它们进行深入的系统 的学习. 本来以为我会在SpringSide开发实战系列中写更多的文章,但是写到现在,我认为应该 要写结局了,为什么呢?因为在使

SpringSide开发实战(五):兵马未动,粮草先行

本篇讨论的问题是对项目中遇到的难题进行技术穿刺. 做过项目的人都知道,在构思完一个项目的功能之后,紧接着的事情就是考虑这些构思 的功能如何实现,对于自己不熟悉的领域,要进行技术穿刺.我的穿刺方法为先查找有无比 较好的开源组件可用,如果没有,就查找相关的文档,自己编写和测试代码. 在这一篇,我主要解决三个问题. 1.解决字符串加密的问题,在前面一篇中,我们设计用户模块的时候,准备将用户的密 码字段以MD5加密的方式保存,因此,这里需要写一个对字符串加密生成MD5字符串的方法: 2.解决生成图像缩略

SpringSide开发实战(一):使用Eclipse让SpringSide跑起来

自2000年Struts框架发布,到2001年底Hibernate的诞生,再到2004年Spring的流行, Java社区的开源软件哲学是:"只做好一件事情,只做最擅长的事情,其他事情留给别人去 做."但是到了2005年,Java开源出现了框架整合的大趋势,整个Java开源社区雨后春笋般 出现了一批又一批的full-stack框架,比较著名的有RIFE,Grails,JBoss Seam,Trails和 Able等等.SpringSide也是这样一个整合框架,常逛BlogJava的人肯

SpringSide开发实战(三):漫谈CSS和页面布局

这篇随笔不是专门针对SpringSide,却只得每个程序员一看. 还记得胡戈调侃<无极>中的王城布局为"圈圈套圈圈"娱乐城,也还记得我刚开始做 Web开发时"表格套表格"的页面布局.在大部分的程序员中,可能还在使用表格进行布局 ,使用表格进行布局的巨大缺点就是当页面进行一点点修改的时候,都有可能完全打乱页面 的外观,而且非常不利于和美工的配合.当然了,很多美工人员也在使用表格进行布局,他 们在图形软件中设计好页面,然后使用切片工具一切就完事,却给我们需要

SpringSide开发实战(二):修改数据库、字符编码和快速部署应用

SpringSide默认的数据库是hsql,但是大部分开发人员熟悉的数据库是MySql,因此在实 际开发过程中,遇到的第一件事往往是修改数据库.在SpringSide中修改数据库很简单,还 是以前一篇中创建的xkland项目为例,首先修改src\main\resources\config文件夹下的 jdbc.properties文件,注释掉1.2行,解注释7.8行,并修改10.11行的用户名和密码, 如下: 1#jdbc.driverClassName=org.hsqldb.jdbcDriver

SpringSide开发实战(四):打通数据持久层的任督二脉

在这里,将创建一个简化的用户管理模块,演示怎样利用SpringSide提供的数据持久层 的功能,包括怎样通过Hibernate的Annotation来配置多对一映射和多对多映射. 大家都知道,现在最流行用户管理模型的是RBAC,也就是基于角色的访问控制模型,在 这种模型中,可以划分多个层次,如用户-角色-资源.用户-角色-权限-资源.用户-角色- 角色组-权限-资源.用户-角色-角色组-权限-操作-资源等等,因此,想要创建一个完善而 复杂的用户管理模块,是相当具有难度的.在Web2.0时代,有一

微信公众帐号开发教程(七) 文本消息中换行符的使用

本篇文章主要介绍在文本消息中使用换行符的好处以及如何使用换行符. 最近一个月虽然抽不出时 间写博客,但却一直在认真答复大家提出的问题.收到这么多的回复.关注和答谢,还是蛮有成就感的,让我 觉得做这件事越来越有意义,更加坚定了我继续写下去的决心.经过前面六篇文章的讲解,相信在看文章的你 ,已经掌握了微信公众帐号的基础开发知识(基于Java),如框架搭建.API封装.消息接收与回复等:接下 来的系列文章将专注于讲解公众帐号开发中的技巧及实用功能的开发(如天气查询.周边搜索.人机对话等) . 使用换行

SpringSide开发实战(六):AJAX,在地狱中漫步

说到AJAX,每个人都不会陌生,毕竟这两年它太流行了.然而,真正哪些地方需要AJAX ,并不是每个人都能够把握得很好.使用AJAX可以开发豪华的基于浏览器的富客户端界面, 然而其开发量的庞大和调试的艰难,让每一个程序员如同生活在地狱中一般. 我认为,真正需要AJAX的不外乎两种情况: 1.用户不希望他关注的信息离开他的视线的时候.比如填写某些表单的时候,有时候辛 辛苦苦填写的东西,一点提交按钮,全没了,如果某个字段验证失败,则所有的东西都要从 头再填,着实让人郁闷.虽然设计较好的网站可以保留用户

CUDA开发实战:C#代码中使用DLL

使用.NET平台调用函数是一件容易的事情,但有一件事需要注意 访问的可变性,因为我们不能在它们上面使用DllImport属性,我们必须找到变量的地址,然后排列数据. using System.Runtime.InteropServices; #region hard way to import variable from unmanaged dll [DllImport(" kernel32.dll", SetLastError = true, CharSet = CharSet.An