详解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,如需转载请自行联系原作者
相关文章
|
5月前
|
JSON 前端开发 Java
spring mvc Rest风格
spring mvc Rest风格
41 0
|
3月前
|
前端开发 JavaScript
MVC中简单数据模型(M): Model类
MVC中简单数据模型(M): Model类
|
4月前
|
前端开发 Java 应用服务中间件
我以为我对Spring MVC很了解,直到我遇到了...
所有人都知道Spring MVC是是开发的,却鲜有人知道Spring MVC的理论基础来自于1978 年提出MVC模式的一个老头子,他就是Trygve Mikkjel Heyerdahl Reenskaug,挪威计算机科学家,名誉教授。Trygve Reenskaug的MVC架构思想早期用于图形用户界面(GUI) 的软件设计,他对MVC是这样解释的。MVC 被认为是解决用户控制大型复杂数据集问题的通用解决方案。最困难的部分是为不同的架构组件想出好的名字。模型-视图-编辑器是第一个。
129 1
我以为我对Spring MVC很了解,直到我遇到了...
|
4月前
|
人工智能 移动开发 Java
Java智能之Spring AI:5分钟打造智能聊天模型的利器
尽管Python最近成为了编程语言的首选,但是Java在人工智能领域的地位同样不可撼动,得益于强大的Spring框架。随着人工智能技术的快速发展,我们正处于一个创新不断涌现的时代。从智能语音助手到复杂的自然语言处理系统,人工智能已经成为了现代生活和工作中不可或缺的一部分。在这样的背景下,Spring AI 项目迎来了发展的机遇。尽管该项目汲取了Python项目如LangChain和LlamaIndex的灵感,但Spring AI并不是简单的移植。该项目的初衷在于推进生成式人工智能应用程序的发展,使其不再局限于Python开发者。
161 2
|
4月前
|
前端开发 Java Spring
Spring MVC中使用ModelAndView传递数据
Spring MVC中使用ModelAndView传递数据
|
5月前
|
设计模式 前端开发 安全
理解最常用的MVC分层模型及其变种
【6月更文挑战第24天】 本文介绍架构模式如MVC、MVVM和MVP是解决软件结构问题的通用方案。。每种模式有其优缺点,适用场景不同。
376 0
理解最常用的MVC分层模型及其变种
|
5月前
|
JSON 前端开发 Java
【JavaEE进阶】 关于Spring MVC 响应
【JavaEE进阶】 关于Spring MVC 响应
59 3
|
5月前
|
人工智能 自然语言处理 Java
Spring AI是一个开源的多模态AI模型平台
Spring AI是一个开源的多模态AI模型平台
356 2
|
5月前
|
设计模式 前端开发 Java
【Spring MVC】快速学习使用Spring MVC的注解及三层架构
【Spring MVC】快速学习使用Spring MVC的注解及三层架构
79 1
|
5月前
|
前端开发 Dubbo Java
spring面试题_spring mvc面试题_springboot面试题库
spring面试题_spring mvc面试题_springboot面试题库
下一篇
无影云桌面