《毕业设计(论文)-Springboot美食菜谱分享平台设计.docx》由会员分享,可在线阅读,更多相关《毕业设计(论文)-Springboot美食菜谱分享平台设计.docx(48页珍藏版)》请在优知文库上搜索。
1、Springboot美食分享平台一、绪论1.1研究意义当今社会作为一个飞速的发展社会,网络已经完全渗入人们的生活,网络信息已成为传播的第一大媒介,可以毫不夸张说网络资源获取已逐步改变了人们以前的生活方式,网络已成为人们日常,休闲主要工具。人们记录、分享和发现美食的方式正在逐渐发生改变,因此借助怎样的互动方式能让那些喜欢美食美味的人通过享受和分享美食美味来宣扬自己的价值观,获得大家肯定以及关注是一个深入探讨的话题。目前,基于SPringboOt的美食分享网的设计与实现,正是互联网和社会生活之间的紧密联系体现。这个系统中我综合应用了mysql5springbootmybaits等知识。网页界面结构
2、设计以实用性出发,具有易于操作、方便特点。在设计中,首先,运用HTM1.5语言对网站的静态页面进行精细加工并且在网站的美工方面取得了良好效果。然后,对于Java编程、HTM1.5的动态编程以及mysql5数据库进行努力学习和实践,并运用到了网站的建设中。本论文就此美食分享网进行了详细全面论述。1.2项目的可行性研究设计此系统需要java面向对象编程基础,数据库知识和功能分析。根据目前阶段所掌握的相关专业知识,以及这学期和之前学习掌握的java编程知识和数据库应用知识以及前端知识做出一个这样的基于、springboot轻量级框架网页版的美食分享平台。1.3相关技术简介1.3.1springSPr
3、ing框架是回生壬鱼上的一种开源应用框架,提供具有控制反转特性容器。尽管SPring框架自身对编程模型没有限制,以至于后来让它作为因B(EnterPriSeJaVaBeanS)模型的补充,甚至是替补。SPring框架为开发提供了一系列的解决方案,比如利用控制反转核心特性,并通过依赖注入实现控制反转来实现管理对象生命周期的容器化,利用面向切面编程进行声明式事务管理,整合多种持久化技术管理数据访问,提供大量优秀的Web框架方便开发等。SPring框架具有控制反转(IOC)特性,它提供了一种通过JaVa的反射机制对JaVa对象进行统一的配置管理的方法。SPring框架利用容器管理对象生命周期,容器可
4、以通过扫描XM1.文件配置对象。SDrin自框架具有面向切面编程(AOP)框架,SPrirlgAOP框架基于代理模式,运行时可配置;AOP框架主要针对模块之间的交叉关注点进行模块化。Spring框架的AOP框架仅提供基本的AOP特性,SPring框架下的事务管理、远程访问等功能均可以通过使用SpringAOP技术实现。Spring的事务管理框架为Java平台带来了一种抽象机制,使本地和全局事务以及嵌套事务能够与保存点一起工作,并且几乎可以在JaVa平台的任何环境中工作。SPring集成多种事务模板,系统可以通过事务模板、XM1.或JaVa注解进行事务配置,并且事务框架集成了消息传递和缓存等功能
5、。SPring数据访问框架解决了开发人员在应用程序中使用数据库时遇到的常见困难。它不仅对Java:JDBCMyBATIsHibernate、JaVa数据对象(JDo)、ApacheOJB和ApacheCayne等所有流行的数据访问框架中提供支持,同时还可以与SPring的事务管理一起使用,为数据访问提供了灵活的抽象。Spring框架最初是没有打算构建一个自己的WebMVC框架,其开发人员在开发过程中认为现有的Web框架的呈现层和请求处理层之间以及请求处理层和模型之间的分离不够,于是创建了SpringMVCo1.3.2mybatismybatis是对jdbc的封装,它让数据库底层操作变的透明。m
6、ybatis的操作都是围绕一个SqlSessionFactory实例展开。mybatis通过配置文件关联到各实体类MaPPer文件,Mapper文件中配置了每个类对数据库所需进行的SqI语句映射。在每次与数据库交互,通过SqlSessionFactory拿到一个sqlSession,再执行sql。页面发送请求给控制器,控制器调用业务层处理,逻辑层向持久层发送请求,持久层与数据库交互,将结果返回给业务层,业务层将处理逻辑发送给控制器,控制器再调用视图展现数据。1.3.3Shiro权限框架ShirO是一个安全框架,是APaChe的一个项目。ShirO提供了:认证、授权、加密、会话管理、与Web集成
7、、缓存等模块。1.1、模块介绍AUthCntiCatiOn:用户身份识别,可以是登录;AUthOriZation:授权,权限验证,验证某个己认证的用户是否拥有某个权限功能;即判断用户是否能做事情,常见:验证某个用户是否拥有某个角色。或者细粒度的验证某个用户对某资源是否具有某个权限。SessionManager:会话管理,用户登录后就是一次会话,在没有退出之前,所有信息都在会话中;会话可以是普通JaVaSE环境的,也可以是如Web环境的。CryPtOgraPhy:加密,保护数据的安全性,密码加密存储到数据库,而不是明文存储。WebSUPPOrt:Web支持,可以非常容易的集成到javaweb环境
8、。Caching:缓存,比如用户登录后,其用户信息、拥有的角色/权限不必每次去查,这样可以提高效率。Concurrency:shiro支持多线程应用的并发验证,即如在一个线程中开启另一个线程,能把权限自动传播过去。Testing:提供测试支持。2、核心概念Subject:主体,代表了当前操作用户,这个用户不一定是具体的人,与当前应用交互的任何东西都是SUbjeCt,即抽象概念。所有Subject都绑定到SecurityManager,与Subject交互都会委托给SercurityManager;SecurityManager:安全管理器;即所有与SUbjCCt安全有关的操作都会与Securi
9、tyManager交互;且它管理着所有的Subject;它负责与里面的各个组件交互,也可以把它理解成Springmvc中DispatcherServlet前端控制器。Realm:域,安全数据源。Shiro从ReaIm获取安全数据(如用户、权限),就是说SeCUrityManagCr验证用户身份,那么它需要从ReaIln得到用户相应角色、权限进行验证用户是否能进行操作;可以把ReaIln看成DataSource,即安全数据源。1、应用代码通过SUbjeCt来进行认证和授权,而SUbjeCt又委托给SecurityManager;2、SecurityManager要验证用户身份,那么它需要从Rea
10、lm中获取相对应的用户、角色、权限进行比较以确定用户身份是否合法。总结:ShirO不提供维护用户、权限,而是通过ReaInl让开发人员自己注入。3、ShirO内部架构介绍1) Subject:主体,看到主体可以是任何与应用交互“用户”。2) SecurityManager:相当于SpringMVC中的DispatcherServlet或者Struts2中的FiIterDiSPatCher。它是Shiro的核心,所有具体的交互都通过SecurityManager进行控制。它管理着所有Subject.且负责进行认证和授权、及会话、缓存的管理。3) Authenticator:认证器,负责主体认证的
11、,这是一个扩展点,如果用户觉得Shiro默认的不好,我们可以自定义实现。其需要认证策略(AuthenticationStrategy),即什么情况下算用户认证通过了。4) Authrizer:授权器,或者访问控制器。它用来决定主体是否有权限进行相应的操作,即控制着用户能访问应用中的哪些功能。5) Realm:可以有1个或多个Realm,可以认为是安全实体数据源,即用于获取安全实体的。它可以是JDBC实现,也可以是1.DAP实现,或者内存实现等。6) SessionManager:如果写过Servlet就应该知道Session的概念,Session需要有人去管理它的生命周期,这个组件就是Sess
12、ionManager0而Shiro并不仅仅可以用在Web环境,也可以用在如普通的JaVaSE环境。7) SessionDAO:DAO大家都用过,数据访问对象,用于会话的CRUDo我们可以自定义SessionDAO的实现,控制session存储的位置。如通过JDBC写到数据库或通过jedis写入redis中。另外SessionDAO中可以使用Cache进行缓存,以提高性能。8) CacheManager:缓存管理器。它来管理如用户、角色、权限等的缓存的。因为这些数据基本上很少去改变,放到缓存中后可以提高访问的性能。9) Cryptography:密码模块,Shiro提高了一些常见的加密组件用于如
13、密码加密/解密的。4、过滤器当Shiro被运用到web项目时,Shiro会自动创建一些默认的过滤器对客户端请求进行过滤。以下是Shiro提供的过滤器:过滤器简称对应的JaVa类anonorg.apache,shiro.web.fiIter,authc.AnonymousFilterauthcorg.apache,shiro.web.fiIter,authc.FormAutHenticationFilterauthcBasicorg.apache.shiro.web.filter,authc.BasicHttpAuthenticationFiIterpermsorg.apache,shiro.w
14、eb.fiIter,authz.PermissiOnsAuthorizationFiIterportorg.apache,shiro.web.fiIter,authz.PortFilterrestorg.apache,shiro.web.fiIter,authz.HttpMethodPermissionFiIterrolesorg.apache,shiro.web.filter,authz.RolesAuthorizationFiItersslorg.apache.shiro.web.fiIter,authz.SslFilteruserorg.apache,shiro.web.fiIter,a
15、uthc.UserFilterlogoutorg.apache.shiro.web.filter,authc.1.ogoutFilterFioSessionCreationorg.apache.shiro.web.fiIter,session.NoSesSionCreationFilter解释:admins*=anon#表示该uri可以匿名访问admins*=auth#表示该uri需要认证才能访问admins*=authcBasic#表示该uri需要HttpBasic认证/admins*=permsuser:add:*#表示该uri需要认证用户拥有user:add:*权限才能访问admins*=port8081#表示该uri需要使用8081端口/admins*=restuser#相当于admins*=permsuser:method,其中,method表示get、post、delete等admins*=rolesadmin#表示该uri需要认证用户拥有admin角色才能访问/admins*=ssl#表示该uri需要使用https协议admins*=user#表示该uri需要认证或通过记住我认证才能访问/Iogout=Iogout#表示注销,可以当作固定配置1.3.4SpringBootSpringBoot是Pivotal团队在2013年