
1P214160451-1.jpg
一、get方式请求
获取请求头传递的参数,get方式提交的参数都是跟在url后面:
http://localhost:21233/zbm/gl/add?year=2022&quarter=2&gradeType=0&inputNumberZz=50&inputNumberFz=10
1、用Controller方法同名形参接收
接受数据的参数名要和前台变量名一致才能收到数据如:userName不能写成username
@RequestMapping("/login")
public void login(String userName,String password){
System.out.println(password);
System.out.println(userName);
}
2、@RequestParam 注解
@RequestParam只能接收 URL 问号后跟着的参数。- 用map接收多个参数的话,必须要加此注解
(@RequestParam Map condition),否则接收的Map参数为空。- 一般没必要加此注解,直接用同名形参接收即可。除非要设置默认值或者更改参数名。
@RequestMapping("/login")
public void login(String password, @RequestParam(value = "userName",defaultValue = "root") String username){
System.out.println(password);
System.out.println(username);
}
public Map rycy(@RequestParam Map condition){
System.out.println(condition);
System.out.println(condition.get("selectMineId"));
}
3、@PathVariable 注解
只能接收 URL 路径里的参数。 通过
@PathVariable可以将URL中占位符参数{xxx}绑定到处理器类的方法形参中@PathVariable(“xxx“)
请求路径:http://localhost:8080/hello/show5/1/james
@RequestMapping(value=”user/{id}/{name}”)
public void test(@PathVariable Integer id, @PathVariable("userName") String name){
}
4、HttpServletRequest
- get方式请求,服务器端用
servelet的Request.QueryString可获取全部变量的值- 论前台用get还是post都可以用
request.getParameter()获取单个指定变量,如果前台变量是一个checkbox复选框,后台获取到的值是一个字符串数组,因此需要使用getParameterValues方法来获取getAttribute获取一个对象,getParameter()获取一个变量值
@RequestMapping("/login")
public void login(HttpServletRequest request){
String queryString = request.getQueryString();
String userName = request.getParameter("userName");
String password = request.getParameter("password");
System.out.println(queryString);
System.out.println(userName);
System.out.println(password);
}

运行输出截图
二、post方式请求
用
@RequestBody注解获取请求体里的参数
(1)使用封装的 bean 、Map、 JSONObject 接收, 前端必须使用 JSON 格式的数据。
Content-Type 必须为 application/json,请求体中参数为 {"username":"18514335982","pass":"12345"}
@RequestBody User user
@RequestBody JSONObject jsonObject
(2)使用String接收
如前端参数在请求体中传的是 username=18514335982&pass=12345,Content type 为 text/plain;charset=UTF-8
则后台接收到的 param 即为 username=18514335982&pass=12345 格式
@RequestBody String param
@RequestBody与@RequestParam()可以同时使用,@RequestBody最多只能有一个,而@RequestParam()可以有多个。一个接收请求体参数,一个接收key-value里面的参数。@RequestBody可以用HashMap接收前台数据,也可以用实体类接收。@RequestBody HashMap<String,Object> map或者@RequestBody User user
- json对象要用
JSON.stringify(data),进行转换成json字符串
三、前台提交表单数据到后台进行处理
- get 方式提交可以直接用同名形参接收,也可以用
@RequestParam注解接收。 - post 方式提交表单可以直接用java bean接收,也可以用
@RequestParam注解接收。
- get方式,服务器端用Request.QueryString获取变量的值,对于post方式,服务器端用Request.Form获取提交的数据