😀前言
本文讲解让你了解什么是spring MVC模型数据(附大量代码)
🧑个人简介:大家好,我是尘觉,希望我的文章可以帮助到大家,您的满意是我的动力😉😉
🥰让你了解什么是spring MVC模型数据(附大量代码)
😉说明
模型数据处理-数据放入 request
开发中, 控制器/处理器中.获取.的数据如何放入 request 域,然后在前端(VUE/JSP/...) 取出显示
应用实例需求
创建后面所有代码执行成功之后跳转的vote_ok.jsp页面
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>vote_ok </title> </head> <body> <h1>获取的的数据显示页面</h1> <hr> 取出 request域的数据-通过前面讲解的el表达式来获取即可 <br> address: ${requestScope.address}<br> 主人名字= ${requestScope.master.name} 主人id= ${requestScope.master.id} 宠物名字= ${requestScope.master.pet.name} </body> </html>
🥰方式 1: 通过 HttpServletRequest放入 request 域
创建 Master类
public class Master { private Integer id; private String name; private Pet pet;//对象的属性是另外一个对象[涉及级联] public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Pet getPet() { return pet; } public void setPet(Pet pet) { this.pet = pet; } @Override public String toString() { return "Master{" + "id=" + id + ", name='" + name + '\'' + ", pet=" + pet + '}'; } }
创建Pet类
public class Pet { private Integer id; private String name; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } @Override public String toString() { return "Pet{" + "id=" + id + ", name='" + name + '\'' + '}'; } }
创建model_data.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>测试 模型数据</title> </head> <body> <h1>添加主人信息</h1> <form action="vote/vote05" method="post"> 主人号:<input type="text" name="id"><br> 主人名:<input type="text" name="name"><br> 宠物号:<input type="text" name="pet.id"><br> 宠物名:<input type="text" name="pet.name"><br> <input type="submit" value="添加主人和宠物"> </form> </body> </html>
修改 VoteHandler增加方法
解读
1. 演示将提交的数据->springmvc封装到java对象->springmvc 会自动的将其放入到request域
2. 这样我们就可以在跳转到的页面取出数据.
@RequestMapping("/vote") @Controller public class VoteHandler { @RequestMapping(value = "/vote05") public String test05(Master master, HttpServletRequest request) { //解读 //1. springmvc会自动把获取的model模型,放入到request域中,名字就是master //2. 也可以手动将master放入到request[一会在讲] request.setAttribute("address", "beijing"); //3. 如果我们希望修改master的属性值 master.setName("nono"); //4. 分析一下springmvc默认存放对象到request域中,属性名是 // request域 ("master", master) 属性名是类名/类型名 首字母小写 //返回到一个结果 return "vote_ok"; } }
创建vote_ok.jsp, 显示数据
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>vote_ok </title> </head> <body> <h1>获取的的数据显示页面</h1> <hr> 取出 request域的数据-通过前面讲解的el表达式来获取即可 <br> address: ${requestScope.address}<br> 主人名字= ${requestScope.master.name} 主人id= ${requestScope.master.id} 宠物名字= ${requestScope.master.pet.name} </body> </html>
完成测试(Postman 测试)
💖方式 2: 通过请求的方法参数 Map放入 request
修改 model_data.jsp, 增加代码
<h1>添加主人信息[测试 Map ]</h1> <form action="vote/vote06" method="post"> 主人号:<input type="text" name="id"><br> 主人名:<input type="text" name="name"><br> 宠物号:<input type="text" name="pet.id"><br> 宠物名:<input type="text" name="pet.name"><br> <input type="submit" value="添加主人和宠物"> </form>
修改 VoteHandler.java增加方法
解读
1. 需求是通过map对象,添加属性到request中
2. 原理分析:springmvc会遍历map,然后将map的k-v, 存放到request域
@RequestMapping("/vote") @Controller public class VoteHandler { //演示通过Map<String,Object> 设置数据到request域 @RequestMapping(value = "/vote06") public String test06(Master master, Map<String, Object> map) { System.out.println("------test06-----"); //解读 //1. 需求是通过map对象,添加属性到request中 //2. 原理分析:springmvc会遍历map,然后将map的k-v, 存放到request域 map.put("address", "beijing..."); //map.put("master", null); //返回到一个结果 return "vote_ok"; } }
完成测试(Postman 测试)
💖方式 3: 通过返回 ModelAndView 对象 实现 request 域数据
修改 model_data.jsp, 增加代码
<br/><hr/> <h1>添加主人信息[测试ModelAndView]</h1> <form action="vote/vote07" method="post"> 主人号:<input type="text" name="id"><br> 主人名:<input type="text" name="name"><br> 宠物号:<input type="text" name="pet.id"><br> 宠物名:<input type="text" name="pet.name"><br> <input type="submit" value="添加主人和宠物"> </form>
修改 VoteHandler.java 增加方法
@RequestMapping("/vote") @Controller public class VoteHandler { // 演示通过返回ModelAndView对象,将数据放入到request域 @RequestMapping(value = "/vote07") public ModelAndView test07(Master master) { System.out.println("----test07----"); ModelAndView modelAndView = new ModelAndView(); //放入属性到modelAndView对象 modelAndView.addObject("address", "shanghai"); //modelAndView.addObject("master", null); //可以把从数据库得到的数据->对象-》放入modelAndView[Service-dao-db] //这里指定跳转的视图名称 modelAndView.setViewName("vote_ok"); //返回结果 return modelAndView; } }
完成测试(Postman 测试)
使用注意事项
1) 从本质看
请求响应的方法 return "xx", 是返回了一个字符串,其实本质是返回了一个ModelAndView 对象,只是默认被封装起来的.
2) ModelAndView 即可以包含 model 数据,也可以包含视图信息
3) ModelAndView 对象的 addObject 方法可以添加 key-val 数据,默认在 request 域中
4) ModelAndView 对象 setView 方法可以指定视图名称
😄总结
开发中, 控制器/处理器中.获取.的数据如何放入 request 域,然后在前端(VUE/JSP/...) 取出显示
字段名称和对象的属性名保持一致,级联添加属性也是一样保持名字对应关系
springMVC 会将map 的k-v 放入到request 域对象
文章到这里就结束了,如果有什么疑问的地方请指出,诸佬们一起来评论区一起讨论😁
希望能和诸佬们一起努力,今后我们一起观看感谢您的阅读🍻
如果帮助到您不妨3连支持一下,创造不易您们的支持是我的动力🤞