毕业设计(论文)基于SSH的校内网系统的设计与实现.doc

上传人:laozhun 文档编号:3979967 上传时间:2023-03-30 格式:DOC 页数:43 大小:755.50KB
返回 下载 相关 举报
毕业设计(论文)基于SSH的校内网系统的设计与实现.doc_第1页
第1页 / 共43页
毕业设计(论文)基于SSH的校内网系统的设计与实现.doc_第2页
第2页 / 共43页
毕业设计(论文)基于SSH的校内网系统的设计与实现.doc_第3页
第3页 / 共43页
毕业设计(论文)基于SSH的校内网系统的设计与实现.doc_第4页
第4页 / 共43页
毕业设计(论文)基于SSH的校内网系统的设计与实现.doc_第5页
第5页 / 共43页
点击查看更多>>
资源描述

《毕业设计(论文)基于SSH的校内网系统的设计与实现.doc》由会员分享,可在线阅读,更多相关《毕业设计(论文)基于SSH的校内网系统的设计与实现.doc(43页珍藏版)》请在三一办公上搜索。

1、基于SSH的校内网系统的设计与实现院系名称软件学院姓名学号20077712804专业计算机辅助设计指导教师2010年12月7日目录1 引言41.1 研究的背景和意义41.2 论文的组织结构42 系统相关技术42.1STRUTS42.1.1 Struts 体系结构42.1.2 Struts框架中的组件52.2 HIBERNATE72.2.1 Hibernate核心接口82.3 SPRING82.4 AJAX92.4.1 几种技术93 系统分析103.1 系统需求分析103.2 系统功能分析103.3 系统功能模块结构图114 数据库设计124.1 数据库概念结构设计124.2 数据库设计235

2、系统设计与实现255.1 开发工具与环境255.2 各模块设计与实现265.2.1 注册265.2.2 登陆295.2.3 日志305.2.4 个人资料335.2.5 留言355.2.6 相册365.2.7 状态375.2.8 好友375.2.9 分享385.2.10 通知385.2.11 好友访问385.2.12 访问好友385.2.13 安全中心395.2.14 退出395.3 统一编码395.3.1 说明395.3.2 关键代码396 结束语41参考文献42致 谢431 引言1.1 研究的背景和意义SNS:Social Network Service,社交网络服务,依据六度理论,以认识朋

3、友的朋友为基础,扩展自己的人脉。并且无限扩张自己的人脉,在需要的时候,可以随时获取一点,得到该人脉的帮助。 SNS网站,就是依据六度理论建立的网站,帮你运营朋友圈的朋友。校内网给不同身份的人提供了一个全方位的互动交流平台,大大提高了用户之间的交流效率降低了维护用户之间交流的成本,通过提供发布日志、保存相册、音乐视频等站内外资源分享等功能搭建了一个功能丰富高效的用户交流互动平台。1.2 论文的组织结构论文的第二部分介绍系统相关技术,包括SSH三大框架,介绍了Struts、Hibernate、Spring三大框架的结构等,另外介绍了Ajax的各项技术。论文的第三部分对系统进行需求分析,功能分析,并

4、划分系统模块。论文的第四部分为系统数据库的设计,从概念设计,逻辑设计方面对数据库。论文的第五部分为系统具体的设计与实现,包括系统开发环境和工具,系统各模块的设计和实现,及三大框架的应用体现。2 系统相关技术2.1 StrutsStruts是Apache 基金会Jakarta 项目组的一个Open Source 项目,它采用MVC模式,能够很好地帮助java 开发者利用J2EE开发Web应用。和其他的java架构一样,Struts 也是面向对象设计,将MVC模式分离显示逻辑和业务逻辑的能力发挥得淋漓尽致。2.1.1 Struts 体系结构让我们从MVC角度观察struts框架中的组件 框架中三个

