软件项目开发(Spring Boot)课件全套 杨智勇 单元1-8 竞赛登记管理系统架构设计 - 竞赛登记管理系统部署_第1页
软件项目开发(Spring Boot)课件全套 杨智勇 单元1-8 竞赛登记管理系统架构设计 - 竞赛登记管理系统部署_第2页
软件项目开发(Spring Boot)课件全套 杨智勇 单元1-8 竞赛登记管理系统架构设计 - 竞赛登记管理系统部署_第3页
软件项目开发(Spring Boot)课件全套 杨智勇 单元1-8 竞赛登记管理系统架构设计 - 竞赛登记管理系统部署_第4页
软件项目开发(Spring Boot)课件全套 杨智勇 单元1-8 竞赛登记管理系统架构设计 - 竞赛登记管理系统部署_第5页
已阅读5页,还剩323页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

单元1竞赛登记管理系统架构设计学习目标01了解系统基本概况,明确技术选型02编写系统需求说明书03编写架构说明书任务1.1分析竞赛登记管理系统用户需求包括竞赛名称、时间、地点、参赛人员、获奖情况等,并上传相关附件。教师提交竞赛登记信息二级学院管理员审核二级学院领导复审校级管理员终审确保信息准确无误,符合学校规定。如有误或不符合规定,驳回并给出建议。确保重要信息准确无误。如有误或有问题,驳回管理员审核并给出建议。确保所有信息准确、规范。如有误或有问题,驳回二级学院领导审核并给出建议。背景介绍

目标与意义提高工作效率通过引入竞赛登记管理系统,可以实现对竞赛信息的快速登记、审核和查询,避免了传统的手工处理方式带来的效率低下问题。提高准确性系统中设置了多个审核环节,可以最大程度地减少信息录入和传递过程中的错误和遗漏。促进信息共享通过引入竞赛登记管理系统,可以实现竞赛信息的快速传递和共享,方便各级管理员和教师及时获取最新的竞赛信息。竞赛登记管理系统概述校级管理员终审管理员登录系统,终审领导提交的竞赛信息,确保真实、准确和重要。通过则公布在学校平台供查询,不通过则反馈教师并重新审核。教师提交竞赛登记信息系统支持教师在线提交竞赛信息,并自动分类和归档,方便后续统计和分析。二级学院管理员审核管理员登录系统,审核教师提交的竞赛信息,确保真实、准确和完整。通过则提交至领导复审,不通过则反馈教师并重新审核。二级学院领导复审领导登录系统,复审管理员提交的竞赛信息,评估重要性、奖励积分和金额。通过则提交至校级管理员终审,不通过则反馈教师并重新审核。产品描述教师提交竞赛信息二级学院管理员审核二级学院领导复审校级管理员终审应用场景教师填写并上传竞赛信息,系统自动分类归档。领导重点审查信息的重要性、奖励积分和金额,通过后提交给校级管理员终审。管理员核实信息真实性、准确性和完整性,通过后提交给二级学院领导复审。管理员核对信息真实性、准确性和重要性,通过后公布在学校平台上,供教师查询和参考。该系统的用户群体主要包括学校的教师。他们需要使用该系统提交本年度的竞赛成果,并填写相关的竞赛信息。教师二级学院管理员是该系统中另一个重要的用户群体。他们需要审核教师提交的竞赛信息,并反馈审核结果。二级学院管理员二级学院领导需要对二级学院管理员提交的竞赛信息进行复审,并反馈复审结果。二级学院领导校级管理员需要对二级学院领导提交的竞赛信息进行终审,并反馈终审结果。校级管理员用户群体软件需求说明书产品描述竞赛登记管理系统是一个软件平台,为教师、二级学院管理员、二级学院领导及校级管理员提供竞赛信息的登记、审核、查询和统计功能。旨在提高竞赛信息登记的效率和准确性,同时提供灵活的审核和查询功能,方便各级管理员对竞赛信息进行管理和分析。产品需求功能需求:包括教师提交竞赛信息、二级学院管理员审核竞赛信息、二级学院领导审核竞赛信息、校级管理员审核竞赛信息等功能。性能需求:涉及系统的响应时间、并发用户数、数据安全性等方面的要求。项目概述教师提交竞赛登记信息填写竞赛信息表单,包括名称、时间、地点、参赛人员、获奖情况等,并上传相关附件。完成后点击“提交”按钮,将信息提交至系统。登录系统,审核竞赛信息的真实性、准确性及附件的完整性和合规性。通过则点击“通过”,不通过则点击“驳回”。通过后状态改为“待二级学院领导审核”。登录系统,审核竞赛信息的重要性和必要性,以及费用发放的合理性。通过则点击“通过”,不通过则点击“驳回”。通过后状态改为“待校级管理员审核”。登录系统,审核竞赛信息的合规性和准确性。通过则点击“通过”,不通过则点击“驳回”。通过后状态改为“已通过”。二级学院管理员审核竞赛信息二级学院领导审核竞赛信息校级管理员审核竞赛信息功能需求响应时间01系统应保证90%以上的事务在3秒钟内处理完,否则用户可能不会等待操作的正常结束。并发用户数02由于主要供教师、二级学院管理员及领导、校级管理员等角色使用,且每年的使用周期不长,因此系统只需满足100人同时在线即可确保业务的正常开展。数据安全性03系统应保证数据的安全性和完整性,避免数据丢失或泄露的情况发生。在数据库出现故障时,应能够及时恢复数据并保障系统的正常运行。性能需求任务1.2设计竞赛登记管理系统架构引言项目用途竞赛登记管理系统旨在提供一个高效、易用的工具,用于高校教职工快速、准确地登记和管理竞赛信息,主要功能包括添加、修改、删除和查询竞赛等。项目环境系统在高校网络环境中运行,需确保网络安全性与稳定性。设计时需考虑固定用户群体的使用习惯和需求。项目范围涵盖需求分析、系统设计、编码实现、测试部署等阶段。需求分析阶段定义功能需求和性能需求;系统设计阶段设计逻辑架构和物理架构;编码实现阶段按设计要求实现功能;测试部署阶段进行全面测试并部署到实际环境。任务背景项目目标提供高效、易用的工具,帮助高校教职工快速准确登记和管理竞赛信息,考虑用户习惯和需求,确保系统安全性与稳定性。目标与范围系统架构设计架构设计的目的解决软件复杂度带来的问题。单体式架构的选择理由目标用户群体小,仅高校的部分教职工。同时在线人数预期不会超过100。业务流程相对简单。单体式架构能够满足实际业务需求,且维护成本低于分布式架构。系统架构设计概述系统的逻辑架构主要由三个层次组成数据访问层、业务逻辑层、视图层。数据访问层主要负责数据的持久化操作,包括数据的增删改查等。业务逻辑层主要负责处理系统的核心业务逻辑,包括竞赛信息的增删改查、用户权限的认证等。视图层主要负责系统的界面展示,包括登录界面、竞赛信息展示界面、用户管理界面等。逻辑架构设计逻辑架构设计系统的逻辑架构图硬件部署方式部署于校内网络管理中心服务器,仅对内网PC机开放。软件部署方式采用基于SpringBoot的JAR包部署。物理架构设计硬件部署方式竞赛登记管理系统的网络拓扑图方案优化策略对于用户需求说明中给出的功能需求,主要涉及数据库基本增删改查操作,以及文件上传下载功能,这些需求均较为常规,且系统用户并发访问量要求偏低,因此完全具备技术可行性。在后端技术选型中,我们选择了SpringBoot2.2作为开发语言,该版本的后端技术体系已经相当成熟,且拥有大量的第三方插件,可以很好地满足开发需求。在前端技术选型中,我们计划优先采用Thymeleaf模板引擎来开发前端,该模板引擎易于上手,且可以很好地与SpringBoot集成,因此也被广大开发者所青睐。技术可行性分析03稳定业务需求便于后期扩展和维护,降低长期成本。01低用户并发访问量及常规功能需求降低了开发难度,减少资源消耗。02较短开发周期及高水平团队缩短开发时间,减少人力成本。经济可行性分析

