MVC框架规范
MVC框架开发规范
文档控制页
1.1 环境规范
1.2 设置规范
强制规范
1.1. 目录结构
\src
logback.xml 日志配置文件
struts.properties struts全局属性文件
struts.xml struts配置文件
config spring配置文件目录
|--applicationContext.xml Spring公共配置文件
|--applicationContext-datasource.xml 数据库连接配置文件
|--applicationContext-security.xml 安全配置文件
|--applicationContext-service.xml 业务层数据访问配置文件
|--jdbc.properties 具体的数据库连接信息文件
resources struts资源文件存放目录
|--ApplicationResources_zh_CN.properties struts消息提示配置文件
com.srt.vas.项目标识某项目开发源代码root目录(与该项目有关的代码都放在此下)|--security 登录及权限控制
|--action action类(登录、退出等)
|--common 通用类(全局常量、变量定义等)
|--bean 通用bean目录
|--exception 通用异常处理类
|--dao dao类(用于集中定义HQL,封装DAO细节,在Service间解耦并共享DAO操作)
|-impl dao实现类
|--interceptor 拦截器类
|--model hibernate导出的数据表的模型类(集中在1个目录下便于配置文件中进行配置)
|--service业务逻辑接口,原则上1个功能模块对应1个类
|-impl 业务实现类
|--模块标识某模块的源代码root目录(如果功能模块较多或业务比较复杂的,可以按模块分package,在package下再分action、service等)
\WebRoot
common 全局文件头等
|--ewebeditor 富文本编辑器组件
|--My97DatePicker 日期选择JS组件
|--403.jsp 用户没有权限时的定位页面
|--404.jsp 找不到请求页面时的定位页面
|--500.jsp 错误提示页面
|--global.jsp 全局变量定义
|--meta.jsp 仅包含基本信息的meta(不包含任何css、js)
|--meta0.jsp 包含基本信息的meta(无form提交、业务功能的页面引入)
|--meta1.jsp 包含form验证、日期选择等相关css和js的meta(通常都需引入)
|--metaTree.jsp 包含树型相关css和js的meta(需要树型结构的需引入)
|--relogin.jsp 用户session信息实效时的定位页面
|--taglibs.jsp 标签引用定义文件
css 样式文件目录
images 图片文件目录
js JavaScript文件目录
pages JSP文件root目录(按功能模块建立子文件夹)
|--…模块1的文件目录
|--…模块2的文件目录
…
|--…模块n的文件目录
WEB-INF
|--web.xml 应用运行配置文件
|--lib 包文件目录分层建模原则:
开发指南
Svn插件安装
详见<SVN应用—安装myclipse插件.doc>
单元测试方法:
public static void main(String[] args) {
// TODO Auto-generated method stub
String[] config = { "config/applicationContext.xml",
"config/applicationContext-dao.xml",
"config/applicationContext-datasource.xml",
"config/applicationContext-service.xml" };
ApplicationContext ac = new
ClassPathXmlApplicationContext(config);
LoginLogManager loginLogManager=(LoginLogManager)
ac.getBean("loginLogManager");
loginLogManager.saveNormalLogoutLog("11222");
}
如果是测试dao层,可以不用” config/applicationContext-service.xml”配置文件主键生成规则:
1.一个表对应一个sequence
2.使用hibernate的主键生成机制
<generator class="sequence">
<param name="sequence">SEQ_GAMOA_ENTITY_ATTA_TMP</param> </generator>
Javadoc 中文乱码解决
Dao层的开发和使用
Dao层里保存Dao类,Dao类用于对数据库的访问处理,所有的sql和hql语句都应该在这一层里完成,不要传递到service层去处理.
Dao层中编写的方法应该尽量与数据操作有关,而与业务逻辑无关.业务逻辑的处理到Service层来完成.
实现一个DAO类:。
SpringMVC框架搭建流程(完整详细版)
SpringMVC框架搭建流程(完整详细版)SpringMVC框架搭建流程开发过程1)配置DispatcherServlet前端控制器2)开发处理具体业务逻辑的Handler(@Controller、 @RequestMapping)3) xml配置⽂件配置controller扫描,配置springmvc三⼤件4)将xml⽂件路径告诉springmvc(DispatcherServlet)详细流程:创建⽬录新建maven项⽬,注意选择webapp⾻架。
创建成功之后会发现没有src等⽬录,这些需要我们⼿动创建:在src下⾯新建main,main下⾯新建java⽬录,选择java⽬录,右键,在main下⾯继续新建resource⽬录,选择resource⽬录,右键,pom.xmlpom.xml<?xml version="1.0" encoding="UTF-8"?><project xmlns="/POM/4.0.0"xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/POM/4.0.0 /xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion><groupId></groupId><artifactId>springmvc-demo</artifactId><version>1.0-SNAPSHOT</version><packaging>war</packaging><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><piler.source>11</piler.source><piler.target>11</piler.target></properties><dependencies><!--引⼊spring webmvc的依赖--><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>5.1.12.RELEASE</version></dependency></dependencies><build><plugins><plugin><groupId>org.apache.tomcat.maven</groupId><artifactId>tomcat7-maven-plugin</artifactId><version>2.2</version><configuration><port>8080</port><path>/</path></configuration></plugin></plugins></build></project>注意Tomcat7插件是⽤来运⾏项⽬的,右侧运⾏:springmvc相关配置main⽂件夹下⾯新建webapp⽂件夹,webapp下⾯新建WEB-INF,下⾯新建web.xml<!DOCTYPE web-app PUBLIC"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN""/dtd/web-app_2_3.dtd" ><web-app><display-name>Archetype Created Web Application</display-name><servlet><servlet-name>springmvc</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><init-param><param-name>contextConfigLocation</param-name><param-value>classpath:springmvc.xml</param-value></init-param></servlet><servlet-mapping><servlet-name>springmvc</servlet-name><!--⽅式⼀:带后缀,⽐如*.action *.do *.aaa该种⽅式⽐较精确、⽅便,在以前和现在企业中都有很⼤的使⽤⽐例⽅式⼆:/ 不会拦截 .jsp,但是会拦截.html等静态资源(静态资源:除了servlet和jsp之外的js、css、png等)为什么配置为/ 会拦截静态资源因为tomcat容器中有⼀个web.xml(⽗),你的项⽬中也有⼀个web.xml(⼦),是⼀个继承关系⽗web.xml中有⼀个DefaultServlet, url-pattern 是⼀个 /此时我们⾃⼰的web.xml中也配置了⼀个 / ,覆写了⽗web.xml的配置为什么不拦截.jsp呢?因为⽗web.xml中有⼀个JspServlet,这个servlet拦截.jsp⽂件,⽽我们并没有覆写这个配置,所以springmvc此时不拦截jsp,jsp的处理交给了tomcat如何解决/拦截静态资源这件事?⽅式三:/* 拦截所有,包括.jsp--><!--拦截匹配规则的url请求,进⼊springmvc框架处理--><url-pattern>/</url-pattern></servlet-mapping></web-app>⾥⾯配置了springmvc相关的配置,引⼊了springmvc.xml:在resource⽬录下新建springmvc.xml:<?xml version="1.0" encoding="UTF-8"?><beans xmlns="/schema/beans"xmlns:xsi="/2001/XMLSchema-instance"xmlns:context="/schema/context"xmlns:mvc="/schema/mvc"xsi:schemaLocation="/schema/beanshttps:///schema/beans/spring-beans.xsd/schema/contexthttps:///schema/context/spring-context.xsd/schema/mvchttps:///schema/mvc/spring-mvc.xsd"><!--开启controller扫描--><context:component-scan base-package=".controller"/><!--配置springmvc的视图解析器--><bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"><property name="prefix" value="/WEB-INF/jsp/"/><property name="suffix" value=".jsp"/></bean><!--⾃动注册最合适的处理器映射器,处理器适配器(调⽤handler⽅法)--><mvc:annotation-driven/></beans>在java⽬录下新建包.controller,下⾯新建DemoController:package .controller;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.servlet.ModelAndView;import java.util.Date;/*** @author lyj* @Title: DemoController* @ProjectName springmvc-demo* @Description: TODO* @date 2020/6/9 21:21*/@Controller@RequestMapping("/demo")public class DemoController {/*** http://localhost:8080/demo/handle01*/@RequestMapping("/handle01")public ModelAndView handle01(){Date date=new Date();ModelAndView modelAndView=new ModelAndView();modelAndView.addObject("date",date);modelAndView.setViewName("success");return modelAndView;}}在WEB-INF下⾯新建jsp⽂件夹,下⾯新建success.jsp:<%@ page language="java" isELIgnored="false" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <html lang="en"><head><meta charset="UTF-8"><title>Title</title></head><body>当前时间 ${date}</body></html>完毕后整个项⽬结构如下:测试:浏览器访问:。
MVC架构与其他常见架构的比较与选择
MVC架构与其他常见架构的比较与选择MVC(Model-View-Controller)是一种常见的软件架构模式,它将一个应用程序分为三个核心部分:Model(模型)、View(视图)和Controller(控制器)。
MVC架构的设计目的是实现数据、表示和逻辑的分离,使开发更加模块化和易于维护。
除了MVC,还有许多其他常见的软件架构模式,例如MVP(Model-View-Presenter)、MVVM(Model-View-ViewModel)、三层架构、领域驱动设计(DDD)等。
在选择合适的架构模式时,需要根据具体的项目需求和团队能力来进行评估和选择。
首先,我们来看一下MVC架构和其他常见架构的比较:1. MVC vs. MVP:MVP模式是MVC的一种变体,它引入了Presenter(表示器)来代替Controller。
在MVP中,View与Model之间不直接通信,而是由Presenter充当中间人来处理交互。
这样可以进一步解耦视图和模型层,方便进行单元测试和维护。
MVP模式适用于需要更加灵活的界面逻辑处理的项目。
2. MVC vs. MVVM:MVVM模式是一种在前端开发中比较流行的架构模式,它引入了ViewModel(视图模型)来处理视图的数据绑定和逻辑。
ViewModel像是View和Model之间的粘合剂,负责管理视图状态和数据变化。
MVVM 模式适用于需要大量数据绑定和界面交互的项目,能够有效地简化前端开发流程。
3. MVC vs.三层架构:三层架构是一种将应用程序分为表示层、业务逻辑层和数据访问层的架构模式。
每个层级之间有清晰的边界和职责划分,可以更好地实现代码重用和可维护性。
三层架构适用于需要复杂业务逻辑和数据库操作的项目,但相对于MVC来说,可能会使项目结构更加复杂。
4. MVC vs. DDD:领域驱动设计(DDD)是一种将业务领域模型和软件开发过程直接关联起来的软件开发方法。
mvc框架的原理
mvc框架的原理MVC框架的原理MVC(Model-View-Controller)是一种软件设计模式,被广泛应用于Web开发中。
它的核心原理是将应用程序分为三个主要部分:模型(Model)、视图(View)和控制器(Controller)。
这种分离的架构使得代码的重用、维护和扩展更加容易。
1. 模型(Model)模型是MVC框架中的数据层,负责处理应用程序的数据逻辑。
它包含了数据的定义、存储和访问方法。
模型能够独立于视图和控制器存在,在不同的视图和控制器之间共享数据。
模型的设计要求高内聚、低耦合,以便于模块的独立开发和测试。
2. 视图(View)视图是MVC框架中的用户界面层,负责展示模型中的数据给用户。
它通常是由HTML、CSS和JavaScript组成的,用于呈现数据和接收用户的输入。
视图应该只负责数据的展示,而不涉及数据的处理逻辑。
通过与控制器的交互,视图能够获取模型中的数据,并将其呈现给用户。
3. 控制器(Controller)控制器是MVC框架中的逻辑层,负责接收用户的输入并处理相应的业务逻辑。
它从视图中接收用户的请求,然后根据请求的类型调用相应的模型方法进行数据处理。
处理完数据后,控制器将结果传递给视图进行显示。
控制器起到了模型和视图之间的桥梁作用,协调两者之间的交互。
MVC框架的工作流程如下:1. 用户通过视图与应用程序进行交互,发送请求。
2. 视图将请求传递给控制器。
3. 控制器接收到请求后,根据请求的类型调用相应的模型方法进行数据处理。
4. 模型处理完数据后,将结果返回给控制器。
5. 控制器将结果传递给视图。
6. 视图根据控制器传递的结果进行数据展示给用户。
MVC框架的优点有:1. 分离关注点:MVC框架将应用程序的不同功能分离到不同的模块中,使得代码更加易于理解和维护。
开发人员可以专注于特定的领域,提高开发效率。
2. 可扩展性:由于MVC框架的松耦合设计,可以方便地对模型、视图和控制器进行扩展和替换,以满足不同的需求。
mvc,mvp.mvvm框架模式的区别和联系(源自阮一峰大佬微博)
一、MVCMVC模式的意思是,软件可以分成三个部分。
▪视图(View):用户界面。
▪控制器(Controller):业务逻辑▪模型(Model):数据保存各部分之间的通信方式如下。
1.View 传送指令到 Controller2.Controller 完成业务逻辑后,要求 Model 改变状态3.Model 将新的数据发送到 View,用户得到反馈所有通信都是单向的。
二、互动模式接受用户指令时,MVC 可以分成两种方式。
一种是通过View 接受指令,传递给Controller。
另一种是直接通过controller接受指令。
三、实例:Backbone1. 用户可以向View 发送指令(DOM 事件),再由View 直接要求Model 改变状态。
2. 用户也可以直接向Controller 发送指令(改变URL 触发hashChange 事件),再由Controller 发送给View。
3. Controller 非常薄,只起到路由的作用,而View 非常厚,业务逻辑都部署在View。
所以,Backbone 索性取消了Controller,只保留一个Router(路由器)。
四、MVPMVP 模式将Controller 改名为Presenter,同时改变了通信方向。
1. 各部分之间的通信,都是双向的。
2. View 与Model 不发生联系,都通过Presenter 传递。
3. View 非常薄,不部署任何业务逻辑,称为"被动视图"(Passive View),即没有任何主动性,而Presenter非常厚,所有逻辑都部署在那里。
五、MVVMMVVM 模式将Presenter 改名为ViewModel,基本上与MVP 模式完全一致。
唯一的区别是,它采用双向绑定(data-binding):View的变动,自动反映在ViewModel,反之亦然。
SpringMVC体系结构和处理请求控制器
SpringMVC体系结构和处理请求控制器MVC设计模式 通常的Web项⽬,架构模式基本分层 数据库访问接⼝:DAO层 处理业务逻辑:Service层 数据实体:POJO 负责前端请求的接受处理:Servlet 负责前端页⾯展⽰:JSP MVC设计模式:它是软件⼯程中的⼀种软件架构模式。
它强制性地使软件系统的输⼊、处理和输出分开。
把软件系统分为三个基本部分:模型(Model)、视图(View)、控制器(Controller) 视图(View):负责格式化数据并把他们呈现给⽤户,包括数据展⽰、⽤户交互、数据验证、界⾯设计等功能。
对应组件:JSP或者HTML⽂件 控制器(Controller):负责接收并转发请求,对进⾏处理后指派视图并将响应结果发送给客户端。
对应组件Servlet 模型(Model):模型对象拥有最多的处理任务,是应⽤程序的主体部分,负责数据逻辑(业务规则)的处理和实现数据操作。
对应组件:JavaBean(处理业务逻辑Service层,数据库操作相关的DAO层,贯穿各层之间的数据模型,数据实体POJO) MVC的两种模式 (1)JSP Model1 业务流程较为简单时,可以把控制器的功能交给视图实现。
故Model1模式只有视图和模型,没有控制器(JSP+JavaBean) 浏览器 - 请求 - JSP - JavaBean - 数据库 - JavaBean - JSP -响应 - 浏览器 (2) JSP Model2 相⽐JSPModel1,业务流程复杂时,就需要把业务流程控制交给控制器来实现。
即(JSP+Servlet+JavaBean) 浏览器 - 请求 - Servlet - JavaBean- JSP - 数据库 - JavaBean - JSP -Servlet -响应 - 浏览器 MVC处理过程 MVC的整体结构,对于MVC三个部分(模型、视图、控制器)功能职责分别进⾏了相应的阐述 (1)⾸先视图提供系统与⽤户交互的界⾯,并发送⽤户输⼊给控制器 (2)控制器接收⽤户的请求,并决定应该调⽤哪个模型来进⾏处理 (3)模型根据⽤户请求进⾏相应的业务逻辑处理,并返回处理结果(数据) (4)控制器根据返回的处理结果,调⽤相应的视图格式化模型返回的数据,并通过视图呈现给⽤户结果 MVC优缺点1. 优点1. 多视图共享⼀个模型,⼤⼤提⾼代码的可重⽤性2. MVC三个模块相互独⽴,松耦合架构3. 控制器提⾼了应⽤程序的灵活性和可配置性4. 有利于软件⼯程化管理 通过MVC的设计模式最终可以打造出⼀个松耦合+⾼重⽤性+⾼可适⽤性的架构 2.缺点1. 原理复杂2. 增加了系统结构和实现的复杂性3. 视图对模型数据的低效率访问 MVC来说:并不适合⼩型甚⾄中型规模的项⽬,花费⼤量时间将MVC应⽤到规模并不是很⼤的应⽤程序通常得不偿失Spring MVC介绍及其环境搭建 Spring MVC框架介绍 Spring MVC是Spring框架中⽤于Web应⽤开发的⼀个模块,是Spring提供的⼀个基于MVC设计式的优秀Web开发框架,本质上相当于Servlet。
SpringMVC目录结构配置
SpringMVC目录结构配置SpringMVC是一种常见的Java Web框架,它遵循MVC(Model-View-Controller)设计模式,用于构建灵活可扩展的Web应用程序。
SpringMVC的目录结构对于项目的开发和维护非常重要,下面会详细介绍SpringMVC的标准目录结构以及配置方式。
1.标准目录结构1.1 src/main/java:主要用于存放Java源代码。
1.2 src/main/resources:主要用于存放配置文件和资源文件。
1.3 src/main/webapp:主要用于存放Web应用的静态资源。
1.4 src/test/java:主要用于存放测试用例的Java源代码。
1.5 src/test/resources:主要用于存放测试用例的配置文件和资源文件。
2.详细解析2.1 src/main/java目录src/main/java目录是存放Java源代码的默认目录,它包括以下几个子目录:- config:用于存放Spring配置类,如配置数据库连接、配置事务管理等。
- interceptor:用于存放SpringMVC的拦截器。
- model:用于存放数据模型相关的实体类。
- util:用于存放工具类。
- web:用于存放SpringMVC的控制器。
2.2 src/main/resources目录src/main/resources目录是存放配置文件和资源文件的默认目录,它包括以下几个子目录:- static:用于存放静态资源文件,如CSS、JavaScript、图片等。
- templates:用于存放模板文件,如HTML、Thymeleaf模板等。
- application.properties:存放项目的配置信息,如数据库配置、端口配置等。
- logback.xml:存放日志配置,如日志级别、输出路径等。
- mapper:存放MyBatis的Mapper.xml文件。
MVC框架简介
MVC框架简介
MVC 是⼀种使⽤ MVC(Model View Controller 模型-视图-控制器)设计创建 Web 应⽤程序的模式。
其中M代表model(模型)是应⽤程序中⽤于处理应⽤程序数据逻辑的部分。
通常模型对象负责在数据库中存取数据。
V代表view(视图)是应⽤程序中处理数据显⽰的部分。
通常视图是依据模型数据创建的。
C代表Controller(控制器)是应⽤程序中处理⽤户交互的部分。
通常控制器负责从视图读取数据,控制⽤户输⼊,并向模型发送数据。
在⽬前⽐较流⾏的两个主要框架有javaBean+servlet+jsp和SSH框架:
其中JavaBean主要负责的就是模型层,主要⽤来存储数据,servlet就是控制器,负责业务的处理。
⽽jsp就是负责处理数据显⽰的部分。
SSH中mvc的框架更为明显,struts就是view主要⽤来处理显⽰数据,⽽hibernate是持久层,主要负责数据的存储和查询,spring是Controller主要负责处理和控制与⽤户交互的部分。
使⽤mvc的优点有:(1)耦合性降低,视图层和业务层分离,这样就允许更改视图层代码⽽不⽤重新编译模型和控制器代码,同样,⼀个应⽤的业务流程或者业务规则的改变只需要改动MVC的模型层即可。
因为模型与控制器和视图相分离,所以很容易改变应⽤程序的数据层和业务规则。
(2)重⽤性⾼:有些时候我们在处理数据存储的时候,存储数据的代码有时候是可以重⽤的,这样就⼤⼤减少了代码的编写量。
(3)便于维护:有时候我们会修改⼀些系统的功能,分离视图层和业务逻辑层也使得WEB应⽤更易于维护和修改。
flask前后端分离mvc项目结构
flask前后端分离mvc项目结构Flask是一个轻量级的Python Web框架,提供了简单易用的方式来构建Web应用程序。
在Flask中,前后端分离的MVC项目结构是一种常见的开发模式。
本文将介绍如何使用Flask搭建前后端分离的MVC项目结构。
一、前后端分离的概念前后端分离是指将Web应用程序的前端(即用户界面)与后端(即数据处理和业务逻辑)分离开发。
前端主要负责展示数据和与用户的交互,后端主要负责处理数据和业务逻辑。
前后端分离的好处是可以提高开发效率和灵活性,使前后端开发人员可以并行开发,减少耦合性。
二、MVC架构模式MVC(Model-View-Controller)是一种常见的软件架构模式,用于组织代码和实现业务逻辑。
在MVC模式中,应用程序被分为三个部分:模型(Model)、视图(View)和控制器(Controller)。
1. 模型(Model):负责处理数据和业务逻辑,与数据库进行交互。
在Flask中,可以使用SQLAlchemy等ORM工具来简化数据库操作。
2. 视图(View):负责展示数据和与用户的交互。
在前后端分离的项目中,视图主要负责返回JSON或者HTML等数据给前端。
3. 控制器(Controller):负责接收用户的请求,处理请求并调用模型和视图来完成相应的操作。
在Flask中,控制器可以使用Flask的路由系统来定义URL和函数之间的映射关系。
三、前后端分离的MVC项目结构在Flask中,可以按照以下的项目结构来组织前后端分离的MVC项目:1. 创建一个根目录,用于存放整个项目,例如名为"myproject"。
2. 在根目录下创建一个"backend"目录,用于存放后端代码。
在"backend"目录下创建以下文件和目录:- "app.py":Flask应用程序的入口文件,用于创建Flask应用和定义路由。
编程中的MVC架构及其应用
编程中的MVC架构及其应用MVC(Model-View-Controller)是一种软件架构模式,广泛应用于Web开发中。
MVC架构将Web应用程序分为三个组件:模型(Model)、视图(View)和控制器(Controller),以实现Web应用程序的分层和解耦。
首先,让我们了解一下MVC的组成部分和基本原则。
模型(Model)是应用程序中的数据存储和处理层,负责与应用程序的数据库进行交互。
视图(View)是应用程序的用户界面层,负责呈现模型数据并接收用户的输入。
控制器(Controller)是应用程序的业务逻辑层,负责根据用户的输入决定操作模型并控制视图进行更新。
MVC架构的核心思想是分离关注点(Separation of Concerns)。
模型、视图和控制器各自管理自己的逻辑,彼此之间的交互尽可能少。
这种分离模式有助于提高代码的可读性、可维护性和可扩展性。
接下来,我们来探讨MVC架构的应用。
在Web开发中,通常使用MVC架构来开发服务器端应用程序。
下面是一个简单的MVC应用程序的示例:首先,定义一个数据模型(Model)来存储所需的数据:class Person:def __init__(self, name, age): = nameself.age = age然后,定义一个视图(View)来呈现模型中的数据:class PersonView:def display(self, person):print('Name:', )print('Age:', person.age)最后,定义一个控制器(Controller)来协调模型和视图:class PersonController:def __init__(self, person):self.person = personself.view = PersonView()def update(self, name, age): = nameself.person.age = agedef display(self):self.view.display(self.person)使用MVC架构时,我们将Web应用程序的逻辑分层。
如何使用PHP开发自己的MVC框架
如何使用PHP开发自己的MVC框架如何使用PHP开发自己的MVC框架MVC模式(Model-View-Controller)是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model)、视图(View)和控制器(Controller)。
下面是店铺为大家带来的如何使用PHP开发自己的MVC框架的知识,欢迎阅读。
一、什么是MVCMVC模式(Model-View-Controller)是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model)、视图(View)和控制器(Controller)。
MVC模式的目的是实现一种动态的程序设计,使后续对程序的修改和扩展简化,并且使程序某一部分的重复利用成为可能。
除此之外,此模式通过对复杂度的简化,使程序结构更加直观。
软件系统通过对自身基本部份分离的同时也赋予了各个基本部分应有的功能。
专业人员可以通过自身的专长分组:(控制器Controller)- 负责转发请求,对请求进行处理。
(视图View)–界面设计人员进行图形界面设计。
(模型Model)–程序员编写程序应有的功能(实现算法等等)、数据库专家进行数据管理和数据库设计(可以实现具体的功能)。
模型(Model)“数据模型”(Model)用于封装与应用程序的业务逻辑相关的数据以及对数据的处理方法。
“模型”有对数据直接访问的权力,例如对数据库的访问。
“模型”不依赖“视图”和“控制器”,也就是说,模型不关心它会被如何显示或是如何作。
但是模型中数据的变化一般会通过一种刷新机制被公布。
为了实现这种机制,那些用于监视此模型的视图必须事先在此模型上注册,从而,视图可以了解在数据模型上发生的改变。
视图(View)视图层能够实现数据有目的的显示(理论上,这不是必需的)。
在视图中一般没有程序上的逻辑。
为了实现视图上的刷新功能,视图需要访问它监视的数据模型(Model),因此应该事先在被它监视的数据那里注册。
