@RequestParam是将请求参数和控制器方法的形参创建映射关系
    @RequestParam注解一共有三个属性:

    • 1、value:指定为形参赋值的请求参数的参数名
    • 2、required:设置是否必须传输此请求参数,默认值为true
      • 若设置为true时,则当前请求必须传输value所指定的请求参数,若没有传输该请求参数,且没有设置

    defaultValue属性,则页面报错400``:``Required String parameter 'xxx' is not present``;

    • 若设置为false,则当前请求不是必须传输value所指定的请求参数,若没有传输,则注解所标识的形参的值为null
      • 3、defaultValue:不管required属性值为truefalse,当value所指定的请求参数没有传输或传输的值为””时,则使用默认值为形参赋值。

    image.png

    示例:
    HTML:

    1. <!DOCTYPE html>
    2. <html lang="en" xmlns:th="http://www.thymeleaf.org">
    3. <head>
    4. <meta charset="UTF-8">
    5. <title>Title</title>
    6. </head>
    7. <body>
    8. <h1>首页</h1>
    9. <!--写死路径后,修改了也要修改,不方便-->
    10. <a href="/SpringMVC/target">访问target.html页面</a><br>
    11. <!--使用thymeleaf,th:href 自动添加上下文路径-->
    12. <!-- <a th:href="@{/target}">访问target.html页面</a><br/>
    13. <a th:href="@{/a/ab/b/target}">使用ant风格路径的**,访问target.html页面</a><br/>
    14. <a th:href="@{/target/1/15}">使用路径占位符</a><br/>-->
    15. <a th:href="@{/testParame(username='张三',age=14)}">控制器形参,获取请求参数</a><br/>
    16. <form method="get" th:action="@{/testParame}">
    17. 用户名:<input type="text" name="user_name"><br/>
    18. 密码:<input type="password" name="password"><br/>
    19. 爱好:<input type="checkbox" name="hobby" value="Java">Java
    20. <input type="checkbox" name="hobby" value="C++">C++
    21. <input type="checkbox" name="hobby" value="C"><br/>C
    22. <input type="submit" value="提交">
    23. </form>
    24. java<input type="checkbox" name="java" value="c"><br/>
    25. </body>
    26. </html>
    1. package com.way.controller;
    2. import org.springframework.stereotype.Controller;
    3. import org.springframework.web.bind.annotation.PathVariable;
    4. import org.springframework.web.bind.annotation.RequestMapping;
    5. import org.springframework.web.bind.annotation.RequestParam;
    6. import javax.servlet.http.HttpServletRequest;
    7. import java.util.Arrays;
    8. @Controller
    9. public class MyController {
    10. @RequestMapping(value = "/testParame")
    11. public String testParm(@RequestParam(value = "user_name",required = true,defaultValue = "hehe") String username,
    12. Integer password, String[] hobby) {
    13. System.out.println("username:" + username + ";" +
    14. "password:" + password + ";" +
    15. "hobby:" + Arrays.toString(hobby));
    16. return "target";
    17. }
    18. }