沫沫金:详解Spring MVC模型(Model)层和视图(View)层 推荐

简介: Spring MCV中Model层是View层的数据容器,Jsp页面上所有的参数传递都是通过绑定到模型。这里不得不说Spring的mvc设计将Entity和Model分离的好处:也许很多SSH开发的程序猿一接触spring的mvc框架感觉这样分离很没有必要,因为struts直接使用Entity就可以了。

Spring MCV中Model层是View层的数据容器,Jsp页面上所有的参数传递都是通过绑定到模型。


这里 不得不说Spring的mvc设计将Entity和Model分离的好处:也许很多SSH开发的程序猿一接触spring的mvc框架感觉这样分离很没有必要,因为struts直接使用Entity就可以了。那请思考一个问题?页面有业务逻辑需要声明一个变量,但不是实体需要保存的字段,是不是需要在action或者其他的位置声明这个变量?这时候,随着开发深入这种变量是不是很混乱。那么将这样的变量放到一个专门的java类中统一管理,是不是就清晰了。清晰了之后我们来看spring mvc的model层,是不是就刚好吻合这样的情况

Spring MVC强大一:灵活的访问控制
一个Controller处理一个功能模块的所有请求,只需要使用@RequestMapping("save2.do")就可以直接使用"../save2.do"接受请求了。不用向Struts一样声明大量的Action

Spring MVC强大二:支持多个Java Model
也许大家已经习惯使用Struts表单提交只支持一个JavaBean的模式,这种模式缺点很明显,想一个表单提交两个对象是不可能实现的。而spring mvc呢,完全支持多个java model绑定到一个表单,一次提交就可以接收到所有的对象。举个例子:A、B两个Entity,一对多的关联关系,A中包含多个B,使用List集合技术实现。这里对应的Model层有A、B,但是A模型不支持绑定 包含对象的 List集合,因为model需要内部转换为Entity保存数据。这时候,关键点来了,我们直接在Model层声明C,内容包含一个List<B> bList属性。这时候,A的页面就可以直接使用C中声明的集合属性( name=" bList[0].name " ) 传参了。注意在A的Controller声明方法,参数中包含C就Ok了。下面贴出C的代码、A页面的代码、A的Controller方法
C模型层Model:
 
 
  1. publicclass C extends ModelSupport {

  2. private List<B> bList;

  3. public List<B> getBList() {

  4. return bList;

  5. }

  6. publicvoid setBList(List<B> bList) {

  7. this.bList = bList;

  8. }

  9. }

A视图层View:
 
 
  1. <tr>

  2. <td>${daily.buyGoodName}</td>

  3. <td><inputtype="text"name="bList[0].dmGstorage"value="0"onkeyup="clearNoNum(this)"/></td>

  4. <td><inputtype="text"name="bList[0].dmGoutflow"value="0"onkeyup="clearNoNum(this)"/></td>

  5. <td><inputtype="text"name="bList[0].dmGinventory"value="0"/></td>

  6. <td><inputtype="text"name="bList[0].dmGenableDay"value="0"onkeyup="clearNoNum(this)"/></td>

  7. </tr>


A控制层Controller:

 
 
  1. @RequestMapping("dmgSave")

  2. @ResponseBody

  3. public Json addSave(MaterialDailyMang mode,C c){

  4. System.out.println(c.getBList().size());

  5. Json json= super.addSave(mode);

  6. //保存物品集合

  7. for (B b : c.getBList()) {

  8. MaterialDailyMang mang=(MaterialDailyMang) json.getObj();

  9. b.setDmId(mang.getId());

  10. materialDailyGoodService.addSave(b);

  11. }

  12. return json;

  13. }

