让你了解什么是spring MVC模型数据(附大量代码)

简介: 让你了解什么是spring MVC模型数据(附大量代码)

 😀前言

本文讲解让你了解什么是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连支持一下,创造不易您们的支持是我的动力🤞


目录
相关文章
|
1月前
|
缓存 前端开发 Java
Spring MVC 面试题及答案整理,最新面试题
Spring MVC 面试题及答案整理,最新面试题
85 0
|
30天前
|
SQL JavaScript Java
springboot+springm vc+mybatis实现增删改查案例!
springboot+springm vc+mybatis实现增删改查案例!
24 0
|
30天前
|
SQL Java 数据库连接
挺详细的spring+springmvc+mybatis配置整合|含源代码
挺详细的spring+springmvc+mybatis配置整合|含源代码
36 1
|
8天前
|
数据采集 前端开发 Java
数据塑造:Spring MVC中@ModelAttribute的高级数据预处理技巧
数据塑造:Spring MVC中@ModelAttribute的高级数据预处理技巧
21 3
|
8天前
|
存储 前端开发 Java
会话锦囊:揭示Spring MVC如何巧妙使用@SessionAttributes
会话锦囊:揭示Spring MVC如何巧妙使用@SessionAttributes
13 1
|
8天前
|
前端开发 Java Spring
数据之桥:深入Spring MVC中传递数据给视图的实用指南
数据之桥:深入Spring MVC中传递数据给视图的实用指南
26 3
|
18天前
|
前端开发 安全 Java
使用Java Web框架:Spring MVC的全面指南
【4月更文挑战第3天】Spring MVC是Spring框架的一部分,用于构建高效、模块化的Web应用。它基于MVC模式,支持多种视图技术。核心概念包括DispatcherServlet(前端控制器)、HandlerMapping(请求映射)、Controller(处理请求)、ViewResolver(视图解析)和ModelAndView(模型和视图容器)。开发流程涉及配置DispatcherServlet、定义Controller、创建View、处理数据、绑定模型和异常处理。
使用Java Web框架:Spring MVC的全面指南
|
24天前
|
敏捷开发 监控 前端开发
Spring+SpringMVC+Mybatis的分布式敏捷开发系统架构
Spring+SpringMVC+Mybatis的分布式敏捷开发系统架构
56 0
|
1月前
|
Java Apache vr&ar
springmvc报错 nested exception is org.mybatis.spring.MyBatisSystemException:
springmvc报错 nested exception is org.mybatis.spring.MyBatisSystemException:
15 0
|
3月前
|
开发框架 前端开发 .NET
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
38 0