资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,1,0,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,1,0,第 16 章,论坛,1,第 16 章 论坛1,本章学习目标:,学会制作一个简单的论坛,熟悉用户信息管理模块和版块管理模块,2,本章学习目标:学会制作一个简单的论坛 2,本章指引,16.1 需求分析,16.2 详细设计,16.3 功能实现,16.4 本章小结,3,本章指引16.1 需求分析3,16.1 需求分析,每个人都接触过论坛,在论坛上可以浏览资料,可以发表主题,更可以回复他人的帖子。本论坛系统有以下的需求。,(1)用户的注册、登录验证。,(2)用户管理。,(3)版块管理。,(4)版块浏览。,(5)发表新主题。,(6)回复已有主题。,4,16.1 需求分析 每个人都接触过论坛,在论坛上,本章指引,16.1 需求分析,16.2 详细设计,16.3 功能实现,16.4 本章小结,5,本章指引16.1 需求分析5,16.2 详细设计,6,本论坛系统主要有用户信息管理模块和版块管理模块,而数据库的表设计为 5 个,具体为 board表、login_log 表、post 表、reply 表和 user 表,如表 16.1表 16.5 所示。E-R 图展示了这 5 个表的关系,如图 16.1 所示。,16.2 详细设计6 本论坛系统主要有用户信息管,16.2 详细设计,7,16.2 详细设计7,16.2 详细设计,8,16.2 详细设计8,16.2 详细设计,9,16.2 详细设计9,16.2 详细设计,10,16.2 详细设计10,16.2 详细设计,11,16.2 详细设计11,本章指引,16.1 需求分析,16.2 详细设计,16.3 功能实现,16.4 本章小结,12,本章指引16.1 需求分析12,16.3 功能实现,13,1项目的配置,新建一个 Web 项目,并为它加上 Maven,相关操作第 3 章都有详细讲述,这里不再赘述。建好项目后,其基本目录如图16.2所示。,16.3 功能实现13 1项目的配置,16.3 功能实现,14,具体配置步骤如下(所有源码请见随书资源第 16 章)。,(1)打开 pom.xml,加入框架依赖。,(2)添加包依赖后需要加入项目的配置文件,先修改 web.xml。,(3)然后需要配置数据库以及项目目录。在 resources 里新建一个文件 easyFramework.properties。,(4)最后添加一个配置文件 config.xml,作为 DAO 层的配置,文件。,至此,整个项目的基本配置就完成了。,16.3 功能实现14具体配置步骤如下(所有源码请见随书资源,16.3 功能实现,15,2功能实现。,首先建好目录,以方便后续的开发,在 src 目录下新建以下文件夹。,(1)dao:持久层。,(2)controller:控制层。,(3)mapper:数据库 xml 映射文件。,(4)service:业务处理层。,(5)bean:数据模型层。,(6)util:工具类。,16.3 功能实现152功能实现。,16.3 功能实现,16,创建好的文件目录如图 16.3 所示。,16.3 功能实现16创建好的文件目录如图 16.3 所示。,16.3 功能实现,17,接下来创建前端代码结构,我们需要在 WEB-INF 中新建一个 resources 和 pages 来的放静态资源图 16.2 项目目录文件和页面,如图 16.4 所示。,16.3 功能实现17接下来创建前端代码结构,我们需要在 W,16.3 功能实现,18,论坛主界面如图 16.5 所示。,16.3 功能实现18论坛主界面如图 16.5 所示。,16.3 功能实现,19,3用户管理,首先完成用户登录界面。登录需要用户输入密码和姓名,后台对前端传回来的信息进行校验,信息无误则允许跳转页面,否则返回登录失败页面,如图 16.6 所示。,16.3 功能实现193用户管理,16.3 功能实现,20,具体实现步骤如下(所有源码请见随书资源第 16 章)。,(1)先编写第一个前端页面,即登录页面 userLogin.jsp。前端界面就这样完成了,接下来编写后台的代码。,(2)既然要登录,首先就要有用户,新建一个实体类 User,其属性只有 userName,password 是登录所需要的,以后其他的业务可能也会需要,这里暂时可以不必理会。,(3)接下来需要写一个 controller 类来接收表单提交的数据,首先在 controller 文件下新建一个UserController 类,然后把这个类加入 controller 注解,最后把返回信息放入 modelview,再返回给前端,以实现跳转。,16.3 功能实现20具体实现步骤如下(所有源码请见随书资,16.3 功能实现,21,(4)通过 controller 接口接收前端传来的数据,此外还需要写一些业务代码,验证登录信息。首先通过 SqlSessionFactory 获取 SqlSession 会话对象,然后通过 UserDao 接口和 mapper 映射文件获取 UserMapper 持久化数据库操作对象,对数据库进行查询,获得结果。,(5)编写对应的 DAO 层的 UserDao 接口。,(6)编写对应的 Mapper 映射文件 UserDao.xml。,16.3 功能实现21(4)通过 controller 接口,16.3 功能实现,22,至此,登录界面制作完成,注册界面界面的制作方法也是类似的,这里不再赘述。注册界面如图 16.7 所示。,16.3 功能实现22至此,登录界面制作完成,注册界面界面的,16.3 功能实现,23,(7)接下来是个人信息功能,先编写前端页面 userInfo.jsp。,(8)然后在 UserController 中补充 listUserInfo 方法以显示个人信息,补充 userUpdateInfoPage 方法以修改个人信息。,(9)随后在 UserService 中加入相关方法:getUserByUserName(根据用户名找用户)、updateUserByUserName(根据用户名更新用户)。,(10)在对应的 DAO 层的 UserDao 接口添加方法:findUserByUserName(通过用户名查找用户)、updateUserByUserName(更新用户信息)。,(11)在对应的 Mapper 映射文件 UserDao.xml 中补充相关内容。,(12)实现用户注销功能,写在 UserController 中。,16.3 功能实现23(7)接下来是个人信息功能,先编写前端,16.3 功能实现,24,16.3 功能实现24,16.3 功能实现,25,4版块管理,版块管理,实现后界面如图 16.8 所示。具实现步骤如下(源码请见随书资源第 16 章)。,16.3 功能实现254版块管理,16.3 功能实现,26,(1)首先编写版块实体类 Board。,(2)然后做版块总览,用于查看当前所有版块的主题、帖子条数。编写前端页面 postMain.jsp。,(3)然后编写 BoardController 控制器。,(4)在对应的 boardService 中添加方法 listAllPostOfBoard。,(5)在对应的 DAO 层的 UserDao 接口添加方法 listAllPostsOfBoard,用于获取指定版块的所有文章。,(6)在对应的 Mapper 映射文件 UserDao.xml 中补充相关内容。,(7)接下来做版块管理,版块管理包括版块的修改、增添和删除。编写前端页面 manageBoard.jsp。,16.3 功能实现26(1)首先编写版块实体类 Board。,16.3 功能实现,27,(8)随后编写 BoardController。,(9)在对应的 boardService 中添加方法 addBoardByBoard(用于添加版块)、listAllBoard(用于列出所有版块)。,(10)在对应的 DAO 层的 BoardDao 接口添加方法 addBoard(用于添加主题版块)、listAllBoard(用于获取所有的主题版块)、updateBoardByBoard(用于更新版块信息)、deleteBoardById(用于通,过 id 删除版块)。,(11)编写对应的 Mapper 映射文件 BoardDao.xml。,16.3 功能实现27(8)随后编写 BoardContro,16.3 功能实现,28,5主题与回复管理,主题管理包括主题的修改、增添和删除,以及主题回复的增加和删除。实现后界面如图 16.9 所示。其具体实现步骤如下(源码请见随书资源第 16 章)。,(1)首先是主题的管理,编写前端页面 postMain.jsp。,(2)随后编写 PostController。,(3)在对应的 PostService 中编写方法 addPostByPost(用于添加主题)、listPostContent(用于列出主题内容)、listAllPost(用于列出全部主题)。,16.3 功能实现285主题与回复管理,16.3 功能实现,29,16.3 功能实现29,16.3 功能实现,30,(4)在对应的 DAO 层的 PostDao 接口中添加方法 addPost(用于添加文章)、findPostByPostId(用于通过文章 id 查找文章)、listAllPostInfo(用于获取所有文章)、deletePostById(用于通过文章 id 删除文章)、updatePostByPost(用于更新文章)。,(5)编写对应的 Mapper 映射文件 PostDao.xml。,(6)编写对应的 DAO 层的 BoardDao 接口,方法updateBoardByBoard 可用于更新版块信息,方法 findBoardByBoardId 可用于通过主题版块 id 查找版块。,16.3 功能实现30(4)在对应的 DAO 层的 Post,16.3 功能实现,31,(7)编写对应的 Mapper 映射文件 BoardDao.xml。,(8)然后是回复的管理,编写前端页面 reply.jsp。,(9)随后编写 ReplyController。,(10)编写对应的 replyService。,(11)编写对应的 DAO 层的 ReplyDao 接口。,(12)编写对应的 Mapper 映射文件 ReplyDao.xml。,16.3 功能实现31(7)编写对应的 Mapper 映射文,16.3 功能实现,32,图 16.10 所示为后台管理界面。,16.3 功能实现32图 16.10 所示为后台管理界面。,本章指引,16.1 需求分析,16.2 详细设计,16.3 功能实现,16.4 本章小结,33,本章指引16.1 需求分析33,16.4 本章小结,本章我们使用了框架开发论坛,我们学会了:,如何充分利用数据库;,如何实现论坛的用户信息管理功能;,如何实现论坛的版块管理功能。,34,16.4 本章小结本章我们使用了框架开发论坛,我们学会了:3,
展开阅读全文