成都学院学士学位论文(设计) 设计实现论坛网站的主要意义在于:首先,现今JSP在网站设计方面有着突出的优势,因此有必要掌握并熟练应用JSP动态网页设计技术;其次,通过数据库与Web服务器连接来对网站数据进行管理,掌握不同环境的关联与应用;最后,随着网络的发展及人们对知识信息的需求不断提升,网络已成为不可忽视的资讯来源,而论坛网站便能满足这个要求。
研究内容:本课题研究的基本内容是高校学生交流互动平台的实现与开发,它基于SSH框架,采用Java语言,MyEclipse开发工具实现注册、发帖、回帖等系列功能[4]。
课题主要研究并实现的内容有如下几方面:
数据存储与数据库描述,由于论坛需要储存用户及其所发帖子的相关信息,而在论坛运行过程中这类相关数据量会逐渐增大,因此要依据数据库来实现对这些数据的存储和管理。
通常,用户要存有其注册时的ID,用户名,密码等个人信息,以方便网站的管理。同时,论坛中的主题及帖子同样需要相应的信息数据,以方便其分类与管理。根据上述分析,系统数据库中的主要表及其关系如下:
会员信息表(用户ID,用户名,密码,姓名,性别,年龄?);帖子主题表(用户ID,标题,内容,上传的附件,?);帖子回复表(用户ID,内容,?);管理员表(管理员ID,用户名,密码,?)。主表中用户的ID属性为主键。
用户在网站中进行的活动,这是课题的重点工作,涉及到如下内容:会员注册:用户可以注册成为《爱上旅游技论坛》的会员;会员登录:会员注册成功后可以可以登录到网站;查看帖子:会员登录网站后可以浏览网站上的帖子以及发布的信息;回复帖子:会员可以对帖子进行跟帖操作;公告信息:会员登陆网站可以浏览管理员发布的站内资讯;帖子管理:版主可以对自己负责的版块的帖子进行置顶、精华、删除等操作,版主也拥有普通会员所以的功能;版块管理:对版块进行修改、删除、增加等;会员管理:对会员注册信息进管理(锁定);版主设置:管理员为每个版块分配版主;公告管理:管理员发布站内资讯信息;非字符管理:管理员设置非法字符,当会员发布的帖子内容中包含所设置的非法字符时,则以*号取代之。
2
成都学院学士学位论文(设计) 1 相关知识技术
1.1 平台选择
Microsoft软件是日常生活中使用最为广泛的软件,基于这一特点,我们选用的平台是JSP+MySQL数据库,它适应于Windows操作系统并能很好的与其应用程序结合,而且MySQL数据库也易操作,从而大大降低了编程难度。具体开发平台为:采用Internet架构,Bowser/Server模式。Web服务器采用Tomcat 6.0服务器,数据库管理系统为MySQL。
1.2 开发工具介绍
在开发本平台中所用到的开发工具就是是知名的Java项目开发工具MyEclipse。MyEclipse企业级工作平台(MyEclipse Enterprise Workbench,简称MyEclipse)是对Eclipse IDE的一种扩展,利用MyEclipse,我们可以在数据库的开发、发布,以及在应用程序服务器的整合当中极大地提高系统的工作效率。MyEclipse是一个功能非常丰富的集成开发环境,包括了完备的编码、调试、测试和发布功能,完整支持HTML,Struts,JSP,CSS,Javascript,MySQL,Hibernate[5]。
大部分程序员喜欢使用Tomcat,因为它运行时占用的系统资源非常少,扩展性好,而且支持负载平衡等程序开发应用系统最常用的一般功能;目前它还在不断的更新和完善,程序爱好者都可以加入新的功能以实现自己的需求[6]。
Tomcat是一个测试常用的小型服务器,在中小型的系统中(并发访问用户不是很多)被普遍使用,是开发者调试网站程序的第一选择。对于一个实践者来说,可以这样认为,当机器上配置好服务器时,可利用它响应用户对HTML页面访问的请求。实际上Tomcat 只有部分是Apache服务器的扩展,它是独立运行的,所以当我们运行Tomcat服务器时,实际上他是作为一个与Apache独立开来的进程单独运行的程序。
这里的诀窍是,当服务器配置正确时,Apache就可以为HTML页面服务了,而Tomcat实际上运行的是JSP页面和Servlet。再者,Tomcat和IIS、Apache等其他的Web服务器一样,都具有处理HTML页面的能力,另外它还是一个容器[7]。
1.3 数据库技术介绍
MySQL是一个具备完全Web支持的数据库产品,提供了对可扩展标记语言 (XML)的核心支持以及在Internet上和防火墙外进行查询的能力,提供了以网页(Web)标准
3
成都学院学士学位论文(设计) 为基础的数据库扩展功能。MySQL强大的开发工具和各类开发特性大大提高开发效率,同时也进一步拓展应用空间,给使用者带来了新的商业应用机遇[8]。
1.4 系统开发思想与技术
本系统是基于SSH的一个论坛系统,本系统采用JSP技术,基于MVC模式开发。 1.4.1 系统的基本框架
本系统采用JSP技术,基于MVC模式开发,使用JSP+JavaBean+Servlet来增加系统的开发速度。所谓的MVC模式是“Model-View-Controller”的缩写,中文翻译为“模式-视图-控制器”。程序就是用JavaBean和Servlet这两个框架来实现模型层和控制器这两层,JSP实现视图这一层。一般来说程序就是在数据库和页面之间起桥梁作用的,Jsp页面请求先到Servlet,再到JavaBean,再回到Servlet,回到JSP页面,Servlet主要处理来自页面的请求,JavaBean主要是和数据库的交互,使用JDBC技术获取的数据主要封装在JavaBean中[9]。
1.4.2 JSP及JavaBean介绍
JavaBean是用来描述Java的软件组件模型。在Java的软件组件模型中,通过JavaBean就可以扩充Java程序的无限功能,JavaBean的组合可以很快的生成新的应用程序。对于开发者来说,最好的一点莫过于JavaBean可以重复利用代码,另外对于程序的易维护性也得到大大的提高。
JavaBean的正确的执行很大程度上依赖于Java虚拟机(Java Virtual Machine),运行JavaBean最小需要JDK1.1以及以上的版本。JavaBean的传统应用在于可视化的领域。自从拥有了JSP后,JavaBean就更多应用在非可视化领域,服务器端应用方面也表现出越来越强的能力[10]。
就拿发布帖子程序来做例子,我们要实现在发帖这样一个功能,就可以先写一个针对于帖子操作的JavaBean,先建立一个公共的添加成员方法,然后在前台JSP页面中直接调用添加成员的方法来实现。如果我们在后来又想添加帖子时只需要判断数据库的文件中是否有数据,没有数据就不得添加,这个时候我们就可以修改JavaBean的添加方法,加入代码语句来实现,这样就可以不通过前台的JSP页面来修改程序了。
当然,我们也可以把很多的操作都写在JSP页面程序中,不过这样会让我们的JSP页面变的很庞大,这样就不利于我们修改代码了。所以我们知道,JavaBean可以较好地实现逻辑的封装并有利于程序维护等等。
4
成都学院学士学位论文(设计) 复杂的应用涉及大量的代码,因而把业务逻辑和前端的表示相分离就显得格外重要,这种分离可以让任何一方的变化不会影响到另外一方。所以,所有的JSP代码都应该限制在表示层,可是如果这样的话,你如何实现你的业务逻辑呢?这就是JavaBean所做的事情。JavaBean技术是一个独立于平台的组件模型,它让开发者编写、测试通过一个组件后,可以随处使用,提高了复用性。在JSP技术中,JavaBean实现了业务逻辑部分,它把数据返回给JSP页面,由JSP页面负责格式化数据并输出到客户端的浏览器。
1.4.3 SSH简介
SSH在J2EE项目中表示了3种框架,即Spring + Struts +Hibernate。Struts对Model,View和Controller都提供了对应的组件。Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架,它由Rod Johnson创建。它是为了解决企业应用开发的复杂性而创建的。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。 Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,可以应用在任何使用JDBC的场合,可以在Servlet/JSP的Web应用中使用,也可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。
(1)Struts:Struts对Model,View和Controller都提供了对应的组件。 ActionServlet这个类是Struts的核心控制器,负责拦截来自用户的请求。Action这个类通常由用户提供,该控制器负责接收来自ActionServlet的请求,并根据该请求调用模型的业务逻辑方法处理请求,并将处理结果返回给JSP页面显示。
Model部分由ActionForm和JavaBean组成,其中ActionForm用于封装用户的请求参数,封装成ActionForm对象,该对象被ActionServlet转发给Action,Action根据ActionForm里面的请求参数处理用户的请求。JavaBean则封装了底层的业务逻辑,包括数据库访问等[11]。
View部分采用JSP实现。Struts提供了丰富的标签库,通过标签库可以减少脚本的使用,自定义的标签库可以实现与Model的有效交互,并增加了现实功能。
Controller组件有两个部分组成系统核心控制器,业务逻辑控制器。系统核心控制器,对应ActionServlet。该控制器由Struts框架提供,继承HttpServlet类,因此可以配置成标注的Servlet。该控制器负责拦截所有的HTTP请求,然后根据用户请求决定是否要转给业务逻辑控制器。业务逻辑控制器,负责处理用户请求,本身不具备处理能力,而是调用Model来完成处理。对应Action部分。
5
成都学院学士学位论文(设计) (2) Spring简介:用来解决企业应用开发的复杂性,使用基本的JavaBean代替EJB,并提供了更多的企业应用功能,可以任何Java应用简单来说,Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架[12]。
轻量,从大小与开销两方面而言Spring都是轻量的。完整的Spring框架可以在一个大小只有1MB多的JAR文件里发布。并且Spring所需的处理开销也是微不足道的。此外,Spring是非侵入式的:典型地,Spring应用中的对象不依赖于Spring的特定类。
控制反转,Spring通过一种称作控制反转(IoC)的技术促进了松耦合。当应用了IoC,一个对象依赖的其它对象会通过被动的方式传递进来,而不是这个对象自己创建或者查找依赖对象。你可以认为IoC与JNDI相反,不是对象从容器中查找依赖,而是容器在对象初始化时不等对象请求就主动将依赖传递给它。
面向切面,Spring提供了面向切面编程的丰富支持,允许通过分离应用的业务逻辑与系统级服务(例如审计(auditing)和事务(transaction)管理)进行内聚性的开发。应用对象只实现它们应该做的完成业务逻辑仅此而已。它们并不负责(甚至是意识)其它的系统级关注点,例如日志或事务支持。
容器,Spring包含并管理应用对象的配置和生命周期,在这个意义上它是一种容器,你可以配置你的每个Bean如何被创建基于一个可配置原型(Prototype),你的Bean可以创建一个单独的实例或者每次需要时都生成一个新的实例,以及它们是如何相互关联的。然而,Spring不应该被混同于传统的重量级的EJB容器,它们经常是庞大与笨重的,难以使用。
框架,Spring可以将简单的组件配置、组合成为复杂的应用。在Spring中,应用对象被声明式地组合,典型地是在一个XML文件里。Spring也提供了很多基础功能(事务管理、持久化框架集成等等),将应用逻辑的开发留给了你。
所有Spring的这些特征使你能够编写更干净、更可管理、并且更易于测试的代码。它们也为Spring中的各种模块提供了基础支持。
(3)Hibernate简介:Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。Hibernate的核心接口一
6