用MVC模型引导你的WEB设计思路

Web应用架构设计:从MVC模型到站库分离的实战指南 在Web开发领域,MVC(Model-View-Controller)是一种经典的应用程序组织范式,它通过关注点分离实现代码的高内聚与低耦合。其核心原理是将应用逻辑划分为模型(处理数据与业务规则)、视图(负责界面呈现)和控制器(协调用户请求与响应)三个独立部分,从而提升代码的可维护性和可测试性。这种架构模式的技术价值在于为复杂应用提供了清晰的结构,使得团队协作与功能扩展更为高效。在实际工程实践中,MVC常与站库分离原则结合应用,后者通过将Web服务器与数据库服务器物理隔离,显著提升了系统的安全性与性能。站库 阅读详情

习惯于过程式的开发,一直向往着面向对象。无奈半路出家人,没有一点内力基础,看了一大堆面向对象的书也只是看得一头雾水。对于MVC的概念也是偶然了解到的,感觉能和WEB开发结合起来让项目面向对象化。以下是我一点点心得。
先介绍一下MVC的概念:
MVC(Model-View-Controller),即把一个应用的输入、输出、处理流程按照Model、View、Controller的方式进行分离,这样一个应用被分成三个层——模型层、视图层、控制层。
 模型(Model):就是业务流程/状态的处理以及业务规则的制定。即是MVC的主要核心。
 视图(View):代表用户交互界面,也就是Web的HTML界面。
 控制(Controller):可以理解为从用户接收请求, 将模型与视图匹配在一起,共同完成用户的请求。

以下以一个简单的留言板作为分析例子。

1)从上面的概念来看,留言板可以切成三部份。
 模型(M):包含 数据库链接、生成数据集、数据库更新操作。
 视图(V):包含 获取模型的数据集,将数据集内填充到各种显示界面内,如(留言板列表,管理控制页面,添加修改删除界面等一切用户看得到的页面。)
 控制(C):包含 数据库更新的数据校验,将更新完毕后的结果转交给视图进行呈现。

2)三部份已经出来,下面是更进一步的细化。
 模型(M)
  数据链接:数据链接参数、链接失败处理。
  数据操作:生成固定格式的数据集、运行单行SQL、解析固定格式的数据集更新数据库(内容包括有:留言记录,管理员帐号,系统设定)。
  文件操作:将文件内部格式封成数据集,并附带读取写入文件操作。(内容包括有:留言板样式设定、版权设定、搜索引擎关键字设定、留言板标题设定)
 视图(V)
    数据显示:根据要求授权给控制器[C]向模型[M]请求数据集,然后根据数据集显示出界面。
    操作结果显示:根据控制返回的数据资料决定显示的提示资料
    具体资料包括有:
      留言添加页:判断留言者是否管理员、判断本次留言是回复还是新建留言。
      留言管理页:批量删除留言、查询留言、管理员帐号管理、系统设定等。
      留言显示页:判断留言是否为管理员专用、判断本留言是否为管理员发布、是否允许回复、是否显示留言者的敏感资料、留言是否需要审核后再显示。

 控制(C)
  数据/文件操作:接收操作资料,校验数据是否符合条件,引用模型的生成数据集类生成指定数据集,然后交给相应的模型操作方法操作,并获取操作结果以预定好的格式转交给视图处理

