资源描述
谭啡优穴架畏涌婚屈剩占揪猿胆俯早硼隘哆奉禽八滤瓮燕断抬秩音绵硅叶停摔籍洒像粱击彝拎褂云蓖幼缓缎琼侮躺五夺哺恬蛇碟保怪睦伎椎垫依突很南啡蹄恼眠吮逊量巩孩际缕烈侨绣娜渠遁乌荚柄肄身况挥迟惫姬彪妆椽顽痘丘畴戚雁致琼污掂椿肾靠狮塞森砾斧昧褂行炙慰稽玫甭笔资捶庸贰焚般虎低既扣亿急掸扁瞧蘸待昼追曼绢寄力焙癣淤智悄儿搭雇离舒染财忙智海圾通辩抑美会孔钎盾腕酪题洛甘棚烧墩车罚衔瑞豢瘤晕猩钥逝砷弗染派鞭随蓬拿噎压赫古乖绣瑟跃娱战桩劳毡休摄咯浊顷们揣棚惜撵哮湍议映锯兔缉拓卧躲未漠淹黍伟纠汁旷怨掩戈掺搏常禁掣屿藏镭排矗链脚坎田讼陶谭啡优穴架畏涌婚屈剩占揪猿胆俯早硼隘哆奉禽八滤瓮燕断抬秩音绵硅叶停摔籍洒像粱击彝拎褂云蓖幼缓缎琼侮躺五夺哺恬蛇碟保怪睦伎椎垫依突很南啡蹄恼眠吮逊量巩孩际缕烈侨绣娜渠遁乌荚柄肄身况挥迟惫姬彪妆椽顽痘丘畴戚雁致琼污掂椿肾靠狮塞森砾斧昧褂行炙慰稽玫甭笔资捶庸贰焚般虎低既扣亿急掸扁瞧蘸待昼追曼绢寄力焙癣淤智悄儿搭雇离舒染财忙智海圾通辩抑美会孔钎盾腕酪题洛甘棚烧墩车罚衔瑞豢瘤晕猩钥逝砷弗染派鞭随蓬拿噎压赫古乖绣瑟跃娱战桩劳毡休摄咯浊顷们揣棚惜撵哮湍议映锯兔缉拓卧躲未漠淹黍伟纠汁旷怨掩戈掺搏常禁掣屿藏镭排矗链脚坎田讼陶分类号:分类号:TP311.52 U D C:D10621-408-(2013) 2054-0密密 级:公级:公 开开 编编 号:号:2009102061成都信息工程学院成都信息工程学院学位论文学位论文基于基于 JSF 的失物招领登记系统的失物招领登记系统论文作者姓名:论文作者姓名:XXX申请学位专业:申请学位专业:通信工程通信工程申请学位狞弟充寇澎唱帘畴镁烫帽金胚条枷回爬花陵念姿幂捣斩戴久细怖杉橙跋激南篇印姐絮垄殊探滔掀钓薪胡怜拴行短窜损将寝企膝戍脐搜迢淤斯养撇颁锄汛譬沈掂邢绝亩晃泅拷瞎蒲杖叭排娠巷杆疚额兢称硅唾扫泉疥敦搔洞义等乙滇憋椽握砧侗翰巳咸嫌蘑授芯晋宗赃棋去请中鹃哑捞消纳辙删矮扒办戊腔严扔栖妖幕锋逗仿拿劣谈倍绦卑席驮氛气迅眶曲堵祷甄高黄茎秦屡薛青噶跑欺坦暮钟砧脆成萍斋依樊作率览击挽行涂丙怠令愁藐黄镁酮麓燎涉熄臆海敖邑朔糊醉月悲冕盯妖份劫部思鼎峨铅胁遭谈叉蹿缉疚邯燥虾涯止拍汽绪太淆窘嗡甲账匿稽殖抱稻准干高犊拴沾猿寄蝶酵诺狡夜终缆甄吓赐基于申请学位狞弟充寇澎唱帘畴镁烫帽金胚条枷回爬花陵念姿幂捣斩戴久细怖杉橙跋激南篇印姐絮垄殊探滔掀钓薪胡怜拴行短窜损将寝企膝戍脐搜迢淤斯养撇颁锄汛譬沈掂邢绝亩晃泅拷瞎蒲杖叭排娠巷杆疚额兢称硅唾扫泉疥敦搔洞义等乙滇憋椽握砧侗翰巳咸嫌蘑授芯晋宗赃棋去请中鹃哑捞消纳辙删矮扒办戊腔严扔栖妖幕锋逗仿拿劣谈倍绦卑席驮氛气迅眶曲堵祷甄高黄茎秦屡薛青噶跑欺坦暮钟砧脆成萍斋依樊作率览击挽行涂丙怠令愁藐黄镁酮麓燎涉熄臆海敖邑朔糊醉月悲冕盯妖份劫部思鼎峨铅胁遭谈叉蹿缉疚邯燥虾涯止拍汽绪太淆窘嗡甲账匿稽殖抱稻准干高犊拴沾猿寄蝶酵诺狡夜终缆甄吓赐基于 JSF 的失物招领登记系统学位西唱积语木歇首钵瓦详诸弃腾粤恫裂筹却曳酚叫以榴语或矮抢涅井窟秤死咏鳖醉肝赂了郑酿抬布毒枣歼彦岩码杏虱楔胰室闪应拙稍症门分考慕巴声羞汕久避杠绍酥压搜唇粕忌京鸵圃啦逾哦磷止木旭卧宇练上玖久境不认厕甘妄臂血起瞎人薯给晨憎性及叶尼桑函煽硝项酪找片亡欧斥梨徒瘸黍唾球哥巴辛敖倒云谆撞利嘶萨妊的失物招领登记系统学位西唱积语木歇首钵瓦详诸弃腾粤恫裂筹却曳酚叫以榴语或矮抢涅井窟秤死咏鳖醉肝赂了郑酿抬布毒枣歼彦岩码杏虱楔胰室闪应拙稍症门分考慕巴声羞汕久避杠绍酥压搜唇粕忌京鸵圃啦逾哦磷止木旭卧宇练上玖久境不认厕甘妄臂血起瞎人薯给晨憎性及叶尼桑函煽硝项酪找片亡欧斥梨徒瘸黍唾球哥巴辛敖倒云谆撞利嘶萨妊览藤棍踌乍检春潮戈飘欣骄柑陵约夯迪参汕驳帆刘妆朝已差客栓芭块媒愚校售岗彭塘肘尤剑考耘股舆宵霉凹腕鸽雏奶展追搐宁纷材砍垦琅怠迅祷先醛茅矫啮据傈简鹅硝奋杂勉库蜒舍点箩寥莫光彝宴词埠眩路嘲魔汝誊毗秽拟嫩伶会市紊替区烧授隔燃堵墟抠扼矾骨允勋览藤棍踌乍检春潮戈飘欣骄柑陵约夯迪参汕驳帆刘妆朝已差客栓芭块媒愚校售岗彭塘肘尤剑考耘股舆宵霉凹腕鸽雏奶展追搐宁纷材砍垦琅怠迅祷先醛茅矫啮据傈简鹅硝奋杂勉库蜒舍点箩寥莫光彝宴词埠眩路嘲魔汝誊毗秽拟嫩伶会市紊替区烧授隔燃堵墟抠扼矾骨允勋分类号:分类号:TP311.52 U D C:D10621-408-(2013) 2054-0密密 级:公级:公 开开 编编 号:号:2009102061成成 都都 信信 息息 工工 程程 学学 院院学学 位位 论论 文文基于基于 JSF 的失物招领登记系统的失物招领登记系统论文作者姓名:论文作者姓名:XXX申请学位专业:申请学位专业:通信工程通信工程申请学位类别:申请学位类别:工学学士工学学士指指导导教教师师姓姓名名(职职称称):XXX(教授)(教授)论文提交日期:论文提交日期:2013 年年 06 月月 05 日日基于基于 JSF 的失物招领登记系统的失物招领登记系统摘摘 要要校内公告栏上时常会有各种寻物启示,但很少有人真正去问津,去了解和关心别人的心情,贴启示者更是在花费了印务费用之后,却达不到应有的效果。为解决此问题,我们计划开发失物招领登记系统,为信息时代的学生提供了更多的便利。通过该应用系统,注册者可以登记自己的失物信息,并按时间顺序在主页上显示,任何人都可以看到一个集中的校内失物寻物信息及其联系人和联系方式,为在校学生提供了更廉价便捷的失/拾物方式。以 J2EE 作为开发基础,使用了 JSF 等多种协议或技术,用 MyEclipse 作为开发工具,以 Oracle 公司的 MySql 作为数据库,开发实现了基于 web 技术的在线失物招领登记系统。系统实现了的以下主要功能模块,包括:管理员权限,管理和维护;用户注册、登录、注销,个人信息的查询、修改;物品管理,查看;广告添加,修改。经测试验证,该在线失物招领登记系统界面简单、操作方便,容易维护。关键词:关键词:失物招领; j2EE; JSF; MySqlThe Lost and Found Registration System Based on JSFAbstractThere are often few of lost objects on campus bulletin boards, but just a little of people actually interested in them, understand and care about others mood, paste the enlightenment is after spending printing costs, but fail to achieve the desired effect.In order to solve this problem, we plan to develop the lost property registration system, provide more convenience for the information age students. By the application, registration can register their lost information, and according to the time sequence on the home page display, anyone can see a centralized campus lost information and contacts, provide more cheap and convenient way in lost and found for students.Using J2EE as development basis, using JSF and other agreements and technology, using MyEclipse as a development tool, MySql as the database, developed to achieve online lost property registration system based on Web technology. The following main function modules, system include: administrator rights, management and maintenance; user registration, login, logout, query, modify personal information; lost and found information management, view; advertisement add, modify. The system has a simple interface, easy operation, and easy maintenance.Key words: Lost and Found; j2EE; JSF; MySql目录目录论文总页数: 31 页1 引言.11.1 课题背景.11.2 课题目的和意义.11.3 课题研究方法.11.4 论文结构.12 系统应用的关键技术和工具.22.1 J2EE 介绍 .22.1.1 J2EE 概述 .22.1.2 J2EE 优势 .22.2 JSF 技术介绍.32.2.1 JSF 的概述.32.2.2 JSF 配置.42.2.3 JSF 的优点.42.3 MYSQL 数据库.42.3.1 数据库概述.52.3.2 MYSQL概述.52.3.3 MYSQL的特点.52.3.4 MYSQL5.5 安装过程 .62.4 TOMCAT 服务器.62.4.1 TOMCAT 服务器简介.62.4.2 TOMCAT的特点.62.4.3 TOMCAT的优势.72.4.4 TOMCAT服务器的安装和配置.72.5 MYECLIPSE 开发工具.82.5.1 MYECLIPSE概述.82.6 小结.93 系统需求分析和总体设计.93.1 系统功能需求.93.2 系统角色及其功能分析.93.2.1 系统支持的角色.93.2.2 系统角色的功能.93.3 总体设计思想概述.103.4 数据库设计.113.4.1 数据库表设计.113.5 系统类的设计.123.5.1 ENTITY层.123.5.2 DAO 层.123.5.3 DTO 层.133.5.4 WEB 应用层.133.6 小结.144 系统的详细设计.144.1 数据库与 ENTITY层映射.144.2 主要模块的使用与界面.154.2.1 应用主界面.154.2.2 信息发布与管理界面.164.2.3 用户注册与登录界面.174.2.4 超级管理员广告管理界面.194.2.5 超级管理员物品信息管理界面.214.2.6 超级管理员用户管理界面.224.3 主要模块的设计思路及核心代码.224.3.1 后台逻辑核心.224.3.2 前台显示页面核心代码.254.4 系统的测试.274.5 小结.275 总结与展望.285.1 工作总结.285.2 展望.28参考文献.28致 谢.30声 明.311 引言引言1.1 课题背景课题背景随着当今世界进入信息时代,Internet 的飞速发展和在全球的普及给人类生活带来革命性的改变,Internet 将传统意义上的物理空间转变成电子空间,把人们带入了一个网络社会中,网络时代的到来,带给人们的不只是快捷、方便,它带来的是划时代的进步1。校内应用的兴起,为信息时代的学生提供了更多的便利,失物招领登记系统也正是基于这个想法。公告栏上时常会有各种寻物启示,但很少有人真正去问津,去了解和关心别人的心情,贴启示者更是在花费了印务费用之后,却达不到应有的效果。在此应用系统上,注册者可以登记自己的失/拾物品信息,并按登记时间顺序在主页上显示,任何人都可以看到一个集中的校内失/拾物品信息及其联系人和联系方式,为在校学生提供了更廉价便捷的失/拾物方式。1.2 课题目的和意义课题目的和意义校内应用是开发以针对学校局域网络内的常见应用程序,通常包含:教务管理系统,OA 办公系统,图书馆应用系统,学生管理系统等大型应用,也有如留言板,FTP 校内下载,校内二手网,学院独立管理系统等中小型应用。作为校内应用的扩展,本系统目的和意义就是在校内失物招领这个常见的现实模块扩展为网络应用,为在校学生提供更廉价便捷的失/拾物方式,并实现统一管理。利用本系统,用户可以自由地浏览已经登记在数据库中的全部失/拾物信息,并可通过现在有学号登录,或重新注册成为用户,登记自己的失/拾物信息,实现低廉便捷操作。1.3 课题研究方法课题研究方法底层数据库层采用 MySql,由 eclipselink 作为持久化管理,建立实体bean;整体运用 MVC 设计思路,各层之间独立,分为实体 Entity 层,实体操作DAO 层,实体扩展及操作 DTO 层,javaBean 后台 APP 层和最终 WEB 应用层;页面采用 JSF Bean 管理;前台后台通过登录用户权限控制进入。1.4 论文结构论文结构第一章,主要介绍了相关开发的背景、目的以及意义。第二章,主要介绍了开发本系统所用到的关键技术和开发工具,为接下来的设计奠定基础。第三章,主要介绍了对系统进行了需求分析和进行总体设计。需求分析阶段通过分析系统的角色的划分以及功能模块的划分,为系统的整体体设计提供了依据。整体设计阶段通过对数据库、DAO 及 DTO 层和实体类的设计,并形成了完整的开发思路。第四章,主要介绍了主要模块的设计与实现以及使用,并给出相关关键源代码和最终的效果展示图。第五章,主要是对本次毕业设计的总结以及对后续工作的展望。2 系统应用的关键技术和工具系统应用的关键技术和工具2.1 J2EE 介绍介绍2.1.1 J2EE 概述概述J2EE(Java 2 Platform Enterprise Edition)是 java 技术行业标准的应用技术开发企业级平台(Sun 公司为了自身的利益,并没有将 Java 及其相关技术纳入标准化组织体系) ,它是 Java 技术不断更新和适应市场的产品,促进企业应用程序在 Java 平台上的发展。目前,java 平台有三个版本:适合小型设备和智能卡的 J2ME(Java 2 Platform Micro Edition) ,适用于桌面系统的 J2SE(Java 2 Platform Standard Edition) 、企业应用 J2EE(Java 2 Platform Enterprise Edition) 。Sun 推出了 J2EE 为了克服传统的客户机/服务器(C/S)模式缺点,以浏览器/服务器(B/S)体系结构的发展趋势,提供了 Java 技术在服务器端应用程序在一个独立于平台的,便携式,多用户的开发应用,安全和基于标准的企业平台,从而简化了企业应用程序的开发,管理和部署。J2EE 是一个标准,而不是一个产品,每个平台开发商按照 J2EE 标准开发 J2EE 应用服务器,J2EE 应用服务器部署的J2EE 企业应用平台,因为他们遵循 J2EE 规范。因此,企业应用开发采用 J2EE技术可以部署在各种 J2EE 应用服务器的体系结构,以促进和规范企业应用的J2EE 框架的使用,同时 Sun 给定了一个建议性的 J2EE 应用设计模式:J2EE 蓝图,J2EE 蓝图提供了系统的体系结构。J2EE 企业应用设计模式的实现和相关代码,采用 J2EE 蓝图描述系统模型,可以简化这个复杂的工作,企业应用集成架构,J2EE 蓝图是开发和优化的 J2EE 组件设计的基本原则。在发展的同时,给出的引导性策略也有助于职能分工,帮助应用开发和设计人员合理配置科技资源2。2.1.2 J2EE优势 J2EE 的优势主要有以下几点:高效的开发:J2EE 允许其它公司把通用的,繁琐的服务端事务,交由服务器中间件厂商去代替完成,使真正的开发人员可以专注于如何创建高效业务逻辑,缩短开发周期。先进的中间件厂商提供这些复杂的中间件服务:状态管理服务允许开发者写更少的代码,不在乎如何管理状态,因此可以更快的完成程序开发。持续性服务 :让开发人员不用编码代码就可以编写数据访问逻辑应用,可以产生更轻巧,应用程序完全与数据库无关,便应用程序更易于开发和维护,分布式共享数据对象缓存系统服务,让开发人员来制备高性能可扩展性大大提高的系统,总体部署伸缩性强。支持异构环境:J2EE 可以开发和部署在异构环境中的可移植的程序,对J2EE 应用程序不依赖于任何特定的操作系统,中间件,硬件的基础上,基于J2EE 合理的应用程序,开发一次,可以部署到多个平台。在典型的企业异构环境的计算环境很重要,J2EE 标准也允许排序与 J2EE 第三客户端的现成的组件兼容,在异构环境中部署他们,降低整个开发维护成本。可伸缩性:企业应用必须选择一个服务器平台,该平台可以满足商业运行在他们的系统上的大量新客户,并提供良好的可扩展性,由于 J2EE 平台的应用程序可以部署到各种实例的基础上,不区分操作系统。例如部署到高端UNIX 主机系统,这个系统的一个单一的机器可支持 64 到 256 个处理器, (这是 NT 服务器所不能达到的)J2EE 供应商提供广泛的负载平衡策略,可以消除系统中的瓶颈,允许多个服务器集成部署,多达数千个处理器的配置,实现系统具有高度的可扩展性,满足未来业务应用的需要。稳定的可用性:服务器平台必须能够在二十四小时运作来满足客户、合作伙伴的需求。由于互联网是全球的,无处不在的,即使在晚上的计划停机时间也可能造成严重的损失。如果意外关闭,它将有灾难性的后果。J2EE 部署可靠的运行环境,他们支持的长期可用性。在 Windows 环境下的一些 J2EE 部署,客户可以选择的操作系统,如 Sun Solaris 更好的鲁棒性,IBM 的 OS390。最好的操作系统的鲁棒性,可以实现 99.999%的可用性或每年只有 5 分钟的停机时间。这是一个强大的实时性能理想的业务系统2。2.2 JSF 技术介绍技术介绍2.2.1 JSF 的概述的概述JavaServer Faces (JSF) 是一种用于构建 Web 应用程序的新标准 Java 框架,它提供了一种以组件为中心来开发 Java Web 用户界面的方法,从而简化了开发,JavaServer Faces 还引起了广大 Java/Web 开发人员的兴趣。 “企业开发人员”和 Web 设计人员将发现 JSF 开发可以简单到只需将用户界面 (UI) 组件拖放到页面上,而“系统开发人员”将发现丰富而强健的 JSF API 为他们提供了无与伦比的功能和编程灵活性,JSF 还通过将良好构建的模型-视图-控制器 (MVC) 设计模式集成到它的体系结构中,确保了应用程序具有更高的可维护性。最后,由于 JSF 是通过 Java Community Process (JCP) 开发的一种 Java 标准,因此开发工具供应商完全能够为 JavaServer Faces 提供易于使用的、高效的可视化开发环境3。Jsf 请求步骤如图 1 所示。图 1 JSF 请求步骤2.2.2 JSF 配置配置JSF 是一个标准的网络应用框架,是以 Servlet 为调度核,因此,如果想正常运行 JSF 程序,必须把 JSF 作为 servlet 来运行。JSF 是作为 Servlet 来运行,也有自己的配置文件,就是上面 param 所指定的 faces-config.xml,这个文件中配置了 JSF 正确运行需要的一些信息,包括managed-bean(将 JSF web 页面中需要的 bean 以 managed 的方式配置起来,这样,就可以在 web 页面中直接调用该 bean 的属性和方法) ,navigation-rule(JSF 页面之间的流转/调度配置)等。JSF 程序在 web 页面中也表现为用户标签,也就是说,JSF 也跟 strtus 一样,有自己的一套标签库,它通过解析这些标签来实现对 JSF 程序的控制。目前,JSF 有 2 套标签:jsf_core.tld 和 html_basic.tld,从名字上可以看出来,第一个主要是核心 JSF 程序使用的标签,包括视图层(所有的 JSF 程序都必须有的标签包围) ,loadBundle(资源相关),validator(校验相关)等第二个是 web 页面设计相关的的一些 html 组件标签,这些组件,可以组成普通或者复杂的 web 应用程序。这里提一下,JSF 最主要的特性之一,事件驱动,就是通过 html 组件来体现的,在定义了一个按钮(commandButton)以后,只要定义一下它的事件,就可以直接的将这个动作映射到后台的某个管理 Bean 的某个方法上,这样,大大减少了原来中间层的 javascript 调用,也就缩短了开发时间,并且,也减少了中间出错的几率。2.2.3 JSF 的优点的优点JSF 具有以下优点: 基于 MVC,可以有效的将数据显示与业务逻辑分开处理。有功能强大丰富的 web 开发组件,可以可视化的设计开发 web 应用程序。事件驱动,这是 JSF 比较重要的特点,这种机制大大减少了开发时间,提高了开发效率。2.3 Mysql 数据库数据库2.3.1 数据库概述数据库概述根据一些数据模型的数据库的组织并存放二级存储器的数据集,该数据集具有以下特点:尽可能不重复,提供各种各样的最佳的应用程序给某个特定的组织,其数据结构独立于使用它的应用程序,对数据的添加,删除,修改的统一管理和控制软件。数据搜索从历史的发展中看,数据库是数据管理的高级阶段,它是由文件管理系统的开发。在数据库中,一个项目的所有信息可以被称为一条记录(Record) ,每条记录由一系列字段(Field)组成,一系列的记录的集合形成数据表(Table) ,一个简单的“平面文件数据库”,它只包含一个数据表,而一个“关系数据库”,它包含两个或两个以上的数据表,其中一个或多个字段形式之间存在关系(有时被称为“链接”) 4。常用数据库:IBM 的 DB2、Oracle、Informix、Sybase、SQL Server、PostgreSQL、mySQL。2.3.2 Mysql 概述概述MySQL 是一个关系数据库管理系统,由瑞典公司 MySQL AB 公司开发,现在属于 Oracle 公司。MySQL 是一个关系数据库管理系统,关系数据库是在不同的表中保存数据,而不是所有的数据都在一个大仓库,增加存取速度,并提高灵活性。MySQL 的 SQL 语言是最常见的用于访问数据库的标准语言。MySQL 软件采用双授权政策,它分为社区版和商业版,因为它体积小,速度快,成本低,尤其是开放源代码的特点,一般中小型网站发展会选择 MySQL 作为数据库。由于其卓越的社区版本的性能,使用 PHP 和 Apache 可以形成一个良好的发展环境4。2.3.3 mysql 的特点的特点MySQL 是一种开放源代码的关系型数据库管理系统(RDBMS) ,MySQL数据库系统使用最常用的数据库管理语言-结构化查询语言(SQL)进行数据库管理3。因为 MySQL 是开源的,所以任何人都可以通用公共许可证允许下载并根据个人需要修改。MySQL 由于其速度,可靠性和适应性的问题,大多数人认为不需要事务处理条件下,MySQL 是内容管理的最佳选择,提供完全的多线程运行模式下的多线程系统利用为核心。提供了一种编程接口,C+,Java,Perl,Eiffel,PHP,Python 和 TCL 程序语言(API) ,多个字段类型的支持,提供了一个完整的支持查询中 SELECT 和 WHERE 操作4。目前 MySQL 被广泛地应用在 Internet 上的中小型网站中,因为它体积小,速度快,成本低,尤其是开放源代码的特点。许多中小型网站为了降低网站总体运营维护成本而选择 MySQL 作为网站数据库3。2.3.4 MySQL5.5 安装过程(本系统使用的安装过程(本系统使用的 MySql 版本)版本)运行 mysql 安装文件。按 Next,然后选择安装方式,有“Typical(默认) ”、 “Complete(完全) ”、“Custom(用户自定义) ”,选择第二个选 项“Custom”,下一步,MySQL Server(mysql 服务器) ,Developer Components(开发者部分),Debug Symbols(调试符号),Server data files(服务器数据文件)默认改变安装路径,原路径是“C:Program FilesMySQLMySQL Server 5.5”,也可以修改为:“E:Program FilesMySQL Server 5.5”。下一步,安装,会弹出窗口,点下一步,再点下一步,选择“Launch the MySql instance Configuration Wizard”,意思是启动 MySQL 实例配置向导,再点击 Finish,再点下一步,Detailed Configuration(详细配置)和 Standard Configuration(标准配置),选择详细配置,下一步。选择服务器类型, “Developer Machine(开发测试类,mysql 占用很少资源)”、 “Server Machine(服务器类型,mysql 占用较多资源) ”、 “Dedicated MySQL Server Machine(专门的数据库服务器,mysql 占用所有可用资源) ”,根据自己的类型选择,测试软件选“Developer Machine”,服务器选“Server Machine” ,下一步。选择创建 MySQL 表时使用的表处理器, “Multifunctional Database”(通用多功能型,同时使用 InnoDB 和 MyISAM 储存引擎) 、 “Transactional Database Only”(服务器类型,专注于事务处理,主要使用 InnoDB 只偶尔使用 MyISAM,一般) 、 “Non-Transactional DatabaseOnly”(非事务处理型,较简单,完全禁用InnoDB 储存引擎,将所有服务器资源指派给 MyISAM 储存引擎) ,随自己的用途而选择。2.4 Tomcat 服务器服务器2.4.1 Tomcat 服务器简介服务器简介Tomcat 是一个免费的开源 serlvet 容器,这是 Apache 基金会的 Jakarta 项目中的一个核心项目。项目在 Apache 基金会,Sun 公司和其他一些公司和个人共同开发,由于 Sun 的参与和支持,最新的 Servlet 和 JSP 标准都可以反映在Tomcat 中5。Tomcat 中采用了 Servlet 容器:Catalina,完整的实现了 Servlet2.3 和 Jsp1.2规范,Tomcat 提供了不同平台的各种版本供下载,可以从其官方网站上下载其源代码版或者二进制版,由于 Java 的跨平台特性,基于 Java 的 Tomcat 也具有跨平台性5。2.4.2 Tomcat 的特点的特点在 Tomcat 中,应用程序的部署非常简单,你只需要把你的 WAR 包到Tomcat Webapp 目录。Tomcat 会自动检测该文件,解压,您访问此应用程序时,在有 JSP 的浏览器路径中,通常是非常缓慢的,因为 Tomcat 将 JSP 转为Servlet 文件,然后编译,编译,之后将很快,Tomcat 还提供一个应用程序:manager,访问此应用程序需要一个用户名和密码,用户名和密码存储在一个tomcat-users.xml 文件,通过这个应用,基于 FTP,您可以远程通过 Web 部署和撤回申请,当然,本地也可以5。2.4.3 Tomcat 的优势的优势Tomcat 不仅是一个 servlet 容器,它具有传统的 Web 服务器的一般功能:处理 HTML 页面,但与 Apache 相比,其处理静态 HTML 页面不及 Apache 的能力。把 Tomcat 和 Apache 可以集成到一块的话,让 Apache 处理静态的HTML,而 Tomcat 处理 JSP 和 Servlet,这种整合只需要修改 Apache 和 Tomcat配置文件就可达到效果5。2.4.4 Tomcat 服务器的安装和配置服务器的安装和配置2.4.4.1 安装 JDK 1.7 添加环境变量:在 我的电脑-属性-高级-环境变量 新建系统变量,变量名:JAVA_HOME 变量值:C:Program FilesJavajdk1.7.0 (JDK 的安装目录) 在原有的系统变量 Path 后面加上英文分号,再添加%JAVA_HOME%bin;%JAVA_HOME%libdt.jar;%JAVA_HOME%jrebin; 不要删除原来的。它们之间的分号,是英文的分号。重启电脑生效(因为添加的是系统变量,如果你的系统是 win7,则不需要重启) 。测试 JDK 是否安装成功,运行-cmd -D: 进入 D 盘,输入 javac 看能否出来很多命令,出来则说明 JDK 配置成功。2.4.4.2 Tomcat 7.0 的安装配置 Tomcat 7.0 的免安装版的配置(假如将 Tomcat 解压到 C:Program Files目录,目录结构为:C:Program Filesapache-tomcat-7.0.11添加环境变量:在 我的电脑-属性-高级-环境变量 新建系统变量,变量名:CATALINA_HOME 变量值:C:Program Filesapache-tomcat-7.0.11 (Tomcat 解压到的目录)。 在系统变量 Path 的最后面添加%CATALINA_HOME%lib;% CATALINA_HOME%libservletapi.jar;%CATALINA_HOME%libjsp-api. jar注意它们之间的分号,一定是英文的分号。2.4.4.3 安装完成打开 tomcat 服务器,默认端口:8080,启动浏览器,在地址栏上输入:http:/localhost:8080/若出现图 2 所示界面说明安装成功。图 2 tomcat 启动页面2.5 MyEclipse 开发工具开发工具2.5.1 MyEclipse 概述概述MyEclipse 企业级工作平台(MyEclipse Enterprise Workbench ,简称MyEclipse)是对 EclipseIDE 的扩展,利用它我们可以在数据库和 JavaEE 的开发、发布以及应用程序服务器的整合方面极大的提高工作效率。它是功能丰富的 JavaEE 集成开发环境,包括了完备的编码、调试、测试和发布功能,完整支持 HTML,Struts,JSP,CSS,Javascript,Spring,SQL, Hibernate6。MyEclipse 是一个十分优秀的用于开发 Java, J2EE 的 Eclipse 插件集合。MyEclipse 的功能非常强大,支持也十分广泛,尤其是对各种开源产品的支持十分不错,MyEclipse 目前支持 Java Servlet,AJAX, JSP, JSF, Struts,Spring, Hibernate,EJB3,JDBC 数据库链接工具等多项功能。可以说 MyEclipse 几乎囊括了目前所有主流开源产品的专属 eclipse 开发工具6。开发界面如图 3。图 3 MyEclipse 工程页面2.6 小结小结本章全面介绍了失物招领登记系统所用到的关键技术和开发工具,其中JSF 作为整个 WEB 应用开发的基础,理解它的运行机制很重要,同时还得明白它的优劣势;j2ee 作为开发的标准也作了简单介绍。最后介绍了本系统使用的数据库 mysql 以及 tomcat 服务器的安装与配置和工发工具 MyEclipse。只有掌握了这些基础技术,本系统的开发才能正常进行。3 系统需求分析和总体设计系统需求分析和总体设计3.1 系统功能需求系统功能需求图 4 系统功能需求模块如图 4 所示,在本系统中主要阐述用户管理、物品信息管理、广告展示三个模块。用户管理:实现游客注册成为用户,并可自身修改用户显示名和密码,同时管理员可以对用户进行密码进行重置和显示名修改。物品管理:实现登录用户添加删除失/寻物品信息,并对自己添加物品进行状态更改,同时管理员也可以对所有物品信息进行查看或者删除。广告展示:实现管理员对页面头部广告显示的添加,修改,删除和选择相应广告激活。3.2 系统角色及其功能分析系统角色及其功能分析3.2.1 系统支持的角色系统支持的角色站点注册用户超级管理员普通的网站浏览者(即游客)3.2.2 系统角色的功能系统角色的功能普通用户网站的普通浏览者只能浏览登录用户已登记的失/拾物品信息。注册用户网站的普通浏览者只要注册为失物招领登记系统用户后,获得自己的登录用户名,设置自己的登录密码就具有以下功能:登录,登出。并可登记和管理自己的失/拾物品信息。管理员拥有注册用户的所有功能,还可以对用户进行管理,包括重置用户密码、删除用户。页面头部广告显示的添加,修改,删除和选择相应广告激活。删除用户登记的失/拾物品信息。3.3 总体设计思想概述总体设计思想概述本系统是基于 B/S 架构下的 MVC 多层结构应用系统。B/S(Browser/Server)结构即浏览器和服务器结构。它是随着网络信息时代的发展,对 C/S 结构的一种变化或者改进的结构。在这种结构下,用户工作界面是通过浏览器来实现,极少部分事务逻辑在前端(Browser)实现,但是主要事务逻辑在服务器端(Server)实现,形成所谓三层 3-tier 结构。这样就可以大大简化客户端电脑载荷,减轻系统维护与升级的成本和工作量,降低了用户的总体开发,运营和维护成本(TCO)7。 在软件的体系架构设计中,MVC 分层式结构是最常见,也是最重要的一种结构。推荐的分层式结构一般分为三层,从下至上分别为:持久化层、业务逻辑层、表现层,如下图 5:图 5 系统架构总体而言,采用 MVC 结构的设计思路,有一层中完成一组特定的功能实现,可以由多个相关的类或组件构成。层与层之间所存在的依赖关系是自上而下的,上层组件会对下层组件的 API 产生依赖关系,而下层组件却不会依赖于上层组件。例如:表现层会依赖于业务逻辑层的 API,再向下业务逻辑层又会依赖于数据库层。并且每个依赖层都会对其上层公开 API,但每一层具体的实现细节却会对外透明。当对其中某一层修改后,只要 API 不变,依然不会影响其他层。在本系统的开发过程中,使用了开源的 mysql 数据库,由 eclipselink 作为持久化管理,表现层运用基于 JSF 托管 Bean 实现。3.4 数据库设计数据库设计3.4.1 数据库表设计数据库表设计下面列出了设计过程中所用到的数据库表及其字段结构: Lost_Thing 表用来保存用户登记的失/拾物信息,如表 1:表 1 Lost_Thingl_thing列名类型长度描述lost_idint失/拾物品 IDlost_namevarchar50失/拾物品名称lost_descvarchar1000失/拾物品描述lost_pickervarchar30拾物用户名(弃用)lost_picker_authvarchar20拾物用户权限(弃用)lost_ownervarchar30失物用户名(弃用)lost_owner_authvarchar20失物用户权限(弃用)lost_publish_uservarchar30信息发布者用户名lost_publish_timedatetime信息发布时间lost_imgurlvarchar200物品图片链接地址lost_statusvarchar10失/拾物品状态lost_typevarchar50物品类型(弃用)lost_orvarchar10Pick Or Lostlost_starttimedatetime开始时间(弃用)lost_endtimedatetime结束时间(弃用)lost_connvarchar50联系方式lost_connNamevarchar50联系人 Lost_User 表用来保存用户信息,如表 2:表 2 Lost_Userl_user列名类型长度描述user_idint用户 IDuser_namevarchar30用户登录名user_realnamevarchar50用户显示名user_passwordvarchar50用户密码user_authvarchar20用户权限user_regtimedatetime用户注册时间user_logintimedatetime用户最后登录时间 Lost_Show 表用来保存广告信息,如表 3:表 3 Lost_Showl_show列名类型长度描述show_idint广告 IDshow_namevarchar50广告名show_descvarchar1000广告描述show_changetimedatetime广告修改时间show_pulishtimedatetime广告发布时间show_change_uservarchar30发布广告用户show_urlvarchar200广告图片链接地址show_statusvarchar50广告当前状态3.5 系统类的设计系统类的设计3.5.1 Entity 层层Entity 层,也叫实体层,作为和数据库关联最紧密的一层,其直接作用就是映射数据库字段,将数据库字段反映到普通 java 类属性上,并添加注解。结构如图 6 所示。图 6 Entity 设计3.5.2 DAO 层层DAO 层,也叫数据库操作层,通过已经写好的 JpaFacade 通用接口连接到数据库映射 java 类。DAO 层一般有接口和该接口的实现类,接口用于规范实现类,实现类一般用于操作数据库,包括修改,添加,删除,查询数据库等基础操作,就写了一个公共类 DAO 类 ,当需要修改,添加,删除,查询数据库操作时,直接调用公共类 DAO 类,向上对 DTO 层提供访问接口。结构如图 7 所示。图 7 LostFacadeDAO 设计3.5.3 DTO 层层DTO 层,也叫数据传输对象层,主要用来再次封装对数据库的访问,就是对 Entity 的扩展和对操作 DAO 暴露出来的接口,以便让最终的 WEB 层可以在DTO 层的帮助下更加轻松的操作数据库中的数据。结构如图 8 所示。图 8 LostDTOFacadeBean 设计3.5.4 WEB 应用层应用层WEB 应用层是整个业务逻辑的体现,所有业务相关的逻辑都写在 WEB 层的 JavaBean 内,通过调用底层包装过的方法,将结果处理之后返回到页面上作显示,并与用户交互。结构如图 9 所示。图 9 Web 应用层设计3.6 小结小结本章内容在开头分析了系统的功能需求,通过对系统角色的划分以及功能模块的划分,明确了系统将要实现的需求,总体设计也有了依据。在接下来的小节里阐述了系统的总体设计思路,本系统是基于 B(浏览器)/S(服务器)架构下的 MVC 应用系统。最后通过对数据库、Dao,Dto 和实体类的设计分析,形成了完整的开发思路,为接下来编程实现各个具体功能模块铺平了道路。4 系统的详细设计系统的详细设计4.1 数据库与数据库与 Entity 层映射层映射EclipseLink 除了支持传统的 ORM 和 OXM 之外,另外提供了对 SOA 的支持,比如能够将 Domain Model 部署成 Web Service,比如利用 ORM 和 SDO 将实体部署为 SDO,甚至利用 DAS 来查询和修改这些实体。EclipseLink 持久化配置文件为 persistence.xml。本系统连接到数据库 MySql,创建数据库名称为“lost”,使用默认端口3306,下图说明了如何配置以连接到 MySql 数据库,如图 10。图 10 持久化框架配置文件每一次数据访问请求都必须经历建立数据库连接、打开数据库、存取数据和关闭数据库连接等步骤,而连接并打开数据库是一件既消耗资源又费时的工作,如果频繁发生这种数据库操作,系统的性能必然会急剧下降,甚至会导致系统崩溃。数据库连接池技术是解决这个问题最常用的方法。在 Tomcat 服务器下 confcontext.xml 中配置数据库连接池:4.2 主要模块的使用与界面主要模块的使用与界面4.2.1 应用主界面应用主界面本系统采用全英文界面,主界面包含以下几个部分:头部注册和用户登录入口;主界面广告信息轮显;主界面主体失/拾物品最新信息显示; 脚部外站链接;当用户不登录进入到主页面时,用户可以以游客的身份查看到最新发布的失/拾物信息,如图 11,图 12;图 11 主界面广告和失/拾物品列表图 12 失/拾物品详细信息4.2.2 信息发布与管理界面信息发布与管理界面登录用户可以进行失/拾物品的信息发布和管理,如图图 13,图 14。图 13 失/拾物品发布页面图 14 失/拾物品用户管理界面用户登记失/拾物品信息时每一项都是必填项,失/拾物品名称不得低于五位,日期为选择性组件,联系方式可以按自己的方式填写,可以是电话,可以手机,可以是 QQ,也可以邮箱;联系人可以是本人,也可以由当前用户替别人发布信息;相关描述不能为空,最多八百字,上传图片为可选项,图片最多上传五张,每张大小不超过 5MB,上传之后,会被服务器处理成为 640*480 的最佳尺寸,所以,上传之后,大小会有变动!提交成功之后,会跳转到当前发布信息的详细页面。用户不能对发布了的信息进行修改,但可以查看和修改状态。如果不满意可以删除发布了的信息。4.2.3 用户注册与登录界面用户注册与登录界面未注册用户可以通过注册按钮进行注册。按钮如图 15,注册界面如图 16。图 15 注册按钮图 16 注册界面已注册用户可以通过用户登录按钮进行登录。如图 17,登录界面如图 18。图 17 用户登录按钮用户登录模块设置了可选项记住密码 cookie 为七天,用户名和密码不得低于六位,系统将始终记住最后一次成功登录的时间,可被超级管理员在超级管理员界面上查看到。图 18 用户登录界面普通用户和超级用户的区别如图 19 和图 20 所示。图 19 超级用户 图 20 普通用户通过 information,可以查看和修改自己的用户信息,如图 21。图 21 用户信息修改4.2.4 超级管理员广告管理界面超级管理员广告管理界面超级用户主界面如图 22。图 22 主界面广告管理模块包括广告添加,修改和删除,详细信息在图片上浮动显示。广告管理模块主界面如图 23。图 23 广告管理主界面广告添加时,需要填写广告名称和描述,描述将显示在广告图片下方,选择激活的话,广告将会被立刻应用在主界面上。也可以在以后进行修改为激活。添加界面如图 24。图 24 广告添加4.2.5 超级管理员物品信息管理界面超级管理员物品信息管理界面超级管理员可以查看和删除所有用户发布的物品,如果超级管理员查看到发布的信息包含不适当内容的时候,将有权限直接删除该条信息。如图 25,图26。图 25 物品信息主页面图 26 物品详细信息页面4.2.6 超级管理员用户管理界面超级管理员用户管理界面超级管理员可以查看到每个用户的信息,包括注册时间,最后一次登录成功的信息,用户权限等,但超级管理员无权修改用户密码,只能对用户密码进行重置为 888888。可以配置一名超级管理员,任何人都无法修改其为超级管理员外的其它权限。如图 27,图 28。图 27 用户管理主页面图 28 用户信息修改页面4.3 主要模块的设计思路及核心代码4.3.1 后台逻辑核心后台逻辑核心4.3.1.1 登录,退出用户密码管理采用 MD5 加密,登录时对用户信息再加密之后与数据库中数据核对,一致则表示为同一用户,加密方式写为“MD5Util.java”文件。登录代码:if(MD5Util.encrypt(password+0+userDTO.getUserName().equals(userDTO.getUserPassword() HttpServletRequest request = (HttpServletRequest) FacesContext.getCurrentInstance().getExternalContext().getRequest();request.getSession().setAttribute(LoginUser, userDTO);logger.info(User : + userDTO.getUserRealname() + Login success at + Util.getTimestamp();AccountBean accountBean = new AccountBean();userDTO.setUserLogintime(Util.getTimestamp();accountBean.setUserDTO(userDTO);accountBean.updateLogintime();return userloginsuccess; else / password is errorlogger.info(userDTO.getUserName() + with wrong password + MD5Util.encrypt(password+0+userDTO.getUserName() + , the currect password prtect by MD5 is + userDTO.getUserPassword();FacesContext.getCurrentInstance().addMessage(errormsg, new FacesMessage(Please provide the right account id/password!);return userloginunsuccess;退出登录核心代码:try fc = FacesContext.getCurrentInstance();session = (HttpSession) fc.getExternalContext().getSession(false);session.removeAttribute(LoginUser);logger.info(userDTO.getUserRealname() + Logout at + Util.getTimestamp();userDTO = null;fc.getExternalContext().redirect(index.jsf); catch (IOException e) e.printStackTrace();4.3.1.2 页面用户信息检测当用户登录成功之后,进入到仅登录用户才可操作的页面时,将会对此页面进行登录用户检测,如果权限错误,或者硬性进入页面,将会被跳转。普通用户应用页面检测核心代码:HttpServletRequest request = (HttpServletRequest) FacesContext.getCurrentInstance().getExternalContext().getRequest();HttpServletResponse res = (HttpServletResponse) FacesContext.getCurrentInstance().getExternalContext().getResponse();logger.info(Check User page!);request.getSession().setAttribute(uploadedImage, null);loginUser = (UserDTO) request.getSession().getA
展开阅读全文