高可用性设计自动重启机制在服务器稳定且有专业网络维护的条件下,通过简单的自动重启机制确保系统的高可用性。负载均衡技术采用负载均衡技术分配网络请求,防止单一服务器压力过大导致的系统崩溃。定期备份与恢复演练定期进行系统备份和恢复演练,确保在意外情况下及时发现并恢复系统。由于业务需求稳定,应减少因系统升级或修改导致的不稳定因素。系统稳定性考虑未来扩展需求,预留足够的接口和模块以便扩展。系统可扩展性加强系统攻击防护功能的开发和部署,确保数据安全和用户隐私保护。系统安全性可维护性考虑用户需求与体验优化业务流程图时,首要考虑的是用户的需求和使用体验,确保流程满足用户习惯和业务需求。顺畅性与高效性业务流程应优化以减少用户操作步骤,提高操作效率,确保流程顺畅且高效。可追溯性与可管理性记录每个步骤的操作情况和状态,确保业务流程可追溯、可查询历史记录,便于管理。业务流程图优化优化后的业务流程图竞赛登记管理系统的业务流程图开发技术选型编程语言由于项目团队成员更熟悉Java开发语言,因此后端语言技术选型应优先考虑传统的Spring+SpringMVC+Mybatis体系或SpringBoot。虽然这二者之间并无本质区别,但考虑到该项目规模较小且工期较紧,故应采用项目搭建简单、第三方插件完备的SpringBoot2.2为后端技术选型。依赖管理对于JavaWeb项目,通常采用的都是ApacheMaven来进行依赖管理,我们的项目也采用ApacheMaven3来管理依赖。后端技术选型后端技术选型数据校验工具数据校验工具拟采用HibernateValidation6.0,它可以提供全面的数据校验功能,包括基本类型校验、复杂类型校验、自定义校验等。数据库连接池数据库连接池拟采用AlibabaDruid1.2,它是一款高性能的数据库连接池组件,可以提供强大的数据库连接管理和性能监控功能。视图层框架由于前端技术选型需要考虑界面风格和用户交互体验,因此计划优先采用SpringBoot官方推荐且容易上手的Thymeleaf模板引擎为主来开发前端,并基于此技术体系完成一个初级演示版交给用户。若用户可接受此界面风格,则继续用该体系来开发前端;若用户对界面有更高要求且愿意适当延长开发周期,则视图层换用Vue2.6来开发。JavaScript框架在前端开发过程中,通常会用到一些JavaScript框架来辅助开发,比如jQuery、Bootstrap等。这些框架可以帮助开发人员快速构建出符合现代浏览器标准的用户界面,提高开发效率。前端技术选型CSS框架CSS框架主要用于样式设计和布局排版,比较流行的CSS框架有Bootstrap、Foundation等。这些框架提供了一系列的CSS类和组件,可以方便地实现常见的页面布局和样式设计。前端技术选型对于竞赛登记管理系统的数据存储需求,应优先选择体积小巧、安装简便、易于维护、使用免费的数据库,显然MySQL数据库是不二之选,具体版本为MySQL5.7。关系型数据库如果系统中需要存储大量的非结构化数据,比如文件、图片等,可以考虑使用非关系型数据库,比如MongoDB、Redis等。这些数据库可以提供高效的数据存储和检索功能,并且易于扩展和维护。非关系型数据库数据库选型授权管理组件选择如SpringSecurity、ApacheShiro等组件,提供全面的授权管理功能,如基于角色的访问控制(RBAC)、基于资源的访问控制(ABAC)等。身份认证组件选择如SpringSecurity、ApacheShiro等组件,提供全面的身份认证功能,如用户名密码认证、LDAP认证、OAuth2.0认证等。攻击防护组件选择如SpringSecurity、ApacheShiro等组件,提供全面的攻击防护功能,如防止SQL注入、XSS攻击、CSRF攻击等。安全控制组件选型总结与展望竞赛登记管理系统的架构设计目标是解决软件复杂度带来的问题,通过合理的架构设计和技术选型,以满足业务需求,提高系统的可靠性、可维护性和可扩展性。竞赛登记管理系统的逻辑架构包括数据访问层、业务逻辑层和视图层。数据访问层负责数据的持久化存储和检索,业务逻辑层负责处理业务逻辑和规则,视图层负责用户交互和界面展示。竞赛登记管理系统的物理架构包括硬件部署方式、软件部署方式和方案优化策略。硬件部署方式主要考虑到服务器的稳定性和可靠性,软件部署方式则需要选择合适的部署方式以满足系统的需求,方案优化策略则包括技术可行性、经济可行性、高可用性和可维护性的考虑。架构设计目标逻辑架构物理架构总结拓展新功能01根据用户需求和业务发展需要,可以考虑在竞赛登记管理系统的基础上增加新的功能,例如支持移动端访问、增加统计分析功能等。优化性能02随着用户量的增加和系统运行时间的延长,系统可能会出现性能瓶颈,因此需要对系统进行性能优化,例如优化数据库查询语句、调整系统参数等。提升安全性03系统安全性是软件开发中必须考虑的问题之一。竞赛登记管理系统应加强对用户密码、数据备份等方面的保护措施,避免数据泄露和安全问题。后续工作展望THANKS.单元2竞赛登记管理系统开发环境搭建学习目标01了解SpringBoot的基本原理、框架特色、主要组成02掌握Java开发环境的搭建与SpringBoot项目的初始化操作03学会对框架的参数进行配置任务2.1基于IntelliJIDEA的SpringBoot环境搭建前端页面任务场景SpringBoot框架是对Spring框架的进一步集成,克服了Spring框架中配置繁琐的弊端,大大提高了开发效率,是当前大部分项目的首选框架,本项目同样选择该框架。对于Java程序开发而言,IDEA无疑是当下最受开发者欢迎的开发工具,其中的原因之一便是IDEA对SpringBoot框架的良好支持。任务布置

