版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于SpringBoot的动物救助网站的设计摘要一直以来流浪动物收容所缺乏有效的与民众沟通的途径,为此本文给动物收容所与人们设计搭建了一个交流救助平台,动物收容所可在本平台发布可领养动物基本信息,而人们可在该平台发布周边流浪动物的情况,也可通过动物收容所发布的信息领养动物。本系统使用JAVA语言编写,通过SpringBoot和MyBatis框架进行管理,前台使用JSP技术进行搭建,本次毕设项目的数据存储工具我采用了高效灵活的MySQL数据库,毕设项目部署在前端被广泛运用的、灵活而又轻量化的Tomcat服务器平台。本次毕设项目为流浪动物救助网站系统,其目的是为了让广大用户能够更加方便的去了解救助站与领养流浪动物,同时也为救助站提供一个面向广大群众的平台。本救助网站系统是分为了前端与后端两大模块,网站前台系统是面向于广大网民人民群众的门户,人们可以在前台进行动物的领养浏览与宠物用户的购买,你可以在本网站进行留言表达自己的想法,或者留下一些想对救助站说的建议性的留言。网站后台系统则是专门为救助站工作人员工作提供的管理系统,工作人员可以在后台系统对流浪动物进行登记,对用户提交的宠物用品订单进行处理发货。。本文分为七个部分。在论文中我会依次介绍流浪动物救助站的大背景、分析所选用的框架技术的适用性、分析救助站与普通用户的需求制定相应的逻辑模块、探讨网站系统的各个模块的实现过程,接着便是对系统成品的测试检验,最后,第七章对本项目进行总结。关键词:SpringBoot,JSP,流浪动物,互联网目录TOC\o"1-3"\h\u29705摘要 I26670第1章绪论 128871.1研究背景 1203521.1.1选题背景 1280271.1.2研究意义 114854第2章基本技术方案 3280662.1系统采用的技术 384542.1.1JSP技术 336862.1.2JavaScript技术 364192.1.3Servlet技术 411082.2基于B/S的WEB应用体系结构 5219252.3Eclipse开发工具 6188472.4SpringBoot框架 747012.5Tomcat服务器 9299052.6MyBatis框架 1022360第3章系统需求分析 1146833.1功能需求分析 11310483.2系统设计规则 11323883.3系统的可行性分析 12315293.3.1技术可行性 12285083.3.2经济可行性 12263183.3.3操作可行性 123336第4章流浪动物救助网站系统概要设计 1368074.1系统功能结构图 13162264.2系统交互图 13158844.3数据库设计 1515003第5章流浪动物救助网站功能详细设计 19236105.1首页宣传页面 19283245.2登录功能的实现 19230405.3注册功能的实现 23222245.4留言板功能的实现 24285865.4待领养动物、宠物用品展示功能的实现 26213605.5领养动物与购买宠物用品详情页 28185775.6全站搜索功能 29177965.7后台管理功能的实现 30165405.8订单处理功能的实现 329391第6章测试与性能分析 34140316.1测试环境 34259346.2测试的主要内容及结果 3416060第7章总结与展望 364811参考文献 38绪论1.1研究背景1.1.1选题背景在中国经济不断高速增长的大时代背景下,人们的收入不断提高,许多人的生活水平都进入了小康水平,在人们的物质条件得到了基本的保障后,有越来越多的人开始寻求精神层面的追求。经济和科技不断进步,但也使得原有的熟人社会分崩离析,使得人们越发感到孤独,那致使人们渴望寻求一位伴侣陪伴在自己身边,然而人们所寻求精神寄托也不局限于人类伴侣,动物伴侣成为了许多人的选择。现如今,越来越多的人喜欢饲养宠物,甚至把宠物当做家庭成员中的一员,饲养宠物、陪伴宠物一生,从中获得心灵上的藉慰REF_Ref19139\w\h[1]。根据《2020年中国宠物行业白皮书》的统计信息,2020年中国城镇犬猫数量超一亿只,同比2019年增长了1.7%。城镇养宠主人达6249万人,较2019年增长了174万人。如此庞大的数量也带来庞大的消费市场,2020年城镇宠物消费市场规模高达2065亿元,其中消费门类最大的是宠物食品支出,占比达55.7%,其次的是医疗支出。随着宠物基数的增长,流浪动物的数量也在不停地增长。其流浪动物的产生有诸多原因,如主人的人为遗弃、宠物走失与流浪宠物的野外繁衍等等,据虎扑论坛的不完全统计,中国现流浪动物已超4000万只,且流浪动物的数量仍呈指数性地增长。大量的流浪动物也会对社会造成不良的影响,流浪动物有可能会携带着如狂犬病毒等传染性病毒,会对公众卫生造成威胁,大量的流浪动物在街道中四处流窜也会对社区交通带来一定的影响,流浪动物的叫声也会对人们的日常休息带来一定的困扰,同时大量的流浪动物会大量捕食野生鸟类破坏环境生态平衡。为解决流浪动物泛滥的问题,全国各个城市由政府或个人出资成立了不少流浪动物收容所。流浪动物收容所会将流浪动物收容到安全的场所当中,并且为流浪动物提供日常的健康护理、提供食物与为其寻找可靠的收养人。1.1.2研究意义对于流浪动物的命运,幸运的话会被一些民间动物保护组织或者地方政府成立的收容所救助,得以安享余生,不幸的话,它们继续在城市街道中四处流浪,有可能被车子撞到而导致受伤,除了被机动车误伤,还有一些人对动物们进行残忍的虐待杀害。它们生下的幼崽也将面临更艰难的处境,流浪动物很难为幼崽提供足够的食物和安全的环境,超半数的幼崽会因营养不良与感染疾病而夭折。近年随着自媒体的增多,通过自媒体渠道的不断报道,人们对流浪动物所遇到的悲惨遭遇愈发同情,社会中“领养代替购买”等这类帮助流浪动物的呼声愈发壮大,越来越多人产生领养动物这一想法。动物收养所因出于工作特性与运营成本的考量,动物收容所往往会建立在较为离市区较为偏远的地方,这便造成了领养者想要领养动物却不知该去何处领养的囧境,虽说人们能从互联网中获取所在城市的动物收容所的地址,但在这鱼龙混杂的互联网对于检索能力不强的人们,很容易在百度的网站竞价排名下寻找错了方向,很可能会误入被骗购买了“后院猫”、“后院狗”等为赚钱而在低养殖条件下肆意繁殖小动物的无良商家,这些动物往往会携带着各种疾病,它们今后的命运也很有可能会变成流浪动物。另外对动物收容所方来说,只能被动地等待收养者主动联系寻求帮助而不能主动地寻找领养人。同时流浪动物在城市的街道四处流浪,动物收容所很难对其进行有效的收容。本项目的目的是为了给动物收容所与人们提供一个交流的平台,动物收容所可在本平台发布可领养动物基本信息,而人们可在该平台发布周边流浪动物的情况,也可通过动物收容所发布的信息领养动物。同时本平台也会发布一些避雷指南,为不懂得领养流程的人答疑解惑,人们也可已在该平台分享一些饲养小动物的经验。新浪微博曾做过调查,想领养而没有去领养的人其中一大原因是不知道该如何照顾好一个小动物,平台提供这样的交流平台可消除第一次饲养宠物的人的饲养困惑,从而降低人们对领养动物的心理门槛,提高领养率。底层技术选取2.1系统前端技术选取2.1.1JSP技术我们可以使用Java、HTML等开发语言在JSP规则下编写页面。它将解释并在Web容器中运行脚本。JSP技术的主要好处如下:(1)支持服务器端组件;(2)在项目运行时,jsp文件将转换为相应的servlet类;(3)可导入使用第三方开发插件;(4)Jsp具备面向对象,多线程等特性。JSP的内部执行对象过程是:接收客户端请求;响应网页返回客户端的响应;管理pageContext网页的属性;新建打开或转接请求相关的会话;应用servlet类执行会话请求;传输程序返回的结果;对照配置生成网页对象;打开或跳转到对应网页;其中JSP异常是针对错误的网页,后台的异常不进行捕获。目前,SpringBoot官方不建议使用JSP技术,因为SpringBoot框架侧重于Restful风格,即前端和后端是分开的。而基于上述提到的JSP动态生成的特性,可以看出JSP并不适合SpringBoot提倡的先后端解耦分离的编码风格,但是,JSP所具备的丰富的拓展性功能,能更好地实现本项目的业务需求,在有限的时间里,JSP与SpringBoot两者的结合将会是利大于弊。2.1.2JavaScript技术目前市面上有着多种多样客户端脚本语言,它们之间无论是在编程规则与侧重功能都截然不同,各有特色。在众多前端脚本语言中,使用度最广的是JavaScript语言,它最大的特点是面向对象和事件进行驱动执行的,它相对其他语言更加的安全。JavaScript技术的使用,可以让网页增加更多的动态效果,也能让用户和网页进行实时的互动,同时结合Ajax技术可以实时对用户输入数据的有效性进行检测。2.1.3Servlet技术Servlet是一个JAVA类,使用时需要导入相关的内包,但他又有别于其他普通的JAVA类,它不通过main方法启动执行,他是由服务器运行的,它有着它自己独特的生命周期,由服务器控制它的创建、执行与销毁的过程。Servlet与Web应用密不可分,几乎所有的Web应用的应用到Servlet技术。在我们使用MVC模型开发web应用的时候,可以通过使用Servlet来达到减少开发时间的目的。它的优点是:(1)全局结果与声明式异常;(2)使用OGNL进行参数传递;(3)强大的拦截器;(4)易于测试;(5)易于扩展的插件机制;(6)Servlet基于MVC架构,有利于人员的前期开发与后期维护。2.2基于B/S的WEB应用体系结构Web由大量信息由相互关联的文档组成。这些文档被称为主页或页面,是一种超文本信息。Web将它们与超链接联系起来。图2-1Web服务原理在实际场景中用户通过浏览器向web服务器发出请求,服务器接收到请求后,对请求进行处理与响应,将结果返回到客户端浏览器,再由客户端浏览器对返回数据进行解析并且展示。其基本流程如下图2-2所示:图2-2使用HTML语言编写的过程用户通过浏览器客户端发送网页请求。浏览器对请求进行解析,并执行相应的操作。若曾经已经浏览过页面,并且浏览器对页面进行了缓存处理,当用户再次访问页面时,浏览器便可以读取缓存,将缓存页面展示在用户面前。如果是第一次访问的话,就会向远端网页服务器发出请求,远端网页服务器将会接收请求,并将响应结果打包成HTTP超文本传输到用户浏览器客户端,浏览器客户端就会对HTTP超文本进行解析并展示。2.3Eclipse开发工具现在市面上有众多的集成开发工具,但其中最为知名的是Eclipse。最初主要用于Java语言开发。Eclipse是一个开源项目。正因它开源的特性,吸引了许多人对Eclipse工具在原有基础上进行二次的开发与完善,让它的生命力越来越强盛。经过长时间的发展,Eclipse现在可以通过安装不同的开发插件进行不同的开发工作,例如使用Eclipse进行JSP页面的开发工作。2.4SpringBoot框架通常情况下,使用spring框架搭建web项目时,我们需要配置web.xml、loadSpring和Springmvc;需要配置数据库连接和Spring事务;需要读取加载配置文件;打开注释等等复杂的准备步骤。但是,使用SpringBoot可以节省这些复杂的配置步骤,并且只需要很少的配置即可快速方便地构建一组Web项目或微服务。自动配置、日志记录等核心功能,SpringBoot的核心模块都为我们准备好了,但我们使用SpringBoot构建Web项目时,只需要在pom.xml文件中引入SpringBoot的核心模块便可完成使用Spring框架所需的配置。SpringBoot引入代码:<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.1.3.RELEASE</version><relativePath/></parent><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency>SpringBoot框架为我们省去了许多繁琐的配置工作,我们编写Web项目的业务层、控制层等代码时只需要添加注解就可以完成Spring的配置。例如以下代码。控制层部分代码:@ControllerpublicclassindexCpntroller{ @Autowired privateCategoryServicecategoryService; @Autowired privateProductServiceproductService; @RequestMapping(value="/index") publicStringindex(Modelmodel,HttpServletRequestrequest)throwsException{ //查询一级分类 List<Category>cList=categoryService.findCategory(); request.getSession().getServletContext().setAttribute("cList",cList); 业务层部分代码:@ServicepublicclassCategoryServiceimplimplementsCategoryService{ @Autowired privateCategoryMappercategoryMapper; @Autowired privateUserMapperuserMapper;}持久层部分代码:@MapperpublicinterfaceCategoryMapper{intcountByExample(CategoryExampleexample);SpringBoot框架与以前的Spring框架相比,做出非常重要的改变,即走开箱即用(Out-of-the-box)策略。该策略使用简单的注解工作代替了原有时令知识框架,繁琐复杂的IOC控制与bean注册工作。这个特性让我们可以更加专注于业务逻辑编写工作。该策略是一种软件设计范例。2.5Tomcat服务器随着互联网的发展,Web应用服务器门类也变得多种多样的。在本项目中我采用了Tomcat服务器作为项目运行的服务器。Tomcat服务器是一种轻量化、开源的Web应用服务器,目前互联网上众多对并发要求不高的网页平台广泛应用了Tomcat服务器,该服务器几乎是小型项目的开发和调试JSP程序的首选服务器。在这广袤的互联网上,正因它开源的特性促使着它不断改进和完善,这也促使了Tomcat服务器与SpringBoot框架的结合,在SpringBoot框架只需要在pom.xml中引入依赖,就可以将tomcat嵌入到程序当中,从而可以直接运行SpringBoot项目便可。不需要部署到额外的tomcat。引入tomcat依赖:<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> <scope>provided</scope></dependency>在开发阶段,使用内嵌致项目中的Tomcat可大大地节省开发工作,我们只需要运行SpringBoot的程序主函数即可运行Web项目。同时配合上热部署技术,热部署就是当应用程序正在运行的时候升级软件或修改某一部分代码、配置文件时,无需重新启动应用,即可使升级的软件和修改后的代码、配置文件生效,即可做到边改边看的开发效果。引入热部署依赖:<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><optional>true</optional><scope>true</scope></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><configuration><fork>true</fork></configuration></plugin></plugins></build>2.6MyBatis框架MyBatis是一个开源的数据持久框架,开源代表着更多的自由度,我们可以使用MyBatis框架自定义自己需要的sql语句封装,同时它也提供了二级缓存的机制,让程序二次查询SQL语句的时候,能够更快的从缓存中获取到结果。同样SpringBoot框架也为我们将MyBatis的使用方式化繁为简,无需再Spring的配置文件中注册持久层的类,只需在pom.xml引入相关的依赖,然后在持久层添加@Mapper注解,通过注解的方式便可完成原有的xml文件的配置。我们只需要在perties配置文件中配置好mapper.xml文件的路径与数据库连接参数即可使用正常MyBatis框架。perties配置参数:spring.datasource.url=jdbc:mysql://localhost:3306/animal?useUnicode=true&characterEncoding=utf8&serverTimezone=GMTspring.datasource.driverClassName=com.mysql.cj.jdbc.Driverspring.datasource.username=adminspring.datasource.password=123456mybatis.mapper-locations=classpath:mapper/*.xml系统需求分析3.1功能需求分析(1)前端普通用户功能:网站需要可以对待领养动物资料进行查阅,并确认领养关系。用户也可以在救助网站上购买宠物用品,在购买宠物用品的同时也是在为救助站提供了除捐赠以外的救助资金来源,购买功能囊括了常规的加入购物车,提交订单,收付款等购物基础功能。普通用户可以在救助网站留言板功能上发布附近流浪动物信息,也可以分享交流饲养宠物的心得。人们可以在本救助网站上互相交流交友,通过社交功能营造良好的论坛分为,吸引更多志同道合的人参与救助流浪动物的事业。用户也需要通过搜索框全局搜索整个救助网站用户关注的东西,例如搜索可领养动物的品种或者宠物用品的名称。(2)后台救助站功能:单单靠救助机构去照顾众多的流浪动物是不现实的,首先收容所的大小无法一一收留不断增多的流浪动物,其次救助机构的经费有限,收容流浪动物越多,分配给每只动物的均只经费就会越少,这就导致了被收容动物的生活条件变差,有违救助初衷。若能招募到志愿收养流浪动物的人,既能让动物得到照顾,也能减轻收容所的压力。同时无偿的领养是也一定程度地挤压了市场无证的宠物商贩的市场,以“领养代替购买”的方式打击商贩的售卖,以此抑制宠物的过度繁衍。所以后台需要到可领养动物登记功能,与接收处理领养请求功能,流浪动物救助站人员需要查看用户提交领养请求,查看用户的基础信息,并以此为根据与用户协商领养事宜。或处理网站用户的宠物用品购买订单,并发送物品到购买者的身边。3.2系统设计规则本流浪动物救助网站系统的设计是向着简单易操作,功能丰富且实用为目标其中,简易性是指用户能够在极短的时间内使用极少的学习成本就能够灵活地使用本网站进行待领养动物的信息浏览、宠物用品购买与在本网站进行留言等功能操作。而网站的实用性是指网站功能都有着明确的目的性,不存在冗余的、意义不明的功能模块。3.3系统的可行性分析3.3.1技术可行性(1)硬件可行性分析程序若是在性能配置不达标的硬件上运行,会导致系统的运行效率降低,例如数据库的查询速度减慢,页面跳转处理的时间变长。但是以目前市面上低配计算机的配置项目都能流畅运行。因此,本系统的开发在硬件方面是可行的。(2)软件可行性分析本流浪动物救助系统的开发采用了java,jsp作为语言,采用了SpringBoot框架技术,SpringBoot框架的特性让我们在开发过程中减少了不必要的配置工作,加快了开发进程,同时java语言和JSP技术都是我一直以来都在使用的技术,使用一门熟练的技术比使用一门陌生的技术能够带来更高的开发效率。对于任何一个工程项目来说,在保证质量的前提下,所消耗的开发时间越少越好。通过上述分析,该系统的设计实现在软件方面是可行的。3.3.2经济可行性在如今互联网技术大爆发的背景下,任何传统行业都在往“互联网+”的模式上发展,“互联网+流浪动物救助”可以使流浪动物救助工作更加高效率。本救助网站系统以轻量化项目的标准开发,使得系统对服务端运行主机的性能配置要求并不高,市面上便宜实惠的低配置电脑都可以作为网站系统服务端运行的主机,对比开发本系统的成本,流浪动物救助机构在救助工作上的高效率和便捷性所带来的收益远超前者,这将会成为一种追赶时代潮流的动物救助模式,所以在经济上具有完全的可行性。3.3.3操作可行性采用常见的网站界面,给用户带来熟悉的感觉,交互上尽量做到简单、友好。这样简单、通用化的界面设计是为了让用户更快的适应页面的功能逻辑。哪怕用户没有经过学习,凭借着自身浏览其他网站学习到的经验也能快速上手使用本救助网站系统的模块功能。流浪动物救助网站系统概要设计4.1系统功能结构图网站系统分为前端普通用户访问的界面与后台救助站管理人员访问界面,前台为用户提供待领养动物信息浏览、领养动物申请、宠物用品购买、网站留言板、关键词搜索等功能;后台主要由流浪动物救助机构的工作人员操作使用,主要实现了领养动物登记、宠物用品订单处理、查看留言板、查看用户申请领养请求等功能。图4-1流浪动物救助网站结构图4.2系统交互图系统架构类的工作流程:1、用户在浏览器页面发起请求,请求会将路由参数传递到控制层路由所对应控制方法进行处理;2、在控制层会验证路由参数是否合法、请求用户操作是否符合用户权限;3、若是验证不通过则会对于提示返回到界面当中,若是通过则会调用对应的业务层方法进行进一步的响应处理;4、在业务层的方法中,会将用户请求进行业务逻辑的判断;5、完成了对应的业务逻辑操作后,将若有需要将会执行数据库的持久化操作,通过Mybatis框架去访问MySQL数据库进行对应的数据库操作,如相关数据的读取、修改与插入;6、业务层方法都通过将异常抛出的操作将程序执行过程产生的异常传递至异常处理代码块进行处理;7、若上述步骤都能顺利完成,将会把业务请求结果传递至用户界面进行展示。图4-2流浪动物救助网站系统交互图4.3数据库设计adminuser表用于存放能进入后台的进入流浪动物救助网站系统后台的账号信息,该类型用户不能通过注册获得,只能由系统高级管理员从后台手动添加。图4-3后台管理员E-R图图4-4adminuser表user表为用户表,用于存放网站注册用户信息,其中以state字段作为用户状态标志字段,用于实现用户冻结,删除操作。message表用于存放留言板信息,其中uid字段作为外键关联到user表的uid字段。图4-5用户与留言E-R图图4-6user表图4-7message表product表用于存放,待领养动物、宠物用品信息的表,之所以放在同一张表里是因为两者从业务逻辑上有着同样的需求,两者皆需要展示图片、详情、名称等。两者也需要实现同时进行全局搜索与分页展示的功能。为了降低系统代码冗余度,便于后期的系统维护升级,将两者信息用同一张表来存储,通过业务逻辑将两者区分出来,使用is_animal字段区分待领养动物与宠物用品。外键csid关联到categorysecond表的主键。categorysecond表用于具体的流浪动物收容所的名称,字段cid作为外键关联category表。category表用于存放地区或特别部门的名称,与categorysecond表形成一对多关系,一个地区或特别部门下属可能有一到多个流浪动物收容所。图4-8动物与用品E-R图图4-9category表图4-10categorysecond表图4-11orders表orders表为订单表,记录领养人或商品购买人的名字、地址、电话等信息。图4-12orders表orderitem表为商品、订单的第三方表,同时也记录了购买数量。图4-13orderitem表流浪动物救助网站功能详细设计5.1首页宣传页面网站系统首页为专题宣传页面,通过感人的图片与煽情的文字相结合,以达到让人产生怜悯之心提供领养率或捐助率的目的。首页文字以打字机形式展现,动态的效果能引起人们注意,吸引人们阅读文字。图片在鼠标滑过是会产生放大效果,这样充满视觉冲击的动态图片效果可让人们加深印象。图5-1首页5.2登录功能的实现系统登录界面,分为前端普通用户登录页面与后台流浪动物收容所管理人员登录页面,两个页面使用不同的路由进行访问登录。登录过程中最重要的是检测用户是否符合登录规则,阻止非法用户登录。功能主要业务逻辑是检验登录用户输入的用户名称和密码是否都是正确,若输入错误,就会给出对应的错误提示,提示用户核对后重新输入。前台使用/login路由进行访问。如果用户名输入框失去焦点,它将发起一个请求,以验证在输入框中输入的用户名是否存在。如果存在,它会提示用户可以登录,如果不存在,它会提示您不可使用该用户名登录,需注册后登录。业务层登录模块代码:@ServicepublicclassUserServiceimplimplementsUserService{ @Autowired privateUserMapperusermapper; @Autowired privateAdminuserMapperadminuserMapper; @Override publicUserloginFindByUnameAndPwd(Stringusername,Stringpassword)throwsException{ //TODOAuto-generatedmethodstub UserExampleexample=newUserExample(); UserExample.Criteriacriteria=example.createCriteria(); criteria.andUsernameEqualTo(username); criteria.andUsernameEqualTo(password); List<User>list=usermapper.selectByExample(example); if(list.size()>0&&list!=null){ returnlist.get(0); } returnnull; } @Override publicUserloginFindByid(Stringusername){ //TODOAuto-generatedmethodstub UserExampleexample=newUserExample(); UserExample.Criteriacriteria=example.createCriteria(); criteria.andUsernameEqualTo(username); List<User>list=usermapper.selectByExample(example); if(list.size()>0&&list!=null){ returnlist.get(0); } returnnull; } @Override publicUserfindByCode(Stringcode){ //TODOAuto-generatedmethodstub UserExampleexample=newUserExample(); UserExample.Criteriacriteria=example.createCriteria(); criteria.andCodeEqualTo(code); List<User>list=usermapper.selectByExample(example); if(list.size()>0&&list!=null){ returnlist.get(0); } returnnull; } //后台登录 @Override publicAdminuseradminUser_login(Stringusername,Stringpassword){ //TODOAuto-generatedmethodstub AdminuserExampleexample=newAdminuserExample(); CriteriacreateCriteria=example.createCriteria(); createCriteria.andUsernameEqualTo(username); createCriteria.andPasswordEqualTo(password); List<Adminuser>list=adminuserMapper.selectByExample(example); if(list.size()>0&&list!=null){ returnlist.get(0); } returnnull; } @Overridepublicbooleanlogin(Stringusername,Stringpassword){UseruserEntity=newUser();userEntity.setUsername(username);userEntity.setPassword(password);Useruser=usermapper.selectUser(userEntity);if(user!=null){returntrue;}returnfalse;}}图5-2前台登录页面后台登录页面采用传统的简约页面,无论是登录框、还是背景都是采用图片作为显示的样式,使用自适应样式,即可让图片与输入框相适应。图5-3后台登录页面后台页面使用/admin进行访问,后台的登录验证流程与前台大同小异,这里就不在赘述。5.3注册功能的实现注册页面只针对前台的普通用户的注册,后台管理人员直接使用系统管理开发人员提供的后台账号进行登录访问后台管理系统,前端普通用户注册页会在用户名输入框失去焦点时进行一次查验,实现发生同上登录页面。输入完成后点击提交,表单将输入的数据提交到/userRegist路由。在控制层对应的方法中,SpringBoot会将表单项的数据封装到与用户实体类同名的属性中,传递至业务层时就可以直接使用用户实体类对象进行数据持久化处理。传递到业务层处理前会在路由对应的控制层方法中会进行验证码校验,若验证码不正确则不执行数据库写入操作。数据库填充成功后,在返回登陆页面。图5-4注册页面输入框失去焦点时使用ajax技术通过路由/registFindByid传参判断是否用户已存在。点击注册时,只需要判断用户名是否在数据库存在和验证码的正确性。其他数据不做唯一性处理,账号判断通过后存入数据库。业务层持久化操作代码:@ServicepublicclassUserServiceimplimplementsUserService{ @Autowired privateUserMapperusermapper;@Override publicvoidsaveUser(Useruser){ user.setState(0); user.setCode(UUIDUtiils.getUUID()); inti=usermapper.insert(user); System.out.println(i); Stringmsg=user.getCode(); try{ MailUtils.sendMail(user.getEmail(),msg); }catch(Exceptione){ } }}5.4留言板功能的实现留言需要在登录之后才能发表,而查看留言不需要登录,留言内容会在控制层路由对应的方法中封装到Message实体类中。同时将发表的用户ID与发布时间等信息补全。将Message实体类传参至业务层进行数据的持久化操作。业务层留言板模块代码:@ServicepublicclassmessageServiceimplimplementsMessageService{ @Autowired privateMessageMappermessageMapper; @Override publicPageBean<Message>findAllMessageByPage(intpage){ PageBean<Message>pageBean=newPageBean<>();// 设置这是第几页 pageBean.setPage(page);// 设置10个 intlimitPage=10; pageBean.setLimitPage(limitPage);// 设置一共多少页 inttotlePage=0;// 查询一共有多少页 totlePage=messageMapper.countAllMessage(); if(Math.ceil(totlePage%limitPage)==0){ totlePage=totlePage/limitPage; }else{ totlePage=totlePage/limitPage+1; } pageBean.setTotlePage(totlePage); intbeginPage=(1)*limitPage; List<Message>list=messageMapper.findAllMessageByPage(beginPage,limitPage); pageBean.setList(list); returnpageBean; } @Override publicvoidinsertMessage(Messagemessage){ //TODOAuto-generatedmethodstub messageMapper.insert(message); } publicvoiddeleteMessage(intmessageid){ //TODOAuto-generatedmethodstub messageMapper.deleteByPrimaryKey(messageid); } @Override publicList<Message>list(){ //TODOAuto-generatedmethodstub MessageExampleexample=newMessageExample(); returnmessageMapper.selectByExample(example); }}图5-5留言板页面5.4待领养动物、宠物用品展示功能的实现在数据库设计阶段,将两者设计使用同一张表,使用is_animal字段区分两者的区别。该设计的原因便是考虑到待领养动物、宠物用品展示功能的相似性,通过使用同一张数据库表来减少代码的冗余度,以代码复用的方式实现程序轻便性。左侧为救助站导航列表,点击选择指定救助站后显示该救助站现可领养动物。默认显示全部动物,在JSP页面进行选择性显示。JSP代码:<c:forEachitems="${hList}"var="p"> <c:iftest="${p.isAnimal==1}"> <li>...</li> </c:if><c:iftest="${p.isAnimal==0}"> <li>...</li> </c:if> </c:forEach>图5-4流浪动物页面图5-5宠物用品页面5.5领养动物与购买宠物用品详情页在点击动物或宠物商品时,会跳转到详情页面,两者使用同一JSP页面进行处理,通过is_animal的值判断显示购买按钮或是领养按钮已经相关的业务信息。点击购买会将商品加入到购物车列表中,填写相关信息后提交订单便能将订单信息提交至网站系统后台,由后台管理人员进行处理。而点击领养宠物时,系统会直接将用户的请求发送到后台管理系统,后台管理人员再根据发起领养请求的用户的联系方式联系,联系用户进行进一步的领养事宜协商沟通。图5-5详情页面图5-5购物车列表页面5.6全站搜索功能随着时间的推移网站的数据将会越来越多,全站搜索功能能让用户快速的找到自己关注的东西。在搜索框输入需要搜索的关键词点击搜索按钮,后台将会执行字段的模糊查询方法,并将结果集进行罗列展示。图5-6搜索猫结果页面5.7后台管理功能的实现后台管理系统包括救助站分类管理、待领养动物登记、宠物用品订单处理和留言板查看删除功能。多项管理功能通用同一套业务逻辑,即列表展示、修改信息、删除记录、添加记录。以救助站一级分类为例,点击左侧导航栏发起请求调用业务方法查询信息列表,在右侧页面遍历解析,显示列表。点击编辑或添加按钮是右侧页面进行局部跳转,进入添加或编辑页面。完成后都经由控制层将输入内容封装至对应的实体类,传递到业务层进行数据库的写入更新操作。同时每一步增删查改步骤都需要验证用户是否登录,防止盗链访问的情况发生,以确保后台数据的安全性。一级救助站业务层增删查改代码:@ServicepublicclassCategoryServiceimplimplementsCategoryService{ @Autowired privateCategoryMappercategoryMapper; @Override publicList<Category>findCategory()throwsException{ //TODO列表展示 List<Category>list=categoryMapper.findCategoryAndSecondcategory(); if(list!=null&&list.size()>0){ returnlist; } returnnull; } @Override publicvoidaddCategory(CategoryaddCategory){ //TODO新增 categoryMapper.insert(addCategory); } @Override publicvoiddeleteCategoryByCid(intcid){ //TODO删除 categoryMapper.deleteByPrimaryKey(cid); } @Override publicvoidadminCategory_update(Categorycategory){ //TODO更新 categoryMapper.updateByPrimaryKey(category); }}图5-7后台管理页面图5-8登记可领养动物页面菜单树使用前端layui框架提供的dTree树型菜单组件实现。这是一个简单、免费、开源的树型菜单组件,由JavaScript编写而成。只需简单配置即可建立菜单树。d=newdTree('d');d.add('01','-1','系统菜单');d.add('0101','01','用户管理','','','mainFrame');d.add('010101','0101','用户管理','${pageContext.request.contextPath}/admin/admin_findAll','','mainFrame');d.add('0102','01','一级救助站分类管理','','','mainFrame');d.add('010201','0102','一级救助站分类','${url_1}','','mainFrame');d.add('0103','01','二级救助站分类管理','','','mainFrame');d.add('010301','0103','二级救助站分类','${url_2}','','mainFrame');d.add('0104','01','宠物用品管理','','','mainFrame');d.add('010401','0104','宠物用品管理','${url_3}','','mainFrame');d.add('01041','01','待领养动物管理','','','mainFrame');d.add('010401','01041','待领养动物管理',${url_4}','','mainFrame');d.add('0105','01','订单管理','','','mainFrame');d.add('010501','0105','所有订单','${url_5}','','mainFrame');d.add('010502','0105','未付款订单','${url_6}','','mainFrame');d.add('010503','0105','已付款订单','${url_7}','','mainFrame');d.add('010504','0105','已发货订单','${url_8}','','mainFrame');d.add('010505','0105','完成的订单','${url_9}','','mainFrame');d.add('0106','01','留言板管理','','','mainFrame');d.add('010601','0106','留言板管理','${url_10}','','mainFrame');d.add('0107','01','注销退出');d.add('010701','0107','退出登录,'/','','_parent');document.write(d);5.8订单处理功能的实现用户在宠物用品商城挑选好后可将商品添加至购物车。购物车有删除单个商品、清空购物车与提交订单功能图5-9购物车页面点击提交订单可生成订单,在生成订单后用户需要完善收货地址、收货人、联系方式等个人信息,以确保商品能准确送达用户手上。选择付款方式确认订单,便会将订单提交至后台系统。图5-10订单页面后台救助站管理人员登录进入后台系统可查看订单信息,救助站管理人员需根据订单信息打包物品包裹并寄出,寄出后点击订单上蓝色发货按钮,订单进入发货状态。图5-11后台订单信息(未发货)图5-12后台订单信息(已发货)当订单进入发货状态的时候,前台就会提示用户商品已发货,待用户收到包裹确认商品无误是即可点击我的订单页面对应订单的确认收货按钮完成交易。图5-13我的订单页面测试与性能分析6.1测试环境PC系统:Windows10;服务器:Tomcat7;JDK版本:jdk1.8;数据库:MySql5.7;访问方式:谷歌浏览
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 网络工程公司经营管理制度
- 2025-2030西南智能母婴用品连锁行业市场需求分析及投资风险评估规划报告
- 2025-2030西南地区生牛羊肉分割自动化生产线产业升级与推广
- 2025-2030融合媒体技术应用舆论引导策略传播效果评估研究深度分析报告
- 2025-2030蒸汽机机制造行业市场现状供需分析及投资评估规划分析研究报告
- 书记员考试试题及答案
- it运维工程师笔试题目及答案解析(2025版)
- 常州常州工程职业技术学院2025年招聘9名专职辅导员和马克思主义学院教师(第二批)笔试历年参考题库附带答案详解
- 山东2025年山东管理学院高层次人才招聘笔试历年参考题库附带答案详解
- 宝鸡2025年陕西宝鸡市事业单位招聘978人笔试历年参考题库附带答案详解
- 职高一年级《数学》(基础模块)上册试题题库
- JG/T 367-2012建筑工程用切(扩)底机械锚栓及后切(扩)底钻头
- 国家职业标准 6-11-01-03 化工总控工S (2025年版)
- 公共安全视频监控建设联网应用(雪亮工程)运维服务方案纯方案
- 企业安全生产内业资料全套范本
- 定额〔2025〕2号文-关于发布2020版电网技术改造及检修工程概预算定额2024年下半年价格
- 安全生产标准化与安全文化建设的关系
- DB31-T 1502-2024 工贸行业有限空间作业安全管理规范
- DL-T5054-2016火力发电厂汽水管道设计规范
- 2022版义务教育(物理)课程标准(附课标解读)
- 神经外科介入神经放射治疗技术操作规范2023版
评论
0/150
提交评论