問題引入
因為前端頁面只能請求兩種方式:GET請求和POST請求,所以就需要後臺對其進行處理
解決辦法:通過springmvc中提供的HiddenHttpMethodFilter過濾器來實現
而由於我們springboot中通過OrderedHiddenHttpMethodFilter類去繼承了springmvc中的HiddenHttpMethodFilter類,所以該類就擁有了HiddenHttpMethodFilter的所有功能,而只要我們在springboot啟動時將該元件加入到容器中,那麼該功能就會生效
生效的條件:
檢視HiddenHttpMethodFilter過濾器原始碼
找到其中的 doFilterInternal()方法
編寫程式碼
後臺控制器UserController
1 package com.lzp.controller; 2 3 import org.springframework.web.bind.annotation.*; 4 5 /** 6 * @Author LZP 7 * @Date 2021/7/19 11:18 8 * @Version 1.0 9 */ 10 @RestController 11 public class UserController { 12 13 @PostMapping("/user") 14 public String post() { 15 return "POST-USER"; 16 } 17 18 @DeleteMapping("/user") 19 public String delete() { 20 return "DELETE_USER"; 21 } 22 23 @PutMapping("/user") 24 public String put() { 25 return "PUT_USER"; 26 } 27 28 @GetMapping("/user") 29 public String get() { 30 return "GET-USER"; 31 } 32 33 34 35 }
HTML頁面程式碼
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>Title</title> 6 </head> 7 <body> 8 <form action="/user" method="get"> 9 <input type="submit" value="GET方法"> 10 </form> 11 <form action="/user" method="post"> 12 <input type="submit" value="POST方法"> 13 </form> 14 <form action="/user" method="post"> 15 <input type="hidden" name="_method" value="DELETE"> 16 <input type="submit" value="DELETE方法"> 17 </form> 18 <form action="/user" method="post"> 19 <input type="hidden" name="_method" value="PUT"> 20 <input type="submit" value="PUT方法"> 21 </form> 22 </body> 23 </html>
開啟過濾器
在springboot全域性配置檔案application.properties中進行配置
前端頁面效果展示
get請求
post請求
delete請求
put請求
這樣一來,我們就可以使用Rest風格,即使用請求方式來判斷使用者的具體業務操作,避免了原生的請求名稱過長,或不易記、以後也不需要為想名字而煩惱了