軟件項目開發(fā)(Spring Boot)課件全套 楊智勇 單元1-8 競賽登記管理系統(tǒng)架構設計 - 競賽登記管理系統(tǒng)部署_第1頁
軟件項目開發(fā)(Spring Boot)課件全套 楊智勇 單元1-8 競賽登記管理系統(tǒng)架構設計 - 競賽登記管理系統(tǒng)部署_第2頁
軟件項目開發(fā)(Spring Boot)課件全套 楊智勇 單元1-8 競賽登記管理系統(tǒng)架構設計 - 競賽登記管理系統(tǒng)部署_第3頁
軟件項目開發(fā)(Spring Boot)課件全套 楊智勇 單元1-8 競賽登記管理系統(tǒng)架構設計 - 競賽登記管理系統(tǒng)部署_第4頁
軟件項目開發(fā)(Spring Boot)課件全套 楊智勇 單元1-8 競賽登記管理系統(tǒng)架構設計 - 競賽登記管理系統(tǒng)部署_第5頁
已閱讀5頁,還剩323頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

單元1競賽登記管理系統(tǒng)架構設計學習目標01了解系統(tǒng)基本概況,明確技術選型02編寫系統(tǒng)需求說明書03編寫架構說明書任務1.1分析競賽登記管理系統(tǒng)用戶需求包括競賽名稱、時間、地點、參賽人員、獲獎情況等,并上傳相關附件。教師提交競賽登記信息二級學院管理員審核二級學院領導復審校級管理員終審確保信息準確無誤,符合學校規(guī)定。如有誤或不符合規(guī)定,駁回并給出建議。確保重要信息準確無誤。如有誤或有問題,駁回管理員審核并給出建議。確保所有信息準確、規(guī)范。如有誤或有問題,駁回二級學院領導審核并給出建議。背景介紹

目標與意義提高工作效率通過引入競賽登記管理系統(tǒng),可以實現對競賽信息的快速登記、審核和查詢,避免了傳統(tǒng)的手工處理方式帶來的效率低下問題。提高準確性系統(tǒng)中設置了多個審核環(huán)節(jié),可以最大程度地減少信息錄入和傳遞過程中的錯誤和遺漏。促進信息共享通過引入競賽登記管理系統(tǒng),可以實現競賽信息的快速傳遞和共享,方便各級管理員和教師及時獲取最新的競賽信息。競賽登記管理系統(tǒng)概述校級管理員終審管理員登錄系統(tǒng),終審領導提交的競賽信息,確保真實、準確和重要。通過則公布在學校平臺供查詢,不通過則反饋教師并重新審核。教師提交競賽登記信息系統(tǒng)支持教師在線提交競賽信息,并自動分類和歸檔,方便后續(xù)統(tǒng)計和分析。二級學院管理員審核管理員登錄系統(tǒng),審核教師提交的競賽信息,確保真實、準確和完整。通過則提交至領導復審,不通過則反饋教師并重新審核。二級學院領導復審領導登錄系統(tǒng),復審管理員提交的競賽信息,評估重要性、獎勵積分和金額。通過則提交至校級管理員終審,不通過則反饋教師并重新審核。產品描述教師提交競賽信息二級學院管理員審核二級學院領導復審校級管理員終審應用場景教師填寫并上傳競賽信息,系統(tǒng)自動分類歸檔。領導重點審查信息的重要性、獎勵積分和金額,通過后提交給校級管理員終審。管理員核實信息真實性、準確性和完整性,通過后提交給二級學院領導復審。管理員核對信息真實性、準確性和重要性,通過后公布在學校平臺上,供教師查詢和參考。該系統(tǒng)的用戶群體主要包括學校的教師。他們需要使用該系統(tǒng)提交本年度的競賽成果,并填寫相關的競賽信息。教師二級學院管理員是該系統(tǒng)中另一個重要的用戶群體。他們需要審核教師提交的競賽信息,并反饋審核結果。二級學院管理員二級學院領導需要對二級學院管理員提交的競賽信息進行復審,并反饋復審結果。二級學院領導校級管理員需要對二級學院領導提交的競賽信息進行終審,并反饋終審結果。校級管理員用戶群體軟件需求說明書產品描述競賽登記管理系統(tǒng)是一個軟件平臺,為教師、二級學院管理員、二級學院領導及校級管理員提供競賽信息的登記、審核、查詢和統(tǒng)計功能。旨在提高競賽信息登記的效率和準確性,同時提供靈活的審核和查詢功能,方便各級管理員對競賽信息進行管理和分析。產品需求功能需求:包括教師提交競賽信息、二級學院管理員審核競賽信息、二級學院領導審核競賽信息、校級管理員審核競賽信息等功能。性能需求:涉及系統(tǒng)的響應時間、并發(fā)用戶數、數據安全性等方面的要求。項目概述教師提交競賽登記信息填寫競賽信息表單,包括名稱、時間、地點、參賽人員、獲獎情況等,并上傳相關附件。完成后點擊“提交”按鈕,將信息提交至系統(tǒng)。登錄系統(tǒng),審核競賽信息的真實性、準確性及附件的完整性和合規(guī)性。通過則點擊“通過”,不通過則點擊“駁回”。通過后狀態(tài)改為“待二級學院領導審核”。登錄系統(tǒng),審核競賽信息的重要性和必要性,以及費用發(fā)放的合理性。通過則點擊“通過”,不通過則點擊“駁回”。通過后狀態(tài)改為“待校級管理員審核”。登錄系統(tǒng),審核競賽信息的合規(guī)性和準確性。通過則點擊“通過”,不通過則點擊“駁回”。通過后狀態(tài)改為“已通過”。二級學院管理員審核競賽信息二級學院領導審核競賽信息校級管理員審核競賽信息功能需求響應時間01系統(tǒng)應保證90%以上的事務在3秒鐘內處理完,否則用戶可能不會等待操作的正常結束。并發(fā)用戶數02由于主要供教師、二級學院管理員及領導、校級管理員等角色使用,且每年的使用周期不長,因此系統(tǒng)只需滿足100人同時在線即可確保業(yè)務的正常開展。數據安全性03系統(tǒng)應保證數據的安全性和完整性,避免數據丟失或泄露的情況發(fā)生。在數據庫出現故障時,應能夠及時恢復數據并保障系統(tǒng)的正常運行。性能需求任務1.2設計競賽登記管理系統(tǒng)架構引言項目用途競賽登記管理系統(tǒng)旨在提供一個高效、易用的工具,用于高校教職工快速、準確地登記和管理競賽信息,主要功能包括添加、修改、刪除和查詢競賽等。項目環(huán)境系統(tǒng)在高校網絡環(huán)境中運行,需確保網絡安全性與穩(wěn)定性。設計時需考慮固定用戶群體的使用習慣和需求。項目范圍涵蓋需求分析、系統(tǒng)設計、編碼實現、測試部署等階段。需求分析階段定義功能需求和性能需求;系統(tǒng)設計階段設計邏輯架構和物理架構;編碼實現階段按設計要求實現功能;測試部署階段進行全面測試并部署到實際環(huán)境。任務背景項目目標提供高效、易用的工具,幫助高校教職工快速準確登記和管理競賽信息,考慮用戶習慣和需求,確保系統(tǒng)安全性與穩(wěn)定性。目標與范圍系統(tǒng)架構設計架構設計的目的解決軟件復雜度帶來的問題。單體式架構的選擇理由目標用戶群體小,僅高校的部分教職工。同時在線人數預期不會超過100。業(yè)務流程相對簡單。單體式架構能夠滿足實際業(yè)務需求,且維護成本低于分布式架構。系統(tǒng)架構設計概述系統(tǒng)的邏輯架構主要由三個層次組成數據訪問層、業(yè)務邏輯層、視圖層。數據訪問層主要負責數據的持久化操作,包括數據的增刪改查等。業(yè)務邏輯層主要負責處理系統(tǒng)的核心業(yè)務邏輯,包括競賽信息的增刪改查、用戶權限的認證等。視圖層主要負責系統(tǒng)的界面展示,包括登錄界面、競賽信息展示界面、用戶管理界面等。邏輯架構設計邏輯架構設計系統(tǒng)的邏輯架構圖硬件部署方式部署于校內網絡管理中心服務器,僅對內網PC機開放。軟件部署方式采用基于SpringBoot的JAR包部署。物理架構設計硬件部署方式競賽登記管理系統(tǒng)的網絡拓撲圖方案優(yōu)化策略對于用戶需求說明中給出的功能需求,主要涉及數據庫基本增刪改查操作,以及文件上傳下載功能,這些需求均較為常規(guī),且系統(tǒng)用戶并發(fā)訪問量要求偏低,因此完全具備技術可行性。在后端技術選型中,我們選擇了SpringBoot2.2作為開發(fā)語言,該版本的后端技術體系已經相當成熟,且擁有大量的第三方插件,可以很好地滿足開發(fā)需求。在前端技術選型中,我們計劃優(yōu)先采用Thymeleaf模板引擎來開發(fā)前端,該模板引擎易于上手,且可以很好地與SpringBoot集成,因此也被廣大開發(fā)者所青睞。技術可行性分析03穩(wěn)定業(yè)務需求便于后期擴展和維護,降低長期成本。01低用戶并發(fā)訪問量及常規(guī)功能需求降低了開發(fā)難度,減少資源消耗。02較短開發(fā)周期及高水平團隊縮短開發(fā)時間,減少人力成本。經濟可行性分析

