博客网站的分析与设计

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

博客网站系统的分析与设计---基于Struts2+Hibernate框架一、需求描述有三种用户:1.普通用户(游客)能够使用网站查看博文和相册。浏览方式有三种,浏览所有,按类别浏览,按条件浏览。2.注册用户(会员)可以启用自己的博客。可以登录,密码忘记可以找回。登录用户可以对自己的博客进行管理,可以管理博文分类,博文、相册管理以及进入他人博客发表评论。3.管理员用户,可以对用户管理,可以浏览,删除用户。二、用例分析游客登录注册浏览博文查看博文浏览相册浏览所有博文按条件浏览按类别浏览查看博文评论游客用例图会员游客的所有功能启用博客博文分类管理博文管理相册管理发表评论浏览添加修改删除浏览发表修改删除浏览上传删除会员用例图三、功能设计博客网站的模块划分表模块名子功能描述博客模块激活博客登录用户可以激活博客设置博客对博客标题和Logo设计用户模块用户登录凭验证后用户名、密码登录系统用户注册填写详细资料后成为正式注册用户找回密码通过E-mail找回密码个人设置登录后可修改个人注册资料分类模块浏览分类以列表方式列出所有分类博文分类管理浏览、添加、修改、删除博文分类博文模块浏览所有博文列出所有博文,分页显示按类别浏览博文按类别查询博文,分页显示查询博文按标题进行模糊查询,分页显示查看博文按ID查看博文详细信息,更新浏览次数,分页显示博文管理分页浏览,发表、修改、删除博文评论模块浏览博文评论列出当前博文的所有评论发表评论登录用户对他人博文发表评论博文评论管理在自己的博客中,浏览评论,删除评论相册模块浏览相册以分页的方式浏览博客的照片查看照片查看照片的详细内容相册管理在自己的博客中,分页浏览相片图册,上传、删除图片四、数据库设计数据库名:db六张表:博客db_blog,用户db_user,博文分类db_category,博文db_article,评论db_review,相册db_picture创建数据库的脚本如下:createdatabasedb;usedb;createtabledb_blog(blog_idINTAUTO_INCREMENTPRIMARYKEY,blog_titlevarchar(50)notnull,blog_logovarchar(50)notnull);createtabledb_user(user_idINTAUTO_INCREMENTPRIMARYKEY,blog_idintuniquereferencesdb_blog(blog_id),user_namevarchar(30)notnull,user_pwdvarchar(20)notnull,user_sexvarchar(2)notnull,user_emailvarchar(50)notnull,user_pictureBLOB,user_basicInfotext);createtabledb_category(category_idINTAUTO_INCREMENTPRIMARYKEY,blog_idintnotnullreferencesdb_blog(blog_id),category_titlevarchar(50)notnull);createtabledb_article(article_idINTAUTO_INCREMENTPRIMARYKEY,category_idintnotnullreferencesdb_category(category_id),article_titlevarchar(200)notnull,article_contenttextnotnull,article_datetimetimestampnotnull,article_acessNumintnotnulldefault0,article_reviewNumintnotnulldefault0);createtabledb_review(review_idINTAUTO_INCREMENTPRIMARYKEY,article_idintnotnullreferencesdb_article(article_id),review_contenttextnotnull,review_datetimetimestampnotnull,user_idintnotnullreferencesdb_user(user_id));createtabledb_picture(picture_idINTAUTO_INCREMENTPRIMARYKEY,blog_idintnotnullreferencesdb_blog(blog_id),picture_titlevarchar(50)notnull,picture_profilevarchar(200)notnull,picture_accessNumintnotnulldefault0);五、程序结构设计(文件夹和类包规划)视图层article(博文),blog(博客),category(博文分类),common(公共),css(样式表),images(图像),picture(相册),review(评论),script(脚本),upfiles(上传文件),user(用户),rixin.me.blog.tag(自定义标签包)控制层rixin.me.blog.action(控制类包)业务逻辑层rixin.me.blog.service(业务逻辑实现类包)rixin.me.blog.iservice(业务逻辑接口包)rixin.me.blog.common(一些公共类包)rixin.me.blog.model(数据模型实体类包)数据访问层rixin.me.blog.dao(数据访问层实现类包)rixin.me.blog.idao(数据访问层接口包)数据库MySQL5.5六、数据模型设计1.用户数据模型类User2.博客数据模型类Blog3.博文数据模型类Article4.博文分类数据模型类Category5.评论数据模型类Review6.相册数据模型类Picture(类的定义参见rixin.me.blog.model包)七、数据访问层接口设计1.分页集合接口PListT(定义在rixin.me.blog.common包)2.数据访问层基接口IBaseDaoT,IDextendsSerializable3.用户数据访问接口IUserDao4.博客数据访问接口IBlogDao5.博文分类数据访问接口ICategoryDao6.博文数据访问接口IArticleDao7.评论数据访问接口IReviewDao8.相册数据访问接口IPictureDao详细设计参见rixin.me.blog.idao包八、业务逻辑层接口设计1.自定义用户异常类MyException(定义在rixin.me.blog.common包)2.用户业务逻辑接口IUserService3.博客业务逻辑接口IBlogService4.博文分类业务逻辑接口ICategoryService5.博文业务逻辑接口IArticleService6.评论业务逻辑接口IReviewService7.相册业务逻辑接口IPictureService详细设计参见rixin.me.blog.iservice包九、页面的整体布局1.Div分布效果图2.基本结构网页3.基本CSS样式表在css文件夹下建立all.css样式表。4.优化界面结构在WEB-INF文件夹下建立三个jsp片段文件top.jspf、sidebar.jspf、footer.jspf定义网站的顶部、左侧栏和底部。在此基础上优化index.jsp首页结构。(参见源代码)十、数据层设计1.使用连接池连接数据库打开myblog项目,在META-INF文件夹下建立context.xml文件。文件内容如下:?xmlversion=1.0encoding=UTF-8?Contextpath=/myblogdocBase=myblogreloadable=truecrossContext=trueResourcename=jdbc/dbauth=Containertype=javax.sql.DataSourcemaxActive=100maxIdle=30maxWait=10000username=rootpassword=nicetomeetyoudriverClassName=com.mysql.jdbc.Driverurl=jdbc:mysql://localhost:3306/db//Context这是为项目配置数据源。接下来,把mysql-connector-java-5.1.15-bin.jar这个MySQL数据库的Jdbc驱动包放到WEB-INF\lib目录下。(这个是必须的,发布网站时用)2.设计访问数据库的辅助类MySQLHelper.java,实现数据库的连接功能和释放资源功能。放到rixin.me.blog.common包。技术要点:(1)采用JNDI技术获得DataSource对象。生成DataSource对象的工厂为org.apache.commons.dbcp.BasicDataSourceFactory。(2)使用javax.naming包中的Context接口,调用lookup方法检索数据源对象。(3)通过JNDI查找数据源,本项目的JNDI为java:comp/env/jdbc/db。Tomcat提供的JNDI必须绑定前缀java:comp/env。packagerixin.me.blog.common;importjava.sql.Connection;importjava.sql.ResultSet;importjava.sql.SQLException;importjavax.naming.Context;importjavax.naming.InitialContext;importjavax.sql.DataSource;importjava.sql.PreparedStatement;publicclassMySQLHelper{//建立到数据库的链接publicstaticConnectionconnect(){try{Contextctx=newInitialContext();DataSourceds=(DataSource)ctx.lookup(java:comp/env/jdbc/db);Connectioncon=ds.getConnection();returncon;}catch(Exceptionex){returnnull;}}//关闭结果数据集publicstaticvoidcloseResult(ResultSetrs){try{rs.close();}catch(SQLExceptione){}}//关闭预处理命令集publicstaticvoidclosePreparedStatement(PreparedStatementps){try{ps.close();}catch(SQLExceptione){}}//关闭链接publicstaticvoidcloseConnection(Connectioncon){try{con.close();}catch(SQLExceptione){}}}3.分页工具类设计技术要点:(1)分页工具类命名为PageList,该类实现PList接口,包含两个属性pageBar和pageNumBar,分别用于存放普通分页棒和数字分页棒。(2)setPage()传递分页参数(记录总数,页大小,页号,网址),生成分页棒;getPageBar()和getPageNumBar()分别用于返回普通分页棒和数字分页棒。详细设计参见rixin.me.blog.common包中的PageListT类的实现。4.博客数据访问类设计BlogDao.java技术要点:(1)每个方法都先调用MySQLHelper

1 / 13
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功