MVC框架可以把应用清晰明了地分为三个部分:Model层–数据层,View层–视图层,Controller–逻辑层,Model层负责整合数据,View层负责页面渲染,Controller层负责实现业务逻辑。

我在这里简单说一下我对MVC框架中的View层的理解。

View层一般包含两个部分:View类和模版文件,View类并不是必需的,采用View类可以整合代码,因为有时候View层也会有一些复杂的逻辑和数据读取的操作,这些操作最好放在类(或者对象)中实现,如果直接在模版文件中实现,会让模版文件很凌乱,不利于代码复用和后期维护。

对于一个Web应用来说,整个应用的风格和页面布局需要保持一致,那么聪明的小伙伴是否联想到了代码复用?假如这个应用一共有200个页面,如何实现“只需在代码中修改一处,就可以修改所有页面的共用部分?”,这是一个非常重要的功能,要不然页面上每一个小改动都需要重复200次,其中难免出错,维护代价高昂。

代码复用的基本思想是“模块化”,每个模块只负责一小部分功能,整个应用的功能就是这些模块的排列和组合,这个思想运用在View层就可以实现上面提到的问题。

那么如何将“模块化”的思想运用在View层的实现上呢?

首先,需要分析web应用页面渲染的特点。一般的,大部分页面共用一个基本布局(基本布局之外没有web内容),在基本布局里面进行划分,比如划分为上下布局,左右布局等,然后再在划分好的小块中再进行布局划分,以此类推,直到完成一个页面的布局。因为一个Web应用的风格和大体布局是一致的,所以上面划分出来的布局中,一部分布局是可以共用的。每一次划分所产生的块都是“模块”,这些“模块”都可以复用,页面与页面之间共用的块,可以通过调用相同的“模块”来实现,需要修改的时候,只需修改“模块”即可,这样就可以达到“只需在代码中修改一处,就可以修改所有页面的共用部分”。

那么如何划分布局呢?(如何把我脑海中对页面布局的划分告诉Web应用?)

我的两种方案:

1. 在每个模块中实现对它所包含的子模块的调用。这样,只需要“手动”调取出第一个模块,就可以调取出所有它的子模块,从而完成整个页面的渲染。这个方法的缺点是“环环相扣”并且没法快速查看,如果某个模块渲染不正确,只能一级一级地往上追溯。“环环相扣”导致模块与模块之间的关系非常紧密,有悖于“模块化”的思想。

2. 为每一个页面单独设置一个布局的.xml文件,在这个文件中,规定好页面的布局划分,哪个模块包含哪些子模块就一目了然,便于快速定位问题。缺点是.xml文件的解析难度很大,解析.xml文件也非常吃性能,如果页面布局复杂,维护.xml也会非常麻烦。

我比较偏向于第2个方案,第1个方案还有一个非常致命的缺点:页面的渲染过程是逐级展开的,需要在关键节点进行“干预”,使上级模块调取合适的子模块,这也是一个难点,如果需要干预的点太多,就会非常麻烦并且非常凌乱。相比之下,方案2只需要维护.xml文件,只要编写一个完善的解析函数,就可以很好的工作,如果解析.xml文件对性能造成较大影响,可以把解析.xml后所得的布局对象或者数据结构保存在NoSQL数据库中作为缓存(毕竟页面布局不会修改的很频繁),这样可在一定程度上减轻解析.xml文件对性能的影响。

再进一步

有没有发现,上述的第2方案,“为每一个页面单独设置一个布局的.xml文件”会导致众多.xml文件中都会包含大量的重复代码,因为大部分页面的布局有很多位置是相同的或相近似的,所以可以对.xml文件作一些优化,把.xml文件中重复的部分分离出来,单独维护,这样.xml文件的内容就会清爽很多。

如果您觉得阅读本文对您有帮助,欢迎转载本文,但是转载文章之后必须在文章页面明显位置保留此段声明,否则保留追究法律责任的权利。