5、部分:模型,视窗和控制器。 1 模型 在struts框架中,模型分为两个部分: 系统的内部状态;可以改变状态的操作(事务逻辑)。内部状态通常由一组ActionForm JavaBean表示。根据设计或应用程序复杂度的不同,这些Bean可以是自包含的并具有持续的状态,或只在需要时才获得数据(从某个数据库)。 大型应用程序通常在方法内部封装事务逻辑(操作),这些方法可以被拥有状态信息的bean调用。比如购物车bean,它拥有用户购买商品的信息,可能还有checkOut()方法用来检查用户的信用卡,并向仓库发定货信息。 小型程序中,操作可能会被内嵌在Action类,它是struts框架中控制器角色的

6、一部分。当逻辑简单时这个方法很适合。 建议用户将事务逻辑(要做什么)与Action类所扮演的角色(决定做什么)分开。 2 视窗 由JSP建立,struts包含扩展自定义标签库,可以简化创建完全国际化用户界面的过程。 3 控制器 struts中,基本的控制器组件是ActionServle类中的实例servlet,实际使用的servlet在配置文件中由一组映射(由ActionMapping类进行描述)进行定义。2.1.2 Struts框架中的组件框架中所使用的组件: 1 ActionServlet 控制器 框架中的控制器组件是有org.apache.struts.action.ActionServ

7、let类实现的,这个类是javax.servlet.http.HttpServlet类的扩展。 Struts controller基本功能是: (1) 截获用户的Http请求 。(2) 把这个请求映射到相应的Action类,如果这是此类收到的第一个请求,将初始化实例并缓存。 (3) 创建或发现一个ActionForm bean实例(看配置文件是否定义),然后将请求过程移植到bean。(4) 调用Action实例的perform()方法并将ActioForm bean,Action Mapping对象,request和response对象传给它。(5) perform返回一个ActionForw

8、ord对象,此对象连接到相应的jsp页面。2 ActionClass 包含事务逻辑 Action类真正实现应用程序的事务逻辑,它们负责处理请求。在收到请求后,ActionServlet会: 为这个请求选择适当的Action 如果需要,创建Action的一个实例调用Action的perform()方法如果ActionServlet不能找到有效的映射,它会调用默认的Action类(在配置文件中定义)。如果找到了ActionServlet将适当的ActionMapping类转发给Action,这个Action使用ActionMapping找到本地转发,然后获得并设置ActionMapping属性。根

9、据servlet的环境和被覆盖的perform()方法的签名,ActionServlet也会传送ServletRequest对象或HttpServletRequest对象。3 ActionForm 显示模块数据 框架假设用户在应用程序中为每个表单都创建了一个ActionForm bean,对于每个在struts-config.xml文件中定义的bean,框架在调用Action类的perform()方法之前会进行以下操作: 在相关联的关键字下,它检查用于适当类的bean实例的用户会话,如果在会话中没有可用的bean,它就会自动创建一个新的bean并添加到用户的会话中。 对于请求中每个与bean属

10、性名称对应的参数,Action调用相应的设置方法。当Action perform()被调用时,最新的ActionForm bean传送给它,参数值就可以立即使用了。 ActionForm类扩展org.apache.struts.action.ActionForm类,程序开发人员创建的bean能够包含额外的属性,而且ActionServlet可能使用反射(允许从已加载的对象中回收信息)访问它。 ActionForm类提供了另一种处理错误的手段,提供两个方法: Public ActionErrors validate(ActionMappin mapping, ServletRequest req

11、uest) Public ActionErrors validate(ActionMappin mapping, HttpServletRequest request) 你应该在自己的bean里覆盖validate()方法,并在配置文件里设置元素的validate为true。在ActionServlet调用Action类前,它会调用validate(),如果返回的ActionErrors不是null,则ActinForm会根据错误关键字将ActionErrors存储在请求属性列表中。 如果返回的不是null,而且长度大于0,则根据错误关键字将实例存储在请求的属性列表中,然后ActionServ

12、let将响应转发到配置文件元素的input属性所指向的目标。 如果需要执行特定的数据有效性检查,最好在Action类中进行这个操作,而不是在ActionForm类中进行。 方法reset()可将bean的属性恢复到默认值: public void reset(ActionMapping mapping,HttpServletRequest request) public void reset(ActionMapping mapping,ServletRequest request) 典型的ActionFrom bean只有属性的设置与读取方法(getXXX),而没有实现事务逻辑的方法。只有简单

