在控制器方法的形参位置,设置和请求参数同名的形参,当浏览器发送请求,匹配到请求映射时,在 DispatcherServlet 中就会将请求参数赋值给相应的形参。
示例:**获取key与value一对多单的参数,hobby对多个参数
HTML:**
<!DOCTYPE html><html lang="en" xmlns:th="http://www.thymeleaf.org"><head><meta charset="UTF-8"><title>Title</title></head><body><h1>首页</h1><form method="get" th:action="@{/testParame}">用户名:<input type="text" name="username"><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></body></html>
Controller:
可以使用 String hobby 获取
也可以 String[] hobby 获取
package com.way.controller;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.PathVariable;import org.springframework.web.bind.annotation.RequestMapping;import javax.servlet.http.HttpServletRequest;@Controllerpublic class MyController {@RequestMapping(value = "/testParame")public String testParm(String username, Integer password,String hobby) {//String[] hobbySystem.out.println("username:" + username + ";" +"password:" + password + ";" +"hobby:" + hobby);return "target";}或者: 此为标记两种方法,实际两个方法testParm不能同时存在。@RequestMapping(value = "/testParame")public String testParm(String username, Integer password,String[] hobby) {System.out.println("username:" + username + ";" +"password:" + password + ";" +"hobby:" + Arrays.toString(hobby));return "target";}}
浏览器结果:
idea结果:
username:王子尧;password:941941;hobby:Java,C++,C
注:
- 若请求所传输的请求参数中有多个同名的请求参数,此时可以在控制器方法的形参中设置字符串
- 数组或者字符串类型的形参接收此请求参数
- 若使用字符串数组类型的形参,此参数的数组中包含了每一个数据
- 若使用字符串类型的形参,此参数的值为每个数据中间使用逗号拼接的结果
