SpringMVC—@RequestMapping注解

@RequestMapping注解

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

属性都是数组

SpringMVC—@RequestMapping注解_第1张图片

value属性

404

method属性

405

不设置都接收 get/post

SpringMVC—@RequestMapping注解_第2张图片

查询用户信息用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类型 匹配的是请求报文中的请求头

SpringMVC—@RequestMapping注解_第3张图片

测试代码

<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>

<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风格路径SpringMVC—@RequestMapping注解_第4张图片

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

空格也能匹配?SpringMVC—@RequestMapping注解_第5张图片

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

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

正确的使用方式:

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

SpringMVC—@RequestMapping注解_第6张图片

SpringMVC—@RequestMapping注解_第7张图片

SpringMVC—@RequestMapping注解_第8张图片

SpringMVC支持路径占位符

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

SpringMVC—@RequestMapping注解_第9张图片

感觉是在服务器端规定了每个/分隔符中间表示的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";
}

你可能感兴趣的:(spring~~~后端框架,java,spring)