springMVC接收参数的几种形式
来源:互联网 发布:阿里云机房在哪里 编辑:程序博客网 时间:2024/05/20 00:39
springMVC接收参数的几种形式
1.参数写在Controller的方法的形参中,适用于get, post方式提交,post方式的时候编码方式需设置为:x-www-form-urlencoded转换为键值对形式,参数名必须完全相同才能映射到, 为此,使用下面5中的方法,可以实现别名转换。
注意:以x-www-form-urlencoded格式的post请求 与 get请求的异同:
同: 都把参数编为键值对形式name=susq&pswd=1233
异: get的时候,这个键值对拼在url后面,post的时候单独保存
/** * 1.直接把表单的参数写在Controller相应的方法的形参中 * @param username * @param password * @return */ @RequestMapping("/addUser1") public String addUser1(String username,String password) { System.out.println("username is:"+username); System.out.println("password is:"+password); return "demo/index"; }
2. 通过HttpServletRequest接收,post方式和get方式都可以, 但不能接收json, post方式的时候编码方式需设置为:x-www-form-urlencoded转换为键值对
/** * 2、通过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"; }
如果username 或者 password 为空,不能直接拿来做参数,可能会抛空指针异常。
3.通过一个bean来接收,post方式和get方式都可以。参数?key1=val1&key2=val2的方式加在url后面即可。post方式不想让参数拼接在url后面的话,可以将参数放在body中,编码方式需设置为:x-www-form-urlencoded
@RequestMapping("/doLogin") public User doLogin(User u) { logger.info("name: " + u.getName()); logger.info("pswd: " + u.getPswd()); User user = new User(); user.setName(u.getName()); user.setPswd(u.getPswd()); return user; }
4. 通过一个bean来接收json
@RequestMapping("/doLogin") public @ResponseBody User doLogin(@RequestBody User u) { logger.info("name: " + u.getName()); logger.info("pswd: " + u.getPswd()); User user = new User(); user.setName(request.getParameter("name")); user.setPswd(request.getParameter("pswd")); return user; }
4.2使用Map接收json
@RequestMapping("/doLogin") public @ResponseBody User doLogin(@RequestBody Map<String, String> u) { logger.info("name: " + u.get("name")); logger.info("pswd: " + u.get("pswd")); User user = new User(); user.setName(u.get("name")); user.setPswd(u.get("pswd")); return user; }
注意Controller上标注了@RestController,这样相当于Controller的所有方法都标注了@ResponseBody, 但是接收参数的@RequestBody还是需要手动协商
5.通过@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 "demo/index"; }
6.用注解@RequestParam绑定请求参数到方法入参, post方式的时候编码方式需设置为:x-www-form-urlencoded, 不能接受json
@RequestMapping("/doLogin") public User doLogin(@RequestParam(value="name") String username, @RequestParam(value="pswd") String password) { logger.info("name: " + username); logger.info("psed: " + password); User user = new User(); user.setPswd(password); user.setName(username); return user; }
7. 接收复杂类型参数json转换
如果接收的json有嵌套,如下所示
{ "s": {"clas": "s1", "age": "11"}, "name" : "susq", "pswd" : 1233}
则可以定义相对应的实体类,来接收参数,spring回自动进行映射转换,很方便。
public class User { Student s; String name; String pswd; // getter setter }Student是另一单独的对象public class Student { String clas; int age; // getter setter}
注意把每一层对应的字段要写一样,才能对应上。同样不只是接收参数,返回json的时候,也可以用。
阅读全文
0 0
- springMVC接收参数的几种形式
- struts2接收参数的几种形式
- struts2接收参数的几种形式
- struts2接收参数的几种形式
- struts2接收参数的几种形式
- struts2接收参数的几种形式
- Spring接收参数的几种形式
- struts2接收参数的几种形式
- struts2接收参数的几种形式
- springmvc注解形式的开发参数接收
- Struts2接收前台参数的几种形式
- springMVC 接收参数的几种方法(转载于网络)
- springmvc请求接收参数的几种方法
- springmvc请求接收参数的几种方法
- springmvc请求接收参数的几种方法
- springmvc请求接收参数的几种方法
- springMVC接收请求参数的几种方法
- Springmvc请求接收参数的几种方法
- Mybatis中javaType和jdbcType对应关系及案例
- 第10章 51PC实物制作
- android案例之图片播放器
- 无缝循环marquee滚动JS代码实现,兼容IE, FireFox, Chrome
- HDU1561【树形DP】
- springMVC接收参数的几种形式
- 爬取微博用户数据
- 并发控制中的封锁
- Linux下进程线程
- (50)组件之AI组件
- Vue项目实战(三)- 组件的注册和使用
- 【Java8源码分析】集合框架-TreeMap
- Windows下安装python版的Word2Vec工具包gensim教程(基于Anaconda)
- hadoop利用FileSystem API 执行hadoop文件读写操作