springmvc 参数绑定总结
作者:lialzm 发布时间:2023-11-16 21:30:44
最近在学习springmvc,今天把springmvc 参数绑定给整理一下,也算个学习笔记吧!
@RequestParam 绑定单个请求
RequestMapping(value = "/form2")
@ResponseBody
public String form2(@RequestParam String name){
logger.info("name=" + name );
return "";
}
@RequestParam
有required(是否必填),defaultValue(默认参数)参数
默认required=true,defaultValue为空
如果name参数不存在则返回400
使用下面这种写法则required默认为false
@RequestMapping(value = "/form")
@ResponseBody
public String form(String name, Integer age) {
logger.info("name=" + name + "," + "age=" + age);
return "";
}
@RequestParam
还支持数组形式
@RequestMapping(value = "/names")
@ResponseBody
public String names(@RequestParam String[] name) {
logger.info("name=" + Arrays.asList(name));
return Arrays.asList(name).toString();
}
对应请求/names.do?name=张三,李四
或者/names.do?name=张三&name=李四
@PathVariable 绑定uri变量值
@RequestMapping("/user/{id}")
@ResponseBody
public String getUser(@PathVariable Long id) {
return String.valueOf(id);
}
请求/user/1返回id为1
@CookieValue 绑定cookie的值
@RequestMapping("/getCookie")
@ResponseBody
public String getCookie(@CookieValue("JSESSIONID") String sessionId) {
return sessionId;
}
@ModelAttribute绑定参数到命令对象
1、绑定请求参数到对象
先定义两个对象
Role
public class Role implements Serializable {
private String id;
}
User
public class User implements Serializable {
private String id;
private Role role;
}
@RequestMapping("/getUserByModel")
@ResponseBody
public String getUserByModel(@ModelAttribute("user") User user) {
logger.info(user.toString());
return "";
}
对应请求/getUserByModel.do?id=123&role.id=1
暴露表单引用对象为模型数据
@ModelAttribute("user")
public User getUser(String userId) {
User user = new User();
user.setId("11");
Role role=new Role();
role.setId("123");
user.setRole(role);
return user;
}
@RequestMapping("/getUserModel")
@ResponseBody
public String getUserModel(@ModelAttribute User user) {
return user.toString();
}
请求/getUserModel?id=1
返回 User{id='1', role=Role{id='123'}}
使用@ModelAttribute注释的方法会在所有Controller方法前运行
因为先运行了@ModelAttribute注解的方法,生成了一个user对象,之后user对象的id属性被修改为1
@SessionAttributes绑定命令对象到session
springmvc提供了@SessionAttributes用来对会话数据的存取
添加session
@RequestMapping("/setSession")
@ResponseBody
public String setSession(
HttpSession session) {
City city = new City();
city.setCityName("shanghai");
session.setAttribute("city", city);
return city.toString();
}
获取session数据
//在类头部添加需要的session属性
@Controller
@SessionAttributes(value = {"city"})
public class TestController {
@RequestMapping("/getSession")
@ResponseBody
public String getSession(@ModelAttribute City city) {
return city.toString();
}
}
清除本次会话session
@RequestMapping("/clearSession")
@ResponseBody
public String clearSession(SessionStatus status) {
status.setComplete();
return "success";
}
@RequestBody绑定请求的内容区数据并能进行自动类型转换等
使用RequestBody可以将json转化为对象
@RequestMapping("/getUserByJson")
@ResponseBody
public String getUserByJson(@RequestBody User user){
return user.toString();
}
发送json格式报文
{
"id":"123"
}
返回结果User{id='123', role=null}
@RequestPart绑定“multipart/data”数据
@RequestMapping("/getFile")
@ResponseBody
public String getFile(@RequestPart("image") MultipartFile file){
System.out.println(file.getName()+","+file.getSize());
return "success";
}
源码地址:springmvcLearn_jb51.rar
来源:http://www.jianshu.com/p/28b6dd7ac157
![](https://www.aspxhome.com/images/zang.png)
![](https://www.aspxhome.com/images/jiucuo.png)
猜你喜欢
- 很多时候我们开发的软件需要向用户提供软件参数设置功能,例如我们常用的QQ,用户可以设置是否允许陌生人添加自己为好友。对于软件配置参数的保存,
- 前言为什么用动静态库我们在实际开发中,经常要使用别人已经实现好的功能,这是为了开发效率和鲁棒性(健壮性);因为那些功能都是顶尖的工程师已经写
- 前言RefreshIndicator是Flutter里常见的下拉刷新组件,使用是比较方便的。但由于产品兄弟对其固定的刷新样式很是不满,而且代
- 一个是新浪微博,腾讯微博的分享按钮,一个是他们的绑定情况(其实就是是否授权)。点击微博分享中新浪或腾讯按钮,就进行相应的授权(若没授权),显
- 前言对于数组遍历,基本上每个开发者都写过,遍历本身没什么好说的,但是当我们在遍历的过程中,有一些复杂的业务逻辑时,将会发现代码的层级会逐渐加
- Java 数据库连接池详解数据库连接池的原理是:连接池基本的思想是在系统初始化的时候,将数据库连接作为对象存储在内存中,当用户需要访问数据库
- [LeetCode] 159. Longest Substring with At Most Two Distinct Characters
- 简介我们在开发web应用的时候,有时候为了适应浏览器大小的调整,需要动态对页面的组件进行位置的调整。这时候就会用到flow layout,也
- instanceof关键字用于判断一个引用类型变量所指向的对象是否是一个类(或接口、抽象类、父类)的实例。 举个例子:public
- 概念理解Properties 继承于 Hashtable。表示一个持久的属性集,属性列表以key-value的形式存在,key和value都
- 走马灯是一种常见的效果,本文讲一下如何用 PageView 在 Flutter 里实现一个走马灯, 效果如下,当前页面的高度比其它页面高,切
- SpringCloudStream配置以下配置摘自《SpringCloud微服务实战》,配置主要包括两大部分:Stream配置(基础配置、通
- 这篇文章主要介绍了Spring整合MyBatis图示过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需
- 今天给大家介绍一下SpringBoot中JPA的一些常用操作,例如:增删改查、分页、排序、事务操作等功能。下面先来介绍一下JPA中一些常用的
- mapper文件使用in("str1","str2")mybatis的xxxMapper.xml文件
- 概述: 当希望能直接在数据库语言中只检索符合条件的记录,不需要再通过程序对其做处理时,SQL语句分页
- 本文实例讲述了Android中SeekBar和RatingBar用法。分享给大家供大家参考,具体如下:什么是SeekBar?可以拖动的进度条
- yml 文件规则yml文件的好处,天然的树状结构,一目了然,实质上跟properties是差不多的。不支持tab缩进可以使用 "-
- 这篇文章主要介绍了JAVA如何定义构造函数过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可
- synchronized原理在java中,每一个对象有且仅有一个同步锁。这也意味着,同步锁是依赖于对象而存在。当我们调用某对象的synchr