数据提交

1. 前端的参数与controller中的参数名一致

可以直接用

  1. package com.wang.controller;
  2. import org.springframework.stereotype.Controller;
  3. import org.springframework.ui.Model;
  4. import org.springframework.web.bind.annotation.GetMapping;
  5. import org.springframework.web.bind.annotation.RequestMapping;
  6. @Controller
  7. @RequestMapping("/user")
  8. public class UserController {
  9. //localhost: 8080/user/t1?name=xxx
  10. //前端的参数名与此处一致,可以直接用
  11. @GetMapping("/t1")
  12. public String test(String name, Model model) {
  13. //1. 接受前端参数
  14. System.out.println("接受到前端的参数为: " + name);
  15. //2. 将返回的结果传递给前端
  16. model.addAttribute("msg", name);
  17. return "test";
  18. }
  19. }

2. 前端的参数与controller中的参数名不一致

推荐无论一不一样, 都加上@RequestParam("前端的参数名")

  1. package com.wang.controller;
  2. import org.springframework.stereotype.Controller;
  3. import org.springframework.ui.Model;
  4. import org.springframework.web.bind.annotation.GetMapping;
  5. import org.springframework.web.bind.annotation.RequestMapping;
  6. import org.springframework.web.bind.annotation.RequestParam;
  7. @Controller
  8. @RequestMapping("/user")
  9. public class UserController {
  10. // //localhost: 8080/user/t1?name=xxx
  11. // //前端的参数名与此处一致,可以直接用
  12. // @GetMapping("/t1")
  13. // public String test(String name, Model model) {
  14. // //1. 接受前端参数
  15. // System.out.println("接受到前端的参数为: " + name);
  16. // //2. 将返回的结果传递给前端
  17. // model.addAttribute("msg", name);
  18. // return "test";
  19. // }
  20. //localhost: 8080/user/t1?username=xxx
  21. //前端的参数名与此处不一致, 需要加注解
  22. @GetMapping("/t1")
  23. public String test(@RequestParam("username") String name, Model model) {
  24. //1. 接受前端参数
  25. System.out.println("接受到前端的参数为: " + name);
  26. //2. 将返回的结果传递给前端
  27. model.addAttribute("msg", name);
  28. return "test";
  29. }
  30. }

3. 前端接收的是一个对象

  1. package com.wang.controller;
  2. import com.wang.pojo.User;
  3. import org.springframework.stereotype.Controller;
  4. import org.springframework.ui.Model;
  5. import org.springframework.web.bind.annotation.GetMapping;
  6. import org.springframework.web.bind.annotation.RequestMapping;
  7. import org.springframework.web.bind.annotation.RequestParam;
  8. @Controller
  9. @RequestMapping("/user")
  10. public class UserController {
  11. //前端接收的是一个对象 : id, name, age
  12. //localhost: 8080/user/t1?id=XXX&name=xxx&age=xxx
  13. /*
  14. 1. 接受前端用户传递的参数, 判断参数的名字, 假设名字直接在方法上, 可以直接使用
  15. 2. 假设传递的是一个对象User, 匹配User对象中的字段名: 如果名字一致则OK, 否则, 匹配不到
  16. */
  17. @GetMapping("/t3")
  18. public String test3(User user, Model model) {
  19. System.out.println(user);
  20. model.addAttribute("msg", user.toString());
  21. return "test";
  22. }
  23. }

4. 总结

  1. 1. 接受前端用户传递的参数, 判断参数的名字, 假设名字直接在方法上, 可以直接使用
  2. 2. 假设传递的是一个对象User, 匹配User对象中的字段名: 如果名字一致则OK, 否则, 匹配不到

5. 数据显示到前端

