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

标签:springmvc,参数绑定
0
投稿

猜你喜欢

  • 使用Springboot搭建OAuth2.0 Server的方法示例

    2023-01-28 07:19:16
  • 创建Android守护进程实例(底层服务)

    2021-11-12 01:37:09
  • C# 鼠标穿透窗体功能的实现方法

    2021-09-26 04:24:38
  • Gradle进阶使用结合Sonarqube进行代码审查的方法

    2021-12-17 08:49:56
  • c# 闭包的相关知识以及需要注意的地方

    2023-12-11 01:27:54
  • 简单了解Thymeleaf语法 数据延迟加载使用实例

    2021-11-27 04:05:49
  • java微信公众号企业付款开发

    2023-04-07 00:21:08
  • 浅谈java泛型的作用及其基本概念

    2022-08-10 07:53:47
  • Android定时器和Handler用法实例分析

    2022-11-09 22:18:08
  • 详解Kotlin的空指针处理

    2022-06-03 06:57:58
  • 详解MyBatis多数据源配置(读写分离)

    2023-11-21 20:35:44
  • Android 游戏开发之Canvas画布的介绍及方法

    2021-12-14 23:10:54
  • Android 高仿微信转账金钱输入框规则

    2022-03-06 19:54:20
  • Spring Boot(二)之web综合开发

    2022-09-10 18:52:25
  • 为什么Java项目中别用!=null做判空

    2023-12-19 20:26:13
  • C#常用目录文件操作类实例

    2023-06-24 13:30:24
  • BeanDefinitionRegistryPostProcessor如何动态注册Bean到Spring

    2023-11-24 12:56:16
  • 线程局部变量的实现 ThreadLocal使用及场景介绍

    2023-11-10 03:19:26
  • C#中的图像Image类与打印Printing类用法

    2022-07-25 06:24:36
  • springboot项目如何设置session的过期时间

    2022-12-31 23:45:27
  • asp之家 软件编程 m.aspxhome.com