@RequestParam是将请求参数和控制器方法的形参创建映射关系@RequestParam注解一共有三个属性:
- 1、
value:指定为形参赋值的请求参数的参数名 - 2、
required:设置是否必须传输此请求参数,默认值为true- 若设置为
true时,则当前请求必须传输value所指定的请求参数,若没有传输该请求参数,且没有设置
- 若设置为
defaultValue属性,则页面报错400``:``Required String parameter 'xxx' is not present``;
- 若设置为
false,则当前请求不是必须传输value所指定的请求参数,若没有传输,则注解所标识的形参的值为null。- 3、
defaultValue:不管required属性值为true或false,当value所指定的请求参数没有传输或传输的值为””时,则使用默认值为形参赋值。
- 3、

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