• OA项目中的论坛模块设计与实现


    1、论坛是什么?论坛与贴吧有什么区别?

     简单的说论坛和贴吧都是发表言论和讨论的一个平台。

    贴吧是论坛的一个部分。

    2、关于论坛模块的需求分析?

    首先我们看看论坛的几个设计页面:

    这个主要是论坛的版块设计:基本功能是增删改查和上下移动功能的实现。

    当我们设计实体的时候,很容易设计id,name,description字段,上下移动这个属于隐含字段,通过分析上下移动的功能在实体中设计position位置属性。

    后面相信介绍下实体该如何设计。

    第二块:

    通过上面几个页面我们分析得到:

    (1)论坛管理模块:主要负责版块的CRUD管理和上下移动

    (2)论坛模块:首先显示版块列表,每个版块有多少主题的数量,有多少文章(主题+回复)数量,最后一个发表帖子的是哪个。(显示版块列表)

                         其次:当点击某个版块时,显示这个对应的这个版块有多少个主题,主题的作者、回复和最后回复(显示每个版块对应的主题列表)

            当点击发新帖时候,我们会创建一个新的帖子。(创建新帖子)

            当点击某个主题的时候,我们会看到针对某个主题的回复帖子。(显示每个主题的回复列表)

            当点击回帖的时候,可以针对这个主题进行回复。(回帖创建)

    (3)管理员可以针对不符合要求的主题进行修改删除。

    概括:

    整个论坛管理按照操作的主体可以分为:管理员操作的和用户操作的。

    其实根据上面的功能分析没有多少,但个人感觉论坛管理模块的难点在于:如何设计实体中的特殊字段。

    (1)上下移动功能字段positon

    (2)主题数量如何计算:主题的数量是发布的帖子的数量

     (3)文章数量如何计算:文章的数量是主题的数量+回复的数量

    (4)最后发表的主题:最后发表的主题是最新发表的帖子

    (5)回复的数量:回复的数量是针对每个主题的回复的帖子数量

    (6)最后发表的回复:最后发表的回复

    (7)最后更新时间:这个更新时间可以分为:发表新帖的时间或者对帖子的新回复的时间

    (8)帖子的排序问题:置顶帖(在最上面)、精华帖和普通帖按照状态的更新时间来排序:如何将置顶帖分为一类,精华帖和普通帖为一类。这里使用了CASE WHEN THEN ELSE END 这个判断语句。

    (9)楼层的问题:1楼为沙发,2楼为板凳,3楼为地板。

    利用status可以直接实现楼层数量增加,发表一个新回复就增加一楼。

     <s:iterator value="#forumList" status="status">

    这里面有status属性:这里面封装了很多东西:

    status里面有first和last,还有count计数,利用这个计数可以实现楼层的增加。

    3、论坛模块的实体设计

    关于实体的设计其实是在需求分析的时候进行的,所以说一个软件的需求分析是很重要的。

    大题分为几步吧:

    (1)确定有多少个实体(可以进行CRUD的就可以是一个实体)

    (2)确定实体的属性:

    这个又细分为几部分:

    a:   id主键不能忘;

    b: jsp页面(尤其是添加信息页面是相对比较全面的,但是也有很多隐含信息);

    c:  实体间的关系是怎么样的:一对多,多对多,还是多对一,还是一对一。(至于单向关联和双向关联这个不用太纠结。双向关联是在配置中两边都写的,单向关联是只写一边的配置。任何时候都可以是双向关联,如果不确定就使用双向关联,如果确定一方用不到就使用单向关联)。另外一对一是多对一的一种特殊情形,只要加上unique这个属性即可。

    这些关系一般在实体的属性中也要写,多的话用set集合,一的话直接使用该类即可。

    d: 还有一部分我们称之为特殊字段:这类字段很不明显,有时候在进行编写代码的时候才会发现,这个需要长时间的积累分析。

    4、论坛中:用户浏览、发帖、回帖功能设计

    其实代码写多了就无非是增删改查的变形记,只不过在业务上面如何进行条件查询,如何在添加的时候考虑到额外的一些内容。这些还是需求分析的强大之处。

    另外SQL的查询也很关键,有时候为逻辑省去很多麻烦。所以要重视查询。

    5、FCKeditor的使用:

    这个跟富文本编辑器的使用是一样的:

    (1)首先在页面导入该编辑器的js文件,并且该编辑器使用的文件放到目录下。

    (2)找到该编辑器的帮助文档;将一段js代码拷贝到页面

    (3)注意:这里的路径一定要配置正确。

  • 相关阅读:
    java.io.IOException: Premature EOF
    springmvc集成shiro例子
    eclipse调试(debug)的时候,出现Source not found,Edit Source Lookup Path,一闪而过
    【译】Core Java Questions and Answers【1-33】
    Spring bean依赖注入、bean的装配及相关注解
    【译】Spring 4 基于TaskScheduler实现定时任务(注解)
    【译】Spring 4 + Hibernate 4 + Mysql + Maven集成例子(注解 + XML)
    【译】Spring 4 @Profile注解示例
    【译】Spring 4 @PropertySource和@Value注解示例
    【译】Spring 4 自动装配、自动检测、组件扫描示例
  • 原文地址:https://www.cnblogs.com/fengli9998/p/6592839.html
Copyright © 2020-2023  润新知