说明:
通常get请求获取的参数是在url后面,而post请求获取的是请求体当中的参数。因此两者在请求方式上会有所不同。
1.直接将接受的参数写在controller对应方法的形参当中(适用于get提交方式)
/** * 1.直接把表单的参数写在controller相应的方法的形参中 * * @param username * @param password * @return */ @getmapping("/adduser1") public string adduser1(string username, string password) { system.out.println ("username is:" + username); system.out.println ("password is:" + password); return username + "," + password; }
2.通过url请求路径获取参数
/** * 2、通过@pathvariable获取路径中的参数 * * @param username * @param password * @return */ @requestmapping(value = "/adduser4/{username}/{password}", method = requestmethod.get) public string adduser4(@pathvariable string username, @pathvariable string password) { system.out.println ("username is:" + username); system.out.println ("password is:" + password); return "adduser4"; }
3.通过request请求对象来接受发来的参数信息(get请求方式或者时post请求方式都可以)
/** * 3、通过httpservletrequest接收 * * @param request * @return */ @requestmapping("/adduser2") public string adduser2(httpservletrequest request) { string username = request.getparameter ("username"); string password = request.getparameter ("password"); system.out.println ("username is:" + username); system.out.println ("password is:" + password); return "demo/index"; }
4.封装javabean对象的方式来接受请求参数(get方式与post方式都可以)
4.1首先在模块当中创建对应的javabean,并提供相应的get,set方法。
package com.example.demo.pojo; import lombok.data; @data public class user1 { private string username; private string password; }
4.2controller层
/** * 4、通过一个bean来接收 * * @param user * @return */ @requestmapping("/adduser3") public string adduser3(user1 user) { system.out.println ("username is:" + user.getusername ( )); system.out.println ("password is:" + user.getpassword ( )); return "/adduser3"; }
5.使用注解@requestparam注解将请求参数绑定到controller层对应方法的形参当中
/** * 5、用注解@requestparam绑定请求参数到方法入参 * @param username * @param password * @return */ @requestmapping(value="/adduser6",method=requestmethod.get) public string adduser6(@requestparam("username") string username,@requestparam("password") string password) { system.out.println("username is:"+username); system.out.println("password is:"+password); return "demo/index"; }
下面介绍,发送json格式的请求,接受数据的情况:
1.将json请求的key,value值封装到实体对象的属性当中(通常将参数放在请求体body中,以application/json格式被后端获取)
1.1创建一个实体类
public class user2 implements serializable { private static final long serialversionuid = 1l; @jsonproperty(value = "id") private integer id; @jsonproperty(value = "name") private string name; @jsonproperty(value = "age") private integer age; @jsonproperty(value = "hobby") private list<string> hobby;
/** *将json请求的key,value封装到实体对象当中。 * @param user * @return */ @postmapping("/save") public string saveuser(@requestbody user2 user) { // list.add(user); // user2 user2 = new user2 ( ); // user2.setid (user.getid ()); // user2.setage (user.getage ()); // user2.setname (user.getname ()); // user2.sethobby (user.gethobby ()); return "success"+user; }
2.将json请求的key,value值封装到request对象的属性当中(通常请求参数放body中,将content-type改为x-www-form-urlencoded)
/** * 将请求参数封装到request对象当中。 * @param request * @return */ @postmapping("/save2") public user2 save(httpservletrequest request) { integer id = integer.parseint(request.getparameter("id")); string name = request.getparameter("name"); integer age = integer.parseint(request.getparameter("age")); string parameter = request.getparameter("hobby"); list<string> stringlist = new arraylist<> ( ); string[] split = parameter.split (","); for (int i = split.length - 1; i >= 0; i--) { stringlist.add (split[i]); } user2 user2 = new user2(id, name, age, stringlist); // list.add(user); return user2; }
3.通过http协议,将json参数转成jsonobject对象
3.1controller层接受json参数
/** * 通过http协议将参数转为jsonobject * @param request * @return * @throws ioexception * @throws jsonexception */ @postmapping("/save3") public user2 save3(httpservletrequest request) throws ioexception, jsonexception { jsonobject jsonobject = handlerdata(request); integer id = jsonobject.getinteger("id"); string name = jsonobject.getstring("name"); integer age = jsonobject.getinteger("age"); list<string> hobby = jsonobject.getobject("hobby", list.class); user2 user3 = new user2 (id, name, age, hobby); // list.add(user); return user3; }
3.2通过以下方法将json字符串转成jsonobject对象
//这里使用的是alibaba的json工具类 public static jsonobject handlerdata(httpservletrequest request) throws ioexception, jsonexception { stringbuffer sb = new stringbuffer(); inputstream is = request.getinputstream(); bufferedreader br = new bufferedreader(new inputstreamreader (is, "utf-8")); string s = ""; while ((s = br.readline()) != null) { sb.append(s); } if (sb.tostring().length() <= 0) { return null; } else { return jsonobject.parseobject(sb.tostring()); } }
4.将json格式的请求参数封装到hashmap的key,value键-值对当中。(json字符串串放在body中,请求格式为application/json格式)
/** *将json请求的key,value封装到map的key,value当中去。 * @param map * @return */ @postmapping("/save1") public user2 saveuser1(@requestbody map<string, object> map) { integer id = (integer) map.get("id"); string name = (string) map.get("name"); integer age = (integer) map.get("age"); list<string> hobby=(list<string>) map.get("hobby"); user2 user = new user2(id, name, age, hobby); // list.add(user); return user; }
该文档主要是学习以下两篇文档的总结:
到此这篇关于springmvc接受请求参数的几种情况演示的文章就介绍到这了,更多相关springmvc请求参数内容请搜索www.887551.com以前的文章或继续浏览下面的相关文章希望大家以后多多支持www.887551.com!