高可用性設計自動重啟機制在服務器穩(wěn)定且有專業(yè)網絡維護的條件下,通過簡單的自動重啟機制確保系統(tǒng)的高可用性。負載均衡技術采用負載均衡技術分配網絡請求,防止單一服務器壓力過大導致的系統(tǒng)崩潰。定期備份與恢復演練定期進行系統(tǒng)備份和恢復演練,確保在意外情況下及時發(fā)現并恢復系統(tǒng)。由于業(yè)務需求穩(wěn)定,應減少因系統(tǒng)升級或修改導致的不穩(wěn)定因素。系統(tǒng)穩(wěn)定性考慮未來擴展需求,預留足夠的接口和模塊以便擴展。系統(tǒng)可擴展性加強系統(tǒng)攻擊防護功能的開發(fā)和部署,確保數據安全和用戶隱私保護。系統(tǒng)安全性可維護性考慮用戶需求與體驗優(yōu)化業(yè)務流程圖時,首要考慮的是用戶的需求和使用體驗,確保流程滿足用戶習慣和業(yè)務需求。順暢性與高效性業(yè)務流程應優(yōu)化以減少用戶操作步驟,提高操作效率,確保流程順暢且高效??勺匪菪耘c可管理性記錄每個步驟的操作情況和狀態(tài),確保業(yè)務流程可追溯、可查詢歷史記錄,便于管理。業(yè)務流程圖優(yōu)化優(yōu)化后的業(yè)務流程圖競賽登記管理系統(tǒng)的業(yè)務流程圖開發(fā)技術選型編程語言由于項目團隊成員更熟悉Java開發(fā)語言,因此后端語言技術選型應優(yōu)先考慮傳統(tǒng)的Spring+SpringMVC+Mybatis體系或SpringBoot。雖然這二者之間并無本質區(qū)別,但考慮到該項目規(guī)模較小且工期較緊,故應采用項目搭建簡單、第三方插件完備的SpringBoot2.2為后端技術選型。依賴管理對于JavaWeb項目,通常采用的都是ApacheMaven來進行依賴管理,我們的項目也采用ApacheMaven3來管理依賴。后端技術選型后端技術選型數據校驗工具數據校驗工具擬采用HibernateValidation6.0,它可以提供全面的數據校驗功能,包括基本類型校驗、復雜類型校驗、自定義校驗等。數據庫連接池數據庫連接池擬采用AlibabaDruid1.2,它是一款高性能的數據庫連接池組件,可以提供強大的數據庫連接管理和性能監(jiān)控功能。視圖層框架由于前端技術選型需要考慮界面風格和用戶交互體驗,因此計劃優(yōu)先采用SpringBoot官方推薦且容易上手的Thymeleaf模板引擎為主來開發(fā)前端,并基于此技術體系完成一個初級演示版交給用戶。若用戶可接受此界面風格,則繼續(xù)用該體系來開發(fā)前端;若用戶對界面有更高要求且愿意適當延長開發(fā)周期,則視圖層換用Vue2.6來開發(fā)。JavaScript框架在前端開發(fā)過程中,通常會用到一些JavaScript框架來輔助開發(fā),比如jQuery、Bootstrap等。這些框架可以幫助開發(fā)人員快速構建出符合現代瀏覽器標準的用戶界面,提高開發(fā)效率。前端技術選型CSS框架CSS框架主要用于樣式設計和布局排版,比較流行的CSS框架有Bootstrap、Foundation等。這些框架提供了一系列的CSS類和組件,可以方便地實現常見的頁面布局和樣式設計。前端技術選型對于競賽登記管理系統(tǒng)的數據存儲需求,應優(yōu)先選擇體積小巧、安裝簡便、易于維護、使用免費的數據庫,顯然MySQL數據庫是不二之選,具體版本為MySQL5.7。關系型數據庫如果系統(tǒng)中需要存儲大量的非結構化數據,比如文件、圖片等,可以考慮使用非關系型數據庫,比如MongoDB、Redis等。這些數據庫可以提供高效的數據存儲和檢索功能,并且易于擴展和維護。非關系型數據庫數據庫選型授權管理組件選擇如SpringSecurity、ApacheShiro等組件,提供全面的授權管理功能,如基于角色的訪問控制(RBAC)、基于資源的訪問控制(ABAC)等。身份認證組件選擇如SpringSecurity、ApacheShiro等組件,提供全面的身份認證功能,如用戶名密碼認證、LDAP認證、OAuth2.0認證等。攻擊防護組件選擇如SpringSecurity、ApacheShiro等組件,提供全面的攻擊防護功能,如防止SQL注入、XSS攻擊、CSRF攻擊等。安全控制組件選型總結與展望競賽登記管理系統(tǒng)的架構設計目標是解決軟件復雜度帶來的問題,通過合理的架構設計和技術選型,以滿足業(yè)務需求,提高系統(tǒng)的可靠性、可維護性和可擴展性。競賽登記管理系統(tǒng)的邏輯架構包括數據訪問層、業(yè)務邏輯層和視圖層。數據訪問層負責數據的持久化存儲和檢索,業(yè)務邏輯層負責處理業(yè)務邏輯和規(guī)則,視圖層負責用戶交互和界面展示。競賽登記管理系統(tǒng)的物理架構包括硬件部署方式、軟件部署方式和方案優(yōu)化策略。硬件部署方式主要考慮到服務器的穩(wěn)定性和可靠性,軟件部署方式則需要選擇合適的部署方式以滿足系統(tǒng)的需求,方案優(yōu)化策略則包括技術可行性、經濟可行性、高可用性和可維護性的考慮。架構設計目標邏輯架構物理架構總結拓展新功能01根據用戶需求和業(yè)務發(fā)展需要,可以考慮在競賽登記管理系統(tǒng)的基礎上增加新的功能,例如支持移動端訪問、增加統(tǒng)計分析功能等。優(yōu)化性能02隨著用戶量的增加和系統(tǒng)運行時間的延長,系統(tǒng)可能會出現性能瓶頸,因此需要對系統(tǒng)進行性能優(yōu)化,例如優(yōu)化數據庫查詢語句、調整系統(tǒng)參數等。提升安全性03系統(tǒng)安全性是軟件開發(fā)中必須考慮的問題之一。競賽登記管理系統(tǒng)應加強對用戶密碼、數據備份等方面的保護措施,避免數據泄露和安全問題。后續(xù)工作展望THANKS.單元2競賽登記管理系統(tǒng)開發(fā)環(huán)境搭建學習目標01了解SpringBoot的基本原理、框架特色、主要組成02掌握Java開發(fā)環(huán)境的搭建與SpringBoot項目的初始化操作03學會對框架的參數進行配置任務2.1基于IntelliJIDEA的SpringBoot環(huán)境搭建前端頁面任務場景SpringBoot框架是對Spring框架的進一步集成,克服了Spring框架中配置繁瑣的弊端,大大提高了開發(fā)效率,是當前大部分項目的首選框架,本項目同樣選擇該框架。對于Java程序開發(fā)而言,IDEA無疑是當下最受開發(fā)者歡迎的開發(fā)工具,其中的原因之一便是IDEA對SpringBoot框架的良好支持。任務布置

