《基于jsp的网上论坛的设计与实现(25页).doc》由会员分享,可在线阅读,更多相关《基于jsp的网上论坛的设计与实现(25页).doc(25页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、-基于jsp的网上论坛的设计与实现-第 19 页湖 北 大 学本 科 毕 业 论 文 (设 计)题 目 基于JSP的网上论坛的设计与实现 姓 名 姚远 学 号 2011221104220036 专业年级 2011级软件工程 指导教师 陈南平 职 称 讲师 2015年5月5日目 录 绪论(1)1系统分析(2)1.1 需求分析(2)1.2 可行性分析(2)1.2.1 技术可行性(3)1.2.2 经济可行性(3)1.2.3 社会可行性(3)2 总体设计(4)2.1 系统目标(4)2.1.1 MVC架构(4)2.2 系统功能结构(5)2.2.1 前台功能结构(6)2.2.2 后台功能结构(7)2.2.
2、3 系统流程(7)2.3 相关技术介绍(8)2.3.1 开发环境(8)2.3.2 系统平台体系的选择(8)2.3.3 JSP技术(9)2.3.4 MySQL(9)2.3.5 JDBC技术(9)2.3.6 servelet(10)3 数据库设计(11)3.1 数据库概述(11)3.2 数据库设计分析(11)3.3 数据库物理设计(12)4 模块/功能设计(16)4.1 注册模块(16)4.1.1 需求描述(16)4.1.2 逻辑设计(16)4.1.3 相关代码(17)4.2 登录模块(18)4.2.1 需求描述(18)4.2.2 逻辑设计(18)4.2.3 相关代码(21)4.3 发帖模块(23
3、)4.3.1 需求描述(23)4.3.2 逻辑设计(23)4.3.3 相关代码(26)4.4 读帖评论模块(29)4.4.1 需求描述(29)4.4.2 逻辑设计(29)4.4.3 相关代码(32)4.5 搜索模块(34)4.5.1 需求描述(34)4.5.2 逻辑设计(35)4.5.3 相关代码(36)4.6 后台管理模块(37)4.6.1 需求描述(37)4.6.2 逻辑设计(37)5 总结(39)参考文献(41)基于JSP的网上论坛的设计与实现摘 要随着Internet技术的飞速发展,计算机技术已渗透到人们生活的各行各业。随之而来的各种网络文化也在人们的生活中占有越来越重的地位,论坛则是
4、网络文化传播的一个重要途径。论坛系统是各种信息和话题产生和传播的场所,它不同于纸媒体、电视媒体等传统的媒体,每个人都可以随意的在论坛上发表自己的看法和言论,也可以回复他人的帖子和他人交流等。除了可以发表文字信息的内容以外,还可以发表图片、音乐、视频等等。论坛,BBS,简称网络交流平台。论坛的发展也随着计算机技术的普及而迅速发展壮大,论坛在人们的生活中无处不在,每个人都可以找到自己感兴趣的论坛,或者想要学习的知识的论坛。人们可以在论坛上找到任何想要的资源,而各类网站,包括综合性专题性的门户网站也都大力发展了自己的论坛。既是对自己品牌的推广,也促进了用户网友之间的交流。开发论坛系统的目的是提供一个
5、广阔的用户交流平台,为广大用户提供一个交流与学习的社区。本系统是基于jsp+servelet+MySQL实现的,它具有操作灵活,使用方便,运行稳定,安全可靠等特点。【关键词】JSP BBS servelet MySQLDesign and implementation based on JSP online BBSAbstractWith the rapid development of Internet technology,the computer has spilt over into all the world. Internet culture plays more and more
6、 important role in peoples life,and the forumis an important wayof Internet culture propagation.Forum is a place that all kind of infomation appear on,it is different from traditional media,everybody can publish hiself or herself opinions without any restrictions. Except for text infomation,people a
7、lso can publish pictures、music、video.Forum is called BBS for short,means network communication platform.The development of network forum becomes more and more fast because of the proliferation of computers.Forum covers almost every aspect of peoples lives,everyone can find their own interest or need
8、 to know.And some kinds of websites like comprehensive portal websites or functional websites are willing to open their own forum in order to promote the communication between onliine friends and make their website more interactive.The forum is based on a jsp+servelet+mysql implementation,its conven
9、iet,flexible operation,stable,safe and reliable.【Key Word】JSP BBS servelet MySQL绪论论坛是随着internet技术的流行而迅速发展起来的。互联网技术的发展和网络通讯技术的成熟使得论坛越来越贴近人们的生活。在BBS上大家可以对一个共同感兴趣的问题进行讨论,自由地发表自己的意见与观点,并且能直接与其他的人进行沟通。BBS,这个包罗万象、实时交互兄弟信息平台,使人们不再被动的接收信息,而是在了解他人的看法同时,也可以主动的发表自己的观点。 论坛是一个经过学习者整理加工过的网络资源汇集中心,从娱乐,体育,专业性知识,BBS
10、汇集了各种形式、内容的网络资源。不少论坛都设有专门的网络资源板块,用户之间的学习与交流可以变得更加方便。如今, 基于网络的论坛社区也是各种学习资源组合的场所,为学习者提供了学习环境,作为有学习意愿的人,可以在论坛通过发帖,回复,与网友相互探讨,相互学习,从而达到更好的学习效果。BBS论坛当然不仅仅是一个学习的场所,在论坛中了解时事,调侃交友等已经成为了一部分年轻人的一种生活方式。许多的网络名词、当下热点、经典段子都是出自各大论坛,论坛的消息往往会比新闻更加迅捷。论坛之所以在当下这么流行,是因为在网络中人们基本可以实现言论自由,表达自己的观点可以毫无顾忌。在这样的言论自由下,充分激励了人们的智慧
11、,所以在论坛经典频出。BBS论坛是我们在生活中的重要交流工具。所以我选择开发一个论坛系统作为我的毕业设计。 Java是当今的主流开发技术,具有很多其他语言不具备的优势。JSP则是当今web开发所用到的主流技术之一,得到了广泛的支持和承认,它以java技术为基础,在页面中通过标签实现与服务器的动态交互,从而实现非常复杂的应用。本网站使用JSP + servelet+MySQL+tomcat在MyEclipse系统开发的,使用MVC设计模式,是系统层次清晰,运行稳定。 本系统主要基于B/S模式来开发和设计,B/S即浏览器/服务器的模式。发表帖子是BBS论坛最基本的功能,评论和回复也是论坛系统的一大
12、特点。此外,为了记录主题帖子的发表者和主题的评论者信息,系统还需要提供用户注册和登录的功能。只有注册的用户登录后才能够发表和评论主题帖子,浏览者(游客)只能浏览主题信息。综上所述以及项目的需求,BBS论坛需要具备以下功能:普通游客可以查阅帖子和注册;会员可以查阅帖子、发表帖子、也可以评论回复;管理员可以进行用户管理、论坛分类管理和帖子管理等。1系统分析1.1 需求分析网上论坛BBS系统是电子商务网站中一种常见的模块,它一般都提供诸如用户注册、帖子浏览搜索、发表以及评论等前台功能,同时也为论坛的管理人员,例如版主、管理员等提供对应后台的管理功能,包括用户管理、论坛分类管理、论坛帖子管理等功能。网
13、上论坛BBS系统的功能如表1.1所示。表1.1 角色与权限表角色权限游客浏览帖子查询帖子注册会员登录评论到达一定等级后发帖版主删帖禁言置顶、加精管理员添加类别对帖子管理对用户管理(可以删除用户)不同的角色会拥有不同的功能,也会拥有不同的权限。如游客只能浏览帖子,而注册的用户却能评论及发表;版主只能对帖子进行管理,而管理员却能对用户进行管理。像这样不同用户拥有不同的权限提高了网站整体的层次性,也使得运行效率变得更高。本系统主要的功能描述如下:注册:对游客提供注册的功能,录入个人信息,并提供个人信息有效性的检验。登录:已经注册的用户可以实现登录的功能,在登录的工程中会校验登录信息来决定是否登录成功
14、。发帖:会员到达一定等级后能够进行发帖,每次发帖会有积分的增加,别人评论也会有积分增加,发帖时可以选择发起投票也可以添加图片,禁止评论等。评论:会员可以对没有设置禁止评论的帖子进行评论,每次评论都会增加一定的积分。帖子管理:版主和管理员能够对帖子管理,包括置顶、加精、删帖等。会员管理:管理员不仅能对帖子进行管理,还能对帖子的类别管理和对用户进行管理,如禁言,或者更严重的删除用户等。1.2 可行性分析可行性分析是在调查的基础上,通过市场分析、财务分析以及技术分析,来研究系统开发的必要性与可能性。通过可行性分析,可一定限度的降低软件风险,增大软件开发成功的概率。在软件开发的前期,可行性研究占有很重
15、要的地位,可行性分析的好坏,很可能直接影响软件的成败。1.2.1 技术可行性技术可行性主要分析在技术上能否完成对需求的开发,本系统采用JSP+servlet+MySQL+tomcat技术实现,JSP技术使用是html技术与标签语言的结合,来封装产生动态网页的处理逻辑。网页还能通过标签和JS代码访问存在于服务端的程序。JSP技术将网页逻辑与网页设计和显示分离,使基于Web的应用程序的开发变得简单快速。数据库使用MySQL,MySQL是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而各个表之间也存在着不同的关系,这样便大大的提高的程序的灵活性。由于其成本低、灵活,尤其是开源这一特点,受
16、到很多中小型企业的青睐。所以次系统在技术上完全可行。1.2.2 经济可行性主要是对项目的经济效益进行评估,本系统模拟的是提供一个供用户交流的平台,为广大用户提供探讨问题、交流经验、以文会友的平台。但实际只是用于个人对于网站开发知识的一个总结与实践,只是模拟论坛的实现,没有发布到外网上,故在经济上是可行的。1.2.3 社会可行性随着论坛的普及,论坛已经成为许多人彼此交流沟通的一种方式。人们可以在论坛上提出自己在生活学习中遇到的各种问题,其他人会根据自己的生活经验来发表自己的看法来帮助提问的人解决问题。论坛在无形中拉近了人与人之间的距离,让一些羞于启齿的问题让人们更加开放的讨论,它已经成为很多人上
17、网的必备品。2 总体设计2.1 系统目标网上论坛BBS系统面向许多用户,为了使论坛获得更大的用户量,页面应该简单易懂,清新明了,用户不需要专门的学习便可操作。本系统基于B/S,采用MVC设计模式开发,界面友好,运行稳定。由于论坛这样的系统在用户到达一定时数据流量会非常大,所以必须要满足系统稳定、运行高效等设计需求。本系统在设计时应该满足以下几个要求:1、 界面友好,数据存储安全。 2、 对帖子进行分类展示,分页展示。 3、 实现在线发表帖子,并且发帖中能够上传图片和发起投票。4、 提供登录模块,主要用来记录用户登录系统时留下的信息。 5、 用户随时都可以查看自己发表的帖子6、 系统最大限度地实
18、现可维护性和可拓展性。 7、 对用户输入的数据,均要校验,以防出现一些恶意破坏。 8、 系统运行稳定安全可靠。2.1.1 MVC架构MVC是一种设计模式,即model、view、control。讲数据展示与业务逻辑分离,使系统具有更高的可维护性和可拓展性。各层之间分工明确,结构清晰。MVC的这三层结构分别为:1.表现层(Presentation layer):包含一些展示代码,如html、js等。也提供前端的数据校验。2.业务逻辑层(Business layer):包含处理业务的代码,程序所有的业务逻辑都在这一层。3.数据持久层(Persistence layer):主要负责与数据库的交互,使
19、程序中不再出现繁琐的sql语句。 各层与其余层分离,但各层之间存有通信接口。采用三层软件设计架构后,软件系统在可扩展性和可复用性方面得到极大提高,在资源分配策略设计合理运用的同时,软件的性能指标也得到提升,系统的安全性和维护性也得到改善。三层体系结构对Web应用的软件架构产生很大影响,促进了基于组件的设计思想,产生了许多开发Web层次框架的实现技术。较之两级结构来说,三层结构修改和维护上更加方便。目前开发B/S结构的Web应用系统广泛采用这种三层体系结构。 框架使用MVC模式设计,控制器(C)统一请求入口,请求处理器(M)调用业务逻辑,视图(V)渲染业务数据Model。支持参数绑定和校验,简化
20、文件上传功能,简化业务项目在web层的开发任务,并通过拦截器提供强大的拓展功能。其主要的设计思想为使用Servlet实现控制器统一请求入口,初始化请求路径与请求处理链的映射关系执行拦截器逻辑,.执行Action方法, 调用业务处理逻辑,视图渲染业务Model。如图2.1所示。图 2.1 总体请求走向图2.2 系统功能结构本系统一共分为三个模块,分别为游客模块、会员模块、管理员模块,如图2.2所示。游客模块主要提供对游客发开的功能,包括注册、浏览帖子、搜索帖子。会员模块主要一共对已经注册的用的开发的功能,主要包括发帖、评论回复等。管理员模块则提供网站管理人员对网站的管理功能,包括系统管理,帖子管
21、理,用户管理等。图2.2 功能结构图2.2.1 前台功能结构前台功能主要为普通用户可以看到并使用的功能。用户访问首页后,可以查看自己的个人信息,系统的推荐信息,也可以看到最近发布的帖子,搜索帖子,发布帖子等,如图2.3所示。BBS论坛前台功能搜索帖子发布帖子查看个人信息查看推荐帖子查看精品帖子查看帖子列表用户登录用户注册图2.3 前台功能结构图2.2.2 后台功能结构BBS论坛后台功能系统管理用户管理帖子管理类别管理后台功能为管理员可以看到并使用的功能。若用户的权限为管理员,则可进入后台,可进行论坛类别的管理、版面管理和用户管理的操作,如图2.4所示。 图2.4 后台功能结构图2.2.3 系统
22、流程用户发起登录请求,系统执行登录流程,校验登录信息,判断信息是否有效,若无效则打印错误信息,并返回未登录状态,若登录信息有效则返回用户信息到s缓存;然后跳转到登录状态的首页,这时用户就可以进行权限范围内的功能了,详细信息如图2.5所示。图2.5 系统流程图2.3 相关技术介绍2.3.1 开发环境操作系统:windows 7Web服务器:tomcat 6.0数据库:MySQL浏览器:chrome开发语言:java、jsp、js、css等2.3.2 系统平台体系的选择在应用开发领域中,目前系统平台的体系结构主要有两种,即B/S(Brower/Server)结构和C/S(Client/Server
23、)结构。 C/S结构,即Client/Server(客户机/服务器) 结构,是大家熟知的软件系统体系结构,通过客户端和服务端各自的地里工作,降低了系统的部分开销,但是需要安装客户端才可进行服务的访问。客户端和服务器的功能不同,客户端主要完成一些用户的需求以及操作,关于用户的程序都在客户端;而服务端则主要提供一些数据管理,并发控制,数据维护共享着方面的内容。客户端完成主要的业务逻辑,这样开发比较容易,但维护与升级比较困难,当产品升级的时候还要强制用户升级。这样就会影响用户体验感而可能造成用户的流失。B/S最大的优点就是可以在任何地方进行操作而不用安装任何专门的软件。只要有一台能上网的电脑就能使用
24、,客户端零维护。系统的扩展非常容易,只要能上网,再由系统管理员分配一个用户名和密码,就可以使用了。甚至可以在线申请,通过公司内部的安全认证(如CA证书)后,不需要人的参与,系统可以自动分配给用户一个账号进入系统。2.3.3 JSP技术JSP全名为Java Server Pages,是一种动态网页语言,其本质是一个简化的Servlet设计,在html语言中插入tags和script实现与后台的动态交互。JSP技术有点类似ASP技术,都是在传统的网页HTML(标准通用标记语言的子集)文件中插入程序语言段和JS标记,从而形成网页文件。JSP是跨平台语言, 用JSP开发的Web的应用,既能在Linux
25、下运行,也能在其他操作系统上运行。JSP主要是将网页的逻辑与网页显示分开,是web应用的开发变得比较容易。Java servlet是JSP技术的基础,在开发大型的web应用的时候需要JSP与servlet的配合。目前也有许多基于servlet的框架的出现,对servlet实现了封装,使得开发只需要在配置文件中配置相关的属性而无需再写许多繁琐的代码,让开发变得更加容易。2.3.4 MySQLMySQL是一个开放源码的小型关系型数据库管理系统,开发者为瑞典MySQL AB公司,而后被sun公司收购,而sun在之后又被oracle收购。目前mysql在一些中小型网站中被广泛使用。由于其自身的一些特点
26、,如体积小、速度快、总体拥有成本低,特别是开放源码这一特点,成为许多中小型网站选择MySQL数据库作为网站数据库的一个重要条件,因为能降低网站的总体拥有成本。与其他大型的数据库相比,MySQL虽然确实存在不足之处,但是这并没有影响它的受欢迎程度。因为如果不是大型公司开发大型的项目,对于一般的人格或者企业开发,MySQL足以满足开发者的需求。而且基于开源还能大大减少开发成本。2.3.5 JDBC技术数据库通信接口采用JDBC(Java Database Connectivity)。JDBC是一种数据库连接技术,主要是java连接数据库的技术,定义了用来访问数据库源的标准JAVA类库,使用这种类库
27、可以使用一种标准的方法、方便地访问数据库资源。JDBC是用于执行SQL语句的Java应用程序接口,由一组用Java语言编写的类与接口组成,在JSP中将使用JDBC来访问数据库。JDBC是一种规范,它让各数据库厂商为Java程序员提供标准的数据库访问类和接口,这样就使得独立于DBMS的Java应用程序的开发工具和产品成为可能。 JDBC的目标是使应用程序开发人员使用JDBC可以连接任何提供了JDBC驱动程序的数据库系统,这样就使得程序员无须对特定的数据库的特点有过多的了解,从而大大简化了和加快了开发过程。 一般的Java开发工具都带有JDBC 桥驱动程序。有了JDBC,向各种关系数据发送SQL语
28、句就是一件很容易的事。换言之,有了JDBC API,就不必为访问Sybase数据库专门写一个程序,为访问Oracle数据库又专门写一个程序,或为访问Informix数据库又编写另一个程序等等,程序员只需用JDBC API写一个程序就够了,它可向相应数据库发送SQL调用。同时,将Java语言和JDBC结合起来使程序员不必为不同的平台编写不同的应用程序,只须写一遍程序就可以让它在任何平台上运行,这也是Java语言“编写一次,处处运行”的优势,其次它增进了访问数据的效率和快捷程度。2.3.6 serveletServlet是一种服务器端的java应用程序,拥有独立于平台与协议的特点,可以生成动态的网
29、页页面。 他担当web请求(http请求)与服务器响应(HTTP服务器上数据库或应用程序)的中间层。 Servlet是在Web 服务器内部的服务器端Java应用程序,与传统的从命令行启动的Java程序不同,Servlet由Web服务器进行加载并初始化,该Web服务器一定包含支持Servlet的Java虚拟机。Servlet请求如图2.6所示。图2.6 servlet请求走向图3 数据库设计3.1 数据库概述数据库的设计,在程序的开发中非常重要,有时可能会直接决定一个软件项目的成败。一个合理的数据库设计可降低程序的复杂性,使程序开发的过程更加快捷快捷方便。 本系统考虑到开发成本、用户信息量客户需
30、求等问题,决定采用MySQL作为项目中的数据库。 MySQL是一种客户/服务器模式的关系型数据库,它具有很强的数据完整性、可伸缩性、可管理性、可编程性;具有均衡与完备的功能;具有较低的价格与性能比。MySQL数据库可以大容量地存储数据,并对数据进行合理地逻辑布局,应用数据库对象可以对数据进行复杂地操作。MySQL也提供了JDBC编程接口,这样可以非常方便地应用Java来操作数据库。3.2 数据库设计分析R模型是对现实世界的一种抽象。它的主要成分是实体、联系和属性。使用这三种成分,我们可以建立许多应用环境的E-R模型。本系统的帖子实体图如图3.1所示,版块实体图如图3.2所示,用户实体图如图3.
31、3所示,e-r实体联系图如图3.4所示。 图3.1 帖子实体图图3.2 版块实体图图3.3 用户实体图图3.4 网上论坛实体联系图3.3 数据库物理设计本系统一共包含六张表,如表3.1所示。表3.1 数据表的汇总表表名功能说明tb_comments 帖子评论表tb_imgs 帖子图片表Tb_news 帖子信息表Tb_options 投票选项表Tb_types 类别表Tb_users 用户表评论表tb_comments,主要记录每个帖子下面的评论。包含的字段有,自增id主键;帖子id,这个与帖子表中的帖子id一致,此字段为外键;发表此评论的人的账号,也就是在页面上显示的评论人;评论的内容,为在页
32、面上显示给用户的文字;评论时间,为发表此评论的时间;顶踩的数量,为显示在页面上次评论顶和踩的个数,详细信息如表3.2所示。序号字段名称数据类型(精度范围)允许为空Y/N默认值约束条件/说明描述1id intN自增主键自增id2newsid varcharN无外键帖子iduname varcharN无评论人账号3comcontent textN无评论内容4comtime varcharN无评论时间5agree intN0顶的数量6disagree intN0踩的数量表3.2 评论表图片表tb_imgs,主要记录上传新闻时附带的图片。一般的帖子页或者新闻也都会有相应的图片来增加内容的可阅读性。因此
33、在发布帖子的时候需要增加添加图片的功能,这时就需要为这些图片建立一张图片表。而图片一般数据量都比较大,直接存储在数据库中会使得效率不高,因此图片表主要存储的不是图片,而是图片路径,在查询的时候只需要通过路径来访问图片,这样效率比较高。详细的图片表信息如表3.3所示。序号字段名称数据类型(精度范围)允许为空Y/N默认值约束条件/说明描述1id intN自增 主键自增id2newsid varcharY无帖子id3imagename varcharY无图片名称4dir varcharY无图片路径表3.3图片表帖子详细信息表tb_news,主要记录每个帖子的信息。每个帖子都会有类别,标题,作者,发布
34、时间,评论列表。而在帖子列表展示的时候,还会显示评论数,是否加精,是否置顶。一般帖子按发布时间排序,而用户可以选择选择按评论数排序,也可以按加精置顶排序。具体的帖子详细信息表如表3.4所示。序号字段名称数据类型(精度范围)默认值约束条件/说明描述1id int自增 自增id2newsid varcharnull 主键帖子id3typeid varcharnull 外键类别id4title varcharnull标题5contenttextnull内容6anthorvarcharnull作者7pbtimevarcharnull发布时间8isComint1是否允许评论9countComint0评论
35、数10isfirstint0是否置顶11isCreamint0是否加精表3.4帖子详细信息表投票选项表tb_options,主要记录在发帖时附带的投票的投票选项。这是本论坛相对比较有特点的一点,用户在发布帖子的时候可以选择发起投票。而当帖子被浏览时,该投票主题可以被所有用户投票。所有投票的选项就需要单独建立一张表,包括所属的帖子,得票数等一些选项信息,详细信息如表3.5所示。序号字段名称数据类型(精度范围)默认值约束条件/说明描述1id int自增 主键自增id2newsid varcharnull 外键帖子id3opitem varcharnull 投票的选项内容4countVote var
36、char0得票数表3.5投票选项表类别表tb_types,主要记录帖子的类别信息。在发布帖子的时候,用户可以选择帖子的类别,在列表展示的时候也会显示在帖子标题的前面,比较醒目。类别是管理员添加的,且不能删除。主要包括类别号类别名,详细信息如表3.6所示。序号字段名称数据类型(精度范围)默认值约束条件/说明描述1id int自增 自增id2typeid varcharnull 主键类别id3typename varcharnull 类别名称4describe varcharnull类别描述表3.6类别表用户表tb_users,主要记录用户信息。每一个网站系统都有自己的用户,因此需要一个用户表。而
37、用户表中存储着几乎用户所有的信息,所以这个表中的信息非常重要,一些包括用户名、密码等的信息如果泄露,就会对用户造成很大的损失。所以在用户表内的一些字段不能用明文,要用加密后的编码存在数据库。详细信息如表3.7所示。序号字段名称数据类型(精度范围)默认值约束条件/说明描述1id int自增 自增id2userid varcharnull 主键用户id3uname varcharnull 用户名4password varcharnull密码roleflagint1角色标志loginflagint0登录标志forbidflagint0禁止标志scoreint0积分rankint0等级表3.7 用户表
38、4 模块/功能设计4.1 注册模块4.1.1 需求描述注册对于每一个当今的软件而言,都是必不可少的,只有用户注册了,才能实现与系统之间更多的交互,才能体验更多的功能。一般而言,用户期望注册越简单越好,而软件开发者则希望注册越详细越好,因为开发者需要考虑安全因素,注册信息详细也能让使用企业更好的了解市场。而过于复杂的注册程序可能会损失一定量的用户,这就需要开发者针对于系统特性来开发注册的模块了。注册模块是针对于普通用户,给普通游客一个注册通道,使之成为会员可以享受更多的功能。4.1.2 逻辑设计由于目前系统只是一个简单的BBS,没有涉及一些非常重要的个人信息,比如支付信息,个人隐私等,所以为了用
39、户更加便捷的操作,注册设计相对简单,用户注册时主需要填写用户名,密码、安全码即可。普通游客只能浏览帖子,而当游客进行一些类似于评论等功能时,系统提示用户登录,若用户没有账号,这时用户就会选择注册一个账号。当用户发起注册请求,页面会弹出一个对话框,用户需要输入一些简单的个人信息,由于用户名即用户标识,需要唯一,所以每一个用户的用户名必须唯一。当输入用户通过AJAX校验用户名是否已存在并返回到页面,在安全码正确的情况下将注册信息传入后台进行数据库插入操作,注册成功后,直接登录到首页。实现效果如图4.1所示,首页如图4.2所示。图4.1 注册页面图4.2 首页4.1.3 相关代码注册的时候,在输入用
40、户名的同时,采用ajax技术异步刷新,判断此用户名时候已被占用,并提示用户。主要的ajax代码如下:/对ajax封装的代码function ajax(method,url,data,callback)var xhr;/获得XMLHttpRequestif(window.XMLHttpRequest)xhr = new XMLHttpRequest();elsexhr = new ActiveXObject(microsoft.XMLHTTP);/打开连接xhr.open(method,url,true);/设置状态发生改变时需要执行的回调函数xhr.onreadystatechange=fun
41、ction()if(xhr.readyState = 4 & xhr.status=200)var msg = xhr.responseText;callback(msg);if(method = post)/设置post请求需要的请求头信息xhr.setRequestHeader(Content-Type,application/x-www-form-urlencoded);xhr.send(data);/校验用户名的代码function ck_name(v) ajax(post,UserServlet,flag=ckname&name=+v,function(data) data=mytr
42、im(data); if(data = 1) $(v_rname).innerHTML=用户名可用; else $(v_rname).innerHTML=用户名已被占用;4.2 登录模块4.2.1 需求描述用户可选择用户名、密码登录,自动登录。4.2.2 逻辑设计用户发起http请求,系统先校验请求参数是否合法,若合法则判断是否cookie自动登录,若不是则进行用户名密码登录。在用户登陆后,鼠标放在用户的名字上回显示用户的个人等级信息,放在帖子作者或者帖子评论者的名字上也会有同样的效果。采用ajax技术完成此功能。实现效果如图4.3所示。登录的主要流程为:服务器接受请求,组装请求信息,即用户的
43、一些登录参数;校验参数是否合法;判断是否cookie登录,若是则执行cookie登录流程;判断是否用户密码登录,若是则实行用户名密码登录流程;.以上各种登录流程执行登录,根据登录是否成功进行下面的操作;.若登录成功,则写登录相关cookie,若登录失败则清楚登录相关的cookie,记录行为日志;组装登录成功返回信息,响应到前端;流程结束。具体如下图4.4所示。实现效果如图4.5所示。图4.3 个人信息展示图图4.4登录流程图图4.5 登录页面4.2.3 相关代码点击登录按钮后,会弹出登录框,阴影层会覆盖住界面直至登录成功。用户登录成功后,会将用户信息存在缓存中,以便对其他操作权限的判断。这个主
44、要通过js实现:function login() $(celling).style.display=block; $(login_form).style.display=block;function validateLogin()var name = $(login_form).uname;var pass =$(login_form).upass;vname = name.value;vpass = pass.value;/验证姓名if(mytrim(vname).length 1)name.style.borderColor=#ff0000;$(v_name).innerHTML=请填写用户名;return false;elsename.style.borderColor=#3399ff;$(v_name).innerHTML=