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
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
使用Springboot搭建OAuth2.0 Server的方法示例
![](https://img.aspxhome.com/file/2023/1/125641_0s.png)
创建Android守护进程实例(底层服务)
![](https://img.aspxhome.com/file/2023/7/139357_0s.jpg)
C# 鼠标穿透窗体功能的实现方法
Gradle进阶使用结合Sonarqube进行代码审查的方法
![](https://img.aspxhome.com/file/2023/6/84226_0s.png)
c# 闭包的相关知识以及需要注意的地方
![](https://img.aspxhome.com/file/2023/0/86980_0s.png)
简单了解Thymeleaf语法 数据延迟加载使用实例
java微信公众号企业付款开发
![](https://img.aspxhome.com/file/2023/1/88041_0s.jpg)
浅谈java泛型的作用及其基本概念
Android定时器和Handler用法实例分析
详解Kotlin的空指针处理
![](https://img.aspxhome.com/file/2023/6/81956_0s.jpg)
详解MyBatis多数据源配置(读写分离)
Android 游戏开发之Canvas画布的介绍及方法
Android 高仿微信转账金钱输入框规则
![](https://img.aspxhome.com/file/2023/6/137326_0s.gif)
Spring Boot(二)之web综合开发
为什么Java项目中别用!=null做判空
C#常用目录文件操作类实例
BeanDefinitionRegistryPostProcessor如何动态注册Bean到Spring
![](https://img.aspxhome.com/file/2023/1/59941_0s.jpg)
线程局部变量的实现 ThreadLocal使用及场景介绍
![](https://img.aspxhome.com/file/2023/1/59031_0s.jpg)
C#中的图像Image类与打印Printing类用法
springboot项目如何设置session的过期时间
![](https://img.aspxhome.com/file/2023/9/102649_0s.png)