ImageVerifierCode 换一换
格式:DOCX , 页数:53 ,大小:1.93MB ,
资源ID:6455136      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/6455136.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(纪少伟毕业论文.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

纪少伟毕业论文.docx

1、纪少伟毕业论文诚信申明本人申明:我所呈交的本科毕业设计(论文)是本人在导师指导下进行的研究工作的全面总结。尽我所知,除了文中特别加以标注和致谢中所罗列的内容以外,论文中创新处不包含其他人已经发表或撰写过的研究成果,也不包含为获得北京化工大学或其它教育机构的学位或证书而已经使用过的材料。此项目(论文)由我本人独立完成。若有不实之处,本人承担一切相关责任。本人签名: 年 月 日基于Struts框架的校友录开发与设计 纪少伟软件工程专业 软件0602班 学号060203038指导教师 戴明辉讲师摘要Struts是一个优秀的基于J2EE平台的MVC框架,它简化了WEB层的开发,实现了应用程序的显示逻辑

2、和业务逻辑的分离。Hibernate是一个功能强大、高性能、非常流行的ORM工具,它推动了基于普通Java对象模型、用于映射底层数据结构的持久对象的开发,能够提供高级数据查询和检索服务。将这两种技术结合起来开发J2EE应用,能极大的提高开发效率,使系统具有更好的可维护性和可扩展性。这种开发策略正逐渐被众多程序员所接受,在实际开发中得到广泛的应用。 校友录,是一种为用户提供网上交流、聚会的网络工具,它可以使你和你的朋友、同学、同事、老师与亲人等在网上有一个相互交流的机会。假如你是在校学生,拥有校友录,你可以在寒暑假时通过它了解班上同学、老师的情况或者发布你的消息;同时,你如果毕业了,可以约上旧同

3、学加入校友录,这样无论你身在何处,都可以随时上网在校友录里与你的旧同学交流;又或者你是公司员工或者老板,你可以在出差时通过校友录了解公司情况或者汇报情况。同时,你若离家,还可以通过校友录和家人联系。关键词:校友录信息管理 Struts-based Classmates SystemAbstractStruts is an excellent MVC framework based on J2EE Platform, It simplifies the development of WEB-layer, to achieve the applications display layer and

4、model layer separation Hibernate is a powerful, high -Performance, a very popular ORM tool, It is promoted based on common Java object model, the underlying data structure used to map the development of persistent objects, can provide advanced data query and retrieval services The two Kinds of techn

5、ology, combined development of J2EE applications, can greatly improve development efficiency; the system has better maintainability and scalability This development strategy is gradually being accepted by many programmers in practicalThe alumni records is the network tool that provides on-line excha

6、nges, party for the customer, it can make you have an opportunity to communicate mutually on the net with your friend, classmate, colleague, teacher and close relatives etc If you are the student in school, owning an alumni to record, you can at winter and summer vacation pass the circumstance that

7、it understands class classmate, teacher to release your news perhaps; In the meantime, if you graduated, you can invite and join an alumni and record up the old classmate, so regardless your body can get to the Internet in the alumni record with your old classmate exchanges at any time where and all

8、; Again perhaps you are the employee of the company perhaps boss, you can while being on business pass an alumni to record an understandings companys circumstance to make collective report a circumstance perhaps In the meantime, if you leave home, you can also pass an alumnus to record to contact wi

9、th family Key words: AlumniInformationmanagement目录前言 1第1章课题研究价值 2第1.1节选题背景 2第1.2节项目内容 2第1.3节系统设计目标 3第1.4节系统所用技术分析 3第1.5节系统可行性分析 14第2章方案论证 16第2.1节总体设计思想 16第2.2节系统示意图 16第3章结构与数据库设计 18第3.1节结构设计 18第3.2节数据库设计 18第4章功能详细设计 23第4.1节用户模块 23第4.2节用户管理模块 34第4.3节站内留言模块 37第4.4节站内新闻模块 43第5章测试方法与报告 49第5.1节测试的目的与原则 4

10、9第5.2节子系统的测试 50第5.3节测试结果 51结论 52附录 53参考文献 55致谢 56前言计算机技术的快速发展,特别是计算机网络的发展,越来越深刻的改变了人们生活的方方面面。使得人们能以更低廉的价格,开发出更方便、更实用的网络工具。各种在线服务系统,更是深刻的影响了人们的联系方式,使得人们可以在远隔千里之遥随时通讯。过去的种种陈旧的联系方式,已经不能满足现代生活的需要。校友录作为一种方便校友之间联系的实用系统便应运而生。校友录为校友之间进行交流和联系提供了一个平台。通过提供完善的校友录服务和规范校友录的管理,可以达到增进校友之间、校友与母校之间的感情,方便校友联系的目的。 第1章

11、课题研究价值第1.1节选题背景 目前网络上已经存在很多校友录,像ChinaRen、网易、新浪、5460等,它们都有各自的特色,当然也有一不足。比如: ChinaRen的校友录,速度快,但功能单一,突出留言功能;5640的则功能比较新颖,界面朴素,但速度慢;新浪的功能较全,但界面很花哨,不易适应。所以我将设计一个校友录管理网站,以友好的界面,快捷的操作完成强大的功能第1.节项目内容校友录管理网站是基于Struts2,hibernate,MYSQL数据库系统开发的应用系统,它充分利用计算机及网络的数据处理、数据协同、数据分析的能力,也从根本上加强并促进了同学间的联系交流及有效的管理等,进而增强了交

12、流和管理。项目的内容主要包括: (1)用户模块:实现了用户的注册,登陆,用户信息显示,修改用户详细信息,修改用户登陆密码,显示用户好友列表(分页),显示某好友的详情,新增好友,删除好友,修改好友详细信息,发表站内留言。(2)站内留言功能:实现了用户的发表站内留言,后台管理员的查看留言(分页),查看被置顶的留言(分页),查看留言详情,置顶留言,取消置顶留言,删除留言。 (3)站内新闻功能:实现了后台管理员的发表站内新闻,后台管理员的查看新闻列表(分页),查看被置顶的新闻列表(分页),查看站内新闻详细内容,置顶站内新闻,取消置顶站内新闻,删除站内新闻。 (4)用户管理:实现了后台管理员对用户的管理

13、,包括查看用户列表(分页),查看被冻结的用户列表(分页),删除用户信息,冻结用户账户,将冻结用户账户恢复正常。 (5)用户好友的导出,可导出成Excel格式。第1.3节系统设计目标首先要操作界面友好、功能多、操作简单,功能强大。其次数据库设计合理,减少冗余数据,提高系统效率。技术方面应用JSP技术,前台采用HTML,CSS实现,程序用struts2+hibernate的J2EE框架完成,充分做到高效性和高维护性,后台数据库使用MySql。第1.4节系统所用技术分析虽然Struts2号称是一个全新的框架,但这仅仅是相对Struts 1而言。Struts 2 与Struts 1相比,确实有很多革命

14、性的改进,但它并不是新发布的新框架,而是在另一个赫赫有名的框架:webwork的基础上发展起来的。从某种程度上来讲,Struts2没有继承Struts 1的血统,而是继承WebWork的血统。或者说,WebWork衍生出了Struts2,而不是Struts 1衍生了Struts2。因为Struts2是WebWork的升级,而不是一个全新的框架,因此稳定性、性能等各方面都有很好的保证:而且吸收了Struts 1和WebWork两者的优势,因此,是一个非常值得期待的框架。Apache Struts2是一个优雅的,可扩展的JAVA EE web框架。框架设计的目标贯穿整个开发周期,从开发到发布,包括

15、维护的整个过程。Apache Struts 2即是之前大家所熟知的WebWork 2。在经历了几年的各自发展后,WebWork和Struts社区决定合二为一,也即是Struts 2。Struts2和Struts1的不同:Action 类: Struts1要求Action类继承一个抽象基类。Struts1的一个普遍问题是使用抽象类编程而不是接口。 Struts 2 Action类可以实现一个Action接口,也可实现其他接口,使可选和定制的服务成为可能。Struts2提供一个ActionSupport基类去实现 常用的接口。Action接口不是必须的,任何有execute标识的POJO对象都可以

16、用作Struts2的Action对象。线程模式: Struts1 Action是单例模式并且必须是线程安全的,因为仅有Action的一个实例来处理所有的请求。单例策略限制了Struts1 Action能做的事,并且要在开发时特别小心。Action资源必须是线程安全的或同步的。 Struts2 Action对象为每一个请求产生一个实例,因此没有线程安全问题。实际上,servlet容器给每个请求产生许多可丢弃的对象,并且不会导致性能和垃圾回收问题。 Servlet 依赖: Struts1Action 依赖于Servlet API ,当一个Action被调用时HttpServletRequest 和

17、 HttpServletResponse 被传递给execute方法。 Struts 2 Action不依赖于容器,允许Action脱离容器单独被测试。如果需要,Struts2 Action仍然可以访问初始的request和response。但是,其他的元素减少或者消除了直接访问HttpServetRequest 和 HttpServletResponse的必要性。 可测性: 测试Struts1 Action的一个主要问题是execute方法暴露了servlet API(这使得测试要依赖于容器)。一个第三方扩展Struts TestCase提供了一套Struts1的模拟对象(来进行测试)。 S

18、truts 2 Action可以通过初始化、设置属性、调用方法来测试,“依赖注入”支持也使测试更容易。 捕获输入: Struts1 使用ActionForm对象捕获输入。所有的ActionForm必须继承一个基类。因为其他JavaBean不能用作ActionForm,开发者经常创建多余的类捕获输入。动态Bean(DynaBeans)可以作为创建传统ActionForm的选择,但是,开发者可能是在重新描述(创建)已经存在的JavaBean(仍然会导致有冗余的javabean)。 Struts 2直接使用Action属性作为输入属性,消除了对第二个输入对象的需求。输入属性可能是有自己(子)属性的r

19、ich对象类型。Action属性能够通过web页面上的taglibs访问。Struts2也支持ActionForm模式。rich对象类型,包括业务对象,能够用作输入/输出对象。这种ModelDriven 特性简化了taglib对POJO输入对象的引用。表达式语言: Struts1 整合了JSTL,因此使用JSTL EL。这种EL有基本对象图遍历,但是对集合和索引属性的支持很弱。 Struts2可以使用JSTL,但是也支持一个更强大和灵活的表达式语言Object Graph Notation Language (OGNL) 绑定值到页面(view): Struts 1使用标准JSP机制把对象绑定

20、到页面中来访问。 Struts 2 使用 ValueStack技术,使taglib能够访问值而不需要把你的页面(view)和对象绑定起来。ValueStack策略允许通过一系列名称相同但类型不同的属性重用页面(view)。 类型转换: Struts 1 ActionForm 属性通常都是String类型。Struts1使用Commons-Beanutils进行类型转换。每个类一个转换器,对每一个实例来说是不可配置的。 Struts2 使用OGNL进行类型转换。提供基本和常用对象的转换器。 校验: Struts 1支持在ActionForm的validate方法中手动校验,或者通过Commons

21、 Validator的扩展来校验。同一个类可以有不同的校验内容,但不能校验子对象。 Struts2支持通过validate方法和XWork校验框架来进行校验。XWork校验框架使用为属性类类型定义的校验和内容校验,来支持chain校验子属性 Action执行的控制: Struts1支持每一个模块有单独的Request Processors(生命周期),但是模块中的所有Action必须共享相同的生命周期。 Struts2支持通过拦截器堆栈(Interceptor Stacks)为每一个Action创建不同的生命周期。堆栈能够根据需要和不同的Action一起使用。 Struts2的工作流程图如下:

22、 图11struts2的工作流程图当接收到一个httprequestInterceptor做一些拦截或者初始的工作,当外部的httpservletrequest到来时初始到了servlet容器, 传递给一个标准的过滤器链ActionContextCleanUp这个在集成插件方面非常有用Other filters(SitMesh,etc),调用FilterDispatecher会去查找相应的ActionMapper。如果找到了相应的ActionMapper它将会将控制权限交给ActionProxy。ActionProxy将会通过ConfigurationManager来查找配置strutsxml

23、。下一步将会 通过ActionInvocation来负责命令模式的实现(包括调用一些拦截Interceptor框架在调用action之前)。一旦action返回,会查找相应的Result。Result类型可以是 jsp或者freeMark 等。这些组件和ActionMapper一起返回给请求的url(注意拦截器的执行顺序)。响应的返回是通过我们在webxml中配置的过滤器,如果ActionContextCleanUp是当前使用的,则FilterDispatecher将不会清理sreadlocal ActionContext。如果ActionContextCleanUp不使用,则将会去清理sre

24、adlocals。Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。Hibernate的核心接口一共有5个,分别为:Session、SessionFactory、Transaction、Query和Configuration。这5个核心接口在任何开发中都

25、会用到。通过这些接口,不仅可以对持久化对象进行存取,还能够进行事务控制。下面对这五个核心接口分别加以介绍。Session接口:Session接口负责执行被持久化对象的CRUD操作(CRUD的任务是完成与数据库的交流,包含了很多常见的SQL语句。)。但需要注意的是Session对象是非线程安全的。同时,Hibernate的session不同于JSP应用中的HttpSession。这里当使用session这个术语时,其实指的是Hibernate中的session,而以后会将HttpSesion对象称为用户session。SessionFactory接口:SessionFactory接口负责初始化H

26、ibernate。它充当数据存储源的代理,并负责创建Session对象。这里用到了工厂模式。需要注意的是SessionFactory并不是轻量级的,因为一般情况下,一个项目通常只需要一个SessionFactory就够,当需要操作多个数据库时,可以为每个数据库指定一个SessionFactory。Configuration接口:Configuration接口负责配置并启动Hibernate,创建SessionFactory对象。在Hibernate的启动的过程中,Configuration类的实例首先定位映射文档位置、读取配置,然后创建SessionFactory对象。 Transaction

27、接口:Transaction接口负责事务相关的操作。它是可选的,开发人员也可以设计编写自己的底层事务处理代码。Query和Criteria接口:Query和Criteria接口负责执行各种数据库查询。它可以使用HQL语言或SQL语句两种表达方式。 Hibernate主键介绍AssignedAssigned方式由用户生成主键值,并且要在save()之前指定否则会抛出异常。特点:主键的生成值完全由用户决定,与底层数据库无关。用户需要维护主键值,在调用sessionsave()之前要指定主键值。HiloHilo使用高低位算法生成主键,高低位算法使用一个高位值和一个低位值,然后把算法得到的两个值拼接起

28、来作为数据库中的唯一主键。Hilo方式需要额外的数据库表和字段提供高位值来源。默认请况下使用的表是hibernate_unique_key,默认字段叫作next_hi。next_hi必须有一条记录否则会出现错误。特点:需要额外的数据库表的支持,能保证同一个数据库中主键的唯一性,但不能保证多个数据库之间主键的唯一性。Hilo主键生成方式由Hibernate 维护,所以Hilo方式与底层数据库无关,但不应该手动修改hi/lo算法使用的表的值,否则会引起主键重复的异常。IncrementIncrement方式对主键值采取自动增长的方式生成新的主键值,但要求底层数据库的支持Sequence。如Orac

29、le,DB2等。需要在映射文件xxxhbmxml中加入Increment标志符的设置。特点:由Hibernate本身维护,适用于所有的数据库,不适合多进程并发更新数据库,适合单一进程访问数据库。不能用于群集环境。IdentityIdentity当时根据底层数据库,来支持自动增长,不同的数据库用不同的主键增长方式。特点:与底层数据库有关,要求数据库支持Identity,如MySQl中是auto_increment, SQL Server 中是Identity,支持的数据库有MySql、SQL Server、DB2、Sybase和HypersonicSQL。 Identity无需Hibernate

30、和用户的干涉,使用较为方便,但不便于在不同的数据库之间移植程序。SequenceSequence需要底层数据库支持Sequence方式,例如Oracle数据库等。特点:需要底层数据库的支持序列,支持序列的数据库有DB2、PostgreSql、Qracle、SAPDb等在不同数据库之间移植程序,特别从支持序列的数据库移植到不支持序列的数据库需要修改配置文件。NativeNative主键生成方式会根据不同的底层数据库自动选择Identity、Sequence、Hilo主键生成方式。特点:根据不同的底层数据库采用不同的主键生成方式。由于Hibernate会根据底层数据库采用不同的映射方式,因此便于程

31、序移植,项目中如果用到多个数据库时,可以使用这种方式。UUIDUUID使用128位UUID算法生成主键,能够保证网络环境下的主键唯一性,也就能够保证在不同数据库及不同服务器下主键的唯一性。特点;能够保证数据库中的主键唯一性,生成的主键占用比较多的存贮空间。Foreign GUIDForeign用于一对一关系中。GUID主键生成方式使用了一种特殊算法,保证生成主键的唯一性,支持SQL Server和MySQL。Hibernate源码中几个包的作用简要介绍netsfhibernate* 该包的类基本上都是接口类和异常类 netsfhibernatecache* JCS的实现类 netsfhibernatecfg* 配置文件读取类 netsfhibernatecollection* Hibernate集合接口实现类,例如List,Set,Bag等等,Hibernate之所以要自行编写集合接口实现类是为了支持lazy loading netsfhibernateconnection* 几个数据库连接池的Provider netsfhibernatedialect* 支持多种数据库特性,每个Dialect实现类代表一种数据库,描述了该数据库支持的数据类型和其它特点,例如是否有AutoIncrement,是否有Seq

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1