Springmvc controller接收请求参数类型

转载地址:http://18810098265.iteye.com/blog/2380269


第一种情况:数据是基本类型或者String 
1, 直接用表单提交,参数名称相同即可; 
Controller参数定义为数组类型即可.不要定义为List<String> 

Html代码   收藏代码
  1. <form action="${pageContext.request.contextPath}/dashboard/xxx" method="post">  
  2.     <input type="text" name="xxx"/><br>  
  3.     <input type="text" name="xxx"/><br>  
  4.     <input type="text" name="xxx"/><br>  
  5.     <input type="text" name="xxx"/><br>  
  6.     <input type="submit" value="tijiao"/>  
  7. </form>  


Java代码   收藏代码
  1. @RequestMapping(value = "/xxx")  
  2.    public void xxx(String[] xxx) {  
  3.        System.out.println(xxx);  
  4.    }  

Controller中不要用List<String>接收,不然会报下面这个错org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [java.util.List]: Specified class is an interface 

2, ajax请求: 
Js代码   收藏代码
  1. $.ajax({  
  2.         url: "${pageContext.request.contextPath}/dashboard/xxx",  
  3.         type: "POST",  
  4.         contentType : 'application/json;charset=utf-8'//请求头一定要有  
  5.         dataType:"json",  
  6.         data: JSON.stringify(["aaa","bbb"]), //将Json对象转成Json字符串  
  7.         success: function(data){  
  8.             alert(data);  
  9.         },  
  10.         error: function(res){  
  11.             alert(res.responseText);  
  12.         }  
  13.     });  


Java代码   收藏代码
  1. @RequestMapping(value = "/xxx")  
  2. public void xxx(@RequestBody String[] xxx) {  
  3.     System.out.println(xxx);  
  4. }  

ajax请求时请求头contentType 申明为application/json;charset=utf-8,且type 为post, 这样请求体在body中且请求体为一个json字符串, controller中获取参数一定要加@RequestBody,表示取请求体中的所有的内容,然后转为String[], 至于形参名xxx可以任意命名,因为application/json;charset=utf-8的请求体中无参数名称 


第二种情况:数据是自定义对象  
Java代码   收藏代码
  1. public class User {  
  2.   
  3.     private Integer id;  
  4.     private String name;  
  5.     private String pwd;  
  6.   
  7.     //getter、setter省略  
  8.  }  


1, 表单提交 
Html代码   收藏代码
  1. <form action="/user/submitUserList_2" method="post">  
  2.         ID:<input type="text" name="users[0].id"><br/>  
  3.         Username:<input type="text" name="users[0].name"><br/>  
  4.         Password:<input type="text" name="users[0].pwd"><br/><br/>  
  5.   
  6.         ID:<input type="text" name="users[2].id"><br/>  
  7.         Username:<input type="text" name="users[2].name"><br/>  
  8.         Password:<input type="text" name="users[2].pwd"><br/><br/>  
  9.         <input type="submit" value="Submit">  
  10.     </form>  


除了刚才公用的User类,还要封装一个User的容器类UserModel: 
Java代码   收藏代码
  1. public class UserModel {  
  2.     private List<User> users;  
  3.   
  4.     public List<User> getUsers() {  
  5.         return users;  
  6.     }  
  7.   
  8.     public void setUsers(List<User> users) {  
  9.         this.users = users;  
  10.     }  
  11.   
  12.     public UserModel(List<User> users) {  
  13.         super();  
  14.         this.users = users;  
  15.     }  
  16.   
  17.     public UserModel() {  
  18.         super();  
  19.     }  
  20.   
  21. }  
Java代码   收藏代码
  1. @RequestMapping(value = "/xxx")  
  2. public void xxx(UserModel users) {  
  3.     List<User> userList = users.getUsers();  
  4. }  


