本科生毕业设计(论文) 户管理的操作。
1.2 系统要解决的问题
本系统基于Struts2+Spring+hibernate+JSP技术设计实现的BBS论坛管理的基本功能有:用户注册、用户登录、登陆权限、发表版块、发表主题帖子、阅读主题帖子、回复主题帖子、分页和模糊查询、资源分享、修改个人资料等[4]。对于用户的权限要设计为四种,只有注册过的用户在登录论坛后才能有发表和回复主题等功能,能够发表自己的话题,未登录者被称为游客,只能浏览主题信息,不能发表主题和回复主题。版主拥有添加版块,修改版块等权限。管理员为社区内部人员,有着对社区管理的最高权限,可以对帖子进行管理,还拥有审核版主通过,审核违规帖子等权限,维护社区的运转。
对BBS论坛系统的设计中最重要的问题是合理设计系统整体的的结构,提高系统的可移植性,扩展性。对数据库安全操作、合理设计与稳定也十分重要,对数据库的异常操作会给系统带来严重损失,要尽量避免。在考虑了以上各个方面的因素后,才能有助于系统的综合性能提高,使得系统高效安全稳定的运行,用户体验更好。
1.3 本章小结
本章对于BBS系统进行了概述,描述了BBS的背景及本论文中涉及到的技术环境,大概描述了完成BBS需要解决的问题及解决问题的思路。
2
本科生毕业设计(论文) 第2章 相关技术及运行环境简介
2.1 java语言
Java 编程语言的主要特点有可移植性高、简单、安全与系统无关、高性能、多线程和动态。它最大的优点就是与平台无关,在Windows 9x、Windows NT、Solaris、Linux、MacOS等其它平台上,都可以直接使用相同的代码。“一次编写,到处运行”的特点,使其在互联网上被普及使用。由于Java语言的设计者们十分熟悉C++语言,所以在设计时很好地借鉴了C++语言。可以说,Java语言是一种比C++语言“还面向对象”的一种编程语言。Java语言的语法结构与C++语言的语法结构十分相似,因此C++程序员学习Java语言更加容易。
Java分为三种技术架构:JAVAEE(Java Platform Enterprise Edition),JAVASE(Java Platform Standard Edition),JAVAME(Java Platform Micro Edition)。JAVAEE针对开发企业环境下的应用程序,主要针对web程序开发,JAVASE针对完成桌面应用程序的开发,是其它两者的基础。JAVAME针对开发电子消费产品和嵌入式设备,如手机中的程序。本系统是基于JAVAEE架构下设计研发的。
2.2 SSH框架
SSH 是 struts+spring+hibernate集成的一个框架,是目前较流行的Web应用程序开源框架之一。SSH框架是典型的J2EE三层结构,分为表现层、中间层(业务逻辑层)和数据服务层。模型是应用程序的主体部分。模型表示业务数据,或者业务逻辑,视图是应用程序中用户界面相关的部分,是用户看到并与之交互的界面,控制器工作就是根据用户的输入,控制用户界面数据显示和更新model对象状态。SSH的整合原理是:把hibernate的配置结合到spring的配置中,用spring管理和调用hibernate的工厂和session等。struts通常有两种。一种是用spring中的一个工厂类代替struts的工厂类去生成action,并且用spring管理
[5]
。 另一种是,struts 用自己的工厂生成action,但是由spring管理,降低了耦
合性。hibernate负责数据库管理。struts页面的请求处理调用相应的底层数据库等。spring负责管理他们两个hibernate与struts的结合。
Struts是一个在JSP基础上实现的MVC框架(MVC:模型Model、视图
3
本科生毕业设计(论文) Viewer、控制器Controller),他的主要设计理念是通过控制器实现表现逻辑和业务逻辑的解耦,以提高系统的可维护性、可扩展性和可重用性[6]。Struts框架的体系结构如图2-1所示。
图2-1 Struts框架的体系结构
Hibernate通过对JDBC的封装,用HQL语句代替SQL语句,为程序员隔离了底层的数据库操作,使程序员可以专注于程序的开发,有助于提高开发效率。Hibernate生命周期如图2-2所示。
图2-2 hibernate生命周期
2.3 JSP框架
JSP(Java Server Pages)是目前主流Web应用开发技术之一,JSP依托强大的
4
本科生毕业设计(论文) JAVA平台和Struts等优秀框,使JSP开发的Web应用程序具有跨平台、高安全性、高效率等特点[7]。
当一个JSP文件第一次被请求时,JSP引擎把该JSP文件转换成为一个servlet。而这个引擎本身也是一个servlet,在JSWDK或WEBLOGIC中,它就是JspServlet。 JSP引擎先把该JSP文件转换成一个java源文件,在转换时如果发现jsp文件有任何语法错误,转换过程将中断,并向服务端和客户端输出出错信息;如果转换成功, JSP引擎用javac把该Java源文件编译成相应的class文件。然后创建一个该SERVLET的实例,该SERVLET的jspInit()方法被执行,jspInit()方法在servlet的生命周期中只被执行一次。然后jspService()方法被调用来处理客户端的请求。对每一个请求,JSP引擎创建一个新的线程来处理该请求。如果有多个客户端同时请求该JSP文件,则JSP引擎会创建多个线程。每个客户端请求对应一个线程[8]。以多线程方式执行可大大降低对系统的资源需求,提高系统的并发量及响应时间。但应该注意多线程的编程限制,由于该servlet始终驻于内存,所以响应是非常快的。 如果.jsp文件被修改了,服务器将根据设置决定是否对该文件重新编译,如果需要重新编译,则将编译结果取代内存中的servlet,并继续上述处理过程。
虽然JSP效率很高,但在第一次调用时由于需要转换和编译而有一些轻微的延迟。 此外,如果在任何时候如果由于系统资源不足的原因,JSP引擎将以某种不确定的方式将servlet从内存中移去[9]。当这种情况发生时jspDestroy()方法首先被调用, 然后servlet实例便被标记加入\垃圾收集\处理。
2.4 javascript框架
JSP在使用时是一般和javscript结合使用,可以将前端界面表现和业务逻辑层解耦分离。分离逻辑层和显示界面的好处是,专业设计前端界面的人员不必懂得Java 代码,而专门负责编写servlet类的人员也不必为网页的样式布局而苦恼,就可以用带servlet类的JSP 页面来定义Web 模型,以建立一个具有整套样式的页面组成的网站[10]。servlet类完成数据提供,这样在前端就没有Java 代码,这意味着这些模型可以由一个专门编写HTML 的开发人员来维护。当然,也可以利用Java Servlet来控制网站的逻辑,通过Java Servlet调用JSP文件的方式来将网站的逻辑和内容分离。
本次设计中用到的js框架主要为JQUERY,JQUEYR是一个Javascript框架。它是轻量级的,它兼容CSS3,还兼容大部分主流浏览器。JQUERY中的AJAX 技术实现了创建快速动态网页,通过部分数据在后台与服务器进行变化,AJAX可以使在不刷新整个网页的情况下,实现网页的局部刷新。此功能已普遍被各大主流网站所应用。以下为AJAX原理图。
5
本科生毕业设计(论文)
图2-3 AJAX工作原理
2.5 数据库MYSQL
MySQL是一个小型关系型数据库管理系统,开发者为瑞典MySQL AB公司。在2008年1月16号被Sun公司收购。而2009年,SUN又被Oracle收购。MySQL是一种关联数据库管理系统,关联数据库将数据 保存在不同的表中,而不是将所有数据放在一个大仓库内。这样就增加了速度并提高了灵活性。MySQL的SQL“结构化查询语言”[11]。SQL是用于访问数据库的最常用标准化语言。MySQL软件采用了GPL(GNU通用公共许可证)。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库[12]。本系统使用C和C++编写,并使用了多种编译器进行测试,保证源代码的可移植性,支持AIX、FreeBSD、HP-UX、Linux、Mac OS、NovellNetware、OpenBSD、OS/2 Wrap、Solaris、Windows等多种操作系统,为多种编程语言提供了API。这些编程语言包括C、C++、Python、Java、Perl、PHP、Eiffel、Ruby和Tcl等,支持多线程,充分利用CPU资源,优化的SQL查询算法,有效地提高查询速度,既能够作为一个单独的应用程序应用在客户端服务器网络环境中,也能够作为一个库而嵌入到其他的软件中提供多语言支持,常见的编码如中文的GB 2312、BIG5,日文的Shift_JIS等都可以用作数据表名和数据列名,提供TCP/IP、ODBC和JDBC等多种数据库连接途径,提供用于管理、检查、优化数据库操作的管理工具,可以处理拥有上千万条记录的大型数据库,支持多种存储引擎。所以本BBS论坛系统也选择Mysql数据库。
2.6 开发环境
2.6.1 软件环境需求
信息系统是以计算机系统为核心建立的系统硬件和软件配置是系统设计的主要内容,本系统采用目前比较流行的B/S(浏览器和/服务器端)模式,因而硬件
6