在IDEA官网下载并安装IDEA集成开发环境,并使用IDEA配置SpringBoot开发环境。

环境搭建完成后,我们将在IntelliJIDEA里创建一个SpringBoot项目来实现HelloWorld程序。知识准备Java语言Java是SUN(StanfordUniversityNetwork,斯坦福大学网络公司)1995年推出的一门高级编程语言。随着Java技术在web方面的不断成熟,已经成为web应用程序的首选开发语言。可以创建独立运行的Spring应用内嵌Web容器提供大量的自动配置无需代码生成和XML配置即可使用知识准备SpringBoot可以将该项目中所有的类和依赖包打包到一个jar内。SpringBoot根据项目自动配置Spring框架,来简化项目的开发,开发人员也可以修改默认配置。SpringBoot框架内嵌了Web容器,如Tomcat、Jetty、Undertow等。SpringBoot能达到快速使用Spring框架的目的,基本不需要代码生成和任何XML配置便可实现Spring的开箱即用。提供starter简化Maven配置SpringBoot提供大量的starterpom简化Maven配置,可以做到自动化配置,高度封装,开箱即用。SpringBoot框架的特性提供生产环境级别的监控SpringBoot提供了生产级别的监控、健康检查及外部化配置,项目在生产环境中运行无需额外添加相关模块。知识准备SpringBoot的重要模块模块名称模块说明spring-bootSpringBoot的主模块,也是支持其他模块的基础模块。spring-boot-test用来测试的模块,为应用程序的测试提供了强大的测试框架spring-boot-test-autoconfigure为Spring-boot-test提供自动配置。spring-boot-autoconfigure为Spring-boot提供自动配置。spring-boot-cliSpringBoot提供的命令行工具,它能够帮助你快速构建SpringBoot项目。spring-boot-starters这个模块是所有Starter启动器的基础依赖,主要包括了一系列常用组件依赖。spring-boot-devtools开发者工具模块,主要为SpringBoot项目的开发阶段提供一些便利。spring-boot-actuator该模块提供健康端点、环境端点、SpringBean端点等等spring-boot-actuator-autoconfigure为spring-boot-actuator提供自动配置。任务实施1.新建SpringBoot项目打开IDEA,沿着文件->新建->项目的途径进入“新建项目”对话框,如图2-1所示。在该对话框左侧选择“SpringInitializr”项,右侧输入或者选择合适的内容。“名称”项是本项目的名称,“位置”项是代码所保存的位置,“语言”为本项目的开发语言,“类型”项为项目构建管理工具,“组”是本项目开发者所在组织的标识,“工件”是本项目在组织内的标识,“项目SDK”可以为本项目选择指定的SDK,“Java”可以为编译指定一个SDK版本,“打包”则可以选择Jar包和War包两种形式。任务实施1.新建SpringBoot项目点击“下一步”,在此界面选择SpringBoot的版本号和SpringBoot项目的启动依赖项。“依赖项”中按照大的分类列出了所用的启动依赖项,本项目是一个包含前后端的Web项目,故SpringWeb为必选项。任务实施1.新建SpringBoot项目点击“完成”,IDEA开始为我们创建SpringBoot项目。此时可以在工作区看到创建好的Demo项目。其中,pom.xml文件是Maven用来管理项目的关键文件,刚才创建项目时所设置的项目名称和配置项值,以及选择的依赖项都会在该文件中有所体现。任务实施2.新建Controller类

在项目中新建一个Controller类,使用@RestController作为这个类的注解。@RestController注解是@Controller和@ResponseBody两个注解的替代,而@ResponseBody注解表示返回的结果是数据而非页面。

在Controller类中新建一个方法,该方法体只有一行代码,返回“HelloWorld”字符串。在方法上使用@RequestMapping(value="index")来建立访问路径和方法的关联关系。任务实施3.访问页面当访问路径localhost:8080/index时,此Controller可以对请求进行相应的处理。因为前面使用了@RestController注解,所以这个方法返回的结果仅仅是“HelloWorld”字符串。任务实施任务4.2配置竞赛登记管理系统关键参数任务场景在软件的开发、运行过程中,我们强调软件的可配置性,因为这对提供软件的灵活性、复用性很有帮助,可以减少程序员对代码的反复修改。SpringBoot框架为我们开发者生成好了配置文件,即perties文件。本次任务中,我们将对竞赛登记系统应用的SpringBoot框架进行相应的配置。任务布置perties的写法是一行表示一个配置项内容,通过等号“=”将属性名和值分隔开来。配置项名称如果有多个层级,每个层级在每个配置项中都需要依次完整写出来。YMAL配置方式使用缩进表示层级关系,相同层级的元素保持左对齐。值和属性名之间使用冒号“:”分隔,值和冒号之间也要有空格。使用YAML进行配置时必须严格遵守YAML的基本语法,否则会有意想不到的错误。在JavaWeb中有很多日志框架,logback是性能最高的日志框架,SpringBoot默认使用的是logback日志,一般默认情况下,SpringBoot会利用logback记录日志。知识准备任务实施Properties配置创建好的SpringBoot项目中会包含perties文件,其位置在src/main/resource下。打开perties文件,在文件中配置应用名称、内置服务器上访问的端口号、编码格式等任务实施#应用名称=springboot-demo#访问端口号server.port=8080#编码格式server.tomcat.uri-encoding=utf-8#数据库相关配置spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driverspring.datasource.url=jdbc:mysql://localhost:3306/mokespring.datasource.username=rootspring.datasource.password=123456#session生命周期server.servlet.session.timeout=30mYAML配置YAML使用不同的缩进代表不同的层级关系,右边的配置都所属于server层级下(即对开发的服务器进行配置),保持默认的服务器端口8080。配置项目的访问路径为/。配置tomcat服务器的URI编码为UTF-8。设置tomcat服务器的最大线程数为800,默认是200。配置tomcat服务器的初始化线程数为30,默认是25。初学者可以仅对tomcat服务器的URI编码进行设置。任务实施#开发环境配置server:#服务器的HTTP端口,默认为8080port:8080servlet:#应用的访问路径context-path:/tomcat:#tomcat的URI编码uri-encoding:UTF-8#tomcat最大线程数,默认为200max-threads:800#Tomcat启动初始化的线程数,默认值25min-spare-threads:30SpringBoot日志配置logback框架是目前的一个主流日志框架,其配置采用XML文件来进行。使用XML文件对日志文件进行配置,严格遵守XML格式规范。最外层标签configuration表明进行配置,接下来配置日志存放的路径,这里我们设置日志存放路径为/home/ruoyi/logs。配置日志的输出格式,指定日志的输出格式为时、分、秒、毫秒、线程、日志内容等。配置控制台日志输出和日志文件输出两种日志输出形式,在日志文件输出配置中将时间作为日志文件的名称,设置日志保存的最大天数为60天。任务实施<?xmlversion="1.0"encoding="UTF-8"?><configuration><!--日志存放路径--><propertyname="log.path"value="/home/ruoyi/logs"/><!--日志输出格式--><propertyname="log.pattern"value="%d{HH:mm:ss.SSS}[%thread]%-5level%logger{20}-[%method,%line]-%msg%n"/><!--控制台日志输出配置--><appendername="console"class="ch.qos.logback.core.ConsoleAppender"><encoder><pattern>${log.pattern}</pattern></encoder></appender><!--日志文件输出配置--><appendername="file_info"class="ch.qos.logback.core.rolling.RollingFileAppender"><file>${log.path}/sys-info.log</file><!--循环政策:基于时间创建日志文件--><rollingPolicyclass="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><!--日志文件名格式--><fileNamePattern>${log.path}/sys-info.%d{yyyy-MM-dd}.log</fileNamePattern>