1. 通过ModelAndView

  1. public class ControllerTest1 implements Controller {
  2. public ModelAndView handleRequest(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception {
  3. //返回一个模型视图对象
  4. ModelAndView mv = new ModelAndView();
  5. mv.addObject("msg","ControllerTest1");
  6. mv.setViewName("test");
  7. return mv;
  8. }
  9. }

2. 通过Model

  1. @RequestMapping("/ct2/hello")
  2. public String hello(@RequestParam("username") String name, Model model){
  3.    //封装要显示到视图中的数据
  4.    //相当于req.setAttribute("name",name);
  5.    model.addAttribute("msg",name);
  6.    System.out.println(name);
  7.    return "test";
  8. }

3. 通过ModelMap

graph LR
id1[LinkedHashMap]
id2[ModelMap]
id3[Model]

id1 --继承了LinkedHashMap, 拥有LinkedHashMap的全部功能--> id2
id2 --精简版, 大部分情况下我们直接使用Model--> id3

  1. @GetMapping("/t4")
  2. public String test4 (@RequestParam("username") String name, ModelMap map) {
  3. map.addAttribute("msg", name);
  4. System.out.println(name);
  5. return "test";
  6. }

4. 对比

  • Model 只有寥寥几个方法只适合用于储存数据,简化了新手对于Model对象的操作和理解

  • ModelMap 继承了 LinkedMap ,除了实现了自身的一些方法,同样的继承 LinkedMap 的方法和特性

  • ModelAndView 可以在储存数据的同时,可以进行设置返回的逻辑视图,进行控制展示层的跳转

SpringMVC-数据提交的更多相关文章

  1. SpringMVC之ajax与表单 Post 数据提交差异小结

    最近在写一个富文本框的后台数据服务的时候遇到一些关于 ajax 提交与 表单提交的比较特殊的案例,这里拿来跟大家分享,希望能让大家有所启发. 1. 首先是常见表单提交在SpringMVC的控制器中的代 ...

  2. SpringMVC数据验证

    SpringMVC数据验证——第七章 注解式控制器的数据验证.类型转换及格式化——跟着开涛学SpringMVC 资源来自:http://jinnianshilongnian.iteye.com/blo ...

  3. 《Java从入门到放弃》入门篇:springMVC数据传递

    springMVC中的数据传递方式与JSP和Struts2相比,更加的简单.具体有什么样的区别呢?我们通过下面这张图来对比就知道了. 随手画的,有些错别字,不用太在意..... 接下来,进入正题,sp ...

  4. springMVC数据交互

    控制器 作为控制器,大体的作用是作为V端的数据接收并且交给M层去处理,然后负责管理V的跳转.SpringMVC的作用不外乎就是如此,主要分为:接收表单或者请求的值,定义过滤器,跳转页面:其实就是ser ...

  5. SpringMVC数据格式化

    SpringMVC数据格式化 1. 使用Formatter格式化数据 Converter可以将一种类型转换成另一种类型,是任意Object之间的类型转换. Formatter则只能进行String与任 ...

  6. 四种常见的 POST-------- content-type数据提交方式

    HTTP/1.1 协议规定的 HTTP 请求方法有 OPTIONS.GET.HEAD.POST.PUT.DELETE.TRACE.CONNECT 这几种.其中 POST 一般用来向服务端提交数据,本文 ...

  7. ligerui_实际项目_003:form中添加数据,表格(grid)里面显示,最后将表格(grid)里的数据提交到servlet

    实现效果: "Form"中填写数据,向本页"Grid"中添加数据,转换成Json数据提交,计算总和,Grid文本框可编辑,排序 图片效果: 总结: //disp ...

  8. jsp 页面json数据提交到后台spring处理举例

    0 前台: 'type'        : 'post', 'contentType' : 'application/json;charset=UTF-8', 'data'        : JSON ...

  9. 数据提交成功后如何避免alert被window.location.reload()影响

    数据提交成功用alert提示,但页面立马就重载了 alert("提交成功!"); window.location.reload(); 如何避免? 方法一: setTimeout 延 ...

  10. jsp多模块相同数据提交到后台之数据处理

    最近在写一个java多模块表单提交,起初想的只是一个简单的form表单提交,写的时候发现不是真简单.多个相同类型数据提交到后台接收的问题很困难. 于是,和人进行深入的讨论,感觉j以json的格式提交时 ...

随机推荐

  1. Go之Gorm和BeegoORM简介及配置使用

    简介 ORM Object-Relationl Mapping, 它的作用是映射数据库和对象之间的关系,方便我们在实现数据库操作的时候不用去写复杂的sql语句,把对数据库的操作上升到对于对象的操作 G ...

  2. for循环的插入元素

    Scanner input = new Scanner(System.in);  int[] num = new int[5];  for (int i = 0; i < num.length; ...

  3. Linux域名服务器部署

    环境:vmware workstation          系统:Red Hat7.4 DNS服务部署: IP地址:192.168.100.151        DNS:192.168.100.15 ...

  4. 根据pid获得路径 2006-10-25 19:28

    这是编写kill process时用到的 BOOL GetProcessModule(DWORD dwPID, DWORD dwModuleID, LPMODULEENTRY32 lpMe32, DW ...

  5. Dotnet Core Public API的安全实践

    公开API的安全,其实更重要.   一.API的安全 作为一个Dotnet Core的老司机,写API时,能兼顾到API的安全,这是一种优雅.   通常,我们会用认证来保证API的安全,无敌的Auth ...

  6. 【MySQL】记一次线上重大事故:二狗子竟然把线上数据库删了!!

    写在前面 估计二狗子这几天是大姨夫来了,心情很郁闷,情绪也很低落,工作的时候也有点心不在焉.让他发个版本,结果,一行命令下去把线上的数据库删了!你没听错:是删掉了线上的数据库!运营那边顿时炸了锅:怎么 ...

  7. C++数的表示

    二进制B 八进制O 十进制D 十六进制H / 0x十六进制 十进制数转换成R进制数:整数部分除基取余,上右下左:小数部分乘基取整,上左下右.   浮点数的阶用一种称为移码的编码表示方法,方便对阶.阶的 ...

  8. C++ 7种排序方法代码合集

    class Solution { public: /******************************************************************** 直接插入排 ...

  9. jmeter将上一个接口的返回值作为下一个接口的请求参数

    接口响应结果,通常为HTML.Json格式的数据,对于HTML的响应结果的提取,可以通过正则表达式,XPath提取. 对于Json格式响应结果,可以通过正则表达式.JSON Extractor插件.B ...

  10. ASP.NET Core3.1使用IdentityServer4中间件系列随笔(一):搭建认证服务器

    配套源码:https://gitee.com/jardeng/IdentitySolution 1.创建ASP.NET Core Web应用程序,选择空模板. 去掉HTTPS 2.添加nuget包:I ...