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更新中的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 跳格子的问题
- 下一篇: rotation应用和vector3向量
