@RequestMapping注解

@RequestMapping请求映射的作用就是将浏览器所发送的请求和

处理请求的控制器方法关联起来,建立映射关系。

SpringMVC 接收到指定的请求,就会来找到在映射关系中对应的

控制器方法来处理这个请求。

@RequestMapping标识的位置

  • 标记在类上:设置当前请求映射的基础信息,当前所匹配的请求路径

应该访问的是/test/hello,才能匹配到请求映射出来的方法。

  • 标记在方法上:设置请求映射的具体信息。

index.html

<h1>index.html</h1>
<a th:href="@{/hello}">测试@RequestMapping所标识的位置</a>

controller

@RequestMapping("/test")
public class TestRequestMappingController {
    @RequestMapping("/hello")
    public String hello(){
        return "success";
    }

success.html

<h1>success.html</h1>

@RequestMapping的value属性

  • @RequestMapping注解的value属性通过请求的请求地址匹配请求映射

  • @RequestMapping注解的value属性是一个字符串类型的数组,

即当前浏览器所发送的请求路径匹配value属性中的任何一个值,

则当前请求就会被注解所标识的方法进行处理。

  • @RequestMapping注解的value属性必须设置,至少通过请求地址匹配请求映射。

//例
@RequestMapping({"/hello","/a"})

@RquestMapping的method属性

  • @RequestMapping注解的method属性通过请求方式(get或post)匹配请求映射。

  • @RequestMapping注解的method属性是一个RequestMethod类型的数组,

该请求映射能够匹配多种请求方式。

@RequestMapping(value = "/hello",method ={ RequestMethod.GET,RequestMethod.POST})
  • 若请求地址满足请求映射的value属性,但浏览器发送的请求方式不满足method属性, 则浏览器报错405:Request method 'POST' not supported。

@RequestMapping的params属性(不常用)

作用:通过请求参数匹配请求,即浏览器发送的

请求参数必须满足params属性的设置。

params可以使用四种表达式:

"param":要求所匹配请求的请求参数中必须携带param参数
"!param" :要求所匹配请求的请求参数中不能携带param参数
param="value":要求所匹配请求的请求参数中必须携带param参数,
且必须为value。
param!="value":匹配请求的请求参数中必须可以不携带param参数,
若携带值一定不能是value。

index.html (浏览器端就演示第一种表达式)

<h1>index.html</h1>
<!--第一种方式拼接:get请求会把请求参数拼接到请求地址中,可以手动拼接-->
<a th:href="@{/test/hello?username=admin}">测试@RequestMapping的params属性</a><br>
<!--第二种方式拼接-->
<a th:href="@{/test/hello(username='admin')}">测试@RequestMapping的params属性</a><br>

controller层

    @RequestMapping(value = "/hello",
            method ={ RequestMethod.GET,RequestMethod.POST},
           params = {"username","!password","age=18","gender!=女"}
    )

SpringMVC支持ant风格的路径

  • ? :表示任意的单个字符

(任意字符中不能写?号,在路径中问号前面是路径,后面是请求参数)。

  • * :表示任意的0个或多个字符

  • **:表示任意层数的任意目录

  • 注意:使用**时,只能/**/xxx的方式,**前后都不能有字符

(/表示路径的分隔符,路径里面不能写/)

<a th:href="@{/test/aac/ant}">测试@RequestMapping的ant风格路径</a><br>
@RequestMapping("/a?c/ant")
    public String testAnt(){
        return "success";
    }

SpringMVC支持路径中的占位符

  • 原始方式:/deleteUser?id=1

  • rest方式:/user/delete/1

- 即匹配到当前映射,也要在控制器方法中获取传过来的请求参数,
以前传过来的是键和值,现在只有值,所以用一个占位符。
- 把当前向服务器传输过来的数据,作为路径的一部分,传过来没有键只有value值,
可以借助 @PathVariable 注解的value属性设置路径中,使用{xxxx}的方式
表示路径中的数据,将通过占位符表示的值和控制器方法的形参进行绑定。

html

<!--  把数据当作路径一部分传到服务器  -->
<a th:href="@{/test/rest/1}">测试@RequestMapping的value属性中的占位符</a><br>
<a th:href="@{/test/rest/1/admin}">测试@RequestMapping的value属性中的占位符</a><br>

controller

//    @RequestMapping("/rest/{id}")
    @RequestMapping("/rest/{id}/{username}")
//    public String testRest(@PathVariable("id") Integer id){
    public String testRest(@PathVariable("id") Integer id,@PathVariable("username") String uname){
        System.out.println("id:"+id+"uname:"+uname);
        return "success";
    }

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值