springmvc 参数绑定总结

发布时间 - 2026-01-11 00:19:49    点击率:

最近在学习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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# springmvc  # 参数绑定  # spring  # mvc  # 获取参数  # 参数  # 深入理解SpringMVC的参数绑定与数据响应机制  # SpringMVC 参数绑定之视图传参到控制器的实现代码  # SpringMVC中参数绑定问题实例详解  # SpringMVC 参数绑定相关知识总结  # SpringMVC自定义参数绑定实现详解  # SpringMVC 参数绑定意义及实现过程解析  # springmvc请求参数的绑定的项目实践  # 绑定  # 李四  # 会在  # 不存在  # 也算  # 转化为  # 并能  # 表单  # 必填  # 大家多多  # 为先  # 为空  # 学习笔记  # 整理一下  # 默认为  # 变量值  # 张三  # amp  # asList  # Arrays 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 手机网站制作与建设方案,手机网站如何建设?  弹幕视频网站制作教程下载,弹幕视频网站是什么意思?  网站制作大概要多少钱一个,做一个平台网站大概多少钱?  Laravel定时任务怎么设置_Laravel Crontab调度器配置  laravel怎么在请求结束后执行任务(Terminable Middleware)_laravel Terminable Middleware请求结束任务执行方法  Laravel如何配置Horizon来管理队列?(安装和使用)  lovemo网页版地址 lovemo官网手机登录  黑客如何通过漏洞一步步攻陷网站服务器?  米侠浏览器网页图片不显示怎么办 米侠图片加载修复  免费制作统计图的网站有哪些,如何看待现如今年轻人买房难的情况?  Laravel怎么实现微信登录_Laravel Socialite第三方登录集成  Laravel如何使用缓存系统提升性能_Laravel缓存驱动和应用优化方案  Laravel策略(Policy)如何控制权限_Laravel Gates与Policies实现用户授权  如何在自有机房高效搭建专业网站?  用yum安装MySQLdb模块的步骤方法  深入理解Android中的xmlns:tools属性  php嵌入式断网后怎么恢复_php检测网络重连并恢复硬件控制【操作】  矢量图网站制作软件,用千图网的一张矢量图做公司app首页,该网站并未说明版权等问题,这样做算不算侵权?应该如何解决?  iOS发送验证码倒计时应用  如何做网站制作流程,*游戏网站怎么搭建?  Laravel如何创建自定义Facades?(详细步骤)  Laravel Debugbar怎么安装_Laravel调试工具栏配置指南  如何在Windows 2008云服务器安全搭建网站?  如何快速生成专业多端适配建站电话?  如何快速生成橙子建站落地页链接?  Laravel如何使用Vite进行前端资源打包?(配置示例)  北京专业网站制作设计师招聘,北京白云观官方网站?  Win11摄像头无法使用怎么办_Win11相机隐私权限开启教程【详解】  Zeus浏览器网页版官网入口 宙斯浏览器官网在线通道  JavaScript实现Fly Bird小游戏  如何获取上海专业网站定制建站电话?  Chrome浏览器标签页分组怎么用_谷歌浏览器整理标签页技巧【效率】  Laravel用户密码怎么加密_Laravel Hash门面使用教程  Windows10如何删除恢复分区_Win10 Diskpart命令强制删除分区  Linux后台任务运行方法_nohup与&使用技巧【技巧】  如何快速上传自定义模板至建站之星?  为什么php本地部署后css不生效_静态资源加载失败修复技巧【技巧】  七夕网站制作视频,七夕大促活动怎么报名?  Laravel如何使用Telescope进行调试?(安装和使用教程)  javascript中的try catch异常捕获机制用法分析  Laravel怎么设置路由分组Prefix_Laravel多级路由嵌套与命名空间隔离【步骤】  Laravel观察者模式如何使用_Laravel Model Observer配置  Android okhttputils现在进度显示实例代码  uc浏览器二维码扫描入口_uc浏览器扫码功能使用地址  厦门模型网站设计制作公司,厦门航空飞机模型掉色怎么办?  Laravel如何安装使用Debugbar工具栏_Laravel性能调试与SQL监控插件【步骤】  js实现点击每个li节点,都弹出其文本值及修改  Laravel项目如何进行性能优化_Laravel应用性能分析与优化技巧大全  Laravel怎么清理缓存_Laravel optimize clear命令详解  高性能网站服务器配置指南:安全稳定与高效建站核心方案