SpringMVC 参数绑定相关注解

@RequestParams

  • 作用:把请求中指定名称的参数给控制器中的形参赋值。

  • 属性:
    这里写图片描述

// <a href="account/save3.do?id=100&username=jack"> 保存 2</a>
// @RequestParam("username") 这里的 username 对应的就是请求参数: username=jack
@RequestMapping("save3.do")
public String save3(@RequestParam("id") Integer id_, @RequestParam("username") String name_){
    System.out.println(id_);
    System.out.println(name_);
    return "success";
}

@RequestHeader

  • 作用:
    用于获取请求消息头。

  • 属性:
    这里写图片描述

//1. @RequestHeader 获取指定的请求头对应的值 (Connection: keep-alive)
@RequestMapping("requestHeader")
public String requestHeader(@RequestHeader(name = "connection") String headValue){
    System.out.println(headValue);
    return "success";
}

@CookieValue

  • 作用:
    用于把指定 cookie 名称的值传入控制器方法参数。

  • 属性:
    这里写图片描述


//2. 根据指定的 cookie 的 key 获取值 (Cookie:JSESSIONID=A1E0A61BB8EB66369A1A8CE22677E840)
@RequestMapping("cookieValue")
public String cookieValue(@CookieValue(value="JSESSIONID",defaultValue="") String sessionId){
    System.out.println(sessionId);
    return "success";
}

说明:
@CookieValue(value=”JSESSIONID”,defaultValue=”“) String sessionId 会自动将JSESSIONID值入参到sessionId参数上,defaultValue表示默认值为空。

@PathVariable

  • 获得请求URL中的动态参数,只支持一个属性value,类型为String,表示绑定的名称,如果省略则默认绑定同名参数。
@RequestMapping(value = "/order/{id}")
public String post(@PathVariable("id") String id){
    System.out.println(id);
    return "success";
}

@RequestBody 、 @ResponseBody

1、@RequestBody

  • 作用:
    用于获取请求体内容。 直接使用得到是 key=value&key=value…结构的数据。
    get 请求方式不适用

  • 属性:
    required:是否必须有请求体。默认值是:true。当取值为 true 时,get 请求方式会报错。如果取值为 false, get 请求得到是 null。

  • 演示
    post 提交

这里写图片描述

//3.@RequestBody 获取请求体内容(要求: post 提交)
// required = true 默认值,表示必须有请求体,即必须是 post 提交;否则出错 .
@RequestMapping("requestBody")
public String requestbody(@RequestBody(required = true) String postRequestData){ 
    // 得到 id=11&username=jack , 期望封装为对象,这样处理起来方便,故建议用对象接收 
    System.out.println(postRequestData);
    return "success";
}

2、交互 json 数据

/**
* RequestBody
* 可以把请求的 json 数据转成一个实体类对象。
* 需要借助 jackson 的 jar 包。
* 该 jar 包在 spring5 版本,需要 2.7.0 及以上
*
* ResponseBody ,
* 它可以把返回值转成 json 数据
* 要求我们的控制器方法返回的是实体类对象
*/
@RequestMapping("responseBodyJson")
public @ResponseBody Account responseBody(@RequestBody Account account) {
    System.out.println(" 异步请求:" + account);
    // 设置数据,页面观察 json 格式
    account.setName(" 球球");
    account.setMoney(100);
    return account;
}

@SessionAttributes

  • 允许有选择的指定Model中的哪些属性需要转存到HttpSession对象中。

这里写图片描述

@Controller
/**
* names 指定 Model 对象的哪些 key 会自动放入 session 域中
* types = Integer.class Model 中的 Integer 类型的所有 key 都自动放入 session 域中
*/
@SessionAttributes(names = {"name1","name2"}, types = Integer.class)
public class SessionAttributesController {

    @RequestMapping("set")
    public String set(Model model){

        // Model & ModelMap 存入值,相当于往request域存值
        model.addAttribute("name1","Jack");
        model.addAttribute("name2","Rose");
        model.addAttribute("num1",100);
        model.addAttribute("num2",200);
        model.addAttribute("address","gz");
        return "success"; 

    }

}

猜你喜欢

转载自blog.csdn.net/qq_42806915/article/details/82694397