<maxHistory>60</maxHistory><!--日志文件保存的最大天数--></rollingPolicy></appender><!省略部分配置></configuration>总结搭建SpringBoot项目开发环境01使用IDEA创建一个SpringBoot项目,并通过极少的代码让这个项目运行起来。SpringBoot项目参数配置02SpringBoot有两种配置参数的方式,其中一种是通过perties,另一种则是通过使用YAML文件进行配置。总结04THANKS.单元3登录及跳转页面初探学习目标01在SpringBoot项目中使用Thymeleaf模板引擎02运用Thymeleaf模板引擎输出静态页面03运用SpringBoot结合Thymeleaf输出含有动态数据的页面04运用Thymeleaf模板引擎结合Java实体类实现简单程序设计任务3.1输出用户登录界面任务情境01SpringBoot默认只能输出字符串数据,而仅靠输出字符串,是无法满足用于对软件系统的使用需求的。为了提升用户对软件系统的使用体验,我们需要给用户呈现一个完整的操作页面。我们需要引入模板引擎来实现数据展示。SpringBoot默认输出限制引入模板引擎:使用SpringBoot开发时,需引入模板引擎如Thymeleaf来实现数据与界面的分离,生成HTML供浏览器渲染。用户体验与动态数据展示:确保页面简洁、美观、易用,并合理使用Thymeleaf语法(如`th:text`)来动态展示数据,如用户登录状态。后端处理与Controller方法:后端处理用户登录请求,返回响应结果。新增`login()`方法接收URL请求,编写业务逻辑如验证登录凭证。验证通过则重定向,失败则返回错误信息。工作流程:在`pom.xml`中添加Maven依赖以引入Thymeleaf。其次,在`application.yml`中配置模板文件的编码等。最后,在`src/main/resources/templates`下创建默认首页文件并编写HTML。任务布置:构建竞赛登记管理系统的静态登录页面知识准备02Thymeleaf缓存配置01spring.thymeleaf.cache的作用提高渲染效率缓存Thymeleaf模板,减少重复解析和编译,加快页面渲染速度。降低服务器压力减少服务器对CPU和内存的使用,提高服务器处理请求的能力。保证页面一致性缓存模板后,多次请求将获取相同的页面内容,保证页面的一致性。缓存的开启与关闭在某些情况下,需要关闭缓存,以确保模板的实时更新和调试的方便。缓存的关闭通过设置Thymeleaf的配置项,可以开启缓存功能,提高模板渲染的效率。缓存的开启缓存对系统性能的影响缓存可以减少数据库查询次数,提高页面渲染速度,从而提升系统响应速度。提高响应速度缓存可以分担服务器的处理压力,避免服务器过载,提高系统的稳定性和可靠性。减轻服务器压力缓存可以减少页面加载时间,提高用户访问体验,增加用户满意度和忠诚度。优化用户体验Thymeleaf模板文件位置配置02spring.thymeleaf.prefix的作用指定Thymeleaf模板文件的前缀路径,如classpath:/templates/。定义模板文件路径通过合理配置前缀,可以加快模板文件的加载速度,提高开发效率。提高开发效率通过配置前缀,可以简化模板文件的引用,提高代码的可读性和可维护性。简化模板引用配置模板文件位置Thymeleaf默认会在项目的"src/main/resources/templates"目录下查找模板文件。默认位置可以通过在SpringBoot的配置文件中设置"spring.thymeleaf.prefix"属性,来自定义模板文件的位置。自定义位置可以配置多个模板文件位置,Thymeleaf会按照配置的先后顺序进行查找。多位置配置模板文件位置的选择原则01模板文件应放置在Web应用的根目录下,便于Web服务器访问。便于访问模板文件应放置在Web应用的安全区域内,防止未经授权的用户访问。02安全性03模板文件应放置在易于管理和维护的目录下,方便开发人员查找和修改。可维护性Thymeleaf页面后缀配置03spring.thymeleaf.suffix的作用定义页面后缀在SpringBoot中,通过配置spring.thymeleaf.suffix属性,可以定义Thymeleaf模板页面的后缀名。简化页面引用配置合适的后缀名可以简化模板页面中对于静态资源的引用,提高开发效率。提高代码可读性明确的页面后缀配置有助于其他开发人员理解页面资源的组织方式,提高代码的可读性。页面后缀的格式选择Thymeleaf默认使用HTML作为模板文件的后缀,如index.html。HTML后缀可以使用Thymeleaf特定的后缀,如index.thymeleaf,以明确标识模板文件。THYMELEAF后缀可以根据项目需求自定义模板文件的后缀,如index.tpl,但需要在配置中指定。自定义后缀页面后缀与模板文件的关系后缀配置方法页面后缀的作用页面后缀用于识别Thymeleaf模板文件,确保正确解析和渲染页面。在Thymeleaf配置文件中设置页面后缀,如“.html”,以便正确加载模板文件。后缀与模板关系页面后缀与模板文件内容相关联,共同构成完整的页面展示效果。Thymeleaf模板样式配置04spring.thymeleaf.mode的作用spring.thymeleaf.mode设置为HTML5时,Thymeleaf将使用HTML5规范解析模板。HTML5模式设置为LEGACYHTML4时,Thymeleaf将使用HTML4规范解析模板,兼容旧版浏览器。LEGACYHTML4模式设置为XML时,Thymeleaf将使用XML规范解析模板,适用于需要严格XML格式的场合。XML模式HTML5样式的配置在Thymeleaf模板中,使用HTML5的Doctype声明,确保浏览器以HTML5标准解析模板。HTML5Doctype通过Thymeleaf的语法,将CSS样式表链接到模板中,为页面提供统一的样式。CSS样式链接在Thymeleaf模板中,可以直接使用内联样式为元素设置样式,但通常不推荐这样做,因为不利于样式的复用和维护。内联样式其他可选的模板样式第三方样式标准样式0103Thymeleaf还支持使用第三方提供的模板样式,这些样式通常具有更加丰富的功能和更高的美观度。Thymeleaf提供了一套标准的模板样式,适用于大多数常见的Web应用。02用户可以根据自己的需求,自定义Thymeleaf模板的样式,包括颜色、字体、布局等。自定义样式Thymeleaf模板编码配置05spring.thymeleaf.encoding的作用设置模板编码spring.thymeleaf.encoding用于设置Thymeleaf模板的编码方式,确保模板解析和渲染时字符编码的正确性。防止乱码问题通过正确配置spring.thymeleaf.encoding,可以避免在Thymeleaf模板渲染过程中出现的乱码问题,提高用户体验。提高系统稳定性合理的编码配置有助于提高系统的稳定性,减少因编码问题导致的潜在错误和异常。编码格式的选择原则选择广泛支持的编码格式,以确保在各种环境下都能正常显示。兼容性01选择易于阅读和理解的编码格式,以提高代码的可维护性。可读性02选择对性能影响较小的编码格式,以提高系统的响应速度。性能03编码格式与模板文件的关系不同的编码格式会影响模板文件的显示和解析。编码格式影响01UTF-8和ISO-8859-1是Thymeleaf常用的编码格式。常用编码设置02在Thymeleaf的配置文件中,可以设置模板文件的默认编码格式。配置方法03任务实施03在项目的`src/main/resources/templates`目录下创建名为`index.html`的默认首页文件。文件内容按指定格式填写。添加默认首页文件点击三角箭头符号启动项目。启动项目并访问验证工作流程项目启动成功后,通过浏览器访问`http://localhost:8080/`验证模板引擎整合情况。若整合成功,效果如下。</dependencies>标签内添加完依赖后,保存并关闭pom.xml文件。添加Maven依赖在Idea中添加完依赖后点击页面右上角的刷新按钮,Idea将会自动把依赖下载到本地环境中。等待下载完成后,可以在Idea的MavenProjects窗口中看到新添加的Thymeleaf模板引擎依赖项。如果在下载过程中遇到网络问题或其他原因导致下载失败,可以尝试清除Maven本地仓库缓存后重新下载。添加application.yml配置spring:thymeleaf:enabled:trueencoding:utf-8prefix:classpath:/templates/cache:falsemode:HTMLsuffix:.html添加application.yml配置创建index.html文件01在src/main/resources/templates目录下,创建名为index.html的默认首页文件。编写HTML5代码02在index.html文件中,编写静态HTML5代码,包括文档类型声明、语言声明、头部信息(如字符编码和标题)以及主体内容(如欢迎消息)。自动跳转展示03当用户访问系统首页时,系统将自动跳转到index.html页面,并展示编写好的内容。添加默认首页文件点击图3-2中右上方工具栏的三角箭头符号。启动项目访问验证问题排查项目启动成功后,通过浏览器访问[http://localhost:8080/,验证模板引擎整合是否成功。启动项目时遇到问题,查看控制台输出信息获取详情,并根据具体情况进行排查和解决。030201启动项目并访问验证创建一个默认首页文件找到项目中的src/main/resources/templates目录,并创建一个默认首页文件,其名为index.html的文件,文件内容如下:编写登录页面制作需要用到的静态HTML5代码:静态HTML代码写完后,我们再来编写后端代码。静态HTML5代码示例在Controller类中新增一个login()方法该方法主要功能是接收URL请求并进行响应,其关键代码段如下:最后我们运行以上代码,在浏览器中访问http://localhost:8080/login,即可看到如图3-4所示的运行结果。后端代码示例运行成功效果展示在浏览器中访问http://localhost:8080/login,即可看到如下图所示的运行结果。(SprintBoot项目本地启动时,通常默认使用8080端口)任务3.2显示相同url下不同角色的不同首页任务情境01需求分析:系统中不同角色需看到不同首页内容,需根据用户角色动态加载和显示页面内容。教师登录后需填写竞赛信息,需提供竞赛信息登记表单。技术选型:选用SpringBoot作为后端框架,Thymeleaf模板引擎作为前端框架,以实现动态数据加载和页面元素控制。任务背景编写前端代码:使用Thymeleaf模板引擎编写前端代码,实现页面元素渲染和动态数据加载。编写后端代码:使用SpringBoot编写后端代码,实现数据处理和传输。测试和优化:测试代码功能和性能,进行必要优化。任务要求任务背景知识准备02Thymeleaf介绍定义与用途Thymeleaf是一个现代服务器端Java模板引擎,适用于Web和独立环境。它为HTML、XML、JavaScript、CSS和文本文件提供模板,帮助开发人员便捷地管理Web应用程序的视图层。主要特点Thymeleaf以易用性、强大功能、高可维护性和良好安全性为主要特点。定义与用途链接表达式用于生成Web应用程序中的链接,通常用于<a>标签的href属性中,以指定链接的URL。Thymeleaf的语法Thymeleaf使用@{...}语法来表示链接表达式。示例<ath:href="@{/login}">Login</a>会在页面中生成一个指向/login路径的链接。链接表达式03示例<divth:text=”’你是否读过,’+${session.book}+’!!’”><div>01定义与用途标准变量表达式用于获取上下文中的变量值。02语法Thymeleaf使用${...}语法来表示标准变量表达式。标准变量表达式03示例<p>Name:<spanth:text="*{firstName}">Sebastian</span>.</p>01定义与用途选择变量表达式用法跟标准变量表达式类似,不过得预先选择对象来代替上下文变量容器执行。02语法Thymeleaf使用*{...}语法来表示选择变量表达式。选择变量表达式03示例<pth:utext="#{home.welcome}">Welcometoourgrocerystore!</p>01定义与用途消息表达式用于从消息源中提取消息内容实现国际化(“国际化”指软件开发应当具备支持多种语言和地区的功能,也就是页面具备切换页面显示语言的能力。)02语法Thymeleaf使用#{...}语法来表示消息表达式。消息表达式03示例<ath:href=”@{http://localhost:8080/TestThymeleaf}”>项目路径</a>01定义与用途链接表达式一般用于网页页面跳转或html资源引入,在Web开发中使用非常频繁02语法Thymeleaf使用@{...}语法来表示片段表达式。链接表达式03示例<divth:insert="~{header::title}"></div>会在页面中插入header模板的title片段。01定义与用途片段表达式用于在模板中插入其他模板的片段,常用于布局模板中实现页面布局的复用。02语法Thymeleaf使用~{...}语法来表示片段表达式。片段表达式th标签简介Thymeleaf提供的特殊标签,用于在模板中设置属性、样式和行为等。常用th标签th:if、th:unless、th:switch、th:case、th:attr、th:value、th:href、th:src、th:text和th:utext等。功能与应用这些标签可以动态地修改元素的属性、样式和行为,以实现更灵活和可维护的视图层。th标签的使用定义th:onclick是一个用于设置元素点击事件的属性。用途在元素上绑定一个JavaScript函数或表达式。示例<buttonth:onclick="'getCollect()'">收藏</button>,当用户点击“收藏”按钮时,会触发名为“getCollect()”的JavaScript函数。th:onclick动态设置样式th:style可以根据条件或变量动态改变元素的外观。示例<divth:style="'display:'+@{(${sitrue}?'none':'inline-block')}+''"></div>,根据变量“sitrue”的值,动态设置div元素的display样式。th:style用于根据条件判断来显示或隐藏元素。功能若条件为真,则显示元素;否则隐藏元素。用法<divth:if="${rowStat.index}==0">这是第一行</div>示例在示例中,如果当前行的索引号为0,则显示“这是第一行”。解释th:if功能条件判断(反向),当条件为假时显示元素,否则隐藏元素。示例<ath:href="@{/login}"th:unless="${session.user!=null}">Login</a>说明如果用户已登录(session.user不为空),则不显示登录链接。th:unlessth:switch用于根据多个条件进行选择性匹配,类似于Java中的switch语句。以`th:switch`开始,并使用`th:case`进行条件判断。`th:case`的值可以是字符串、数字等,用于与`th:switch`的表达式进行匹配。在`<divth:switch="${user.role}">`中,`${user.role}`是需要匹配的值。`th:case="'admin'"`、`th:case="'teacher'"`分别匹配"admin"和"teacher"角色,并显示相应的段落。`th:case="*"`作为默认情况,当没有匹配到任何`th:case`时,显示"Userroleisunknown"。用途语法结构示例th:switchVSth:attr可以用来修改元素如src、title等通用属性。示例<imgth:attr="src=@{/image/aa.jpg},title=#{logo}">中,img元素的src属性被设置为/image/aa.jpg,title属性被设置为logo的文本内容。通用属性修改th:attrth:value用于指定标签的属性值。属性值修改<inputid="msg"type="hidden"th:value="${msg}"/>示例将input元素的value属性设置为变量“msg”的值。说明th:valueth:href设定链接地址使用th:href属性为a标签设定链接地址。例如,<ath:href="@{/logout}"class="signout"></a>将a标签的href属性设置为/logout,并添加了一个signout的类名。设定资源地址使用th:src可以为script或img等元素设定资源地址。例如,<scriptth:src="@{/resources/js/jquery/jquery.json-2.4.min.js}"></script>这段代码将script元素的src属性设置为/resources/js/jquery/jquery.json-2.4.min.js。th:srcth:text指定标签显示的文本内容。用途<tdclass="text"th:text="${username}"></td>,在这个例子中,th:text将td元素的文本内容设置为变量username的值。示例用于指定标签显示的文本内容,且不转义特殊标签。<pth:utext="${htmlcontent}">conten</p>中,文本内容设置为“htmlcontent”的值,不进行特殊标签转义。定义示例th:utext声明片段:使用`th:fragment`属性声明一个片段,该片段可以被其他位置通过`th:replace`或`th:insert`引入。示例:`<divth:fragment="copy">©2011TheGoodThymesVirtualGrocery</div>`声明了一个名为“copy”的片段。引入片段:在其他位置使用`th:replace`或`th:insert`属性引入已声明的片段。引入后,片段将替换或插入到引入位置,并显示相应的文本内容。引入上述“copy”片段后,将显示“©2011TheGoodThymesVirtualGrocery”这段文本。0102030405th:fragment任务实施03显示登录用户的用户名和角色名这部分需要编写前端代码,通过Thymeleaf模板引擎获取登录用户的用户名和角色名,并将其显示在页面的右上角。对不同角色显示不同的首页这部分需要编写前端代码,根据用户的角色不同,显示不同的首页内容。对于教师角色,需要显示竞赛信息登记表单,对于管理员角色,需要显示系统中所有教师已提交的竞赛信息。工作流程功能需求需要提供一个竞赛信息登记表单,包括保存和提交按钮。可以通过Thymeleaf模板引擎的表单标签和脚本语法来实现。教师登录后跳转到的竞赛信息登记表单需要获取登录用户的用户名和角色名,并将其显示在页面的右上角。可以通过Thymeleaf模板引擎的表达式语法来实现。显示登录用户的用户名和角色名需要根据用户的角色不同,显示不同的首页内容。可以通过Thymeleaf模板引擎的条件判断标签来实现。对不同角色显示不同的首页编写前端代码使用Thymeleaf模板引擎编写前端代码,实现上述功能需求。编写后端代码如果需要,可以编写后端代码来实现数据供给和处理。在任务拓展部分中,我们提供了一个简单的后端代码示例,用于生成虚构的竞赛信息数据。运行和测试运行程序并测试功能实现情况。实现步骤运行成功效果展示校级管理员用户登录后程序运行结果:教职工用户登录后程序运行结果:单元4竞赛登记管理系统前后端数据交互学习目标01掌握项目中前后端数据交互的方式02熟悉配置不同的JSON数据转换器03掌握对前端数据进行统一校验的方式04理解对异常的全局处理任务4.1定义竞赛信息交互格式前端页面后端服务采集数据传给后端显示从后端获取的数据接收并校验前端传来的数据任务场景任务布置前端如何将用户填入的竞赛信息数据转为JSON格式发送给后端?前端页面后端如何接收JSON格式的数据?接收后如何处理?后端服务知识准备JSON个数JSON(JavaScriptObjectNotation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。它基于JavaScript的一个子集,但是独立于语言,在前后端数据交互中被广泛使用。前端发送JSON格式数据前端代码中,无论是通过JavaScript的Ajax技术还是Html5的表单提交,都支持以JSON格式将数据发送给后端。这种数据交互方式使得前后端的数据传输更加灵活和高效。SpringBoot框架处理JSON格式数据SpringBoot框架内置了Jackson数据转换器,用于处理JSON格式的数据。它可以将JSON格式数据转换为后端接口使用的对象类型数据,从而方便后端进行数据处理和操作。知识准备Jackson是SpringBoot框架内置的JSON数据转换器,专为前后端交互的数据设计,提供快速且高效的数据转化能力。Jackson转换器Gson由Google公司开发,是一个优秀的JSON格式转换器,需要引入Gson相关的依赖,它提供了丰富的API接口,能够处理复杂的数据结构。Gson转换器Fastjson是阿里巴巴公司开发的高效、快速的JSON格式转换器,只需引入FastJson相关的依赖并去掉Web起步依赖中的Jackson即可使用。Fastjson转换器知识准备AjaxResult类AjaxResult类是一个全局响应结构,它扩展了HashMap以存储状态码、返回内容和数据对象。通过继承HashMap,AjaxResult能够以键值对的形式管理响应数据。AjaxResult类定义了后端返回给前端的通用数据结构,其中包括表示消息码的code,表示消息值的msg,表示业务数据的data。任务实施Maven中添加Json解析依赖如果使用默认的Jackson,无需对pom.xml做修改。如果要采用Google公司的Gson,需要在pom.xml中加入Gson相关的依赖,并且去掉Web起步依赖中的Jackson。如果采用阿里巴巴公司的FastJson转换器,需要引入FastJson相关的依赖,同时去掉Web起步依赖中的Jackson。刷新Maven依赖在Idea中添加完依赖后点击页面右上角的刷新按钮,Idea将会自动把依赖下载到本地环境中。任务实施创建竞赛信息实体类SysCompete这个竞赛信息实体类中,定义了竞赛项目id、项目名称、比赛时间、主办单位、教师数量及名单、学生数量及名单、竞赛类型、竞赛级别、学时信息、获奖情况、竞赛费用、竞赛相关文件、填报人信息、审批状态、教师标记、删除标记等信息。编写前端页面新建页面addCompete.html。用户可以在页面录入相关竞赛项目的信息,并可以选择相关文件,通过Ajax方式以JSON数据格式发送给后端。任务实施创建控制器新建AddCompetitionInfoController.java类,用到了三个注解:@RestController,@PostMapping,@RequestBody。自定义全局响应结构类定义一个AjaxResult类继承HashMap<String,Object>类型。当数据无误,发送的数据成功被后端接收的时候,调用success()方法返回数据。当用户输入的信息有误的时候,调用error()方法给前端返回错误。任务实施Postman简介Postman是一个接口测试工具,在做接口测试的时候,Postman相当于一个客户端,可以模拟用户发起的各类HTTP请求(如:get/post/delete/put等等)。将请求数据发送至服务端,获取对应的响应结果,从而验证响应中的结果是否和预期值相匹配。有了Postman的帮助,开发人员能够及时发现接口中的bug,提高开发效率。接口测试工具接口测试工具访问Postman官网

访问Postman官网的下载页/downloads/下载安装Postman

在Postman官网上,选择适合您操作系统的版本进行下载和安装。启动Postman

安装完成后,打开Postman应用程序。新建请求在Postman主界面,点击右上角的“+”按钮,创建一个新的请求标签页。在新建的标签页中,您可以输入请求的URL、选择请求方法(如GET、POST等)以及添加请求头和请求体。接口测试工具发送请求并查看结果点击右侧的“Send”按钮,Postman将发送请求并显示响应结果。响应结果包括状态码、响应时间、响应头和响应体等信息。接口测试工具任务4.2校验竞赛信息的合规性任务场景系统在进行信息处理的时候,一般要先对信息进行校验,防止程序运行中出现不必要的错误。我们可以在前端页面就进行数据校验,但后端的校验也是必不可少的,因为开发要遵循的一个原则就是“前端不可信”。因为前端位于客户端,用户很容易修改前端代码,绕过前端的校验。数据校验要求用户在输入学生的姓名,学院,专业,班级等数据信息时,要求都不能为空。用户在输入学生的学号时,要求学号不能小于10位,防止被黑客通过SQL注入的方式,盗取信息。任务布置知识准备Java在包validation-api中定义了验证的接口,而实现该接口的是HibernateValidator。JavaValidationSpringValidation是对HibernateValidation的又一次封装。SpringValidation提供了@Validated注解,新增了分组检验的功能。SpringValidation@NotBlank

检验字符串类型参数不能为空@NotNull

校验参数不能为null@Null

校验参数必须为null@NotEmpty

校验字符串,集合等不能为空串,空集合...常用的校验注解任务实施03配置异常处理的类创建一个专门的类来统一处理异常,将程序默认的异常信息转化为用户直观的提示方式。01对校验的字段进行注解打开需要进行数据校验的实体类,在每一个需要进行校验的字段上加对应的注解。02在控制器的方法上开启数据校验在接收前端数据的方法中接收对象类型的参数前加上@Valid标签,表明这个对象类型参数需要进行数据校验。任务实施任务4.3完成竞赛信息附件上传任务场景在竞赛登记管理系统中,会要求用户以附件形式提交各种材料,例如获奖证书和立项申报书,这就用到了文件上传功能。用户在页面提交文件后,后端会接收并存储这些文件,由管理人员审核。用户可以查看自己的竞赛登记信息,并且下载自己提交过的文件。03用户在查看自己的历史申报信息时,可以下载相应的文件。01用户在竞赛登记提交界面输入相应的申报信息后,可以选择上传的附件,这里可以上传获奖证书,立项申报文件,费用发放清册等文件,点击提交。02后端可以接收到前端传过来的文件数据,并存储到相应的目录下。任务布置知识准备SpringBoot项目是通过SpringMVC来实现文件上传的。SpringMVC的九大组件之一MultipartResolver是专门用来处理文件上传请求的。单文件上传可以将多文件上传看成是多个单文件一起上传。接收文件的方法中以MultipartFile数组作为参数即可实现多文件的接收。方法体中可以遍历这个文件数组,依次保存到指定目录。多文件上传SpringMVC并未对文件的下载进行封装和优化,我们实现文件下载的话直接使用HttpServletResponse类就行。文件下载任务实施文件上传创建前端页面在页面目录中新建一个html文件,添加一个表单,并在表单中添加“file”类型的input元素。编写FileController控制器在controller包中新建一个FileController类,编写后端接收文件上传请求的处理方法。任务实施文件下载创建前端页面新建一个html页面,在该页面上添加一个文件下载按钮,通过该按钮来触发下载操作。编写FileDownloadController控制器在controller包中新建一个FileDownloadController类用来负责后端逻辑的实现。任务实施任务4.4处理竞赛信息流转中的异常任务场景系统运行的时候难免会产生各种各样的异常情况。这些异常有的是我们程序员的逻辑失误造成的,而有的是一些不可控的因素造成的。我们可以在程序中使用try-catch机制来处理可能遇到的异常,从而增加系统的健壮性。但当遇到异常时,系统不应该直接将原始的错误信息呈现给用户,给用户呈现的应该是经过处理过的提示信息。这样既能减少敏感信息被不怀好意的人发现和利用,又能增强提示的可读性。那么,是否需要在每一个catch代码段中作出错误转化呢?在项目中配置全局异常处理类,用来统一处理程序中的异常。任务布置@ControllerAdvice注解@ControllerAdvice注解的类表示一个增强的控制器,可以将其作为全局异常处理器。此外,这个增强的控制器还能够实现全局数据绑定、全局数据预处理等功能。这些功能的实现需要搭配@ExceptionHandler、@InitBinder、@ModelAttribute等作用在方法的注解。@ExceptionHandler@ExceptionHandler注解主要用在方法上,表示该方法会处理指定的异常。当注解没有属性值时,表示会处理对应方法的参数中的任意类型的异常。而该注解有属性值时,就表明只处理参数指定的异常。知识准备实现HandlerExceptionResolver接口在SpringBoot项目中,默认使用ExceptionHandlerExceptionResolver对象来处理程序中遇到的异常。ExceptionHandlerExceptionResolver是HandlerExceptionResolver接口的实现类之一。HandlerExceptionResolver是SpringMVC九大组件之一,用来处理发生的异常。SpringMVC框架的DispatchServlet在初始化的时候,会去容器中找HandlerExceptionResolver的实现类,用来处理程序中可能出现的异常。知识准备任务实施编写触发异常测试代码新建一个类ExceptionController,在访问方法里直接抛出自定义的异常。编写全局异常处理类新建类GlobalExceptionHandler,类名上注解@RestControllerAdvice。该类中添加方法,在各方法上添加@ExceptionHandler注解和该注解的参数,用来限定该方法处理的特定类型的异常。测试运行运行程序,打开浏览器,访问localhost://8080/json,查看运行结果。任务实施总结定义前后端交互格式01定义清晰的交互数据格式便于前端开发人员和后端开发人员同步开发,也便于分别测试。校验前端信息的合规性02通过框架提供的数据校验相关的注解,大大减轻了开发人员对数据校验的工作量。文件上传03通过框架提供的文件上传方法,简化开发人员对于文件上传的编码工作。总结异常统一处理04通过框架提供的异常统一处理机制,节约开发人员对于不同异常出现时的相关处理时间。THANKS.单元6SpringBoot安全控制学习目标01掌握在SpringBoot项目中使用SpringSecurity的基本方法02运用Token实现权限认证03运用SSO实现单点登录认证04运用JWT集成实现对信息加密任务6.1实现管理员与教职工角色认证学习目标01理解Token的基本概念和工作原理Token是服务端生成并返回给客户端的请求操作通行证。用户首次登录后,服务器生成Token并返回给客户端,作为后续请求数据的通行证。在Token有效期内,客户端使用Token访问服务器,无需再次验证用户名和密码。掌握基于Token的认证流程从请求中获取Token信息。解析Token有效期并判断其是否仍在有效期内。Token过期时要求用户重新登录,更新Token信息。使用结束后从Redis中删除用户Token令牌。了解Token的存储和删除利用Redis等缓存数据库存储Token,便于读取和更新。用户注销或Token过期时,从Redis中删除Token令牌,确保系统安全。培养运用Token实现权限认证的技能理解SSO的基本概念和工作原理SSO(SingleSignOn)是一种用户只需一次登录,即可访问多个关联系统的功能。主要流程包括:获取ticket令牌、从令牌获取用户名、判断用户名是否为error、判断用户名是否存在、判断用户对象是否存在、生成Token并创建cookie。培养运用SSO实现单点登录认证的技能03用户在一个系统登录成功后,该系统生成并返回唯一的Ticket令牌给客户端。01掌握SSO认证的实现方法02各系统共享一个统一的Ticket令牌。培养运用SSO实现单点登录认证的技能客户端在访问其他系统时,将Ticket令牌携带在请求中。其他系统验证Ticket令牌的有效性,通过则允许访问。了解SSO认证的优势和挑战培养运用SSO实现单点登录认证的技能培养运用SSO实现单点登录认证的技能优势提供统一、便捷的登录方式,保护用户隐私和安全。挑战需要系统间的协调、令牌的唯一性和安全性,以及用户隐私和数据安全问题。理解JWT基本概念和工作原理01JWT是包含头、有效载荷和签名的开放标准,用于跨域身份认证。头包含元数据,有效载荷传递具体数据,签名确保数据完整性和安全性。掌握JWT生成和验证流程02生成JWT需创建头、有效载荷,并用指定算法签名后拼接。验证时,服务器解析并验证签名。通过则允许访问资源。了解JWT的优势和挑战03JWT优势在于跨域身份认证和数据加密安全校验。但需考虑有效期、存储和传输安全等挑战。培养运用JWT集成实现对信息加密的技能知识准备02SpringSecurity简介要点三强大的认证管理SpringSecurity提供了多种认证方式,包括基于表单的登录、基于HTTPBasic的登录、基于LDAP的登录等。同时,它还支持多种用户信息存储方式,包括从数据库、LDAP服务器等获取用户信息。0102精细的授权管理SpringSecurity提供了灵活的授权管理机制,可以通过角色、权限等方式对用户进行授权。同时,它还支持面向方面的权限控制,可以对不同的请求进行不同的权限控制。完善的安全特性SpringSecurity还提供了其他安全特性,如CSRF防护、HTTP请求头校验等,可以保护应用程序免受攻击和滥用。03SpringSecurity的功能与SpringMVC的集成SpringSecurity可以与SpringMVC框架无缝集成,通过注解和配置的方式,轻松实现安全认证和授权管理。与SpringBoot的集成SpringBoot是一个快速构建Spring应用程序的框架,SpringSecurity可以与SpringBoot完美结合,提供全面的安全保护。与SpringCloud的集成SpringCloud是Spring家族中用于构建微服务的框架,SpringSecurity可以与SpringCloud集成,实现微服务之间的安全通信和身份认证。010203SpringSecurity与Spring框架的集成HTTPSecurity简介目的:配置Web应用中的授权策略,确定哪些请求需要何种权限才能访问。mvcMatchers方法:指定需授权的Controller方法。例如,`.mvcMatchers("GET","/hello")`将匹配所有到`/hello`的GET请求。权限设置:在指定URL或方法后,可调用`permitAll`允许所有用户访问,或`authenticated`只允许已认证的用户访问。antMatchers方法:通过此方法,可指定需授权的URL模式。例如,`.antMatchers("/admin/")`将匹配所有以`/admin/`开头的URL。HTTPSecurity简介authorizeRequests()功能配置基于表单的登录方式。loginPage方法用于指定登录页面的URL。例如,.loginPage("/login")将登录页面设置为/login。usernameParameter和passwordParameter方法用于指定用户名和密码的参数名。默认情况下,用户名参数名为username,密码参数名为password。登录方式在配置formLogin后,用户需通过提交表单的方式登录系统。HTTPSecurity简介formLogin()功能配置基于HTTPBasic的认证方式。HTTPBasic认证一种简单的认证方式,通过在请求头中发送用户名和密码进行认证。realmName方法指定领域名,出现在WWW-Authenticate响应头中。用户登录配置httpBasic后,用户需提供用户名和密码登录系统。HTTPSecurity简介httpBasic()Logout()用于配置和实现用户注销登录的功能。注销登录功能通过`logoutUrl`方法,可以设定用户注销后跳转的URL地址。例如,`.logoutUrl("/logout")`会将注销后的跳转地址设为"/logout"。指定注销URL使用`deleteCookies`方法,可以设定在注销过程中需要删除的Cookie。例如,`.deleteCookies("JSESSIONID")`会在用户注销时删除名为"JSESSIONID"的Cookie。删除指定Cookie在正确配置了Logout功能后,用户可以通过访问之前设定的注销URL来执行注销操作。访问注销URL进行注销HTTPSecurity简介Logout()开启Session管理:通过`sessionManagement`方法。开启SessionFixation保护:使用`sessionFixationProte

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论