@RequestMapping、@RequestParam、@RequestBody、@PathVariable和@ModelAttribute使用

一、@RequestMapping使用须知

1.@RequestMapping 注解可以在控制器类的级别或其中的方法的级别上使用。
2.@RequestMapping 映射http请求url到方法上
3.RequestMapping注解有六个属性:
value:指定请求的实际地址;
method:指定请求的method类型, GET、POST、PUT、DELETE等;
consumes: 指定处理请求的提交内容类型(Content-Type),例如application/json, text/html;
produces: 指定返回的内容类型,仅当request请求头中的(Accept)类型中包含该指定类型才返回;
params: 指定request中必须包含某些参数值是,才让该方法处理。
headers: 指定request中必须包含某些指定的header值,才能让该方法处理请求。

二、@RequestParam使用须知

1.用于将请求参数区数据映射到功能处理方法的参数上,接受的参数是来自requestHeader中,即请求头,通常用于GET请求,也可以用于post,delete等请求。
2.用来处理Content-Type: 为 application/x-www-form-urlencoded编码的内容。
3.@RequestParam 有三个属性:
(1)value:请求参数名(必须配置)
(2)required:是否必需,默认 true,即请求中必须包含该参数,如果没有包含,将会抛出异常(可选配置)
(3)defaultValue:默认值,如果设置了该值,required 将自动设为 false,无论你是否配置了required,配置了什么值,都是 false(可选配置)
示例:@RequestParam(value=“name”, required=true, defaultValue="") Sting name

三、@RequestBody使用须知

1.@RequestBody 映射请求到方法体上,接受的参数是来自requestBody中,即请求体。
2.用来处理非Content-Type: 为 application/x-www-form-urlencoded编码的内容。例如:application/json、application/xml等类型的数据。
3.@RequestBody注解常用于接收json格式的数据,并将其转换成对应的数据类型。

四、@PathVariable使用须知

1.@PathVariable 可以将 URL 中占位符参数绑定到控制器处理方法的入参中,获取请求路径中的变量作为参数
2. 带占位符的 URL 是 Spring3.0 新增的功能

	@RequestMapping("/DemoPathVariable/{id}")
    public String testPathVariable(@PathVariable("id") Integer id)
    {
        System.out.println("id:"+id);
        return SUCCESS;
    }

可以定义正则表达式进行更精确的控制,设置URL变量规则后,不合法的URL则不会被处理,直接由SpringMVC框架返回404
示例: @RequestMapping("/user/{name:[a-zA-Z0-9_]+}")

3.@RequestParam与@PathVariable区别
简单示例:
@PathVariable返回的为 …/test/123.
@RequestParam返回的为 …/test?id=123.

五、@ModelAttribute使用须知

@ModelAttribute注解类型将参数绑定到Model对象

示例:

<form action="/Test" method="post">
    用户名:<input type="text" name="name">
    用户密码:<input type="password" name="userPwd">
    <input type="submit" value="提交"><br>
</form>

前端页面字段必须和实体里面的字段对应才能映射。

	@RequestMapping(value="/Test", method = RequestMethod.POST)
    public String test(@ModelAttribute User user){
        System.out.println("name: " + user.getName());
        System.out.println("userpwd: " + user.getUserPwd());
        return "test";
    }

猜你喜欢

转载自blog.csdn.net/weixin_42851117/article/details/89083298
今日推荐