SpringMVC—@RequestMapping注解

@RequestMapping注解

如果在两个类都写了 映射同一个请求地址 那请求这个这个地址会500,也会报错。其实就是两个方法的访问路径相同,会报错
解决的方法就是在类上使用@RequestMappin注解 加了一层路径

属性都是数组

在这里插入图片描述

value属性

404

method属性

405

不设置都接收 get/post

在这里插入图片描述

查询用户信息用get,新增用户信息post,修改用put,删除用delete

params属性

400

与上面两个不一样 parames 设置的条件必须全部满足

params = {"username","password !=123456"}

上面两个条件必须同时满足

 params ={"username"} //必须携带这些参数
params ={"!username"} //一定不能有username 这个参数
params ={"username=admin"} //必须参数username 值必须是admin
params ={"username!=admin"} //必须参数username 值一定不能是admin

Headers属性

404

与params类型 匹配的是请求报文中的请求头

在这里插入图片描述

测试代码

<body>
<h1>首页</h1>
<a th:href="@{/hello/t}"> RequestMapping注解测试</a><br>
<a th:href="@{/test1}"> RequestMapping注解的value属性测试</a><br>
<a th:href="@{/test2}"> RequestMapping注解的value属性测试</a><br>
<form th:action="@{/test1}" method="get">
    <input type="submit" value="method属性get提交表单">
</form>

<form th:action="@{/test1}" method="post">
    <input type="submit" value="method属性post提交表单">
</form>

<a th:href="@{/getMapping}" > GetMapping注解的测试</a><br><!--超链接就是get请求-->

<form th:action="@{/testPut}" method="put">
    <input type="submit" value="测试method属性put或delete提交表单 (不行)">
</form>

<a th:href="@{/testParams(username='admin',password=123456)}">测试params属性</a><br>


</body>
@Controller
//@RequestMapping("/hello")
public class RequestMappingController {

    @RequestMapping(
            value = {"/test1","/test2","/test3"},
            method = {RequestMethod.GET,RequestMethod.POST}, //限制了请求方式
            params ={"username"} //必须携带这些参数
            //params ={"!username"} //一定不能有username 这个参数
            //params ={"username=admin"} //必须参数username 值必须是admin
            //params ={"username!=admin"} //必须参数username 值一定不能是admin
    )
    public String success(){
        return "success";
    }

    @GetMapping("/getMapping")
    public String testMapping(){
        return "success";
    }

    @RequestMapping(value = "/testPut" , method = RequestMethod.PUT)
    public String testPut(){
        return "success";
    }
    @RequestMapping(value = "/testParams", params = {"username"})
    public String testParams(){
        return "success";
    }
}
@Controller
public class TestController {
    @RequestMapping("/")
    public String index(){
        return "index";
    }
}

SpringMVC支持ant风格路径

?: 必须有且只有一个字符 可以数字 字母 ±冒号 等等( /和? 不行)

空格也能匹配?[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PCcO2o6l-1648536751400)(D:\学习\截图\image-20220322202448186.png)]

** 前后不能有内容 比如下面的是错的(两颗星真的是两颗星,这样就相当于上面的那个)

@RequestMapping(value = "/a**a/testAnt")

正确的使用方式:

@RequestMapping(value = "/**/testAnt")

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-f29N9ff3-1648536751402)(D:\学习\截图\image-20220322211915244.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HHdg0QcG-1648536751404)(D:\学习\截图\image-20220322211959302.png)]

SpringMVC支持路径占位符

在restful风格里原来的请求参数 变成了请求路径 的方式去传输

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZAagMDcc-1648536751405)(D:\学习\截图\image-20220322212547601.png)]

感觉是在服务器端规定了每个/分隔符中间表示的value的含义,这样传输的时候必须根据这个格式来,比如第一个为id,第二个为name,反过来都不行,不过的确前端不需要name了

所以说支持路径中的占位符是在服务器端设置一个占位符,请求发送后会将对应的值赋给占位符

										//占位符的id自动赋值给形参id
                                            //如果前端请求/testPath 没有占位直接404
 @RequestMapping(value = "/testPath/{id}")  //testPath/1/ad 这样也是404 多了少了都会报错
public String testPath(@PathVariable("id") Integer id){
    System.out.println(id);                 //但是貌似不写@PathVariable 也行
    return "success";
}

@RequestMapping(value = "/testPath/{id}/{username}")
public String testPath2(@PathVariable("id") Integer id,@PathVariable("username") String username){
    System.out.println(id);
    System.out.println(username);
    return "success";
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值