在springMVC中,controller中方法的参数是自动注入的,在使用注解的方式下,通常有:
@RequestParam: ·取querystring当中的参数
@PathVariable: 取 在@RequestMapping中定义的占位符中的参数(/test/{id})
@RequestBody: 取request 这个消息体 (可以组装json对象)
在不使用注解的情况下,默认有一些对象可以自动注入如:
HttpServletRequest
HttpServletResponse
MultipartFile
MultipartRequest
除此之外不使用注解的情况下,也可以接受前台传入的querystring中的参数
1、JSON化参数:
前台js发送请求:
$.ajax({
type:"POST",
url:"/item/getRequestArrayData",
dataType:"json",
contentType:"application/json",
data:JSON.stringify(itemArray),
success:function(data){
console.log(data);
}
});
JAVA后台接收:
@RequestMapping(value="/getRequestArrayData")
@ResponseBody
public Map<String,Object> getRequestArrayData(@RequestBody List<Item> itemList){
for(Item item:itemList){
//打印接收到的数据
System.out.println(item.getId()+"----"+item.getItem_name());
}
return null;
}
2、使用HttpServletRequest 接收参数数组
js发送请求:
var imageUrlArr = [];
$.each($("input[name=imageUrlFlag]"),function(index,obj){
imageUrlArr.push($(obj).attr('id'));
});
data.field.imageUrl = imageUrlArr;
$.post(URL,data.field, function(result) {
if(result.status ==0){
Msg.ok(result.msg);
//关闭页面
if(flagAdd=='add'){
tabUtil.tabDelete('posterThemeTableTab',-1);
}else{
tabUtil.tabDelete('posterThemeTableTab',data.field.themeId);
}
//页面切换
tabUtil.tabChange('posterThemeTableTab',0);
//刷新页面
table.reload('posterThemeTab', {
url: baseUrl+'/postertheme/listPosterThemeByPage',
page: {
curr: 1 //重新从第 1 页开始
}
});
}else{
Msg.fail(result.msg);
}
后台接收:
@RequestMapping(value="addPosterTheme",method=RequestMethod.POST)
@ResponseBody
public ResponseVo addPosterTheme(ScreenPosterThemeDto screenPosterThemeDto,HttpServletRequest request) {
ResponseVo vo = new ResponseVo();
String [] imageUrls =request.getParameterValues("imageUrl[]");
//查看新增的主题是否存在
//新增
try {
ScreenPosterThemeDto addPosterTheme = posterThemeService.addPosterTheme(screenPosterThemeDto);
List<ScreenPosterDto> list = new ArrayList<>();
for (String imageUrl: imageUrls) {
ScreenPosterDto screenPosterDto = new ScreenPosterDto();
screenPosterDto.setThemeId(addPosterTheme.getThemeId());
screenPosterDto.setImageUrl(PropertiesConstant.FDFS_DOMAIN+"/"+imageUrl);
list.add(screenPosterDto);
}
Integer res = posterService.addPosters(list);
if(res>0){
vo.setStatus(ResponseEnum.SUCCESS.getStatus());
vo.setMsg("添加成功");
}
} catch (Exception e) {
e.printStackTrace();
vo.setStatus(ResponseEnum.FAIL.getStatus());
vo.setMsg("添加失败");
}
return vo;
}