1、 本科生课程实习 课程名称 Web开发技术课程实习 课程编号 j1620108 学号 学生姓名 所在专业 计算机科学与技术 所在班级 指导教师 成绩 教师签字 课程实习时间:2012年5月14日 至 5月18日 评语: 目 录 1、开发背景 3 2、需求分析 3 3、系统设计 3 3.1、系统目标 3 3.2、系统功能结构 3 3.3、系统浏览 4 3.4、业务流程图 8 3.5、程序运行环境 8 4、数据库设计 8 4.1、数据库概要说明 8 4.2、数据库概念设
2、计 8 4.3、数据库逻辑结构设计 11 4.4、文件夹组织结构 12 5、公共类设计 13 5.1、数据库公共类 13 5.2、编码转换公共类 15 6、登录模块 15 6.1、登录模块概述 15 6.2、登录模块技术分析 16 7、注册模块 16 7.1、注册模块概述 16 7.2、注册模块的实现 16 8、论坛的主页面设计 18 8.1、论坛主页面概述 18 8.2、论坛主页面的实现 19 9、主题显示模块 21 9.1、主题显示模块概述 21 9.2、主题显示模块的设计 21 10、主题内容显示与回复内容显示 23 10.1、设计概念 23 10
3、2、主题内容显示和回复内容显示设计过程 23 11、主题回复 24 11.1、主题回复模块概述 24 11.2、主题回复模块的设计 25 12、发表新主题 25 12.1、发表新主题模块概述 25 12.2、新主题模块设计 26 13、后台设计 27 13.1、后台模块的概述 27 13.2、后台模块的设计 27 14、总结 29 1、开发背景 在当今网络的时代,人与人之间的交流从原来的面对面交流,慢慢地借助于现代计算机软件技术和网络技术演变成一种远程的,存在于网络上的交流,这种远程交流其中一种方式是通过使用BBS论坛进行的,有了这样的交流,人与人之间的知识文化就可
4、以很快地进行传播 2、需求分析 BBS系统主要的功能是讨论各种话题的交流中心。需要有各种不同话题的板块。需要为用户分等级,版主(拥有删除该板块中帖子的能力)、普通用户(拥有发帖和浏览不同板块的帖子的功能)、管理员(拥有新建板块,删除板块和删除用户等一些列后台管理功能) 3、系统设计 3.1、系统目标 根据需求分析的要求,制定了BBS系统目标如下: 1、 系统界面友好、美观 2、 划分用户级别,将不同的权限划分给不同的人群 3、 合理管理论坛相关信息 4、 易于维护和扩展 5、 系统运行稳定可靠 3.2、系统功能结构 本BBS系统是一个典型的Java Web程序,由系统的
5、前台和后台管理两部分组成 1、 系统前台 系统前台模块提供给所有用户使用,用户包括注册用户和普通游客,两者所拥有的功能不同。 系统前台主要包括用户登录、用户注册、发表主题、论坛浏览、主题浏览等功能模块 图3.2.1 2、 系统后台 后台管理主要由管理员使用,可对论坛中相关信息进行管理维护。普通用户无权使用。后台管理功能主要包括用户管理、板块管理、帖子管理、回复管理等。 图3.2.2 3.3、系统浏览 BBS论坛主页,主要内容是导航条、用户登录、用户注册、板块信息。用户可以通过论坛主页获得相应的信息。 图3.3.1(论坛主页) 用户登录界面在主页面的上方(用
6、户可以通过登录界面登录论坛,登录论坛后可以发帖,否则只能浏览帖子内容,不能回复和发帖) 图3.3.2(用户登录界面) 图3.3.3(登录后的界面) 游客通过用户注册页面注册为论坛用户 图3.3.4(注册页面) 板块里的主题(帖子) 图3.3.5(板块主题) 主题内容和回复信息 图3.3.6 快速回复,在每个主题的最下方 图3.3.7 后台管理页面(管理板块信息、用户信息、主题信息) 图3.3.8 3.4、业务流程图 3.5、程序运行环境 1、系统开发平台:MyEclipse9 2、系统开发语言:JSP 3、数据库
7、管理系统软件:Microsoft SQL Server 2005 4、运行环境:Windows 7 4、数据库设计 在开发应用程序时,对数据库的操作是必不可少的,数据库设计是根据程序的需求及其实现功能所制定的,数据库设计的合理性将直接影响到程序的开发过程。 4.1、数据库概要说明 本系统采用SQL Server 2005数据库,相对于Oracle等大型数据库来讲,SQL Server2005更加适合中小型系统,再者由于对SQL Server2005比较熟悉,因此选用了SQL Server2005作为数据库软件。 4.2、数据库概念设计 根据本系统的需求分析、流程设计及
8、功能结构的确定,每个功能模块可以抽象出一个或多个实体对象,例如用户、论坛版块、主题、回复主题等实体对象。这些实体对象彼此相互联系,并且最终创建成数据库表结构。 1、 用户实体对象 用户实体包括用户编号、用户名、用户等级、用户头像等用户相关属性。用户编号是识别用户实体的唯一编号,也就是数据表的主键,它的数据类型为int型,并具有自增的特性;用户级别属性是标明用户在本系统中的功能权限;其他属性都是描述用户相关信息的属性。 图4.2.1 2、 论坛版块实体对象 论坛版块实体对象包括论坛版块编号、论坛名称、版主、创建时间等相关属性。版块实体对象中的板块编号属性与用户实体对象中的用户编
9、号属性类型相同。都是具有自增的特性,板块实体的其他对象都是描述板块的相关信息的属性。 图4.2.2 3、 主题实体对象 主题实体包括主题编号、主题标题、主题内容、主题作者、提价时间、论坛板块编号(外键)、论坛板块名称(外键)、人气等相关属性。主题编号属性类型为int型,并具有自增特性;论坛板块编号标明此主题发表在哪个论坛板块中,人气属性用来记录主题的被访问信息。 图4.2.3 4、 回复主题实体对象 回复主题实体包括回复编号、回复标题、回复内容、回复时间、回复作者、主题编号、主题标题等相关回复属性。回复编号属性类型为int型,并具有自增特性。主体编号和主题标
10、题是外键。 图4.2.4 5、 各个表之间的关系 图4.2.5 4.3、数据库逻辑结构设计 根据上面设计好的E-R图,可以在数据库中创建相应的数据表,BBS系统中各数据表的结构如下: 1、 tb_user(用户表) 表tb_user用于保存注册用户的信息 用户表(tb_user) 字段名 数据类型 主键 描述 username varchar(20) 否 用户名 password varchar(20) 否 用户密码 sex varchar(20) 否 性别 email varchar(50) 否 邮箱 qq va
11、rchar(20) 否 qq号 signature varchar(300) 否 个性签名 grade varchar(20) 否 用户等级 lxdz varchar(50) 否 联系地址 tx varchar(50) 否 头像 grzy varchar(50) 否 个人主页 realname varchar(30) 否 真名 id int 是 用户编号 图4.3.1 2、 tb_forum(板块表) 表tb_forum用于保存论坛板块信息 版块表(tb_forum) 字段名 数据类型 主键 描述 id int
12、是 版块号 forumname varchar(20) 否 版块名 manager varchar(100) 否 版块管理员 createtime datetime 否 版块创建时间 图4.3.2 3、 tb_topic(主题表) 表tb_topic保存主题信息,其中forumid为板块号,通过检索板块号,可以获得该板块下相应的主题。因此版块号为外键。 主题表(tb_topic) 字段名 数据类型 主键 描述 id int 是 主题号 content text 否 主题内容 author varchar(20) 否 作者 su
13、bmittime datetime 否 主题提交时间 forumid int 否 所属版块号 title varchar(300) 否 题目 xq varchar(30) 否 心情 rq int 否 人气 forumname varchar(20) 否 所属版块名 图4.3.3 4、 tb_response(回复表) 表tb_response用于保存回复信息,其中topicid为主题号,通过检索主题号可以获得该主题相对应的回复信息,主题好为外键 回复表(tb_response) 字段名 数据类型 主键 描述 id Int 是
14、 回复编号 title varchar(300) 否 题目 content text 否 内容 author varchar(20) 否 作者 submittime timestamp 否 提交时间 topicid int 否 主题号 topicname varchar(100) 否 主题名 xq varchar(20) 否 心情 图4.3.4 4.4、文件夹组织结构 每个项目都会有相应的文件夹组织结构。当项目文件过多时,会划分相应的包来存放文件。其中javabean包放javabean,servlet包放servlet,tag包
15、放自定义标签,util放一些通用工具方法,如数据库连接、编码转换等。 图4.4.1 5、公共类设计 在开放应用程序时,可以将数据库等相关操作封装在自定义类中,以便于在开发程序时调用,这样,可以提高代码的重用性。本系统创建了DB类、HandleString类等公共类 5.1、数据库公共类 本系统采用SQL Server2005数据库,系统通过数据源来连接数据库。创建数据库时应该在系统上创建数据源(创建数据源的方法详见百度)。 DB类为数据库类,它里面封装了数据库操作的常用方法、如数据的插入、数据的更新、事务等一些列常用方法。 DB类的构造函数负责加载Java提供的数据库连
16、接驱动,并且与数据库连接 每次调用DB类时都会与数据库相连。而每次调用完数据库时应该释放连接和结果集对象,因此需要一个close方法 DB类还应该有SQL语句的执行等方法 除了数据库正常的连接、释放、执行SQL方法外,还有数据库所对应的执行方法。在这里就不一一列出,DB类的详细方法可以浏览该类的源代码。 5.2、编码转换公共类 本系统是一个Java Web程序,很多不同的页面与数据库的操作都需要通过转码才能正确显示。因此,有必要建立一个编码转码的公共类。 通过这个方法能把gb2312的编码转为正确,不会出现乱码。 但是还考虑到以后的拓展性,页面可
17、能采用的是UTF-8的编码,这里上述的方法就不适用,因此在转码类中还定义了其他方法,以为以后的拓展左准备。 6、登录模块 6.1、登录模块概述 登录模块嵌套在主页面上,用户通过登录模块登录论坛。只要用户输入正确的用户名和密码就能通过登录按钮进行登录。 图6.1.1 6.2、登录模块技术分析 由于本次设计我采用的是MVC模式,因此有视图、模型和控制三个层次,其中视图就是图6.1.1所示。而模型就是在javabean包中Login.java它里面的成员包含了用户的所有信息,当然登录并不需要用到里面的所有成员,只需要用到用户名和密码这两项就可以了。而servlet就是负责处理
18、用户名和密码是否存在数据库,如果存在就允许登录,如果不是的话就提示登录失败。 1、 在视图中获取用户名和密码
2、 获取用户名和密码后,把这两项内容提交到servlet中,然后在servlet中连接数据库,把用户名和密码与数据库进行select。最后把结果放到一个session中。最后跳转页面。(代码略) 3、 跳转页面显示是否登录成功(视图jsp页面代码略) 7、注册模块 7.1、注册模块概20、述 用户通过注册模块进行注册 注册模块在图3.3.4中 7.2、注册模块的实现 本系统一致采用MVC模式。注册页面是视图、Servlet为控制器、JavaBean为模型。用户通过在注册页面填写注册信息。通过提交后,信息被提交到Servlet中。然后通过Servlet写入数据库中。最后跳转页面返回信息。 Servlet核心代码: try { con = DriverManager.getConnection(uri, "sa", "709394"); if (boo) { String insertUser = "insert into tb_us
21、er(username,password,sex,email,qq,signature,grade,lxdz,tx,grzy,realname)" + " values(?,?,?,?,?,?,?,?,?,?,?)"; pre = con.prepareStatement(insertUser); pre.setString(1, username); pre.setString(2, password); pre.setString(3, sex); pre.setString(4, email); pre.setSt
22、ring(5, qq); pre.setString(6, signature); pre.setString(7, grade.trim()); pre.setString(8, lxdz); pre.setString(9, tx); pre.setString(10, grzy); pre.setString(11, realname); int m = pre.executeUpdate(); if (m != 0) { backNews = "注册成功"; reg.setB
23、ackNews(backNews); } } else { backNews = "信息填写不完整,请填写带星号的信息"; reg.setBackNews(backNews); } con.close(); } catch (SQLException exp) { backNews = "该会员名已被使用,请更换名字" + exp; reg.setBackNews(backNews); } String register = "register"; session.setAttribute("chan
24、geMes", backNews); session.setAttribute("reg", register); RequestDispatcher dispatcher = request .getRequestDispatcher("showCBMes.jsp"); dispatcher.forward(request, response); } 8、论坛的主页面设计 8.1、论坛主页面概述 论坛主页面包括3部分,第一部分是导航条、第二部分是用户登录与注册、第三部分是论坛板块的显示。其中论坛主页有两个页面,一个是用户登录前的页面,一个是用户登录
25、后的页面(两个页面的主要区别是导航条游客一栏变回该登录的用户名、用户登陆框和注册按钮消失,其他的不变)图8.1..1为登录前的页面、图8.1.2为登录后的页面 图8.1.1 图8.1.2 8.2、论坛主页面的实现 论坛主页面的JSP代码(部分),它通过判断用户是否登录,登录的话打开afterlogin.jsp这个页面,否者的话打开beforelogin.jsp这个页面
26、vbar.jsp" %>
<% if (session.getAttribute("username") == null) { %> <%@ include file="beforelogin.jsp"%> <% } else { %> <%@ include file="afterlogin.jsp"%> <% } %> <%@ include file="copyright.jsp"%> 登录前页面beforelogin27、jsp与afterlogin.jsp的结构大致相同,不同的是用户登录注册模块,登录前页面有用户登录模块,而登录后页面没有用户登录模块。除此以外,两者的结构都有论坛板块显示DisplayTag,java文件(这个文件是自定应标签)。这个标签文件用于显示论坛板块的详细信息。 Beforelogin.jsp的代码(部分) 用户登录与注册:
31、>"); out.println("
| ||||||||||||