三、获取参数的相关注解

1、@RequestParam

<a href="anno/testRequestParam?name=张三">RequestParam</a>

@RequestMapping("/testRequestParam")
public String testRequestParam(@RequestParam(name="name") String username){
     System.out.println("执行了...");
     System.out.println(username);
     return "success";
}

@RequestParam 注解配合 @RequestMapping 一起使用,可以将请求的参数同处理方法的参数绑定在一起。
@RequestParam 的属性值有:
(1)name,value这两个作用相同,当请求参数的名字和方法形参的名字相同时,且没有其他属性时,可以省略@RequestParam注解,直接获取,放请求中的参数名字和形参不同时,要用该注解来获得
(2)required用于指定该参数是否是必须的,默认值(不写)为true,请求中必须有该参数,否则报400,BadRequest
(3)defaultValue用于指定一个默认值,当请求中没有指定名为name的参数的时候,形参username的值就为该默认值

2、@RequestBody

@RequestBody主要用来接收前端传递给后端的json字符串中的数据的(请求体中的数据的);GET方式无请求体,所以使用@RequestBody接收数据时,前端不能使用GET方式提交数据,而是用POST方式进行提交。在后端的同一个接收方法里,@RequestBody与@RequestParam()可以同时使用,@RequestBody最多只能有一个,而@RequestParam()可以有多个。
更多的详细使用方法:https://blog.csdn.net/justry_deng/article/details/80972817

<form action="anno/testRequestBody" method="post">
   	用户姓名:<input type="text" name="username" /><br/>
    用户年龄:<input type="text" name="age" /><br/>
    <input type="submit" value="提交" />
</form>
@RequestMapping("/testRequestBody")
public String testRequestBody(@RequestBody String body){
    System.out.println("执行了...");
    System.out.println(body);
    return "success";
}
执行了...
username=jack&age=34

3、@PathVariable

<a href="anno/testPathVariable/10">testPathVariable</a>

@RequestMapping(value="/testPathVariable/{sid}")
public String testPathVariable(@PathVariable(name="sid") String id){
    System.out.println("执行了...");
    System.out.println(id);
    return "success";
}

@PathVariable接收请求路径中占位符的值,其属性值有value,name,required,作用同上
可以同时获取多个占位符的值,例如:
值得注意的是,每个占位符/{}/{}中的值,必须和@PathVariablename或者value的值相同

@RequestMapping(value="/testPathVariable/{id}/{name}")
public String testPathVariable(@PathVariable(name="id") String id, @PathVariable(name="name") String id){
    System.out.println("执行了...");
    System.out.println(id);
    return "success";
}

4、@CookieValue

@CookieValue注解用于将请求的cookie数据映射到功能处理方法的参数上
同样有value,name,required,defaultValue四个属性

@RequestMapping(value="/testCookieValue")
public String testCookieValue(@CookieValue(value="JSESSIONID") String cookieValue){
    System.out.println("执行了...");
    System.out.println(cookieValue);
    return "success";
}

5、@SessionAttributes

<a href="anno/testSessionAttributes">testSessionAttributes</a>
<a href="anno/getSessionAttributes">getSessionAttributes</a>
<a href="anno/delSessionAttributes">delSessionAttributes</a>
@Controller
@RequestMapping("/anno")
@SessionAttributes(value={"msg"})   // 把msg存入到session域对中
public class AnnoController {
@RequestMapping(value="/testSessionAttributes")
    public String testSessionAttributes(Model model){
        System.out.println("testSessionAttributes...");
        // 底层会存储到request域对象中
        model.addAttribute("msg","testSessionAttributes");
        return "success";
    }
}
<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <h3>入门成功</h3>
    ${ msg }
    ${sessionScope}
</body>
</html>

发送testSessionAttributes请求
在这里插入图片描述
发送getSessionAttributes请求

@RequestMapping(value="/getSessionAttributes")
public String getSessionAttributes(ModelMap modelMap){
    System.out.println("getSessionAttributes...");
    String msg = (String) modelMap.get("msg");
    System.out.println(msg);
    return "success";
}
getSessionAttributes...
testSessionAttributes

发送delSessionAttributes请求

@RequestMapping(value="/delSessionAttributes")
public String delSessionAttributes(SessionStatus status){
    status.setComplete();//删除session域中的存入的数据
    return "success";
}

在这里插入图片描述
再次执行getSessionAttributes()
控制台打印:

getSessionAttributes...
null

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值