目录
相关文章
|
9月前
|
缓存 安全 Java
Spring Security通用权限管理模型解析
Spring Security作为Spring生态的核心安全框架,结合RBAC与ACL权限模型,基于IoC与AOP构建灵活、可扩展的企业级权限控制体系,涵盖认证、授权流程及数据库设计、性能优化等实现策略。
657 0
|
8月前
|
JSON 前端开发 JavaScript
Mvc视图的4种提交方式
本文介绍了jQuery中get/post与ajax提交方式,以及原生JS通过请求头和FormData对象发送数据的方法。涵盖参数配置、请求类型、回调处理等要点,适用于表单及数据提交场景。
247 1
|
JSON 前端开发 Java
spring mvc Rest风格
spring mvc Rest风格
153 0
|
XML 监控 前端开发
Spring Boot中的WebFlux编程模型
Spring WebFlux 是 Spring Framework 5 引入的响应式编程模型,基于 Reactor 框架,支持非阻塞异步编程,适用于高并发和 I/O 密集型应用。本文介绍 WebFlux 的原理、优势及在 Spring Boot 中的应用,包括添加依赖、编写响应式控制器和服务层实现。WebFlux 提供高性能、快速响应和资源节省等优点,适合现代 Web 应用开发。
1697 15
|
前端开发 IDE Java
Spring MVC 中因导入错误的 Model 类报错问题解析
在 Spring MVC 或 Spring Boot 开发中,若导入错误的 `Model` 类(如 `ch.qos.logback.core.model.Model`),会导致无法解析 `addAttribute` 方法的错误。正确类应为 `org.springframework.ui.Model`。此问题通常因 IDE 自动导入错误类引起。解决方法包括:删除错误导入、添加正确包路径、验证依赖及清理缓存。确保代码中正确使用 Spring 提供的 `Model` 接口以实现前后端数据传递。
509 0
|
前端开发 Java 应用服务中间件
我以为我对Spring MVC很了解,直到我遇到了...
所有人都知道Spring MVC是是开发的,却鲜有人知道Spring MVC的理论基础来自于1978 年提出MVC模式的一个老头子,他就是Trygve Mikkjel Heyerdahl Reenskaug,挪威计算机科学家,名誉教授。Trygve Reenskaug的MVC架构思想早期用于图形用户界面(GUI) 的软件设计,他对MVC是这样解释的。MVC 被认为是解决用户控制大型复杂数据集问题的通用解决方案。最困难的部分是为不同的架构组件想出好的名字。模型-视图-编辑器是第一个。
367 1
我以为我对Spring MVC很了解,直到我遇到了...
|
XML JSON Java
使用IDEA+Maven搭建整合一个Struts2+Spring4+Hibernate4项目,混合使用传统Xml与@注解,返回JSP视图或JSON数据,快来给你的SSH老项目翻新一下吧
本文介绍了如何使用IntelliJ IDEA和Maven搭建一个整合了Struts2、Spring4、Hibernate4的J2EE项目,并配置了项目目录结构、web.xml、welcome.jsp以及多个JSP页面,用于刷新和学习传统的SSH框架。
637 0
使用IDEA+Maven搭建整合一个Struts2+Spring4+Hibernate4项目,混合使用传统Xml与@注解,返回JSP视图或JSON数据,快来给你的SSH老项目翻新一下吧
|
人工智能 移动开发 Java
Java智能之Spring AI:5分钟打造智能聊天模型的利器
尽管Python最近成为了编程语言的首选,但是Java在人工智能领域的地位同样不可撼动,得益于强大的Spring框架。随着人工智能技术的快速发展,我们正处于一个创新不断涌现的时代。从智能语音助手到复杂的自然语言处理系统,人工智能已经成为了现代生活和工作中不可或缺的一部分。在这样的背景下,Spring AI 项目迎来了发展的机遇。尽管该项目汲取了Python项目如LangChain和LlamaIndex的灵感,但Spring AI并不是简单的移植。该项目的初衷在于推进生成式人工智能应用程序的发展,使其不再局限于Python开发者。
1089 2
|
前端开发 Java Spring
Spring MVC中使用ModelAndView传递数据
Spring MVC中使用ModelAndView传递数据
|
人工智能 自然语言处理 Java
Spring AI是一个开源的多模态AI模型平台
Spring AI是一个开源的多模态AI模型平台
2053 2