在IDEA官網下載并安裝IDEA集成開發(fā)環(huán)境,并使用IDEA配置SpringBoot開發(fā)環(huán)境。

環(huán)境搭建完成后,我們將在IntelliJIDEA里創(chuàng)建一個SpringBoot項目來實現HelloWorld程序。知識準備Java語言Java是SUN(StanfordUniversityNetwork,斯坦福大學網絡公司)1995年推出的一門高級編程語言。隨著Java技術在web方面的不斷成熟,已經成為web應用程序的首選開發(fā)語言??梢詣?chuàng)建獨立運行的Spring應用內嵌Web容器提供大量的自動配置無需代碼生成和XML配置即可使用知識準備SpringBoot可以將該項目中所有的類和依賴包打包到一個jar內。SpringBoot根據項目自動配置Spring框架,來簡化項目的開發(fā),開發(fā)人員也可以修改默認配置。SpringBoot框架內嵌了Web容器,如Tomcat、Jetty、Undertow等。SpringBoot能達到快速使用Spring框架的目的,基本不需要代碼生成和任何XML配置便可實現Spring的開箱即用。提供starter簡化Maven配置SpringBoot提供大量的starterpom簡化Maven配置,可以做到自動化配置,高度封裝,開箱即用。SpringBoot框架的特性提供生產環(huán)境級別的監(jiān)控SpringBoot提供了生產級別的監(jiān)控、健康檢查及外部化配置,項目在生產環(huán)境中運行無需額外添加相關模塊。知識準備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開發(fā)者工具模塊,主要為SpringBoot項目的開發(fā)階段提供一些便利。spring-boot-actuator該模塊提供健康端點、環(huán)境端點、SpringBean端點等等spring-boot-actuator-autoconfigure為spring-boot-actuator提供自動配置。任務實施1.新建SpringBoot項目打開IDEA,沿著文件->新建->項目的途徑進入“新建項目”對話框,如圖2-1所示。在該對話框左側選擇“SpringInitializr”項,右側輸入或者選擇合適的內容?!懊Q”項是本項目的名稱,“位置”項是代碼所保存的位置,“語言”為本項目的開發(fā)語言,“類型”項為項目構建管理工具,“組”是本項目開發(fā)者所在組織的標識,“工件”是本項目在組織內的標識,“項目SDK”可以為本項目選擇指定的SDK,“Java”可以為編譯指定一個SDK版本,“打包”則可以選擇Jar包和War包兩種形式。任務實施1.新建SpringBoot項目點擊“下一步”,在此界面選擇SpringBoot的版本號和SpringBoot項目的啟動依賴項?!耙蕾図棥敝邪凑沾蟮姆诸惲谐隽怂玫膯右蕾図?,本項目是一個包含前后端的Web項目,故SpringWeb為必選項。任務實施1.新建SpringBoot項目點擊“完成”,IDEA開始為我們創(chuàng)建SpringBoot項目。此時可以在工作區(qū)看到創(chuàng)建好的Demo項目。其中,pom.xml文件是Maven用來管理項目的關鍵文件,剛才創(chuàng)建項目時所設置的項目名稱和配置項值,以及選擇的依賴項都會在該文件中有所體現。任務實施2.新建Controller類

