SpringMVC@RequestHeader与@RequestParam的区别

Posted The Gao

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SpringMVC@RequestHeader与@RequestParam的区别相关的知识,希望对你有一定的参考价值。

首先明确这样一个问题:

SpirngMVC默认如何获取请求带来的各种信息?

默认方式获取请求参数

直接给方法入参上写一个和请求参数名相同的变量,这个变量就来接受请求参数的值。例如:

@RequestMapping("/handle01")
public String handle01(String username)
    System.out.println("这个变量的值:" + username);
    return "success";

1.当请求是localhost:8080/handle01?username=yst时,handle01里的username会自动匹配yst。所以输出:

这个变量值:yst

2.当请求是localhost:8080/handle01?user=yst时,handle01里的username匹配不到值,因为请求里没有username。所以输出:

这个变量值:null

@RequestParam注解

如果用此注解,参数默认是必须带的。它有如下方法:

  • value:映射请求参数名称
  • required:设置请求参数是否必须的
  • defaultValue:设置默认值,当没有传递参数时使用该值

形式:

@RequestMapping("/handle02")
public String handle02(@RequestParam("username")  String username)
    System.out.println("这个变量的值:" + username);
    return "success";

1.必须带有参数。
也就是说你直接输入localhost:8080/handle02会报错,不会执行方法只能输入localhost:8080/list?username=?才能执行相应的方法。

2.假如将@RequestParam("username") 改成了@RequestParam("user")

@RequestMapping("/handle02")
public String handle02(@RequestParam("user")  String username)
    System.out.println("这个变量的值:" + username);
    return "success";

请求是localhost:8080/handle01?user=yst时,可以成功输出:

这个变量值:yst

3.设置required为false可以不带参数。

@RequestMapping("/handle02")
public String handle02(@RequestParam(value="user",required=false)  String username)
    System.out.println("这个变量的值:" + username);
    return "success";

4.设置defaultValue就可以在地址里面不带参数,如果带了参数会接收,不带参数会默认为该值。

@RequestMapping("/handle02")
public String handle02(@RequestParam(value="user", required=false, defaultValue="visitor01")  String username)
    System.out.println("这个变量的值:" + username);
    return "success";

@RequestHeader注解

使用 @RequestHeader 绑定请求报头的属性值。请求头包含了若干个属性,服务器可据此获知客户端的信息,通过 @RequestHeader 即可将请求头中的属性值绑定到处理方法的入参中 。

使用起来同@RequestParam,只不过映射的信息由URL中的参数变成了Header中的键值对。

@RequestMapping(value="/testRequestHeader")
public String testRequestHeader(@RequestHeader(value="Accept-Language") String al)
	System.out.println("testRequestHeader - Accept-Language:" + al);
return "success";

以上是关于SpringMVC@RequestHeader与@RequestParam的区别的主要内容,如果未能解决你的问题,请参考以下文章

SpringMVC@RequestHeader与@RequestParam的区别

LDAP 与 MYSQL .. JA-SIG CAS 与 LDAP 与 CAS 与 MySQL

python网络编程基础(线程与进程并行与并发同步与异步)

=与==&与&&| 与 || 的区别

与 0 进行比较与与某个值进行比较是不是更快?

三.工具与市场-债券与债务股票与公司