任务六 实现富文本新闻的发布
学习目标
了解富文本的本质。
会使用第三方组件FCKeditor2.6实现富文本的发布与读取。
使用富文本实现新闻内容的上传。
任务描述
任务四实现的新闻发布功能,对新闻内容的处理过于简单。如图1-6-1所示是网络上常见的新闻格式,其内容中有段落的区分、不同功能的文字需要不同的字体,图片与文字设定了一定的对齐方式,有的新闻中还需要设置一些超级链接文字。
图1-6-1 新闻格式范例
如果用简单的文本域控件来编写新闻内容,要考虑到新闻的格式问题,是比较困难的。所以一般的新闻编辑都采用富文本编辑器来编写要发表的新闻内容。本次任务要求使用FCKeditor2.6实现富文本信息的发布,如图1-6-2所示。
图1-6-2 发布富文本新闻界面
任务分析与相关知识
1.富文本编辑器简介
富文本编辑器(Rich Text Editor,RTE)提供类似于Microsoft Word的编辑功能,用户利用所见即所得的编辑环境设置好文本的各种格式,直接提交,提交后的文档内容实际上就是带格式的文档。这些文档存储在数据库中,需要的时候取出来交给浏览器,浏览器可以解析文档中的HTML标签,将文档恢复为提交时候的原文格式。
不同的富文本编辑器可能因为标准的不同在不同的浏览器有不同的表现,相对而言,IE浏览器对它的支持要更完善一些。虽然没有一个统一的标准,但对于最基本的功能,各浏览器提供的API基本一致,从而使编写一个跨浏览器的富文本编辑器成为可能。目前,JSP网站中使用最多的富文本编辑器之一就是FCKeditor。
FCKeditor是一个专门使用在网页上属于开放源代码的所见即所得的文字编辑器,它不需要太复杂的安装步骤即可使用。它可以和PHP、JavaScript、ASP、ASP.NET、ColdFusion、Java以及ABAP等不同的编程语言相结合。“FCKeditor”名称中的“FCK”是这个编辑器作者的名字FredericoCaldeiraKnabben的缩写。FCKeditor相容于绝大部分的网页浏览器,如InternetExplorer5.5+(Windows)、MozillaFirefox1.0+、Mozilla1.3+和Netscape7+。在未来的版本也将会加入对Opera的支持。
2.FCKeditor2.6forJSP用法演示
1)到网站上利用搜索引擎下载FCKeditor-java-2.3.jar和FCKeditor2.6,其中FCKeditor-java-2.3.jar主要提供基本应用所需要的API,FCKeditor2.6为JSP应用提供必要的环境配置。如果读者下载到更新的版本,可以参考相关的帮助文档学习应用技巧。
2)打开Hello项目,在项目的根目录下(也就是WebRoot下)新建文件夹FCKeditor,然后将解压后的FCKeditor2.6下的fckeditor文件夹里面的editor、fckconfig.js、fckeditor.js、fckstyles.xml、fcktemplates.xml复制到FCKeditor目录下,如图1-6-3所示。
图1-6-3 FCKeditor内容截图
3)将解压后的FCKeditor-2.3文件夹中Web/WEB-INF/lib下的包复制到Hello项目对应web路径中的lib下,如图1-6-4所示。
4)将FCKeditor-2.3解压缩以后,将其目录下的标签库文件FCKeditor.tld复制到Hello项目的WebRoot\WEB-INF下,如图1-6-5所示。
图1-6-4 库文件配置截图
图1-6-5 标签库文件配置截图
5)修改Hello项目的配置文件:WEB-INF下的web.xml。web.xml文件如同HTML文件一样都是标签组成的,而且都是成对的标签,在现有的web.xml中读者会发现<servlet>…</servlet>标签,它们是用来给Servlet配置别名的,还有<servlet-mapping>…</servlet-mapping>标签,它们是用来给Servlet配置路径的,实现的效果与之前用Servlet创建向导配置的别名和路径是一样的。现在在Hello的web.xml中最后一个<servlet>…</servlet>标签之后添加如下标签内容。
代码1-6-1 web.xml添加的内容
6)修改第2步创建的FCKeditor文件夹下的fckeditor.js,修改第50行的FCKeditor.BasePath参数,修改之后如下所示。
7)修改第2步创建的FCKeditor文件夹下的fckconfig.js,修改FCKConfig.DefaultLanguage、FCKConfig.LinkBrowserURL、FCKConfig.ImageBrowserURL和FCKConfig.FlashBrowserURL参数的配置,修改之后的新值如下所示。
代码1-6-2 fckconfig.js相关参数修改之后
8)在Hello项目中添加一个HTML文件test1-6-3.html,用来测试FCKeditor实现的富文本编辑器的实际效果,其代码如下所示。
代码1-6-3 test1-6-3.html
9)在Hello项目中添加一个Servlet文件FckeditorDo,该Servlet的别名是fdo(与代码1-6-3中的第10行的action属性相呼应),路径映射是/fdo,该文件被放置在servlets包中,代码如下所示。
代码1-6-4 FckeditorDo.java
运行Hello网站,在浏览器中输入“http://magy:8080/Hello/test1-6-3.html”,出现如图1-6-6所示的富文本编辑页面,编写一定的内容后,单击“提交”按钮,出现如图1-6-7所示的新闻预览效果。测试中上传的图片被保存到了Web服务器中Hello对应的根目录下的UserFiles\Image文件夹中。
图1-6-6 test1-6-3.html页面效果图
图1-6-7 富文本提交之后网页效果图
任务实施
1.任务单
本次任务的任务清单见表1-6-1。
表1-6-1 任务六的任务清单
2.实施步骤
步骤一 配置富文本编辑器的环境,参考任务分析中的演示,为GreenBar项目配置富文本的环境,完成如下几个任务:
1)将Hello项目根目录WebRoot下的FCKeditor文件夹复制到GreenBar项目的根目录下。
2)将Hello项目WebRoot/WEB-INF/lib下的包复制到GreenBar项目对应Web路径中的lib下。
3)将Hello项目WebRoot/WEB-INF下的标签库文件FCKeditor.tld复制到GreenBar项目的WebRoot\WEB-INF下。
4)在GreenBar项目的WEB-INF/web.xml中搜索最后一组<servlet>…</servlet>标签,在该标签之后,添加代码1-6-1的全部内容。
步骤二 在GreenBar项目中添加一个HTML文件bk_news_upload3.html,实现富文本新闻表单的填写,其代码如下所示。
代码1-6-5 bk_news_upload3.html
【操作提示】
请模仿任务分析中的第2点,完成第115行、117行的编码任务
注意 该网页文件中要引用的样式表bk.css在任务四中创建,代码参考“代码1-4-4”。
步骤三 在GreenBar项目中添加一个Servlet文件NewsUploadServlet3,该Servlet的别名是newsupload3,路径映射是/newsupload3,该文件被放置在servlets包中,代码如下所示。
代码1-6-6 NewsUploadServlet3.java
【操作提示】
回顾任务二所学内容,完成本次编码任务。
运行GreenBar网站,在浏览器中输入“http://magy:8080/GreenBar/bk_news_upload3.html”,测试富文本上传功能。
自我评价
思考与练习
一、简答题
1.如下代码实现什么功能?
2.前面讲过,富文本中的图片会默认存储在网站根目录下的UserFiles\Image文件夹中,请问这个路径可以改成其他路径吗?在什么地方改能实现路径的切换呢?
3.本次任务中图片的上传和任务五中的图片上传有什么异同?
4.富文本“富”在哪里?
二、操作题
修改任务四思考与练习中完成的产品信息上传页面,设置“产品描述”内容为富文本信息,效果如图1-6-8所示。
图1-6-8 发布产品效果图