SpringMVC系列: 注解@RequestMapping@PathVariable

Posted 小不点啊

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SpringMVC系列: 注解@RequestMapping@PathVariable相关的知识,希望对你有一定的参考价值。

一、@RequestMapping

[email protected]除了能修饰方法,还能修饰类
(1)修饰类:提供初步的请求映射信息,相对于web请求的根目录
(2)修饰方法:提供进一步的细分映射信息
相对于类定义处的URL,若类定义处未标注@RequestMapping,则方法处标记的URL相对于web应用的根目录

[email protected]的请求方式
@RequestMapping 的 value、method、params 及 heads 分别表示请求 URL、请求方法、请求参数及请求头的映射条
件,他们之间是与的关系,联合使用多个条件可让请求映射更加精确化。

3.Ant 风格资源地址支持 3 种匹配符:
– ?:匹配文件名中的一个字符
– *:匹配文件名中的任意字符
– **:** 匹配多层路径
? @RequestMapping 还支持 Ant 风格的 URL:
– /user/*/createUser: 匹配
/user/aaa/createUser、/user/bbb/createUser 等 URL
– /user/**/createUser: 匹配
/user/createUser、/user/aaa/bbb/createUser 等 URL
– /user/createUser??: 匹配
/user/createUseraa、/user/createUserbb 等 URL

 1 package com.study.springmvc.handlers;
 2 
 3 import org.springframework.stereotype.Controller;
 4 import org.springframework.web.bind.annotation.RequestMapping;
 5 import org.springframework.web.bind.annotation.RequestMethod;
 6 
 7 @RequestMapping("/requestMappingTest")
 8 @Controller
 9 public class RequestMappingTest {
10 
11     public static final String SUCCESS="success";
12     /**
13      * [email protected]除了能修饰方法,还能修饰类
14      *(1)修饰类:提供初步的请求映射信息,相对于web请求的根目录
15      *(2)修饰方法:提供进一步的细分映射信息
16      * 相对于类定义处的URL,若类定义处未标注@RequestMapping,则方法处标记的URL相对于web应用的根目录
17      * @return 成功
18      */
19     @RequestMapping("/testRequestMapping")
20     public String testRequestMapping() {
21         System.out.println("testRequestMapping");
22         return SUCCESS;
23     }
24     
25     /**
26      * [email protected]的请求方式
27        @RequestMapping 的 value、method、params 及 heads 分别表示请求 URL、请求方法、请求参数及请求头的映射条
28          件,他们之间是与的关系,联合使用多个条件可让请求映射更加精确化。
29      * @return
30      */
31     @RequestMapping(value="/testMethod",method=RequestMethod.POST)
32     public String testMethod() {
33         System.out.println("testMethod的post方式");
34         return SUCCESS;
35     } 
36     
37     /**
38      * 3.了解: 可以使用 params 和 headers 来更加精确的映射请求. params 和 headers 支持简单的表达式.
39      * 
40      * @return
41      */
42     @RequestMapping(value = "testParamsAndHeaders", params = { "username",
43             "age!=10" }, headers = { "Accept-Language=zh-CN,zh;q=0.8" })
44     public String testParamsAndHeaders() {
45         System.out.println("testParamsAndHeaders");
46         return SUCCESS;
47     }
48     /**
49      * 4.Ant 风格资源地址支持 3 种匹配符:
50      *    – ?:匹配文件名中的一个字符
51      *    – *:匹配文件名中的任意字符
52      *    – **:** 匹配多层路径
53      * @return
54      */
55     @RequestMapping("/testAntPath/*/abc")
56     public String testAntPath() {
57         System.out.println("testAntPath");
58         return SUCCESS;
59     }
60 }
 1 <%@ page language="java" contentType="text/html; charset=UTF-8"
 2     pageEncoding="UTF-8"%>
 3     
 4 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 5 <html>
 6 <body>
 7 <!-- href="helloworld"和HelloWorld.java的@RequestMapping("/helloworld")对应 -->
 8 <a href="helloworld">Hello World</a>
 9 
10 <br/>
11 <a href="requestMappingTest/testRequestMapping">@RequestMapping修饰类和方法</a>
12 
13 <br/>
14 <form action="requestMappingTest/testMethod" method="POST">
15 <input type="submit" value="测试@RequestMappin的post请求方式">
16 </form>
17  
18  <br/>
19 <a href="requestMappingTest/testParamsAndHeaders?username=lgs&age=11">testParamsAndHeaders</a>
20  
21  <br/>
22 <a href="requestMappingTest/testAntPath/ggggggg/abc">testAntPath</a>
23     
24     
25 </body>
26 </html>

二、@PathVariable

@PathVariable 映射 URL 绑定的占位符

? 带占位符的 URL 是 Spring3.0 新增的功能,该功能在SpringMVC 向 REST 目标挺进发展过程中具有里程碑的意义

? 通过 @PathVariable 可以将 URL 中占位符参数绑定到控制器处理方法的入参中:URL 中的 {xxx} 占位符可以通过@PathVariable("xxx") 绑定到操作方法的入参中。

1 <a href="pathVariableTest/testPathVariable/10">testPathVariable</a>
 1 package com.study.springmvc.handlers;
 2 
 3 import org.springframework.stereotype.Controller;
 4 import org.springframework.web.bind.annotation.PathVariable;
 5 import org.springframework.web.bind.annotation.RequestMapping;
 6 
 7 @RequestMapping("/pathVariableTest")
 8 @Controller
 9 public class PathVariableTest {
10 
11     public static final String SUCCESS="success";
12     
13     /**
14      * @PathVariable 可以来映射 URL 中的占位符到目标方法的参数中.
15      * @param id
16      * @return
17      */
18     @RequestMapping("/testPathVariable/{id}")
19     public String testPathVariable(@PathVariable("id") Integer id) {
20         System.out.println("testPathVariable: " + id);
21         return SUCCESS;
22     }
23 }

 
















以上是关于SpringMVC系列: 注解@RequestMapping@PathVariable的主要内容,如果未能解决你的问题,请参考以下文章

SpringMVC系列: 注解@RequestMapping@PathVariable

SpringMVC的初体验-3

IDEA插件系列(64):Document Assistant插件——SpringMVC文档助手

@RequestParam 注解的使用——Spring系列知识学习笔记

ssm框架系列-springmvc处理器映射器和适配器

获取SpringMVC中所有RequestMapping映射URL信息