SpringMVC-接收表单数据的方式
2020-02-08 本文已影响0人
我问你瓜保熟吗
1P214160451-1.jpg
前台提交表单数据到后台进行处理
image.pngform 表单提交数据,get方法会将数据通过请求url方式向后台传送,post方式会将数据放在请求头里。
get传送的数据量较小,不能大于2KB。post传送的数据量较大
.get安全性非常低,post安全性较高。
get方式,服务器端用Request.QueryString获取变量的值,对于post方式,服务器端用Request.Form获取提交的数据
一、通过表单提交
前台代码
<div id="form-div">
<form id="form1" action="/form/login" method="get">
<p>用户名:<input name="userName" type="text" id="txtUserName" tabindex="1" size="15" value=""/></p>
<p>密码:<input name="password" type="password" id="TextBox2" tabindex="2" size="16" value=""/></p>
<p><input type="submit" value="登录"> <input type="reset" value="重置"></p>
</form>
</div>
1、直接用Controller方法参数接收
接受数据的参数名要和前台变量名一致才能收到数据如:userName不能写成username
@RequestMapping("/login")
public void login(String userName,String password){
System.out.println(password);
System.out.println(userName);
}
2、利用@RequestParam
注解可以自定义参数名,并可以设置默认参数值。
@RequestMapping("/login")
public void login(String password, @RequestParam(value = "userName",defaultValue = "root") String username){
System.out.println(password);
System.out.println(username);
}
3、用HttpServletRequest
接收
1、前台用get方式提交,服务器端用Request.QueryString获取全部变量的值
2、论前台用get还是post都可以用request.getParameter()
获取单个指定变量,入伙前台变量是一个checkbox
复选框,后台获取到的值是一个字符串数组,因此需要使用getParameterValues方法来获取
3、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);
}
运行输出截图
二、通过ajax提交
略,有空再写吧,难受~
-
@RequestBody
接收的是请求体里面的json字符串,get方式无请求体,所以@RequestBody只能配合post使用。 -
@RequestBody
与@RequestParam()
可以同时使用,@RequestBody最多只能有一个,而@RequestParam()可以有多个。一个接收请求体参数,一个接收key-value里面的参数。 -
@RequestBody
可以用HashMap接收前台数据,也可以用实体类接收。@RequestBody HashMap<String,Object> map
或者@RequestBody User user
- json对象要用
JSON.stringify(data)
,进行转换成json字符串