在項目中新建一個Controller類,使用@RestController作為這個類的注解。@RestController注解是@Controller和@ResponseBody兩個注解的替代,而@ResponseBody注解表示返回的結果是數據而非頁面。

在Controller類中新建一個方法,該方法體只有一行代碼,返回“HelloWorld”字符串。在方法上使用@RequestMapping(value="index")來建立訪問路徑和方法的關聯關系。任務實施3.訪問頁面當訪問路徑localhost:8080/index時,此Controller可以對請求進行相應的處理。因為前面使用了@RestController注解,所以這個方法返回的結果僅僅是“HelloWorld”字符串。任務實施任務4.2配置競賽登記管理系統(tǒng)關鍵參數任務場景在軟件的開發(fā)、運行過程中,我們強調軟件的可配置性,因為這對提供軟件的靈活性、復用性很有幫助,可以減少程序員對代碼的反復修改。SpringBoot框架為我們開發(fā)者生成好了配置文件,即perties文件。本次任務中,我們將對競賽登記系統(tǒng)應用的SpringBoot框架進行相應的配置。任務布置perties的寫法是一行表示一個配置項內容,通過等號“=”將屬性名和值分隔開來。配置項名稱如果有多個層級,每個層級在每個配置項中都需要依次完整寫出來。YMAL配置方式使用縮進表示層級關系,相同層級的元素保持左對齊。值和屬性名之間使用冒號“:”分隔,值和冒號之間也要有空格。使用YAML進行配置時必須嚴格遵守YAML的基本語法,否則會有意想不到的錯誤。在JavaWeb中有很多日志框架,logback是性能最高的日志框架,SpringBoot默認使用的是logback日志,一般默認情況下,SpringBoot會利用logback記錄日志。知識準備任務實施Properties配置創(chuàng)建好的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層級下(即對開發(fā)的服務器進行配置),保持默認的服務器端口8080。配置項目的訪問路徑為/。配置tomcat服務器的URI編碼為UTF-8。設置tomcat服務器的最大線程數為800,默認是200。配置tomcat服務器的初始化線程數為30,默認是25。初學者可以僅對tomcat服務器的URI編碼進行設置。任務實施#開發(fā)環(huán)境配置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格式規(guī)范。最外層標簽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><!--循環(huán)政策:基于時間創(chuàng)建日志文件--><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項目開發(fā)環(huán)境01使用IDEA創(chuàng)建一個SpringBoot項目,并通過極少的代碼讓這個項目運行起來。SpringBoot項目參數配置02SpringBoot有兩種配置參數的方式,其中一種是通過perties,另一種則是通過使用YAML文件進行配置。總結04THANKS.單元3登錄及跳轉頁面初探學習目標01在SpringBoot項目中使用Thymeleaf模板引擎02運用Thymeleaf模板引擎輸出靜態(tài)頁面03運用SpringBoot結合Thymeleaf輸出含有動態(tài)數據的頁面04運用Thymeleaf模板引擎結合Java實體類實現簡單程序設計任務3.1輸出用戶登錄界面任務情境01SpringBoot默認只能輸出字符串數據,而僅靠輸出字符串,是無法滿足用于對軟件系統(tǒng)的使用需求的。為了提升用戶對軟件系統(tǒng)的使用體驗,我們需要給用戶呈現一個完整的操作頁面。我們需要引入模板引擎來實現數據展示。SpringBoot默認輸出限制引入模板引擎:使用SpringBoot開發(fā)時,需引入模板引擎如Thymeleaf來實現數據與界面的分離,生成HTML供瀏覽器渲染。用戶體驗與動態(tài)數據展示:確保頁面簡潔、美觀、易用,并合理使用Thymeleaf語法(如`th:text`)來動態(tài)展示數據,如用戶登錄狀態(tài)。后端處理與Controller方法:后端處理用戶登錄請求,返回響應結果。新增`login()`方法接收URL請求,編寫業(yè)務邏輯如驗證登錄憑證。驗證通過則重定向,失敗則返回錯誤信息。工作流程:在`pom.xml`中添加Maven依賴以引入Thymeleaf。其次,在`application.yml`中配置模板文件的編碼等。最后,在`src/main/resources/templates`下創(chuàng)建默認首頁文件并編寫HTML。任務布置:構建競賽登記管理系統(tǒng)的靜態(tài)登錄頁面知識準備02Thymeleaf緩存配置01spring.thymeleaf.cache的作用提高渲染效率緩存Thymeleaf模板,減少重復解析和編譯,加快頁面渲染速度。降低服務器壓力減少服務器對CPU和內存的使用,提高服務器處理請求的能力。保證頁面一致性緩存模板后,多次請求將獲取相同的頁面內容,保證頁面的一致性。緩存的開啟與關閉在某些情況下,需要關閉緩存,以確保模板的實時更新和調試的方便。緩存的關閉通過設置Thymeleaf的配置項,可以開啟緩存功能,提高模板渲染的效率。緩存的開啟緩存對系統(tǒng)性能的影響緩存可以減少數據庫查詢次數,提高頁面渲染速度,從而提升系統(tǒng)響應速度。提高響應速度緩存可以分擔服務器的處理壓力,避免服務器過載,提高系統(tǒng)的穩(wěn)定性和可靠性。減輕服務器壓力緩存可以減少頁面加載時間,提高用戶訪問體驗,增加用戶滿意度和忠誠度。優(yōu)化用戶體驗Thymeleaf模板文件位置配置02spring.thymeleaf.prefix的作用指定Thymeleaf模板文件的前綴路徑,如classpath:/templates/。定義模板文件路徑通過合理配置前綴,可以加快模板文件的加載速度,提高開發(fā)效率。提高開發(fā)效率通過配置前綴,可以簡化模板文件的引用,提高代碼的可讀性和可維護性。簡化模板引用配置模板文件位置Thymeleaf默認會在項目的"src/main/resources/templates"目錄下查找模板文件。默認位置可以通過在SpringBoot的配置文件中設置"spring.thymeleaf.prefix"屬性,來自定義模板文件的位置。自定義位置可以配置多個模板文件位置,Thymeleaf會按照配置的先后順序進行查找。多位置配置模板文件位置的選擇原則01模板文件應放置在Web應用的根目錄下,便于Web服務器訪問。便于訪問模板文件應放置在Web應用的安全區(qū)域內,防止未經授權的用戶訪問。02安全性03模板文件應放置在易于管理和維護的目錄下,方便開發(fā)人員查找和修改??删S護性Thymeleaf頁面后綴配置03spring.thymeleaf.suffix的作用定義頁面后綴在SpringBoot中,通過配置spring.thymeleaf.suffix屬性,可以定義Thymeleaf模板頁面的后綴名。簡化頁面引用配置合適的后綴名可以簡化模板頁面中對于靜態(tài)資源的引用,提高開發(fā)效率。提高代碼可讀性明確的頁面后綴配置有助于其他開發(fā)人員理解頁面資源的組織方式,提高代碼的可讀性。頁面后綴的格式選擇Thymeleaf默認使用HTML作為模板文件的后綴,如index.html。HTML后綴可以使用Thymeleaf特定的后綴,如index.thymeleaf,以明確標識模板文件。THYMELEAF后綴可以根據項目需求自定義模板文件的后綴,如index.tpl,但需要在配置中指定。自定義后綴頁面后綴與模板文件的關系后綴配置方法頁面后綴的作用頁面后綴用于識別Thymeleaf模板文件,確保正確解析和渲染頁面。在Thymeleaf配置文件中設置頁面后綴,如“.html”,以便正確加載模板文件。后綴與模板關系頁面后綴與模板文件內容相關聯,共同構成完整的頁面展示效果。Thymeleaf模板樣式配置04spring.thymeleaf.mode的作用spring.thymeleaf.mode設置為HTML5時,Thymeleaf將使用HTML5規(guī)范解析模板。HTML5模式設置為LEGACYHTML4時,Thymeleaf將使用HTML4規(guī)范解析模板,兼容舊版瀏覽器。LEGACYHTML4模式設置為XML時,Thymeleaf將使用XML規(guī)范解析模板,適用于需要嚴格XML格式的場合。XML模式HTML5樣式的配置在Thymeleaf模板中,使用HTML5的Doctype聲明,確保瀏覽器以HTML5標準解析模板。HTML5Doctype通過Thymeleaf的語法,將CSS樣式表鏈接到模板中,為頁面提供統(tǒng)一的樣式。CSS樣式鏈接在Thymeleaf模板中,可以直接使用內聯樣式為元素設置樣式,但通常不推薦這樣做,因為不利于樣式的復用和維護。內聯樣式其他可選的模板樣式第三方樣式標準樣式0103Thymeleaf還支持使用第三方提供的模板樣式,這些樣式通常具有更加豐富的功能和更高的美觀度。Thymeleaf提供了一套標準的模板樣式,適用于大多數常見的Web應用。02用戶可以根據自己的需求,自定義Thymeleaf模板的樣式,包括顏色、字體、布局等。自定義樣式Thymeleaf模板編碼配置05spring.thymeleaf.encoding的作用設置模板編碼spring.thymeleaf.encoding用于設置Thymeleaf模板的編碼方式,確保模板解析和渲染時字符編碼的正確性。防止亂碼問題通過正確配置spring.thymeleaf.encoding,可以避免在Thymeleaf模板渲染過程中出現的亂碼問題,提高用戶體驗。提高系統(tǒng)穩(wěn)定性合理的編碼配置有助于提高系統(tǒng)的穩(wěn)定性,減少因編碼問題導致的潛在錯誤和異常。編碼格式的選擇原則選擇廣泛支持的編碼格式,以確保在各種環(huán)境下都能正常顯示。兼容性01選擇易于閱讀和理解的編碼格式,以提高代碼的可維護性??勺x性02選擇對性能影響較小的編碼格式,以提高系統(tǒng)的響應速度。性能03編碼格式與模板文件的關系不同的編碼格式會影響模板文件的顯示和解析。編碼格式影響01UTF-8和ISO-8859-1是Thymeleaf常用的編碼格式。常用編碼設置02在Thymeleaf的配置文件中,可以設置模板文件的默認編碼格式。配置方法03任務實施03在項目的`src/main/resources/templates`目錄下創(chuàng)建名為`index.html`的默認首頁文件。文件內容按指定格式填寫。添加默認首頁文件點擊三角箭頭符號啟動項目。啟動項目并訪問驗證工作流程項目啟動成功后,通過瀏覽器訪問`http://localhost:8080/`驗證模板引擎整合情況。若整合成功,效果如下。</dependencies>標簽內添加完依賴后,保存并關閉pom.xml文件。添加Maven依賴在Idea中添加完依賴后點擊頁面右上角的刷新按鈕,Idea將會自動把依賴下載到本地環(huán)境中。等待下載完成后,可以在Idea的MavenProjects窗口中看到新添加的Thymeleaf模板引擎依賴項。如果在下載過程中遇到網絡問題或其他原因導致下載失敗,可以嘗試清除Maven本地倉庫緩存后重新下載。添加application.yml配置spring:thymeleaf:enabled:trueencoding:utf-8prefix:classpath:/templates/cache:falsemode:HTMLsuffix:.html添加application.yml配置創(chuàng)建index.html文件01在src/main/resources/templates目錄下,創(chuàng)建名為index.html的默認首頁文件。編寫HTML5代碼02在index.html文件中,編寫靜態(tài)HTML5代碼,包括文檔類型聲明、語言聲明、頭部信息(如字符編碼和標題)以及主體內容(如歡迎消息)。自動跳轉展示03當用戶訪問系統(tǒng)首頁時,系統(tǒng)將自動跳轉到index.html頁面,并展示編寫好的內容。添加默認首頁文件點擊圖3-2中右上方工具欄的三角箭頭符號。啟動項目訪問驗證問題排查項目啟動成功后,通過瀏覽器訪問[http://localhost:8080/,驗證模板引擎整合是否成功。啟動項目時遇到問題,查看控制臺輸出信息獲取詳情,并根據具體情況進行排查和解決。030201啟動項目并訪問驗證創(chuàng)建一個默認首頁文件找到項目中的src/main/resources/templates目錄,并創(chuàng)建一個默認首頁文件,其名為index.html的文件,文件內容如下:編寫登錄頁面制作需要用到的靜態(tài)HTML5代碼:靜態(tài)HTML代碼寫完后,我們再來編寫后端代碼。靜態(tài)HTML5代碼示例在Controller類中新增一個login()方法該方法主要功能是接收URL請求并進行響應,其關鍵代碼段如下:最后我們運行以上代碼,在瀏覽器中訪問http://localhost:8080/login,即可看到如圖3-4所示的運行結果。后端代碼示例運行成功效果展示在瀏覽器中訪問http://localhost:8080/login,即可看到如下圖所示的運行結果。(SprintBoot項目本地啟動時,通常默認使用8080端口)任務3.2顯示相同url下不同角色的不同首頁任務情境01需求分析:系統(tǒng)中不同角色需看到不同首頁內容,需根據用戶角色動態(tài)加載和顯示頁面內容。教師登錄后需填寫競賽信息,需提供競賽信息登記表單。技術選型:選用SpringBoot作為后端框架,Thymeleaf模板引擎作為前端框架,以實現動態(tài)數據加載和頁面元素控制。任務背景編寫前端代碼:使用Thymeleaf模板引擎編寫前端代碼,實現頁面元素渲染和動態(tài)數據加載。編寫后端代碼:使用SpringBoot編寫后端代碼,實現數據處理和傳輸。測試和優(yōu)化:測試代碼功能和性能,進行必要優(yōu)化。任務要求任務背景知識準備02Thymeleaf介紹定義與用途Thymeleaf是一個現代服務器端Java模板引擎,適用于Web和獨立環(huán)境。它為HTML、XML、JavaScript、CSS和文本文件提供模板,幫助開發(fā)人員便捷地管理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定義與用途選擇變量表達式用法跟標準變量表達式類似,不過得預先選擇對象來代替上下文變量容器執(zhí)行。02語法Thymeleaf使用*{...}語法來表示選擇變量表達式。選擇變量表達式03示例<pth:utext="#{home.welcome}">Welcometoourgrocerystore!</p>01定義與用途消息表達式用于從消息源中提取消息內容實現國際化(“國際化”指軟件開發(fā)應當具備支持多種語言和地區(qū)的功能,也就是頁面具備切換頁面顯示語言的能力。)02語法Thymeleaf使用#{...}語法來表示消息表達式。消息表達式03示例<ath:href=”@{http://localhost:8080/TestThymeleaf}”>項目路徑</a>01定義與用途鏈接表達式一般用于網頁頁面跳轉或html資源引入,在Web開發(fā)中使用非常頻繁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等。功能與應用這些標簽可以動態(tài)地修改元素的屬性、樣式和行為,以實現更靈活和可維護的視圖層。th標簽的使用定義th:onclick是一個用于設置元素點擊事件的屬性。用途在元素上綁定一個JavaScript函數或表達式。示例<buttonth:onclick="'getCollect()'">收藏</button>,當用戶點擊“收藏”按鈕時,會觸發(fā)名為“getCollect()”的JavaScript函數。th:onclick動態(tài)設置樣式th:style可以根據條件或變量動態(tài)改變元素的外觀。示例<divth:style="'display:'+@{(${sitrue}?'none':'inline-block')}+''"></div>,根據變量“sitrue”的值,動態(tài)設置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模板引擎獲取登錄用戶的用戶名和角色名,并將其顯示在頁面的右上角。對不同角色顯示不同的首頁這部分需要編寫前端代碼,根據用戶的角色不同,顯示不同的首頁內容。對于教師角色,需要顯示競賽信息登記表單,對于管理員角色,需要顯示系統(tǒng)中所有教師已提交的競賽信息。工作流程功能需求需要提供一個競賽信息登記表單,包括保存和提交按鈕。可以通過Thymeleaf模板引擎的表單標簽和腳本語法來實現。教師登錄后跳轉到的競賽信息登記表單需要獲取登錄用戶的用戶名和角色名,并將其顯示在頁面的右上角??梢酝ㄟ^Thymeleaf模板引擎的表達式語法來實現。顯示登錄用戶的用戶名和角色名需要根據用戶的角色不同,顯示不同的首頁內容??梢酝ㄟ^Thymeleaf模板引擎的條件判斷標簽來實現。對不同角色顯示不同的首頁編寫前端代碼使用Thymeleaf模板引擎編寫前端代碼,實現上述功能需求。編寫后端代碼如果需要,可以編寫后端代碼來實現數據供給和處理。在任務拓展部分中,我們提供了一個簡單的后端代碼示例,用于生成虛構的競賽信息數據。運行和測試運行程序并測試功能實現情況。實現步驟運行成功效果展示校級管理員用戶登錄后程序運行結果:教職工用戶登錄后程序運行結果:單元4競賽登記管理系統(tǒng)前后端數據交互學習目標01掌握項目中前后端數據交互的方式02熟悉配置不同的JSON數據轉換器03掌握對前端數據進行統(tǒng)一校驗的方式04理解對異常的全局處理任務4.1定義競賽信息交互格式前端頁面后端服務采集數據傳給后端顯示從后端獲取的數據接收并校驗前端傳來的數據任務場景任務布置前端如何將用戶填入的競賽信息數據轉為JSON格式發(fā)送給后端?前端頁面后端如何接收JSON格式的數據?接收后如何處理?后端服務知識準備JSON個數JSON(JavaScriptObjectNotation)是一種輕量級的數據交換格式,易于人閱讀和編寫,同時也易于機器解析和生成。它基于JavaScript的一個子集,但是獨立于語言,在前后端數據交互中被廣泛使用。前端發(fā)送JSON格式數據前端代碼中,無論是通過JavaScript的Ajax技術還是Html5的表單提交,都支持以JSON格式將數據發(fā)送給后端。這種數據交互方式使得前后端的數據傳輸更加靈活和高效。SpringBoot框架處理JSON格式數據SpringBoot框架內置了Jackson數據轉換器,用于處理JSON格式的數據。它可以將JSON格式數據轉換為后端接口使用的對象類型數據,從而方便后端進行數據處理和操作。知識準備Jackson是SpringBoot框架內置的JSON數據轉換器,專為前后端交互的數據設計,提供快速且高效的數據轉化能力。Jackson轉換器Gson由Google公司開發(fā),是一個優(yōu)秀的JSON格式轉換器,需要引入Gson相關的依賴,它提供了豐富的API接口,能夠處理復雜的數據結構。Gson轉換器Fastjson是阿里巴巴公司開發(fā)的高效、快速的JSON格式轉換器,只需引入FastJson相關的依賴并去掉Web起步依賴中的Jackson即可使用。Fastjson轉換器知識準備AjaxResult類AjaxResult類是一個全局響應結構,它擴展了HashMap以存儲狀態(tài)碼、返回內容和數據對象。通過繼承HashMap,AjaxResult能夠以鍵值對的形式管理響應數據。AjaxResult類定義了后端返回給前端的通用數據結構,其中包括表示消息碼的code,表示消息值的msg,表示業(yè)務數據的data。任務實施Maven中添加Json解析依賴如果使用默認的Jackson,無需對pom.xml做修改。如果要采用Google公司的Gson,需要在pom.xml中加入Gson相關的依賴,并且去掉Web起步依賴中的Jackson。如果采用阿里巴巴公司的FastJson轉換器,需要引入FastJson相關的依賴,同時去掉Web起步依賴中的Jackson。刷新Maven依賴在Idea中添加完依賴后點擊頁面右上角的刷新按鈕,Idea將會自動把依賴下載到本地環(huán)境中。任務實施創(chuàng)建競賽信息實體類SysCompete這個競賽信息實體類中,定義了競賽項目id、項目名稱、比賽時間、主辦單位、教師數量及名單、學生數量及名單、競賽類型、競賽級別、學時信息、獲獎情況、競賽費用、競賽相關文件、填報人信息、審批狀態(tài)、教師標記、刪除標記等信息。編寫前端頁面新建頁面addCompete.html。用戶可以在頁面錄入相關競賽項目的信息,并可以選擇相關文件,通過Ajax方式以JSON數據格式發(fā)送給后端。任務實施創(chuàng)建控制器新建AddCompetitionInfoController.java類,用到了三個注解:@RestController,@PostMapping,@RequestBody。自定義全局響應結構類定義一個AjaxResult類繼承HashMap<String,Object>類型。當數據無誤,發(fā)送的數據成功被后端接收的時候,調用success()方法返回數據。當用戶輸入的信息有誤的時候,調用error()方法給前端返回錯誤。任務實施Postman簡介Postman是一個接口測試工具,在做接口測試的時候,Postman相當于一個客戶端,可以模擬用戶發(fā)起的各類HTTP請求(如:get/post/delete/put等等)。將請求數據發(fā)送至服務端,獲取對應的響應結果,從而驗證響應中的結果是否和預期值相匹配。有了Postman的幫助,開發(fā)人員能夠及時發(fā)現接口中的bug,提高開發(fā)效率。接口測試工具接口測試工具訪問Postman官網