2, ajax 请求 
Js代码   收藏代码
  1. var arr = new Array();  
  2. arr.push({id: "1", name: "李四", pwd: "123"});  
  3. arr.push({id: "2", name: "张三", pwd: "332"});  
  4.   
  5. $.ajax({  
  6.         url: "${pageContext.request.contextPath}/dashboard/xxx",  
  7.         type: "POST",  
  8.         contentType : 'application/json;charset=utf-8'//请求头一定要加  
  9.         dataType:"json",  
  10.         data: JSON.stringify(arr),    //将Json对象序列化成Json字符串  
  11.         success: function(data){  
  12.             alert(data);  
  13.         },  
  14.         error: function(res){  
  15.             alert(res.responseText);  
  16.         }  
  17.     });  

Java代码   收藏代码
  1. @RequestMapping(value = "/xxx")  
  2. public void xxx(@RequestBody List<User> xxx) {  
  3.     System.out.println(xxx);  
  4. }  

这里可以定义成List<User>, 不会报异常.ajax中的contentType 和controller中的@RequestBody一定要加 


第三种,适宜任何类型数据  
用js将请求参数转为json字符串, 然后contentType 设置为application/x-www-form-urlencoded, 这种请求的请求体格式是name1=value1&name2=value2&... 

Js代码   收藏代码
  1. var arr = new Array();  
  2. arr.push({id: "1", name: "李四", pwd: "123"});  
  3. arr.push({id: "2", name: "张三", pwd: "332"});  
  4.   
  5. $.ajax({  
  6.         url: "${pageContext.request.contextPath}/dashboard/xxx",  
  7.         type: "POST",  
  8.         contentType : 'application/x-www-form-urlencoded'//设置请求头信息  
  9.         dataType:"json",  
  10.         data: "xxx="+JSON.stringify(customerArray), //将Json对象序列化成Json字符串  
  11.         success: function(data){  
  12.             alert(data);  
  13.         },  
  14.         error: function(res){  
  15.             alert(res.responseText);  
  16.         }  
  17.     });  

Java代码   收藏代码
  1. @RequestMapping(value = "/xxx")  
  2.     public void xxx(String xxx) {  
  3.         System.out.println(xxx);  
  4.        //用Gson或其他json包转成对象或数组  
  5.     }  
注意:如果 contentType 设置为 application/json;charset=utf-8, controller参数要加@RequestBody,否则取不到值

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1. 在注解模式下,搭建SpringMVC框架的流程如下: (1)添加SpringMVC相关依赖,包括spring-webmvc、javax.servlet-api等。 (2)在web.xml中配置DispatcherServlet,将其作为应用程序的前端控制器。 (3)在Spring配置文件中配置组件扫描,用于扫描所有的控制器类。 (4)在控制器类上添加@Controller注解,声明该类是一个控制器。 (5)在控制器类中,使用@RequestMapping注解来映射请求URL和处理器方法。 (6)在处理器方法中,可以使用@RequestParam注解来接收请求参数,使用@ResponseBody注解来返回响应数据。 2. 在SpringMVC模式下实现文件上传的过程如下: (1)在Spring配置文件中配置MultipartResolver,用于处理文件上传请求。 (2)在控制器类中,使用@RequestMapping注解来映射文件上传请求的URL和处理器方法。 (3)在处理器方法中,使用@RequestParam注解来接收上传的文件,可以使用MultipartFile类型接收文件。 (4)在处理器方法中,使用MultipartHttpServletRequest来获取上传文件的详细信息。 (5)在处理器方法中,可以将上传的文件保存到本地文件系统或者云存储中,然后返回上传结果。 3. 在SpringMVC模式下,Controller接收请求参数的多种方式包括: (1)使用@RequestParam注解来接收请求参数,可以指定参数名、是否必须、默认值等属性。 (2)使用@PathVariable注解来接收路径变量,即URL中的占位符。 (3)使用@RequestBody注解来接收请求体中的JSON或XML格式数据。 (4)使用HttpServletRequest对象来获取请求参数,可以获取URL参数请求头、请求体等信息。 (5)使用@InitBinder注解来定义表单数据的转换器或校验器,用于将请求参数转换成业务对象。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值