13、的输入检查逻辑,使用的目的是为了存储用户在相关表单中输入的最新数据,以便可以将同一网页进行再生,同时提供一组错误信息,这样就可以让用户修改不正确的输入数据。而真正对数据有效性进行检查的是Action类或适当的事务逻辑bean。4 ActionMapping 帮助控制器将请求映射到操作 将特定请求映射到特定Action的相关信息存储在ActionMapping中,ActionServelt将ActionMapping传送到Action类的perform()方法,Action将使用ActionMapping的findForward()方法,此方法返回一个指定名称的ActionForward,这样A

14、ction就完成了本地转发。若没有找到具体的ActionForward,就返回一个null。 5 ActionForward 用来指示操作转移的对象 目的是控制器将Action类的处理结果转发至目的地。 Action类获得ActionForward实例的句柄,然后可用三种方法返回ActionServlet,所以我们可以这样使用findForward(): ActionServlet根据名称获取一个全局转发 ActionMappin实例被传送到perform()方法,并根据名称找到一个本地转发 6 ActionError 用来存储和回收错误 struts提供了两个类来处理错误:ActionErr

15、ors和ActionError,它们都扩展org.apache.struts.action。ActionErrors保存着ActionError对象的集合,其中每一个代表了独立的错误信息。每个ActionError都包含了关键字,能够映射到资源文件中存储的错误信息,而这个资源文件是在ActionServlet初始化参数中指定的。 7 Struts标记库 可以减轻开发显示层次的工作2.2 HibernateHibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate可以应用在任何使

16、用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。2.2.1 Hibernate核心接口Hibernate的核心接口一共有5个,分别为:Session、SessionFactory、Transaction、Query和Configuration。这5个核心接口在任何开发中都会用到。通过这些接口,不仅可以对持久化对象进行存取,还能够进行事务控制。下面对这五个核心接口分别加以介绍。 1 Session 接口: Session接口负责执行被持久化对

17、象的CRUD操作(CRUD的任务是完成与数据库的交流,包含了很多常见的SQL语句。)。但需要注意的是Session对象是非线程安全的。同时,Hibernate的session不同于JSP应用中的HttpSession。这里当使用session这个术语时,其实指的是Hibernate中的session,而以后会将HttpSesion对象称为用户session。 2 SessionFactory 接口: SessionFactory接口负责初始化Hibernate。它充当数据存储源的代理,并负责创建Session对象。这里用到了工厂模式。需要注意的是SesionFactory并不是轻量级的,因为一

18、般情况下,一个项目通常只需要一个SessionFactory就够,当需要操作多个数据库时,可以为每个数据库指定一个SessionFactory。 3 Configuration接口:Configuration接口负责配置并启动Hibernate,创建SessionFactory对象。在Hibernate的启动的过程中,Configuration类的实例首先定位映射文档位置、读取配置,然后创建SessionFactory对象。4 Transaction 接口:Transaction接口负责事务相关的操作。它是可选的,开发人员也可以设计编写自己的底层事务处理代码。5 Query和Criteria

19、接口:Query和Criteria接口负责执行各种数据库查询。它可以使用HQL语言或SQL语句两种表达方式2.3 Spring1 目的:解决企业应用开发的复杂性 2 功能:使用基本的JavaBean代替EJB,并提供了更多的企业应用功能 3 范围:任何Java应用 ,简单来说,Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。4 轻量从大小与开销两方面而言Spring都是轻量的。完整的Spring框架可以在一个大小只有1MB多的JAR文件里发布。并且Spring所需的处理开销也是微不足道的。此外,Spring是非侵入式的:典型地,Spring应用中的对象不依赖于Spr

