javascript
SpringMVC‘s Ediary更新中
目錄
- HelloWorld
- @RequestMapping注解
- @RequestMapping注解的位置
- @RequestMapping注解的value屬性
- @RequestMapping的method屬性
- @RequestMapping的params屬性
- @RequestMapping的headers屬性
- mvc支持ant風格路徑
- 路徑中占位符
- 通過控制器方法的形參獲取請求參數
- @RequestHeader處理請求頭信息和控制器方法形參的映射關系
- @CookieValue處理cookie數據和控制器方法形參的映射關系
- 通過Model共享數據
- 通過Map共享數據
- 通過ModelMap共享數據
- MVC視圖
- ThymeleafView
- 轉發視圖
- 重定向視圖
- 視圖控制器
- 開放靜態資源訪問
- RESTFul
- RESTFul案例
- 刪除功能
- 添加功能
- 實現修改、回顯功能
- 回顧
- HttpMessageConverter
- @RequestBody
- RequestEntity
- 通過HttpServletResponse響應瀏覽器數據
- @ResponseBody
- SpringMVC處理json
- springMVC處理ajax
- 文件上傳和下載
- 文件下載
- 文件上傳
- 攔截器
- 三抽象方法
- 攔截器配置
- 多攔截器的執行順序
- 異常處理器
- 基于配置的異常處理
- 基于注解的異常處理
HelloWorld
創建webapp目錄
在里面添加xml配置文件
file->project structure
項目路徑和描述都能找到
xml的路徑記得改成src下的main下的webapp下
自動創建了
配置web.xml
創建springMVC配置文件就不會報錯了
創建控制器
表示已被ioc容器管理了
配置mvc的配置文件
創建首頁
配置tomcat
運行
和方法名沒關系只和請求路徑和requestmapping有關
訪問指定頁面
部署運行
總結:
地址欄有變成web-inf下的target.html呢?所以是用轉發的方式
瀏覽器發送請求,若請求地址符合前端控制器的url-pattern,該請求就會被前端控制器
DispatcherServlet處理。前端控制器會讀取SpringMVC的核心配置文件,通過掃描組件找到控制器,
將請求地址和控制器中@RequestMapping注解的value屬性值進行匹配,若匹配成功,該注解所標識的
控制器方法就是處理請求的方法。處理請求的方法需要返回一個字符串類型的視圖名稱,該視圖名稱會
被視圖解析器解析,加上前綴和后綴組成視圖的路徑,通過Thymeleaf對視圖進行渲染,最終轉發到視
圖所對應頁面
@RequestMapping注解
創建新module,配置pom.xml
創建webapp,如果沒有藍點的得配一下
@RequestMapping注解的位置
配置tomcat運行
注解標識的位置
@RequestMapping注解的value屬性
運行
@RequestMapping的method屬性
Get請求和Post請求
Get:每次提交請求參數會拼接在請求地址部分,用?拼接,名=值&。。。
就是表單的name=value
Post請求參數放請求體中(安全)(數據無限),格式也是name=value&…,Get無請求體(不安全)(數據有限)。
文件上傳不能GET
如果RequestMapping的method屬性不設置,點擊鏈接和提交發現請求方式是啥都能匹配
運行發現POST方式不好使了
改一下,都好使了
GET查詢、POST新增、PUT修改、DELETE刪除(相同請求地址前提表示不同請求功能)
測試form能不能發put和delete請求
請求和請求映射的方式匹配不了就報405
@RequestMapping的params屬性
@RequestMapping的headers屬性
mvc支持ant風格路徑
模糊匹配
路徑中占位符
獲取請求參數
通過控制器方法的形參獲取請求參數
獲取到了
多請求參數中出現多個同名的請求參數,可以再控制器方法的形參位置設置字符串類型或字符串數組接收請求參數。若使用字符串類型形參最終結果是每個值使用逗號拼接
注解處理請求參數和控制器方法的形參映射關系
沒傳可能400
設置為可以不傳輸,和不傳、傳空字符串時的默認值
@RequestHeader處理請求頭信息和控制器方法形參的映射關系
運行
required為true表示請求頭信息必須存在,defaultValue是沒有信息的默認值
@CookieValue處理cookie數據和控制器方法形參的映射關系
第一次getSession時cookie是存在響應報文中的,因為檢查請求報文發現沒有cookie沒有就是第一次,然后創建httpsession對象,然后將session放到服務器維護的map集合中,創建一個cookie,它的鍵是固定的JSESSIONID,值是隨機序列,和uuid很像。再把cookie響應到瀏覽器。第二次以后是存在于請求報文中。
也有required和defaultValue屬性。
通過實體類型的形參獲取請求參數
創建User
請求參數和實體類屬性名一致就行
亂碼問題
在Tomcat里面servlet.xml設置,GET請求不會亂碼
域對象中共享數據
原生servletAPI
通過Model共享數據
通過Map共享數據
通過ModelMap共享數據
通過servletAPI向session域中
通過servletAPI向application域對象共享數據
MVC視圖
ThymeleafView
轉發視圖
重定向視圖
視圖控制器
404了
mvc配置文件中用了view-controller之后控制器中所有請求映射全部失效
請求映射重新實現效果
開放靜態資源訪問
同樣需要配置注解驅動
創建項目
配置tomcat
RESTFul
RESTFul模擬操作用戶資源
HiddenHttpMethodFilter處理PUT和DELETE請求
注冊過濾器
設置編碼前提條件是在此之前你不能獲取任何的請求參數,獲取之后編碼就沒有效果
先設置處理編碼的過濾器再配置處理請求方式的過濾器
換一下過濾器順序
RESTFul案例
依賴配置、web.xml最后創建springMVC配置文件
RESTFul案例:
刪除功能
處理超鏈接路徑
超鏈接發送不了DELETE請求,但是可以去控制一個表單的提交,表單里method=post,還要有請求參數_method
解析成id了
還有一種方式
表示請求地址的地方加上單引號解析成路徑再拼接。
只能發送GET請求
要想發送DELETE得借助過濾器HiddenHttpFilter
過濾器要求請求方式必須是POST,請求參數是_method請求參數
web-inf下的內容必須通過轉發訪問
action沒寫的話會提交到當前頁面
打包里面沒有static
springMVC不處理靜態資源的,defaultServlet才是
首先靜態資源在訪問的時候會被springMVC處理,也就是前端控制器處理,找不到請求映射,就交給默認servlet處理,如果找到了就訪問,否則404;
如果是默認servlet找不到就不會在控制臺顯示No mapping
添加功能
因為不需要處理其他業務邏輯和處理數據
所以直接
運行
實現修改、回顯功能
復制add成update
拿著th:field的值和value進行比較,一致就自動添加checked=checked,單選框的回顯
先回顯,回顯完確定請求方式,請求方式是PUT所以要特殊處理。
回顧
列表頁面請求方式是GET,查詢所有信息。
刪除用的是Vue.js,用超鏈接控制表單的提交,給超鏈接綁定點擊事件,通過vue處理點擊事件,form表單才是最終提交方式,不是超鏈接。
DispatchServlet和web容器Tomcat中默認servlet是重復的,都是處理所有請求,沖突了就近原則。處理請求:是每次把請求地址去控制器中找相對應的請求映射,控制器中沒有訪問靜態資源的請求映射,
就是dispatchservlet處理不了就交給default,
如果沒配置注解驅動則所有請求都被default處理。
HttpMessageConverter
@RequestBody
新建module
有請求體的請求必須是POST請求
不管GET還是POST傳輸數據的位置不一樣,格式都一樣n=v&n=v
RequestEntity
表示完整請求報文信息
運行
來源頁面
哪個頁面發的請求。
通過HttpServletResponse響應瀏覽器數據
轉發重定向能響應瀏覽器整個頁面
Response.getWriter響應瀏覽器數據
mvc中用
@ResponseBody
運行
運行
加了注解就變響應體了。
SpringMVC處理json
引入json依賴,數據交互用的
User轉成json對象還是數組?
是對象,最外層是大括號是對象,方括號是數組。
其他java對象轉json格式字符串(瀏覽器只能字符串)其他步驟咱之前做過了
json
數據交換多
xml
配置文件多
springMVC處理ajax
沒跳轉,ajax就是不發生跳轉的情況下與頁面進行交互。
文件上傳和下載
文件下載
ResponseEntity實現下載功能
測試文件上傳下載
能改的也就下載的文件和文件名
文件上傳
文件上傳解析器
解決文件重名問題
運行
攔截器
創建項目
三抽象方法
攔截器配置
mvc配置文件注冊
放行
運行
多攔截器的執行順序
攔截器各個方法執行順序
pre是按配置攔截器順序,post和after是反序
異常處理器
基于配置的異常處理
運行
基于注解的異常處理
創建WebInit
新建module
用來代替web.xml
過濾器
添加過濾器
總結
以上是生活随笔為你收集整理的SpringMVC‘s Ediary更新中的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 跳格子的问题
- 下一篇: 【华为OD机试真题 JS】跳格子游戏