《校园半月谈》项目总结
CAnca
《校园半月谈》项目运用了Struts、Hibernate、Ajax框架。Struts是一个实现MVC模式2的框架。本项目使用Struts作为系统的核心架构。为了实现页面完全无刷新,使用了能与Struts完美结合的Ajax框架Ajaxanywhere。数据库层使用应用广泛的Hibernate框架。
以下对各框架作简单的解释。
Struts:Struts是一个基于Sun J2EE平台的MVC框架,主要是采用Servlet和JSP技术来实现的。由于Struts能充分满足应用开发的需求,简单易用,敏捷迅速,在过去的一年中颇受关注。Struts把Servlet、JSP、自定义标签和信息资源(message resources)整合到一个统一的框架中,开发人员利用其进行开发时不用再自己编码实现全套MVC模式,极大的节省了时间,所以说Struts是一个非常不错的应用框架。
Hibernate:Hibernate是一个免费的开源Java包,它使得与关系数据库打交道变得十分轻松,就像您的数据库中包含每天使用的普通Java对象一样,同时不必考虑如何把它们从神秘的数据库表中取出(或放回到数据库表中)。它解放了您,使您可以专注于应用程序的对象和功能,而不必担心如何保存它们或稍后如何找到它们。
Ajaxanywhere:AjaxAnywhere, 是能够把任何一套现存的JSP组件转换成AJAX感知组件而不需要复杂的JavaScript编码.它利用标签把Web页面简单地划分成几个区域,然后使用AjaxAnywhere来刷新那些需要被更新地区域. AjaxAnywhere 并不需要改变基本得代码. 相对来说, 比较容易实现. 并且并没有把你的程序和AJAX绑定到一起. 即使是一些不支持AJAX的浏览器,也还可以正常地工作。
项目的开发周期比预计长了,预计2周完成,结果花了4周才完成。造成项目不能预期完成的原因有:
(1) 前台界面未能预期完成。使AJAX框架无法结合界面开发。
(2) 对SVN同步开发工具不熟。使项目迟迟未能同步开发。
(3) 对在线编辑器FCKeditor的使用问题和中文支持问题花了部分时间。
(4) 机子运行速度慢,有时死机。
(5) 对各框架的熟练程度不够高。
(6) 增加了Word文档上传方式代替在线编辑方式,,并与前台完美结合。
(7) 增加后台文件管理。
在项目中,我们遇到了很多棘手的问题:
(1) FCKeditor新建目录,中文目录变乱码。
(2) HTML内容提取,HTML标签乱套。
(3) Word文件上传如何转HTML
(4) 如何获取FCKeditor的文件上传路径。
(5) Struts的分页优化。
……
问题不单单只有上面五条。上面五条只是本人印象最深刻而已。为了解决上面的问题,我搜索了相关的信息。 问题(1)FCKeditor新建目录,中文变乱码。我在搜索引擎里逛了半天都没有找到相关的信息。最后,我只好自己去解决这个问题。首先,我要找出乱码出现的地方。是出现在前台还是出现在后台的。由frmcreatefolder.html源码开始入手。最后经过分析源码的运行流程发现在提交到Servlet时文件名已经是乱码的了。接着我修改HTML的meta元素,将“”改成“”。经过测试,发现刚才的乱码已经变成正常的中文了。但Servlet接收后却变成乱码。最后,我不得不修改JAR包了。由于FCKeditor是个开源项目,提供了源码。于是,我就查看ConnectorServlet.java文件。修改了相关的内容编译好,最后覆盖原版的ConnectorServlet.class。乱码解决了。 问题(2)HTML内容提取,HTML标签乱套。这个问题,可谓是最棘手的了。网上相关的信息少之又少。开始,我一直使用这个解决方案的:把HTML内容中的所有HTML标签全部过滤掉,然后提取部分文本。这个方法效果还可以。但如果文章全部都是图片 问题(3)Word文件上传如何转HTML。呵呵,这个问题,在网上到处都是。我只需要将他们的代码整理一下就可以引用到自己的项目中去了。不过,如何在前台漂亮的显示。还是要花点心思的。 问题(4)如何获取FCKeditor的文件上传路径。由于,多次修改FCKeditor.jar包,所以遇到这个问题我想也不想就修改了该包的SimpleUploaderServlet.java文件了。在相应的位置添加application.setAttribute(“uploadpath”,uploadpath);呵呵,结果成功。文件上传管理可以弄了。 问题(5)Struts的分页优化。经过在网上阅读相关的Struts分页技术。发觉,其效率不高。所以特制了一个分页类。 以上的五个问题,就这样解决了。其实还有些前台问题:JavaScript的跨浏览器问题。不过这个问题,不用多久就解决了。 这个项目给我的体会很多。在这个项目中,我学到了很多东西。JavaScript、Ajax、Struts等知识都有所提高。有一样东西,是不能在书本上学到的。那就是经验。在项目中,遇到的问题,是在书本上体会不到的。项目完成后我发觉自己看对了一本书《Dom Scripting》。Javascript对Dom的跨浏览器控制方法。在这本书都可以学到。 在项目开发中,错误的调试是多么的重要。遇到错误,应立即作断点,观察其运行时各变量值。在HTML文章内容提取时,我就是多了一个if语句而未能得到最终结果。那段代码是这样的: if (node instanceof Text) if (node instanceof Text) { ……… } 就是多了一个if (node instanceof Text)弄了我一个晚上。呵呵,这或许是我的粗心大意吧!!但,如果我弄了断点,不用一分钟,我就能检查出错误的地方了。由此可知,断点的使用是何其重要啊。 要使JavaScript能够跨浏览器,其实并不难。只要你的javascript的代码符合W3C规范,那么大都会跨浏览器的了。 如何快速使用开源项目?其实开源项目是很快可以上手的。只要到官方网站上走走,看看他们给的例子。读一下代码,看一下API理解一下就可以了。 项目结束了,但学习还未结束,还有很多新知识,还未上手呢!为了成为一名出色的网站设计师,我会不断努力! CAnca标签。那么,最后显示的效果岂不是空白?这样就不够完美了。最后,我决定要提取HTML代码,不过滤了。利用递归的方法将未闭合标签添加上,将不完整的标记补完整。但这个工作没有几千行代码是很难实现的。如果HTML标记是不规范的,最后实现的效果还是那么糟糕。想着想,正当我要放弃的时候。却在某某的blog里看到这么一篇文章:《从HTML中攫取你所需的信息》里面介绍了一个开源项目的使用:Html parser。最后经过研究html parser项目,发现该项目完全可以实现我想要的效果。HTML文章摘要功能终于可以实现了。