20、ing的特定类。 5 控制反转Spring通过一种称作控制反转(IoC)的技术促进了松耦合。当应用了IoC,一个对象依赖的其它对象会通过被动的方式传递进来,而不是这个对象自己创建或者查找依赖对象。你可以认为IoC与JNDI相反不是对象从容器中查找依赖,而是容器在对象初始化时不等对象请求就主动将依赖传递给它。 6 面向切面Spring提供了面向切面编程的丰富支持,允许通过分离应用的业务逻辑与系统级服务(例如审计(auditing)和事务(transaction)管理)进行内聚性的开发。应用对象只实现它们应该做的完成业务逻辑仅此而已。它们并不负责(甚至是意识)其它的系统级关注点,例如日志或事务支持

21、。 7 容器Spring包含并管理应用对象的配置和生命周期,在这个意义上它是一种容器,你可以配置你的每个bean如何被创建基于一个可配置原型(prototype),你的bean可以创建一个单独的实例或者每次需要时都生成一个新的实例以及它们是如何相互关联的。然而,Spring不应该被混同于传统的重量级的EJB容器,它们经常是庞大与笨重的,难以使用。 8 框架Spring可以将简单的组件配置、组合成为复杂的应用。在Spring中,应用对象被声明式地组合,典型地是在一个XML文件里。Spring也提供了很多基础功能(事务管理、持久化框架集成等等),将应用逻辑的开发留给了你。 2.4 AjaxAJAX

22、即“Asynchronous JavaScript and XML”(异步JavaScript和XML),AJAX并非缩写词,而是由Jesse James Gaiiett创造的名词,是指一种创建交互式网页应用的网页开发技术。这个术语源自描述从基于网页的Web应用到基于数据的应用的转换。在基于数据的应用中,用户需求的数据如联系人列表,可以从独立于实际网页的服务端取得并且可以被动态地写入网页中,给缓慢的Web应用体验着色使之像桌面应用一样。2.4.1 几种技术1 JavaScript 名字所示,AJAX的概念中最重要而最易被忽视的是它也是一种JavaScript编程语言。JavaScript是一种

23、粘合剂使AJAX应用的各部分集成在一起。在大部分时间,JavaScript通常被服务端开发人员认为是一种企业级应用不需要使用的东西应该尽力避免。这种观点来自以前编写JavaScript代码的经历:繁杂而又易出错的语言。类似的,它也被认为将应用逻辑任意地散布在服务端和客户端中,这使得问题很难被发现而且代码很难重用。在AJAX中JavaScript主要被用来传递用户界面上的数据到服务端并返回结果。XMLHttpRequest对象用来响应通过HTTP传递的数据,一旦数据返回到客户端就可以立刻使用DOM将数据放到网面上。 2 XMLHttpRequest XMLHttpRequest对象在大部分浏览器

24、上已经实现而且拥有一个简单的接口允许数据从客户端传递到服务端,但并不会打断用户当前的操作。使用XMLHttpRequest传送的数据可以是任何格式,虽然从名字上建议是XML格式的数据。 开发人员应该已经熟悉了许多其他XML相关的技术。XPath可以访问XML文档中的数据,但理解XML DOM是必须的。类似的,XSLT是最简单而快速的从XML数据生成HTML或XML的方式。许多开发人员已经熟悉Xpath和XSLT,因此AJAX选择XML作为数据交换格式是有意义的。XSLT可以被用在客户端和服务端,它能够减少大量的用JavaScript编写的应用逻辑。 3 CSS 为了正确的浏览AJAX应用,CS

25、S是一种AJAX开发人员所需要的重要武器。CSS提供了从内容中分离应用样式和设计的机制。虽然CSS在AJAX应用中扮演至关重要的角色,但它也是构建跨浏览器应用的一大阻碍,因为不同的浏览器厂商支持各种不同的CSS级别。 4 服务器端 但不像在客户端,在服务端AJAX应用还是使用建立在如Java,.Net和PHP语言基础上机制;并没有改变这个领域中的主要方式。3 系统分析3.1 系统需求分析本系统针对校内网的实际需求,通过具体的需求分析,而设计出来的。本系统采用SSH(Struts-Hibernate-Spring)架构进行设计和开发,建设了B/S模式的三层体系结构。采用MyEclipse作为主要