訪問Postman官網的下載頁/downloads/下載安裝Postman

在Postman官網上,選擇適合您操作系統(tǒng)的版本進行下載和安裝。啟動Postman

安裝完成后,打開Postman應用程序。新建請求在Postman主界面,點擊右上角的“+”按鈕,創(chuàng)建一個新的請求標簽頁。在新建的標簽頁中,您可以輸入請求的URL、選擇請求方法(如GET、POST等)以及添加請求頭和請求體。接口測試工具發(fā)送請求并查看結果點擊右側的“Send”按鈕,Postman將發(fā)送請求并顯示響應結果。響應結果包括狀態(tài)碼、響應時間、響應頭和響應體等信息。接口測試工具任務4.2校驗競賽信息的合規(guī)性任務場景系統(tǒng)在進行信息處理的時候,一般要先對信息進行校驗,防止程序運行中出現不必要的錯誤。我們可以在前端頁面就進行數據校驗,但后端的校驗也是必不可少的,因為開發(fā)要遵循的一個原則就是“前端不可信”。因為前端位于客戶端,用戶很容易修改前端代碼,繞過前端的校驗。數據校驗要求用戶在輸入學生的姓名,學院,專業(yè),班級等數據信息時,要求都不能為空。用戶在輸入學生的學號時,要求學號不能小于10位,防止被黑客通過SQL注入的方式,盜取信息。任務布置知識準備Java在包validation-api中定義了驗證的接口,而實現該接口的是HibernateValidator。JavaValidationSpringValidation是對HibernateValidation的又一次封裝。SpringValidation提供了@Validated注解,新增了分組檢驗的功能。SpringValidation@NotBlank

