最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Spring @RequestMapping 注解及使用技巧詳解

 更新時(shí)間:2025年06月06日 11:28:29   作者:可問 可問春風(fēng)  
@RequestMapping是Spring MVC 中定義請(qǐng)求映射規(guī)則的核心注解,用于將HTTP請(qǐng)求映射到Controller處理方法,下面給大家介紹Spring @RequestMapping 注解及使用技巧,感興趣的朋友一起看看吧

@RequestMapping 是 Spring MVC 中 定義請(qǐng)求映射規(guī)則的核心注解,用于將 HTTP 請(qǐng)求映射到 Controller 處理方法。以下通過場(chǎng)景化解釋其功能、參數(shù)及使用技巧:

一、核心作用

URL 路徑映射
將特定 URL 請(qǐng)求路由到對(duì)應(yīng)的 Controller 方法。

@Controller
@RequestMapping("/user")  // 類級(jí)別路徑,所有方法路徑前添加 /user
public class UserController {
    @RequestMapping("/profile")  // 完整路徑:/user/profile
    public String profile() {
        return "user/profile";
    }
}

支持多種HTTP方法
通過 method 參數(shù)限定請(qǐng)求方法(GET、POST等)。

@RequestMapping(value = "/create", method = RequestMethod.POST)
public String createUser(User user) {
    userService.save(user);
    return "redirect:/user/list";
}

多請(qǐng)求處理
支持同時(shí)響應(yīng)多個(gè) URL 路徑或請(qǐng)求參數(shù)。

@RequestMapping(value = {"/list", "/all"}, method = RequestMethod.GET)
public String listUsers(Model model) {
    model.addAttribute("users", userService.findAll());
    return "user/list";
}

二、關(guān)鍵參數(shù)說明

參數(shù)作用描述示例
value / path指定映射的URL路徑(可多路徑)@RequestMapping("/api/user")
method限制HTTP請(qǐng)求方法(GET、POST等)method = RequestMethod.PUT
params要求請(qǐng)求必須包含特定參數(shù)params = "type=admin" (參數(shù)須為 type=admin
headers限制請(qǐng)求頭條件headers = "Content-Type=application/json"
consumes指定處理的請(qǐng)求內(nèi)容類型(Content-Type)consumes = MediaType.APPLICATION_JSON_VALUE
produces指定響應(yīng)內(nèi)容的類型(Accept頭匹配)produces = "text/plain;charset=UTF-8"

三、快捷組合注解

Spring 4.3+ 提供簡(jiǎn)化的HTTP方法注解,替代 method 參數(shù)配置:

  • @GetMapping → @RequestMapping(method = GET)
  • @PostMapping → @RequestMapping(method = POST)
  • @PutMapping、@DeleteMapping、@PatchMapping

用法示例

@RestController
@RequestMapping("/api/v1")
public class UserApiController {
    @GetMapping("/users/{id}")
    public User getUser(@PathVariable Long id) {
        return userService.findById(id);
    }
    @PostMapping("/users")
    public ResponseEntity<?> createUser(@RequestBody User user) {
        userService.save(user);
        return ResponseEntity.created(URI.create("/users/" + user.getId())).build();
    }
}

四、動(dòng)態(tài)路徑參數(shù)(@PathVariable)

通過 {變量名} 語(yǔ)法捕獲 URL 路徑中的動(dòng)態(tài)值,搭配 @PathVariable 使用:

@GetMapping("/detail/{userId}/{type}")
public String userDetail(
    @PathVariable("userId") Long id, 
    @PathVariable String type  // 變量名相同可省略參數(shù)
) {
    // 示例URL:/user/detail/123/admin
    // id=123, type="admin"
    return "user/detail";
}

五、匹配請(qǐng)求參數(shù)(params條件)

要求存在某個(gè)參數(shù)

@RequestMapping(value = "/search", params = "keyword")
public String searchByKeyword(String keyword) { ... }

參數(shù)值匹配指定模式

@GetMapping(value = "/filter", params = "status=active")
public List<User> getActiveUsers() { ... }

六、常見問題與解決

1. 路徑?jīng)_突問題

  • 問題:多個(gè)處理方法映射到同一路徑導(dǎo)致沖突。
  • 解決:通過 method 或 params 進(jìn)一步區(qū)分請(qǐng)求。
@GetMapping("/edit")
public String editForm() { ... }
@PostMapping("/edit")
public String saveEdit(User user) { ... }

2. 模糊匹配優(yōu)先問題

  • 問題/user/* 和 /user/123 同時(shí)存在時(shí),優(yōu)先匹配更具體的路徑。
  • 規(guī)則:Spring 優(yōu)先匹配精確路徑,再匹配通配符路徑。

七、最佳實(shí)踐

RESTful 風(fēng)格設(shè)計(jì)
使用HTTP方法區(qū)分操作:

  • GET → 查詢資源
  • POST → 新增資源
  • PUT → 更新完整資源
  • PATCH → 部分更新資源
  • DELETE → 刪除資源

顯式指定 Content-Type
使用 consumesproduces 明確請(qǐng)求與響應(yīng)格式:

@PostMapping(value = "/create", consumes = "application/json", produces = "application/json")
public User createUserJson(@RequestBody User user) { ... }

推薦使用組合注解
優(yōu)先用 @GetMapping、@PostMapping,提升代碼可讀性。

八、其他特性

Ant風(fēng)格通配符支持

  • ?: 匹配單個(gè)字符
  • *: 匹配任意數(shù)量的字符(不包含路徑分隔符)
  • **: 跨多級(jí)路徑匹配(例如 /api/** 匹配 /api/users/123
@GetMapping("/files/*.txt")  // 匹配 /files/note.txt 或 /files/data.txt
public String handleTextFiles() { ... }

總結(jié)

  • 核心定位@RequestMapping 是定義 HTTP 請(qǐng)求入口的關(guān)鍵注解。
  • 簡(jiǎn)化開發(fā):通過 組合注解 + PathVariable + 參數(shù)條件 實(shí)現(xiàn) RESTful 接口。
  • 注意點(diǎn):確保路徑唯一性,避免沖突;優(yōu)先使用組合注解提升代碼清晰度。

到此這篇關(guān)于Spring @RequestMapping 注解及使用技巧詳解的文章就介紹到這了,更多相關(guān)Spring @RequestMapping 注解內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論

榕江县| 襄汾县| 肥城市| 齐齐哈尔市| 荃湾区| 松溪县| 石阡县| 阿坝县| 日喀则市| 丰宁| 北安市| 东至县| 新沂市| 南汇区| 乌拉特中旗| 屏南县| 荆州市| 星子县| 朝阳区| 樟树市| 阜宁县| 万山特区| 巴彦淖尔市| 车致| 育儿| 壤塘县| 淮安市| 嘉义县| 贵定县| 大丰市| 北碚区| 穆棱市| 定边县| 石门县| 牡丹江市| 滦南县| 沾化县| 和平区| 邓州市| 集安市| 龙陵县|