26、的开发工具,Sql Server 2005作为后台数据库,Tomcat作为web服务器。本系统还适当地使用了web2.0技术-Ajax,用异步传输的方式来增强用户体验。用户可以进行注册、登录、留言及寻找好友等操作。3.2 系统功能分析1 注册功能用户可通过唯一账号在完成基本信息(密码、生日、性别等)填写后,注册为校内网会员。方可使用校内网提供的功能。2 登陆功能校内网注册用户可凭唯一账号和密码登陆校内网,以使用其提供的功能。3 个人资料用户可编辑个人资料,上传个人头像。4 日志用户可创建日志分类,发表日志,查看、编辑和删除已发表日志,查看日志已阅读数,评论数及评论,可对日志发表评论。5 相册用

27、户可创建相册,上传相片,浏览相片,对相片添加描述,对相片进行评论。6 留言用户可发表留言,查看留言,查看留言回复。7 状态留言用户可发表状态留言,查看状态留言及其回复。8 好友用户可查看好友列表,根据好友姓名,学校,工作单位等信息搜索好友,可对特定人请求加为好友。9 通知用户可查看最新通知,如好友请求消息,未查看留言,未查看状态回复,未查看日志、相册和分享的评论。10 分享用户可分享好友的相册,日志,可查看自己的分享。11 好友访问用户可查看最近访问者,查看已访问人数。12 安全中心用户可修改现有密码,创建或修改密保问题及答案,用户可在此找回密码。13 访问好友用户可访问好友主页,可浏览好友相

28、册、日志及分享,并可分享及评论;可查看好友状态,并对状态进行评论;可给好友留言,并对好友留言进行回复。14 退出用户在完成各项操作后可选择退出系统。3.3 系统功能模块结构图通过以上对系统功能的分析,可对系统功能进行模块划分,系统功能模块结构图如图3-1所示。校内网学日志管理课个人资料注好友帮通知通用户注册教相册管理信状态毕留言通用户登陆课分享帮好友访问帮访问好友帮安全中心帮退出。图3-1 系统功能模块结构图4 数据库设计4.1 数据库设计 1 ren(表4-1)ren表用于存放注册用户的账号,密码,姓名,性别,生日,家乡,所在地,头像路径等基本信息,以及学校信息,工作信息,兴趣爱好,联系方式

29、等。表4-1 ren表列名数据类型长度可否为空描述备注u_idintnot null标识列主键u_accountnvarchar20not null账号唯一u_passnvarchar20not null密码u_namenvarchar20not null姓名u_birthnvarchar23not null生日u_sexbitnot null性别u_addreint故乡外键u_homeint所在地外键u_head_imgnvarchar50头像路径u_gradeint等级u_famousint好友访问量u_work_unitnvarchar工作单位u_work_positionnvarcha

30、r职位u_work_entry_timenvarchar入职时间u_work_tradeint行业外键u_collint大学外键u_coll_deptint院系外键u_coll_entry_timeint入学年份外键u_highint高中u_high_entry_yearint入学年份外键u_high_class_firint高一班级u_high_class_secint高二班级u_high_class_thiint高三班级u_techint中专技校u_tech_entry_yearint入学年份外键u_juniint初中u_juni_entry_yearint入学年份外键u_elemint小

31、学u_elem_entry_yearint入学年份外键u_qqnvarchar20QQ号码u_msnnvarchar20MSN号码u_telephonenvarchar20联系方式u_websitenvarchar20个人网站u_secu_qnvarchar20密保问题u_secu_anvarchar20密保答案u_hobbynvarcharMAX兴趣爱好u_musicnvarcharMAX喜爱音乐u_movienvarcharMAX喜爱电影u_gamenvarcharMAX喜爱游戏u_cartoonnvarcharMAX喜爱动漫u_sportnvarcharMAX喜爱运动u_booknvar

32、charMAX喜爱书籍u_reg_datedatetime注册时间2 blog(表4-2)blog表用于存放注册用户所写的日志信息,包括日志标题,日志内容,编辑日志时间,日志所属分类以及日志所属人。表4-2 blog表列名数据类型长度可否为空描述备注blog_idintnot null标识列主键blog_uintnot null日志所输人外键blog_subjectnvarchar50not null日志题目blog_contentnvarcharMAXnot null日志内容blog_timedatetimenot null创建时间blog_cateintnot null日志分类外键blog