java mvc view_对Springmvc view层的理解相关推荐

  1. java mvc 导入_Java SpringMVC文件导入和导出

    J示例代码: @ResponseBody @RequestMapping(value = "/fileUpload", method = RequestMethod.POST) p ...

  2. java mvc 导出excel_Java springMVC POI 导出 EXCEL

    思路 : 将需要导出的数据存放在一个List中 创建一个EXCEL表 注意 XSSFWorkbook 只能操作2007以上的版本,XSSFWorkbook 只能操作2003一下的版本,所以需要的时候可 ...

  3. 谈谈我对MVC的View层实现的理解

    谈谈我对MVC的View层实现的理解 MVC框架可以把应用清晰明了地分为三个部分:Model层–数据层,View层–视图层,Controller–逻辑层,Model层负责整合数据,View层负责页面渲 ...

  4. Extjs4 MVC 添加view层

    如果这不是您感兴趣或者需要学习的东西,何必点开呢?人生苦短. 实例中我们通过view层望主界面中添加一个grid, 1.app.js改成如下: app.js 1 Ext.Loader.setConfi ...

  5. Java中dao层、service层、controller层、entity层和view层的概述

    目录 DAO层:(持久层)主要与数据库进行交互 Service层:(业务层 )控制业务 Controler层:(控制层 )控制业务逻辑 Entity层: (实体层 )数据库在项目中的类 View层: ...

  6. java mvc模式工作流程_SpringMVC的简介和工作流程

    一.简介 Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面.Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块.Spri ...

  7. java mvc 实际分层_SpringMVC体系分层模式原理图解

    SpringMVC MVC介绍 MVC 全名是 Model View Controller,是 模型(model)-视图(view)-控制器(controller)的缩写, 是⼀种⽤于设计创建 Web ...

  8. Java学习笔记13-1——SpringMVC

    文章目录 1.什么是MVC 回顾Servlet 2.什么是SpringMVC 概述 中心控制器 SpringMVC执行原理 3.第一个SpringMVC 程序 使用XML配置实现 使用注解实现 4.控 ...

  9. java mvc建包结构_Java SSM框架的配置方法、MVC结构的分析、响应的流程

    今天头一次配置成功一个SSM框架,兴奋之余,还应该从使用的角度,将整个ssm配置的方法,配置的原因,认真的分析一下.在结束了对SSM框架简单的分析之后,就要开始回归基础,全面的认真复习.所以这个文档, ...

最新文章

  1. 前端学习(1891)vue之电商管理系统电商系统之el-table渲染表格
  2. 阿里面试题BIO和NIO数量问题附答案和代码
  3. 前端 IndexDB 操作入门教程
  4. html相对路径之前,HTML之绝对路径与相对路径
  5. okr与项目管理区别?
  6. 《果壳中的C# C# 5.0 权威指南》 (09-26章) - 学习笔记
  7. java.lang.ClassCastException: de.odysseus.el.ExpressionFactoryImpl cannot be cast to javax.el.Expres
  8. java定义类模板_定义模板——函数模板和类模板
  9. cad角度命令怎么输入_软件CAD | 修改工具栏(上)
  10. 利用Vue的计算属性计算平均值总成绩
  11. 数字图像处理----第七章
  12. None、Null与空字符‘‘什么区别
  13. 华为HCIP-WLAN考试总结
  14. android ppt 注释软件,安卓版WPS Office 5.5.2增强PPT悬浮备注框
  15. 220V转5V非隔离2W电源--超低成本
  16. 【CICC原创】面向全域作战态势感知的战场全息地图
  17. Problem of Windows Phone8.1 Jumpstart Demo
  18. 【k8s】volum “istio-token“ 没有挂上
  19. android之 MAT、DDMS 等内存查看工具
  20. 制作mac系统启动U盘

热门文章

  1. 制作 Swift 和 Objective-C Mixed 的 Pod
  2. 从 Flutter 的视频渲染到 App 落地经验
  3. Social regularizations
  4. 授权管理【学习笔记】《卓有成效的管理者》 第二章 掌握自己的时间
  5. 在Server 2003上部署IIS+PHP+MySQL配置清单
  6. Microsoft Web 平台安装程序 (Web PI) Microsoft Web Platform Installer
  7. 关于java.util.LinkedHashMap cannot be cast to ......的解决办法
  8. 云计算之Docker介绍
  9. 通过cookies跳过验证码登陆页面,直接访问网站的其它URL
  10. node 模块化 require expores,简易实现原理。