SpringMVC数据输出相关知识总结

作者:油炸冰可乐 时间:2022-04-06 10:35:06 

一、数据输出

SpringMVC将数据携带给页面的储存工具,有三种,map,ModelMap,model,它们在底层实质还是使用到了BindingAwareModelMap,对数据进行存储:

SpringMVC数据输出相关知识总结

此外,也可以使用ModelAndView携带数据回传页面,实现代码如下


/**
* 向页面回传数据显示 handle01/02/03
* 使用 model map modelMap 回传数据 放置在request中
*/
@RequestMapping("/handle01")
public String handler01(Map<String, String> map) {
   map.put("msg","你好1!");
   return "success";
}

@RequestMapping("/handle02")
public String handler02(Model model) {
   model.addAttribute("msg","你好2");
   return "success";
}

@RequestMapping("/handle03")
public String handler03(ModelMap modelMap) {
   modelMap.addAttribute("msg","你好3");
   return "success";
}

/**
* modelAndView 携带数据
*/

@RequestMapping("/handle04")
public ModelAndView handler(){
   ModelAndView mv = new ModelAndView("success");
   mv.addObject("msg","你好04");
   return mv;
}

二、@ModelAttribute注解

使用@ModelAttribute注解,可以得到请求参数中的某个对象,而不是自己new出来的对象,所有带有ModelAttribute注解的方法都会提前于目标方法运行,将对象放置在request域中,然后在目标方法中获取,代码示例:


// 先于目标方法执行,获取了数据库中的斗个对象的信息
@ModelAttribute
public void hahaMyModelAttribute(Map<String, Object> map){

Book book = new Book(100, "西游记", "吴承恩", 98, 10, 98.98);
   System.out.println("数据库中查到的图书信息是:"+book);
   map.put("haha", book);
   b1 = book;
   o1 = map;
   System.out.println("modelAttribute方法...查询了图书并给你保存起来了...他用的map的类型:"+map.getClass());
   }
}

// 目标方法,在目标方法中使用查询到的对象
@RequestMapping("/updateBook")
public String updateBook(@ModelAttribute("haha")Book book,Map<String, Object> model){
   o2 = model;
   b2  = book;
   Object haha = model.get("haha");
   //System.out.println("传入的model:"+model.getClass());
   System.out.println("o1==o2?"+(o1 == o2));
   System.out.println("b1==b2?"+(b1 == b2)+"-->"+(b2 == haha));
    System.out.println("页面要提交过来的图书信息:"+book);
   return "success";
   }

这样做的好处在于,避免了全字段修改,不给值的地方Spring会默认使用null进行代替,这回在修改之前每个键值对都有值。

来源:https://blog.csdn.net/Wang_Pro/article/details/117434617

标签:SpringMVC,数据,输出
0
投稿

猜你喜欢

  • Android仿微信联系人字母排序效果

    2021-10-01 16:06:25
  • springboot整合security和vue的实践

    2021-09-17 20:39:28
  • SpringBoot整合Docker实现一次构建到处运行的操作方法

    2023-01-23 04:32:14
  • SpringBoot自动配置源码深入刨析讲解

    2022-04-03 14:38:06
  • Java中LocalDateTime的具体用法

    2023-11-23 14:00:05
  • C#实现基于加减按钮形式控制系统音量及静音的方法

    2022-07-09 09:31:50
  • LeetCode -- Path Sum III分析及实现方法

    2022-10-16 13:41:14
  • 详解IntelliJ IDEA中TortoiseSVN修改服务器地址的方法

    2023-11-25 04:51:04
  • 解决eclipse启动tomcat时不能加载web项目的问题

    2023-11-15 14:45:01
  • Java Swing实现坦克大战游戏

    2021-12-16 21:04:03
  • Java map 优雅的元素遍历方式说明

    2022-11-12 16:57:28
  • Java Struts图片上传至指定文件夹并显示图片功能

    2023-03-15 10:48:51
  • java中生产者消费者问题和代码案例

    2023-11-24 04:09:07
  • Android GridView实现滚动到指定位置的方法

    2021-08-29 10:04:21
  • 详解c# 线程同步

    2023-11-23 08:54:48
  • Unity利用材质自发光实现物体闪烁

    2021-07-03 20:42:26
  • java实现连连看游戏课程设计

    2023-10-30 13:18:37
  • 关于C#结构体 你需要知道的

    2022-01-04 13:11:49
  • C#如何优雅的结束线程

    2022-07-27 19:45:27
  • Android最简单的限制输入方法(只包含数字、字母和符号)

    2022-01-22 00:15:45
  • asp之家 软件编程 m.aspxhome.com