整个应用程序的目录结构如下:
crystalblog/
+ doc/ (存放API文档)
+ report/ (存放JUnit测试结果)
+ src/ (存放java源程序)
+ web/ (web目录)
| + manage/ (存放blog管理页)
| + skin/ (存放blog界面页)
| + upload/ (存放用户上传的图片)
| + WEB-INF/
| + classes/ (存放编译的class文件)
| + lib/ (存放用到的所有jar文件)
| + search/ (存放Lucene的index)
| + c.tld (使用jstl必须的文件)
| + dispatcher-servlet.xml (Spring配置文件)
| + web.xml (标准web配置文件)
+ blog.war (打包的可部署应用)
+ build.xml (ant脚本)
编写Ant?脚本
Ant是一个非常棒的执行批处理任务的工具。使用Ant能使编译、测试、打包、部署和生成文档等一系列任务全自动化,从而大大节省开发时间。
首先我们把用到的所有.jar文件放到/web/WEB-INF/lib中,然后编写compile任务,生成的class文件直接放到web/WEB-INF/classes目录下。如果编译成功,就进行单元测试,单元测试的结果以文本文件存放在report目录中。如果测试通过,下一步便是打包成blog.war文件。接着把应用部署到服务器上,直接将web目录的内容复制到%BEA_HOME%/user_projects/domains/blogdomain/applications/blog/目录下即可。如果要在Tomcat上部署,直接将整个web目录复制到%TOMCAT%/webapps/blog/下。
最后,如果需要,可以用javadoc生成api文档。
系统设计
Crystal Blog共分成三层结构:后台数据持久层,采用DAO模式;中间逻辑层,采用Facade模式;前端Web层,采用MVC结构,使用JSP作为视图。以下是Rational Rose的UML图:
设计Domain对象
设计Domain对象
Domain层是抽象出的实体。根据我们要实现的功能,设计以下实体,它们都是普通的Java Bean:
Account:封装一个用户,包括用户ID,用户名,口令,用户设置等等。
Category:封装一个分类,一共有3种Category,分别用来管理Article,Image和Link,一个Account对应多个Category。
Article:封装一篇文章,包括Title,Summary,Content等等,一个Category对应多个Article。
Feedback:封装一个回复,包括Title,Username,Url和Content,一个Article对应多个Feedback。
Image:封装一个图片,Image只包含图片信息(ImageId,Type),具体的图片是以用户上传到服务器的文件的形式存储的。一个Category对应多个Image。
Link:封装一个链接,和Category是多对一的关系。有Title,Url,Rss等属性。
Message:封装一个消息,使其他用户在不知道Email地址的情况下能够通过系统发送邮件给某个用户。
文章来源于领测软件测试网 https://www.ltesting.net/