33、_read_countintnot null日志阅读数3 blog_category(表4-3)blog_category表用于存放注册用户所写的日志的分类,用户可自己添加分类。表4-3 blog_category表列名数据类型长度可否为空描述备注blog_cate_idintnot null标识列主键blog_cate_namenvarchar20not null分类名blog_cate_uint所属人外键4 blog_reply(表4-4)blog_reply表用于存放注册用户所写的日志的回复,包括回复者,回复内容,回复时间,所属日志,状态。表4-4 blog_reply表列名数据类型长度

34、可否为空描述备注brep_idintnot null标识列主键brep _uintnot null回复者外键brep_blogintnot null所属日志外键brep _contentnvarcharMAXnot null回复内容brep _timedatetimenot null回复时间brep _statusbitnot null查看状态5 city(表4-5)city表用于存储城市列表,包括城市名及所属省份。表4-5 city表列名数据类型长度可否为空描述备注city_idintnot null标识列主键city_namenvarchar20not null城市名city_proint

35、所属省份外键6 college(表4-6)college表用于存储大学列表,包括大学名及所在省市。表4-6 college表列名数据类型长度可否为空描述备注coll_idintnot null标识列主键coll _namenvarchar20not null大学名coll _proint所在省市外键7 department(表4-7)department表用于存储大学院系列表。 表4-7 department表列名数据类型长度可否为空描述备注dept_idintnot null标识列主键dept_namenvarchar50not null院系名8 coll_dept(表4-8)coll_de

36、pt表用于存储大学与院系的映射。 表4-8 coll_dept表列名数据类型长度可否为空描述备注coll_dept_idintnot null标识列主键dept_idintnot null院系外键coll_idintnot null大学外键9 highschool(表4-9)highschool表用于存储高中列表,包括高中名及所在省市。 表4-9 highschool表列名数据类型长度可否为空描述备注high_idintnot null标识列主键high_namenvarchar50not null高中名high_provintnot null所在省市外键10 tech_seco_school

37、(表4-10)tech_seco_school表用于存储中专技校列表,包括中专技校名及所在省市。 表4-10 tech_seco_school表列名数据类型长度可否为空描述备注tech_idintnot null标识列主键tech _namenvarchar50not null中专技校名tech _provintnot null所在省市外键11 juni_highschool(表4-11)juni_highschool表用于存储初中列表,包括初中名及所在省市。 表4-11 juni_highschool表列名数据类型长度可否为空描述备注juni_idintnot null标识列主键juni _

38、namenvarchar50not null初中名juni _provintnot null所在省市外键12 elementary_school(表4-12)elementary_school表用于存储小学列表,包括小学名及所在省市。 表4-12 elementary_school表列名数据类型长度可否为空描述备注elem_idintnot null标识列主键elem _namenvarchar50not null小学名elem _provintnot null所在省市外键13 message(表4-13)message表用于存储留言列表,包括留言人,留言对象,留言内容,留言时间,留言状态。表

39、4-13 message表列名数据类型长度可否为空描述备注mess_idintnot null标识列主键mess_uintnot null留言者外键mess_rece_uintnot null留言对象外键mess_contentnvarcharMAXnot null留言内容mess_timedatetimenot null留言时间mess_statusbitnot null查看状态14 mess_reply(表4-14)mess_reply表用于存储留言回复列表,包括回复者,所属留言id,回复内容,回复时间,回复状态。表4-14 mess_reply表列名数据类型长度可否为空描述备注mrep_

40、idintnot null标识列主键mrep _uintnot null回复者外键mrep_messintnot null所属留言外键mrep _contentnvarcharMAXnot null回复内容mrep _timedatetimenot null回复时间mrep _statusbitnot null查看状态15 province(表4-15)province表用于存储省份列表。 表4-15 province表列名数据类型长度可否为空描述备注prov_idintnot null标识列主键prov_namenvarchar20not null省市名16 trade(表4-16)trade表用于存储行业列表。 表4-16

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号