檢驗字符串類型參數不能為空@NotNull

校驗參數不能為null@Null

校驗參數必須為null@NotEmpty

校驗字符串,集合等不能為空串,空集合...常用的校驗注解任務實施03配置異常處理的類創(chuàng)建一個專門的類來統(tǒng)一處理異常,將程序默認的異常信息轉化為用戶直觀的提示方式。01對校驗的字段進行注解打開需要進行數據校驗的實體類,在每一個需要進行校驗的字段上加對應的注解。02在控制器的方法上開啟數據校驗在接收前端數據的方法中接收對象類型的參數前加上@Valid標簽,表明這個對象類型參數需要進行數據校驗。任務實施任務4.3完成競賽信息附件上傳任務場景在競賽登記管理系統(tǒng)中,會要求用戶以附件形式提交各種材料,例如獲獎證書和立項申報書,這就用到了文件上傳功能。用戶在頁面提交文件后,后端會接收并存儲這些文件,由管理人員審核。用戶可以查看自己的競賽登記信息,并且下載自己提交過的文件。03用戶在查看自己的歷史申報信息時,可以下載相應的文件。01用戶在競賽登記提交界面輸入相應的申報信息后,可以選擇上傳的附件,這里可以上傳獲獎證書,立項申報文件,費用發(fā)放清冊等文件,點擊提交。02后端可以接收到前端傳過來的文件數據,并存儲到相應的目錄下。任務布置知識準備SpringBoot項目是通過SpringMVC來實現文件上傳的。SpringMVC的九大組件之一MultipartResolver是專門用來處理文件上傳請求的。單文件上傳可以將多文件上傳看成是多個單文件一起上傳。接收文件的方法中以MultipartFile數組作為參數即可實現多文件的接收。方法體中可以遍歷這個文件數組,依次保存到指定目錄。多文件上傳SpringMVC并未對文件的下載進行封裝和優(yōu)化,我們實現文件下載的話直接使用HttpServletResponse類就行。文件下載任務實施文件上傳創(chuàng)建前端頁面在頁面目錄中新建一個html文件,添加一個表單,并在表單中添加“file”類型的input元素。編寫FileController控制器在controller包中新建一個FileController類,編寫后端接收文件上傳請求的處理方法。任務實施文件下載創(chuàng)建前端頁面新建一個html頁面,在該頁面上添加一個文件下載按鈕,通過該按鈕來觸發(fā)下載操作。編寫FileDownloadController控制器在controller包中新建一個FileDownloadController類用來負責后端邏輯的實現。任務實施任務4.4處理競賽信息流轉中的異常任務場景系統(tǒng)運行的時候難免會產生各種各樣的異常情況。這些異常有的是我們程序員的邏輯失誤造成的,而有的是一些不可控的因素造成的。我們可以在程序中使用try-catch機制來處理可能遇到的異常,從而增加系統(tǒng)的健壯性。但當遇到異常時,系統(tǒng)不應該直接將原始的錯誤信息呈現給用戶,給用戶呈現的應該是經過處理過的提示信息。這樣既能減少敏感信息被不懷好意的人發(fā)現和利用,又能增強提示的可讀性。那么,是否需要在每一個catch代碼段中作出錯誤轉化呢?在項目中配置全局異常處理類,用來統(tǒng)一處理程序中的異常。任務布置@ControllerAdvice注解@ControllerAdvice注解的類表示一個增強的控制器,可以將其作為全局異常處理器。此外,這個增強的控制器還能夠實現全局數據綁定、全局數據預處理等功能。這些功能的實現需要搭配@ExceptionHandler、@InitBinder、@ModelAttribute等作用在方法的注解。@ExceptionHandler@ExceptionHandler注解主要用在方法上,表示該方法會處理指定的異常。當注解沒有屬性值時,表示會處理對應方法的參數中的任意類型的異常。而該注解有屬性值時,就表明只處理參數指定的異常。知識準備實現HandlerExceptionResolver接口在SpringBoot項目中,默認使用ExceptionHandlerExceptionResolver對象來處理程序中遇到的異常。ExceptionHandlerExceptionResolver是HandlerExceptionResolver接口的實現類之一。HandlerExceptionResolver是SpringMVC九大組件之一,用來處理發(fā)生的異常。SpringMVC框架的DispatchServlet在初始化的時候,會去容器中找HandlerExceptionResolver的實現類,用來處理程序中可能出現的異常。知識準備任務實施編寫觸發(fā)異常測試代碼新建一個類ExceptionController,在訪問方法里直接拋出自定義的異常。編寫全局異常處理類新建類GlobalExceptionHandler,類名上注解@RestControllerAdvice。該類中添加方法,在各方法上添加@ExceptionHandler注解和該注解的參數,用來限定該方法處理的特定類型的異常。測試運行運行程序,打開瀏覽器,訪問localhost://8080/json,查看運行結果。任務實施總結定義前后端交互格式01定義清晰的交互數據格式便于前端開發(fā)人員和后端開發(fā)人員同步開發(fā),也便于分別測試。校驗前端信息的合規(guī)性02通過框架提供的數據校驗相關的注解,大大減輕了開發(fā)人員對數據校驗的工作量。文件上傳03通過框架提供的文件上傳方法,簡化開發(fā)人員對于文件上傳的編碼工作??偨Y異常統(tǒng)一處理04通過框架提供的異常統(tǒng)一處理機制,節(jié)約開發(fā)人員對于不同異常出現時的相關處理時間。THANKS.單元6SpringBoot安全控制學習目標01掌握在SpringBoot項目中使用SpringSecurity的基本方法02運用Token實現權限認證03運用SSO實現單點登錄認證04運用JWT集成實現對信息加密任務6.1實現管理員與教職工角色認證學習目標01理解Token的基本概念和工作原理Token是服務端生成并返回給客戶端的請求操作通行證。用戶首次登錄后,服務器生成Token并返回給客戶端,作為后續(xù)請求數據的通行證。在Token有效期內,客戶端使用Token訪問服務器,無需再次驗證用戶名和密碼。掌握基于Token的認證流程從請求中獲取Token信息。解析Token有效期并判斷其是否仍在有效期內。Token過期時要求用戶重新登錄,更新Token信息。使用結束后從Redis中刪除用戶Token令牌。了解Token的存儲和刪除利用Redis等緩存數據庫存儲Token,便于讀取和更新。用戶注銷或Token過期時,從Redis中刪除Token令牌,確保系統(tǒng)安全。培養(yǎng)運用Token實現權限認證的技能理解SSO的基本概念和工作原理SSO(SingleSignOn)是一種用戶只需一次登錄,即可訪問多個關聯系統(tǒng)的功能。主要流程包括:獲取ticket令牌、從令牌獲取用戶名、判斷用戶名是否為error、判斷用戶名是否存在、判斷用戶對象是否存在、生成Token并創(chuàng)建cookie。培養(yǎng)運用SSO實現單點登錄認證的技能03用戶在一個系統(tǒng)登錄成功后,該系統(tǒng)生成并返回唯一的Ticket令牌給客戶端。01掌握SSO認證的實現方法02各系統(tǒng)共享一個統(tǒng)一的Ticket令牌。培養(yǎng)運用SSO實現單點登錄認證的技能客戶端在訪問其他系統(tǒng)時,將Ticket令牌攜帶在請求中。其他系統(tǒng)驗證Ticket令牌的有效性,通過則允許訪問。了解SSO認證的優(yōu)勢和挑戰(zhàn)培養(yǎng)運用SSO實現單點登錄認證的技能培養(yǎng)運用SSO實現單點登錄認證的技能優(yōu)勢提供統(tǒng)一、便捷的登錄方式,保護用戶隱私和安全。挑戰(zhàn)需要系統(tǒng)間的協調、令牌的唯一性和安全性,以及用戶隱私和數據安全問題。理解JWT基本概念和工作原理01JWT是包含頭、有效載荷和簽名的開放標準,用于跨域身份認證。頭包含元數據,有效載荷傳遞具體數據,簽名確保數據完整性和安全性。掌握JWT生成和驗證流程02生成JWT需創(chuàng)建頭、有效載荷,并用指定算法簽名后拼接。驗證時,服務器解析并驗證簽名。通過則允許訪問資源。了解JWT的優(yōu)勢和挑戰(zhàn)03JWT優(yōu)勢在于跨域身份認證和數據加密安全校驗。但需考慮有效期、存儲和傳輸安全等挑戰(zhàn)。培養(yǎng)運用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后,用戶需通過提交表單的方式登錄系統(tǒng)。HTTPSecurity簡介formLogin()功能配置基于HTTPBasic的認證方式。HTTPBasic認證一種簡單的認證方式,通過在請求頭中發(fā)送用戶名和密碼進行認證。realmName方法指定領域名,出現在WWW-Authenticate響應頭中。用戶登錄配置httpBasic后,用戶需提供用戶名和密碼登錄系統(tǒng)。HTTPSecurity簡介httpBasic()Logout()用于配置和實現用戶注銷登錄的功能。注銷登錄功能通過`logoutUrl`方法,可以設定用戶注銷后跳轉的URL地址。例如,`.logoutUrl("/logout")`會將注銷后的跳轉地址設為"/logout"。指定注銷URL使用`deleteCookies`方法,可以設定在注銷過程中需要刪除的Cookie。例如,`.deleteCookies("JSESSIONID")`會在用戶注銷時刪除名為"JSESSIONID"的Cookie。刪除指定Cookie在正確配置了Logout功能后,用戶可以通過訪問之前設定的注銷URL來執(zhí)行注銷操作。訪問注銷URL進行注銷HTTPSecurity簡介Logout()開啟Session管理:通過`sessionManagement`方法。開啟SessionFixation保護:使用`sessionFixationProte

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論