BBS系统搭建全过程

特别说明

l 所有的项目代码都托管到github上,链接如下:

https://github.com/allenhsu6/jsplearn.git

运行环境

我的服务器端和客户端都在同一台电脑上

电脑型号:macpro2017款

集成开发环境:IntelliJ IDEA(这里并没有使用eclipse)

服务器软件:tomcat9.05

客户端浏览器:chrome

这个系统的框架:

前端:

l 主要用到HTML,其中重中之重是form表单提交

l 用到CCS布局(这部分我是从网上找了一个好看的模板直接导入的,时间有限,有空的时候再去学一遍)

l 在实现分页展示功能的时候用到一点点JavaScript技术

后端:

  1. 数据库部分:

使用的数据库:mysql

数据库与jsp连接手段:JDBC编程

  1. 处理业务逻辑部分:

都是jsp技术(下个版本将做出改进,加入javabean,将数据库的常用操作封装)

功能分析及其具体设计

图1·BBS系统中的功能结构

具体模块设计

数据库设计

在数据库设计汇中,叶子节点设计,以及id号,pid号设计,为后续各种实现奠定基础。

页面跳转

页面跳转过程,所有的参数传递都是通过链接动态传输

功能0:树状展示所有主题帖

采用递归方法实现

功能2回复主题帖

关键点:在回复之后要将该贴设置为叶子结点

功能3:后台登录

实现该功能主要目的是:只有后台工作人员才能删帖,如果不登录的话,看不到帖子后面的删除功能。

实现途径:在ShowArticleTree.jsp中判断login是否为真,是的话,在html中显示;否者看不到删除二字,也就无法通过点击删除链接实现删除功能。

特别注意:无法通过点击删除链接实现删除功能,但是仍然有漏洞,因为可以通过URL****直接访问delete.jsp****页面并传入参数实现指定删除

所以:我们需要在删帖功能中,同样做是否登录判断

功能4:删帖

问题一:如何解决不是叶子节点的帖子?

answer:使用递归。具体实现:有子节点就删除子节点,然后退出while循环后删除自己 ---

问题二:如何解决当前删除的叶子节点的父节点是否要更新为叶子节点?

answer:首先要了解,父节点在删除当前节点后,是否仍有其他子节点,所以需要拿到pid;然后统计所有帖子中父节点参数为pid的节点,如果该数为0,那么就可以将pid对应的叶子节点标记为叶子节点。

功能5:post新帖

在创建新主题帖的时候,需要传递新的rootid,采用的方法是将其与自动递增的id值保持一致。

处理方法:在Statement函数处理中使用带参数:RETURN_GENERATED_KEYS的函数获取当前id值

功能6:平板展示主题帖

处理方法:将所有为主题帖的pid都设置为0,然后直接遍历显示所有的pid为0的数据。

功能7:

采用了两种方法实现分页技术

中文乱码问题

处理方法:

在读取request前,通过函数request.setCharacterEncoding(“UTF-8”)解决

总结

通过本次大作业,算是半只脚迈进javaweb开发的大门,未来的路还很长,革命尚未成功。

在整个实现的过程中,看着从无到有,从一堆代码到实现某项功能,有一种莫大的成就感。感受到敲代码的快乐。

你可能感兴趣的:(BBS系统搭建全过程)