springMVC簡單demo集合(持續更新中……)
根據狂神的講課(https://www.bilibili.com/video/BV1aE41167Tu?p=4),重新實現了一部分,可能在某處會比視訊中的程式碼內容要少些。之後會繼續學習繼續更新,增加個人總結。
程式碼同步在github上:https://github.com/HHHHoliday/Spring
程式碼中的註釋已經比較全了,所以CSDN只放總結筆記
1. springmvc-01-servlet模組:回顧servlet(基礎MVC框架)
URL輸入:http://localhost:8080/springmvc_01_servlet_war_exploded/hello?method=add
前端顯示:
URL輸入:http://localhost:8080/springmvc_01_servlet_war_exploded/hello?method=delete
前端顯示:
2.springmvc-02-springmvc模組:不帶註解的springmvc基礎原理實現
URL輸入:http://localhost:8080/springmvc_02_hellomvc_war_exploded/test
前端顯示:
注意:02模組主要用於理解springmvc原理,實際開發中不會這麼寫,太麻煩了。
3. springmvc-03-hello-annotation模組:帶註解的springmvc實現
URL輸入:http://localhost:8080/springmvc_03_hello_annotation_war_exploded/HelloController/hello
前端顯示:
03模組設計主要流程:
1.新建一個web專案
2.匯入相關jar包
3.編寫web.xml , 註冊DispatcherServlet
4.編寫springmvc配置檔案
5.接下來就是去建立對應的控制類 , controller
6.最後完善前端檢視和controller之間的對應
7.測試執行除錯.
03模組與02 邏輯上的區別:
-
springmvc-servlet.xml中新增了<mvc:annotation-driven />
Spring可以使用掃描機制來找到應用程式中所有基於註解的控制器類。該配置代替了02模組中的DefaultAnnotationHandlerMapping和AnnotationMethodHandlerAdapter例項,以使@RequestMapping註解生效。02模組中如下:<!--新增 處理對映器--> <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/> <!--新增 處理器介面卡--> <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>
-
前端URL的請求,利用註解@RequestMapping實現。
不需要再去手動配置URL請求路徑。在02模組中,如下:<bean id="/test" class="com.holidayX.controller.TestController"/>
-
springmvc-servlet.xml中新增了<mvc:default-servlet-handler />靜態資源過濾
讓Spring MVC不處理靜態資源 .css .js .html .mp3 .mp4 -
springmvc-servlet.xml中新增了<context:component-scan base-package=“com.holidayX.controller”/>
自動掃描包,讓指定包下的註解生效,由IOC容器統一管理。 -
在Controller類上,新增註解@Controller
加上這個註解的類 中的所有方法,如果返回值為String(例如return “hello”),並且有具體頁面可以跳轉,那麼就會被檢視解析器解析。而在02模組中,必須手動新增需要跳轉的頁面名稱,如下:mv.setViewName("hello"); //: /WEB-INF/jsp/hello.jsp
-
多個邏輯可以寫在同一個類的不同方法中,不需要每次都去配置和建立一個servlet。
多個請求可以指向一個檢視(例如return “hello”),但是頁面結果的結果是不一樣的。即檢視是可以被複用的,控制器與檢視之間是弱偶合關係。
總結,03模組只需要手動配置檢視解析器,而處理器對映器和處理器介面卡只需要開啟註解驅動<mvc:annotation-driven />即可,而省去了大段的xml配置。從而,主要的開發專注於controller後的業務邏輯即可。
4. springmvc-04-controller模組:RestFul風格 實現
-
將之前URL中的傳參方式(?valuable=1)轉化為隱示引數的方式(/1)。。
URL輸入:http://localhost:8080/springmvc_04_controller_war_exploded/commit/1/2
前端顯示:
檢視請求方法為Get:
-
通過路徑變數的型別可以約束訪問引數,如果型別不一樣,則訪問不到對應的請求方法,如這裡訪問是的路徑是/commit/1/a,則路徑與方法不匹配(因為程式碼中設定了1和a位置的變數屬性為int),而不會是引數轉換失敗,安全性更高。如下:
-
可以通過不同的請求方式來實現不同的效果。使路徑變得更加簡潔 / 獲得引數更加方便 / 框架會自動進行型別轉換。如下:請求地址一樣,但是功能可以不同!
http://127.0.0.1/item/1 查詢,GET
http://127.0.0.1/item 新增,POST
http://127.0.0.1/item 更新,PUT
http://127.0.0.1/item/1 刪除,DELETE上一張圖為GET,這裡展示POST方法:
URL輸入:http://localhost:8080/springmvc_04_controller_war_exploded/a.jsp
前端顯示:
點選提交,URL變為:http://localhost:8080/springmvc_04_controller_war_exploded/commit/1/3
前端顯示:
檢視請求方法為Post:
5. springmvc-04-controller模組:資料傳遞與顯示
- 前端傳值,變數名稱必須和後端設定的相同
URL輸入:http://localhost:8080/springmvc_04_controller_war_exploded/user/t1?username=baolei
前端顯示:baolei
注意:controller類的方法中,如果是前端的傳參,可以加上註解@RequestParam表示這個引數是前端傳來的,更清晰些。 - 使用物件接收前端傳值
URL輸入:http://localhost:8080/springmvc_04_controller_war_exploded/user/t2?id=1&name=baolei&age=11
前端顯示:空
可以看到伺服器上顯示User(id=1, name=baolei, age=11)。
注意:前端傳遞的引數名和物件名必須一致,否則就是null。
相關文章
- Spring Cloud 簡單教程 持續更新中SpringCloud
- 前端程式碼集合(持續更新)前端
- Springmvc 一個簡單的管理系統 我所遇到的坑1(持續更新)SpringMVC
- git使用、持續更新中Git
- Modern Javascript Cheatsheet 簡體中文版(持續更新中)JavaScript
- Android開源專案以及開源庫集合(持續更新中)Android
- JAVA系列合集(持續更新中)Java
- vue+jest 專案中的單測,持續更新..Vue
- Python中列表、元組、字典、集合與字串,相關函式,持續更新中……Python字串函式
- Spring面試題(持續更新中)Spring面試題
- CSS效果集錦(持續更新中)CSS
- JVM(持續更新。。。)JVM
- FastApi持續更新ASTAPI
- 持續整合、持續交付、持續部署簡介
- OC中專案使用swift(持續更新中)Swift
- JiaoZiVideoPlayer使用說明(持續更新中...)IDE
- 常見 git 需求整理(持續更新中)Git
- PHP面試題總結-持續更新中PHP面試題
- 日常工作筆記(持續更新中。。)筆記
- iOS開發常用巨集,持續更新中iOS
- Google 開發者大會,掘金持續更新中...Go
- Blender 雕刻 持續更新
- Android 開發中不得不知道的 Tips 集合 (持續更新 ing)Android
- C++知識點 —— 整合(持續更新中)C++
- 元件形式來分析 Laravel 思想 持續更新中元件Laravel
- Angular核心概念一覽表(持續更新中)Angular
- CentOS 7 常用命令 (持續更新中...)CentOS
- 機器學習完整資源推薦(持續更新中)機器學習
- mysql sql 中實戰小技巧持續更新MySql
- Android 技術選型(持續更新中...)Android
- 常用的Sqlite SQL語句(持續更新中)SQLite
- javascript演算法彙總(持續更新中)JavaScript演算法
- PC端寶藏軟體--持續更新中
- 簡單聊聊,如何構建測試工程師的能力模型 (持續更新)工程師模型
- 機器學習中的幾個常見概念(持續更新中......)機器學習
- 《Python 簡明教程》讀書筆記(持續更新)Python筆記
- MySql報錯(持續更新)MySql
- Pycharm快捷鍵持續更新PyCharm