版权声明:@渔闻520 https://blog.csdn.net/weixin_41060905/article/details/87522954
1.接收普通请求参数
如果传递过来的参数名称和http的保持一致,那么无需任何注解就可以获取参数。
public ModelAndView commonParams(String roleName, String note) {
System.out.println("roleName =>" + roleName);
System.out.println("note =>" + note);
ModelAndView mv = new ModelAndView();
mv.setViewName("index");
return mv;
}
通过参数名称和http请求的名称保持一致来获取参数,如果不一致是没有办法获取的,这样允许参数为空。
另外,也可以用一个pojo对象来映射http请求的参数,这样既可以通过pojo对象来获得参数了。这样,对于参数比较多的情况就比较方便了。
public ModelAndView commonParamPojo(RoleParams roleParams) {
System.out.println("roleName =>" + roleParams.getRoleName());
System.out.println("note =>" + roleParams.getNote());
ModelAndView mv = new ModelAndView();
mv.setViewName("index");
return mv;
}
当然,前提是,该pojo的属性要和http的请求参数一样!
2.@RequestParam
用该注解可以应对http请求参数名称和映射的不一致的情况。比如在http中为role_name,而接收的为roleName,那么可以这样:
//使用@RequestParam("role_name")指定映射HTTP参数名称
public ModelAndView requestParam(@RequestParam("role_name") String roleName, String note) {
System.out.println("roleName =>" + roleName);
System.out.println("note =>" + note);
ModelAndView mv = new ModelAndView();
mv.setViewName("index");
return mv;
}
3.使用url传递参数
比如通过getRole/1来获得,则可以这样:
@RequestMapping("/getRole/{id}")
//注解@PathVariable表示从URL的请求地址中获取参数
public ModelAndView pathVariable(@PathVariable("id") Long id) {
Role role = roleService.getRole(id);
ModelAndView mv = new ModelAndView();
//绑定数据模型
mv.addObject(role);
//设置为JSON视图
mv.setView(new MappingJackson2JsonView());
return mv;
}
4.传递json参数:
<script src="https://code.jquery.com/jquery-3.2.0.js"></script>
<!--
此处插入JavaScript脚本
-->
<script type="text/javascript">
/** 传递JSON**/
$(document).ready(function() {
//JSON参数和类RoleParams一一对应
var data = {
//角色查询参数
roleName : 'role',
note : 'note',
//分页参数
pageParams : {
start : 0,
limit : 3
}
}
//Jquery的post请求
$.post({
url : "http://localhost:8080/Chapter14/role/findRoles.form",
//此处需要告知传递参数类型为JSON,不能缺少
contentType : "application/json",
//将JSON转化为字符串传递
data : JSON.stringify(data),
//成功后的方法
success : function(result) {
}
});
});
</script>
@RequestMapping("/findRoles")
public ModelAndView findRoles(@RequestBody RoleParams roleParams) {
List<Role> roleList = roleService.findRoles(roleParams);
ModelAndView mv = new ModelAndView();
//绑定模型
mv.addObject(roleList);
//设置为JSON视图
mv.setView(new MappingJackson2JsonView());
return mv;
}
@RequestBody可以将json的形式转换为java的形式。
注意:传递的json数据要和pojo对应的参数一模一样。
5.接收类表数据和表单的序列化:
#1.传递数组给控制器:
$(document).ready(function () {
//删除角色数组
var idList = [1, 2, 3];
//jQuery的post请求
$.post({
url: "./params/deleteRoles.do",
//将JSON转化为字符串传递
data: JSON.stringify(idList),
//指定传递数据类型,不可缺少
contentType: "application/json",
//成功后的方法
success: function (result) {
}
});
});
@RequestMapping("/deleteRoles")
public ModelAndView deleteRoles(@RequestBody List<Long> idList) {
ModelAndView mv = new ModelAndView();
//删除角色
int total = roleService.deleteRoles(idList);
//绑定视图
mv.addObject("total", total);
//JSON视图
mv.setView(new MappingJackson2JsonView());
return mv;
}
#2.传递对象:(对象要和pojo属性一样!)
$(document).ready(function () {
//新增角色数组
var roleList = [
{roleName: 'role_name_1', note: 'note_1'},
{roleName: 'role_name_2', note: 'note_2'},
{roleName: 'role_name_3', note: 'note_3'}
];
//jQuery的post请求
$.post({
url: "./params/addRoles.do",
//将JSON转化为字符串传递
data: JSON.stringify(roleList),
contentType: "application/json",
//成功后的方法
success: function (result) {
}
});
});
@RequestMapping("/addRoles")
public ModelAndView addRoles(@RequestBody List<Role> roleList) {
ModelAndView mv = new ModelAndView();
//删除角色
int total = roleService.insertRoles(roleList);
//绑定视图
mv.addObject("total", total);
//JSON视图
mv.setView(new MappingJackson2JsonView());
return mv;
}
#3.提交序列化表单:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>参数</title>
<!-- 加载Query文件-->
<script type="text/javascript" src="https://code.jquery.com/jquery-3.2.0.js">
</script>
<script type="text/javascript">
$(document).ready(function () {
$("#commit").click(function() {
var str = $("form").serialize();
//提交表单
$.post({
url: "./params/commonParamPojo2.do",
//将form数据序列化,传递给后台,则将数据以roleName=xxx&¬e=xxx传递
data: $("form").serialize(),
//成功后的方法
success: function (result) {
}
});
});
});
</script>
</head>
<body>
<form id="form">
<table>
<tr>
<td>角色名称</td>
<td><input id="roleName" name="roleName" value="" /></td>
</tr>
<tr>
<td>备注</td>
<td><input id="note" name="note" /></td>
</tr>
<tr>
<td></td>
<td align="right"><input id="commit" type="button" value="提交" /></td>
</tr>
</table>
</form>
</body>
</html>
@RequestMapping("/commonParamPojo2")
public ModelAndView commonParamPojo2(String roleName, String note) {
System.out.println("roleName =>" + roleName);
System.out.println("note =>" + note);
ModelAndView mv = new ModelAndView();
mv.setViewName("index");
return mv;
}
由于序列化了传递规则变成了roleName=xxx&¬e=xx,所以获得参数就用第一种方法就可以了。