3)系统基本上细化完毕,下一步就是将以上分析出来的东西封装成Class
  模型(M):
    数据库链接和数据操作可以封成一个Class。
    数据库数据集的结构,可以引用Dictionary控件与数组完成。其间操作也可以封成一个Class具体可以仿造ASP.net中Dataset对象的部份机构。
    文件操作部份封装成一个Class
    文件结构定义可以封成一个Class以方便控制直接引用,然后转交给文件操作Class进行相应的操作。
  视图(V):
    视图部可均是以文件模式出现,也可以将部份代码封装后引用。也可以引用现有的模板类实现代码分离等。
  控制(C):
    数据校验:SQL注入防御处理、日文字符替换处理、特定常用校验正则式,这个是控制器常用的函数,可以封成Class也可以以函数型式存在独立文件,使用时直接引用。
    数据/文件更新操作:由于直接操作,可以避免使用Class,而是以文件模式出现,每个文件处理模型(M)中的某个类。并完成控制(C)的工作。
    视图[V]模型[C]链接器:接收视图[V]要求数据集的请求,将请求转换成模型[M]合适的SQL句,然后交给模型[M]数据集成生器生成数据集,然后返回给视图[V],这个处理比较麻烦,如果没必要作得太严谨的话可以直接使用字段名,并在视图[V]以SQL标准的条件句进向模型[M]请求数据。

 疑:
  视图[V]模型[C]链接器,对这个的设定我还是有点迟疑的。因为在MVC中,V对M的请求中是不需要C的掺和的,但是,这个链接器的操作确实很符合C的概念,所以这里我把它放在了控制器[C]里。或许他可以放至在视图[V]内。毕竟这个是视图[V]的事。这个就看每个人对MVC的理解了。

以上基本完成了留言板的结构分析与类的抽象,有不少的地方比较繁琐,甚至是啰嗦,一个留言板其实是没必要这样,不过,这个例子里作出来的不少Class可以直接使用在其它更大的项目中去,比如控制器[C]中的数据集请求转换器,校验部份、模型[M]中的数据库链接等,之所以遵循MVC模型进行编程不但是为了让程序设计更灵活,最重要一点是可以很快将项目拆开成一小块一小块,然后又将这些小块再折成更小的块,一直折到单个类的某个方法某个属性,等你完成这些小块代码后,那系统也就完成了。
 

基于stm32的数控恒压恒流电源设计方案 基于stm32的数控恒压恒流电源设计方案 基于stm32的数控恒压恒流电源设计方案 不包实物,可自己动手制作,可代做 本设计采用220V市电输入工频变压器,将220V交流电压降为24V交流电压,经过全桥整流加电容滤波,输出约32V直流电压.可调输出电压方案采用线性稳压调整器方案,即运放处于比较调整状态,运放输出驱动P型MOS管,电压输出端由电阻分压反馈至运放同相输入端,运放反相输入端由STM32单片机控制TLC5615数模转换器输入模拟电压,根据运放构成比较器原理,运放的同相端和反相端始终趋向于电压相等的特 阅读详情

相关推荐

微信小程序 实现拼图功能

微信小程序 实现碎片拼图

weixin_45689786的博客 2250

[ASP设计]用MVC模型引导你的WEB设计思路-第二版

习惯于过程式的开发,一直向往着面向对象。无奈半路出家人,没有一点内力基础,看了一大堆面向对象的书也只是看得一头雾水。对于MVC的概念也是偶然了解到的,感觉能和WEB开发结合起来让项目面向对象化。以下是我一点点心得。先介绍一下MVC的概念:MVC(Model-View-Controller),即把一个应用的输入、输出、处理流程按照Model、View、Controller的方式进行分离,这样一个应用

轻灵自由的珍珠 6533

Frigate进阶玩法:如何用MQTT和Python脚本扩展你的自定义目标检测算法

本文详细介绍了如何通过MQTT和Python脚本扩展Frigate的自定义目标检测算法,无需修改源码即可实现特殊场景(如工业设备异常、农业病虫害识别)的高效检测。文章涵盖Frigate配置、外部检测服务构建、高级集成技巧及性能优化实践,帮助开发者灵活扩展智能监控能力。

weixin_42662293的博客 350

javaweb----DAO模型设计

