PHP HTTP请求
在PHP里接收REQUEST数据是件很容易的事,按我略懂的开发语言里,PHP是使用最简单方便的。
$_POST、$_GET、$_REQUEST 几个全局变量;
<input type=”text” name=”username[]” value=”jeftom”>
<input type=”text” name=”username[]” value=”刘德华”>
$_POST[‘username[]’] 可以获取到表单提交过来的 field,是一个数组格式。
Spring 框架HTTP请求
@RequestParam注解是获取静态URL传入的参数
@PathVariable是获取请求路径中的变量作为参数
@RestController @RequestMapping(value="users") public class UserController { /** * 用户列表 * @type {String} */ @RequestMapping(value = "/list", method = {RequestMethod.GET, RequestMethod.POST}) public Map<String, Object> list(@RequestParam Long user_id) { Map<String, Object> map = new HashMap<String, Object>(); map.put("user_id", user_id); return map; } /** * 获取单个用户信息 * @type {String} */ @RequestMapping(value = "/user/{user_id}", method = {RequestMethod.GET, RequestMethod.POST}) public Map<String, Object> get_user(@PathVariable Long user_id) { Map<String, Object> map = new HashMap<String, Object>(); map.put("user_id", user_id); return map; } }
多个input同名数组 <form method="post" action="/username"> <input type="text" name="username[]" value="jeftom"> <input type="text" name="username[]" value="刘德华"> <input type="submit" value="submit"> </form> 多个input同名不同数字下标 <form method="post" action="/fuck"> <input type="text" name="username[0]" value="jeftom"> <input type="text" name="username[1]" value="刘德华"> <input type="submit" value="submit"> </form> 多个input同名 <form method="post" action="/index"> <input type="text" name="username" value="jeftom"> <input type="text" name="username" value="刘德华"> </form>
package com.jeftom.springboot.controller; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import java.util.Iterator; import java.util.List; import java.util.Map; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @Api(value="用户相关的接口") @RestController @RequestMapping("/user") public class UserController { @RequestMapping(value = "/username", method = RequestMethod.POST) @ResponseBody public String username(@RequestParam(required = true, defaultValue = "", value = "username[]") List<String> username) { System.out.println(username.toString()); return "ok"; } @RequestMapping(value = "/fuck", method = RequestMethod.POST) @ResponseBody // 这里不能用 value,否则会报错 public String fuck(@RequestParam(required = true) Map<String, Integer> username) { System.out.println(username.toString()); return "ok"; } /** * URL http://localhost:8081/user/fuck2?params[]=22¶ms[]=11 * result: [22, 11] */ @RequestMapping(value = "fuck2", method = RequestMethod.POST) public String fuck2(@RequestParam(value = "params[]", required = false) String[] params) { System.out.println(Arrays.toString(params)); return "OK"; } /** * 使用 string 接收到是逗号分隔的字符串 * result: aa,bb */ @RequestMapping(value = "/index", method = RequestMethod.POST) @ResponseBody public String index(HttpServletRequest request, HttpServletResponse response, String username) { System.out.println(username); return "OK"; } /** * 将request中的所有参数存放到自定义的map中 * * @return Map<result> * @throws Exception */ public Map<String, Object> getParameterMap(HttpServletRequest request) throws Exception { Map<String, Object> result = new HashMap<String, Object>(); Map<String, String[]> tempMap = request.getParameterMap(); Set<String> keys = tempMap.keySet(); for (String key : keys) { byte source [] = request.getParameter(key).getBytes("iso8859-1"); String modelname = new String (source, "UTF-8"); result.put(key,modelname); } return result; } }
也就是说,用 String username 接收到的是逗号连接的字符串,用 String[] username 接收到的是一个数组;不像PHP里一样需要在 name 加上 “[]” 才是数组。
参考文章:
https://blog.csdn.net/qwe6112071/article/details/51062317
https://blog.csdn.net/haiyoung/article/details/80715094
https://blog.csdn.net/do_bset_yourself/article/details/51314152
https://www.cnblogs.com/wangchuanfu/p/5913310.html
https://www.jianshu.com/p/b4c8d8de4dad
https://ask.csdn.net/questions/699122
https://blog.csdn.net/eeeeasy/article/details/81708600