详解Spring MVC模型(Model)层和视图(View)层

简介:
这里 不得不说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. }


本文转自 沫沫金 51CTO博客,原文链接:http://blog.51cto.com/zl0828/1159604,如需转载请自行联系原作者
相关文章
|
2月前
|
JSON 前端开发 JavaScript
Mvc视图的4种提交方式
本文介绍了jQuery中get/post与ajax提交方式,以及原生JS通过请求头和FormData对象发送数据的方法。涵盖参数配置、请求类型、回调处理等要点,适用于表单及数据提交场景。
127 1
|
8月前
|
前端开发 IDE Java
Spring MVC 中因导入错误的 Model 类报错问题解析
在 Spring MVC 或 Spring Boot 开发中,若导入错误的 `Model` 类(如 `ch.qos.logback.core.model.Model`),会导致无法解析 `addAttribute` 方法的错误。正确类应为 `org.springframework.ui.Model`。此问题通常因 IDE 自动导入错误类引起。解决方法包括:删除错误导入、添加正确包路径、验证依赖及清理缓存。确保代码中正确使用 Spring 提供的 `Model` 接口以实现前后端数据传递。
271 0
|
设计模式 存储 前端开发
MVC(模型-视图-控制器)是一种在Web应用程序开发中广泛使用的软件设计模式
【5月更文挑战第12天】MVC模式是Web应用开发中的常见设计模式,将逻辑、数据和界面分离,提升代码可维护性和重用性。模型处理数据逻辑,视图展示数据,控制器协调用户输入与模型视图交互。优点包括代码分离、易维护、可扩展和组件重用,促进高效灵活的开发。
264 2
|
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框架。
517 0
使用IDEA+Maven搭建整合一个Struts2+Spring4+Hibernate4项目,混合使用传统Xml与@注解,返回JSP视图或JSON数据,快来给你的SSH老项目翻新一下吧
|
前端开发 JavaScript
MVC中简单数据模型(M): Model类
MVC中简单数据模型(M): Model类
|
设计模式 前端开发 安全
理解最常用的MVC分层模型及其变种
【6月更文挑战第24天】 本文介绍架构模式如MVC、MVVM和MVP是解决软件结构问题的通用方案。。每种模式有其优缺点,适用场景不同。
887 0
理解最常用的MVC分层模型及其变种
|
前端开发 Java Spring
数据之桥:深入Spring MVC中传递数据给视图的实用指南
数据之桥:深入Spring MVC中传递数据给视图的实用指南
247 3
|
安全 前端开发 测试技术
安全开发-PHP应用&模版引用&Smarty渲染&MVC模型&数据联动&RCE安全&TP框架&路由访问&对象操作&内置过滤绕过&核心漏洞
安全开发-PHP应用&模版引用&Smarty渲染&MVC模型&数据联动&RCE安全&TP框架&路由访问&对象操作&内置过滤绕过&核心漏洞
162 0
|
前端开发 Java PHP
信息系统架构模型(1) MVC
信息系统架构模型(1) MVC
170 0
|
前端开发 Java Spring
ZK Spring 整合View/Controller层属性注入
ZK Spring 整合View/Controller层属性注入
179 0

热门文章

最新文章