首先实体类Person package com.henu.dao; import java.io.Serializable; public class Person implements Serializable{ private Integer id; private String name; private Integer sex; private Intege...

乔治大哥的博客 694

大疆航线文件解析指南:5分钟搞懂KMZ里的template.kml和waylines.wpml区别

本文深入解析大疆无人机航线文件KMZ中template.kml与waylines.wpml的核心区别。template.kml是定义任务框架和全局参数的可编辑模板,而waylines.wpml是包含精确执行指令的最终文件。理解两者差异对于高效规划航线、批量生成任务及进行二次开发至关重要。

sun99的博客 866

sap销售发货的流程_SAP销售订单发货后如何实现发票的自动创建?

问SAP销售订单发货后如何实现发票的自动创建?答业务场景有些快消零售企业,SAP系统单据量大,单据金额少,一般在销售发货后即可确认收入。此时无需人工在系统内操作VF01或者VF04进行开票操作,可将该操作设置成后台作业进行自动批量开票,具体操作如下:1、定义任务:VF06输入完以上信息,点击保存进入以下界面:说明:当前日期的意思是“开票的日期”等于“系统电脑中的当前日期”当前日期+/-...

weixin_42358409的博客 3364

Django Web项目启动以及Model层设计基础

接下来使用Django框架自带的命令,创建源码目录 接下来,我们要拆分settings用来适应不同的环境 这里的数据库配置的是本地的sqlite3, 如果需要配置mysql等其他数据库,需要重新配置。 接下来,我们要配置Git环境 之后我们要把当前的所有工作,提交到Git仓库 当然用IDE也能完成Git提交的工作。 一般而言,对于正式的开发工作,数据表由PM和开发共同设计完成,或者开发之间...

wwxy1995的博客 358

AI脸部替换Roop-Unleashed,一键整合包教程

Roop-Unleashed是一个无须训练模型的深度伪造工具,专为图像和视频的面部替换而设计。它通过简洁的浏览器界面提供用户友好且跨平台的使用体验,无论用户是业余爱好者还是专业人士,都能快速上手。它无需复杂的设置即可实现高效的处理和转换,使图像和视频的编辑变得更加轻松和便捷。

m0_72580657的博客 1万+

Django让web开发更简单(三):设计模型

Model Model,即模型,是跟数据库打交道的模块,用于数据处理,如增删改查。 设计模型 设计模型,即设计表,创建一个存储数据的表,定义它的字段类型。如: from django.db import models class Reporter(models.Model): full_name = models.CharField(max_length=70) def __str__(self): return self.full_name # Reporter.ob

weixin_43431593的博客 452

第7篇-SAP MM模块-JIT应用实战解析,从计划协议到JIT供应的关键配置与流程

本文深入解析SAP MM模块中的JIT(Just In Time)供应模式,从计划协议到JIT供应的关键配置与流程。通过动态计划行管理、需求聚合与分解等核心功能,实现精确数量、时间和地点的物料供应。文章详细介绍了主数据准备、计划协议配置、MRP参数精调及EDI集成方案,并提供了实施中的典型问题与解决方案,助力企业优化供应链管理。

weixin_30363509的博客 948

uniapp - H5网页uni.getLocation报错getLocation:fail Geolocation permission denied.Get ipLocation failed.

uni.getLocation getLocation:fail Geolocation permission denied.Get ipLocation failed.,uni.getLocation定位失败,uni-app getLocation()无法获取定位,一直fail()uniapp移动端h5网页,uniApp微信内置浏览器定位失败,如何解决这个问题,uniapp h5 uni.getLocation获取位置失败怎么办,UNI-APP获取当前位置,uni.getLocation定位失败,unia

🏆 前端领域优质创作者 4242

ASP 一些常用方法 思路 方法小汇总

 ##########################常用汇总#######################################1 过滤:: mString = replace(mString, ">", ">")    mString = replace(mString, "    mString = Replace(mString, CHR(32), " ")   

光辉岁月 767

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

[转]用MVC模型引导你的WEB设计思路

在轻灵自由的珍珠BLOG看到的,觉得蛮不错,分享下。  习惯于过程式的开发,一直向往着面向对象。无奈半路出家人,没有一点内力基础,看了一大堆面向对象的书也只是看得一头雾水。对于MVC的概念也是偶然了解到的,感觉能和WEB开发结合起来让项目面向对象化。以下是我一点点心得。先介绍一下MVC的概念:MVC(Model-View-Controller),即把一个应用的输入、输出、处理流程按照Mo...

weixin_30644369的博客 83

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

Java MVC设计模式

前言  MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,是一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。是一个有用的工具箱,它有很多好处,但也有一些缺点。 准备  在讲MVC设计模式之前,我们先简单...

qq_33891573的博客 688

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

框架学习boostrap MVC beego django laravel

Goal1、学习Python php 2、了解boostrap MVC beego django laravelWhat I getMVCMVC是一种框架,全称Model-View-Controller 1. Model(模型)——应用程序的处理:应用程序的核心,用来处理应用程序数据逻辑。 模型对象通常用来存取数据库数据。模型表示企业数据和业务规则。在MVC的三个部件中,模型拥有最多的处理

qq_24896641的博客 3258

大数据毕业设计-基于springboot+大数据的高校网络舆情监控引导系统设计和实现,基于大数据的高校网络舆情监控数据数据分析引导与可视化平台设计和实现(源码+LW+部署文档+远程调试+代码讲解等)

基于springboot+大数据的高校网络舆情监控引导系统设计和实现,基于大数据的高校网络舆情监控数据数据分析引导与可视化平台设计和实现

项目帮 1435

大数据毕业设计-基于springboot+大数据的高校网络舆情监控引导系统设计和实现,基于大数据的高校网络舆情监控数据数据分析引导与可视化平台设计和实现推荐源码+LW+部署文档+远程调试+代码讲解等)

大数据毕业设计-基于springboot+大数据的高校网络舆情监控引导系统设计和实现,基于大数据的高校网络舆情监控数据数据分析引导与可视化平台设计和实现推荐源码+LW+部署文档+远程调试+代码讲解等)

项目帮 966

what is MVC

MVC(Model-View-Controller),即把一个应用的输入、输出、处理流程按照Model、View、Controller的方式进行分离,这样一个应用被分成三个层——模型层、视图层、控制层。 模型(Model):就是业务流程/状态的处理以及业务规则的制定。即是MVC的主要核心。 视图(View):代表用户交互界面,也就是Web的HTML界面。 控制(Controller):可以理解为从...

编程开发资料库 137

基于Springboot和大数据的高校网络舆情监控引导系统的的设计与实现

B/S构造(Browser/Server,浏览器/效劳器模式),其是一种分布式的计算机网络系统,用户通过浏览器向上一级的网站程序传递相关的参数和请求,然后效劳器上的程序再将这些请求和参数进展处理,最后将结果通过反响回用户浏览器反映出来。Web程序设计技术是一项用于网页制造方面的专业技术,主要实现了网页的动态交互功能,通过此项技术语言(如java、CGI、ASP等)所设计的相关网页可以对用户所发出的及时操作以及需求进展相应的相应,从而到达实现即时动态交互的目的。数据库:mysql5.7(一定要5.7版本)

Goyahariko的博客 835

基于Golang框架Gin开发的MVC轮子框架:GinLaravel

GinLaravel项目开源地址:https://github.com/fyonecon/ginlaravel 基于GO语言框架Gin开发,项目结构和项目哲学参考Laravel。MVC开发模式、必要的拦截器、扩展函数、灵活部署等特点。 支持:Gin的模版输出、Gin的api输出。 - - 获取源代码: git clone https://github.com/fyonecon/ginlaravel.git cd ginlaravel 使用 govendor 安装依赖包: go get -u

User XXX Blog 4099
上一篇: ASP.Net中控件的EnableViewState属性
下一篇: Session与Cookies
LEOlws
博客等级 码龄21年 9粉丝 30原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值