
- 外文名
- MVC框架
- 全 名
- Model View Controller
- 类 别
- 软件构件模式
- 中文名
- MVC
- 架构内容
- 视图,模型,控制器
-
2021-10-10 18:44:44
MVC框架——一个理论框架!!!
注意:mvc框架只是理论上的知识,是一个设计思维或者思想,而不是像ssh,ssm等可以实实在在应用的框架。
前言——必看
对于MVC框架总的认识:
在百度百科中:经典mvc框架中model定义为业务逻辑,但同时也解释为业务规则,或者解释为企业数据(实体类)和业务规则题外话:很无语,不知道按照什么定义的,但是很明显业务逻辑不等同业务规则。
业务逻辑构成为:领域实体,业务规则,完整性约束,业务流程及工作流。
具体参考这篇文章细说业务逻辑根据百度百科的解释,无论怎么定义model,都会发现其实这三种都和业务有关系(至于有的博主会说model层就是仅仅和数据有关的实体类,,其实这个model本义上已经不是mvc框架里的那个model,,更多地像是一个层,例如service层,dao层之类的层。后面会解释。)
mvc框架就是一个设计思想,根本就不是可以实实在在应用的框架(这一点让我吃了大亏,想骂人…)。mvc框架的宗旨就是要将软件用户界面和业务逻辑分离以使代码可扩展性、可复用性、可维护性、灵活性加强。而实际应用和项目里的mvc框架,其实是mvc和三层结构的混合体,常见的有ssh,ssm。
以ssh举例,项目分层有controller,view,,然后原来mvc中的model层变为实体类,service,和dao,,然后很多人把这个实体类称为模型,我叫它模型二号,这个模型二号是和mvc那个模型不一样的。原来的模型model是带有逻辑,而这个模型二号model是实实在在地只和数据有关,和业务无关的实体类。至于为什么叫model:以model命名的层,里面存的是实体类的模型,一般是用来给前端用的(entity是数据库实体类,是和数据库对应的,此外还有domain,详细解释在文章第四部分)
如何区分model是含有逻辑的那个,还是只含有数据的那个,个人理解如下:带有逻辑的那个model是经典mvc框架里的model,是理论上的。而凡是涉及和具体项目,具体代码有关的model,都仅仅指的是实体类。
另外,看其它的博文,还有博主说service是从controller中分离出来的,这里我只能说他把mvc框架当做三层结构用了,连mvc的宗旨都没弄明白——MVC要实现的目标是将软件用户界面和业务逻辑分离,而Controller层只是用来调度View层和Model层,将用户界面和业务逻辑合理的组织在一起,起粘合剂的效果,所以Controller中的内容能少则少,说白了就是controller尽量不含业务逻辑,一般只含有应用程序逻辑,但这一点在实际项目中很模糊,需要很优秀的开发人员在开发前设计好,目前我看到的实际项目,都是action里面装了一大堆逻辑,然后项目能跑起来就行了,无语~~
1 经典MVC框架
1,定义
经典MVC模式中,M是指业务模型,V是指用户界面,C则是控制器。其中,View的定义比较清晰,就是用户界面。2,目的
使用MVC的目的是将M和V的实现代码分离,从而使同一个程序可以使用不同的表现形式。比如一批统计数据可以分别用柱状图、饼图来表示。 其中,View的定义比较清晰,就是用户界面。C存在的目的则是确保M和V的同步,一旦M改变,V应该同步更新。
简单流程图如下:
3,mvc三层解释
V即View视图是指用户看到并与之交互的界面。比如由html元素组成的网页界面,或者软件的客户端界面。MVC的好处之一在于它能为应用程序处理很多不同的视图。在视图中其实没有真正的处理发生,它只是作为一种输出数据并允许用户操作的方式。M即model模型是指模型,模型指企业数据(即实体类)和业务规则。在MVC的三个部件中,模型拥有最多的处理任务。被模型返回的数据是中立的,模型与数据格式无关,这样一个模型能为多个视图提供数据,由于应用于模型的代码只需写一次就可以被多个视图重用,所以减少了代码的重复性。
C即controller控制器是指控制器接受用户的输入并调用模型和视图去完成用户的需求,控制器本身不输出任何东西和做任何处理。它只是接收请求并决定调用哪个模型构件去处理请求,然后再确定用哪个视图来显示返回的数据。
4,mvc的宗旨就是:
MVC要实现的目标是将软件用户界面和业务逻辑分离以使代码可扩展性、可复用性、可维护性、灵活性加强。
View层是界面,Model层是业务逻辑,Controller层用来调度View层和Model层,将用户界面和业务逻辑合理的组织在一起,起粘合剂的效果。所以Controller中的内容能少则少,这样才能提供最大的灵活性。2 经典mvc模式就是jsp+servlet+JavaBean
注意:此时已经不是理论上的mvc框架了
3 JavaBean
概述
JavaBean 是一种JAVA语言写成的可重用组件。为写成JavaBean,类必须是具体的和公共的,并且具有无参数的构造器。JavaBean 通过提供符合一致性设计模式的公共方法将内部域暴露成员属性,set和get方法获取。众所周知,属性名称符合这种模式,其他Java 类可以通过自省机制(反射机制)发现和操作这些JavaBean 的属性。
1,JavaBean(就是一个Java类)的定义:满足一下2点 ,就可以称为JavaBean
- a.public 修饰的类 ,public 无参构造
- b.所有属性(如果有) 都是private,并且提供set/get (如果boolean 则get 可以替换成is)
2 使用层面,JavaBean分为2大类:
- a.封装业务逻辑的JavaBean (LoginDao.java封装了登录逻辑) 逻辑
可以将jsp中的JDBC代码,封装到Login.java类中 (Login.java) - b.封装数据的JavaBean (实体类,Student.java Person.java ) 数据
对应于数据库中的一张表
封装数据的JavaBean 对应于数据库中的一张表 (Login(name,pwd))
封装业务逻辑的JavaBean 用于操作 一个封装数据的JavaBean举例:数据模型(Javabean封装数据)
package userLogin; public class Login { private String name; private String pwd; public Login() { //无参构造 super(); // TODO Auto-generated constructor stub } public Login(String name, String pwd) { //有参构造 super(); this.name = name; this.pwd = pwd; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPwd() { return pwd; } public void setPwd(String pwd) { this.pwd = pwd; } }
举例:业务规则模型(Javabean封装数据)
package org.lanqiao.dao; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class LoginDao { public int login(String name , String pwd) { String URL="jdbc:mysql://127.0.0.1:3306/jdbc?serverTimezone=UTC&characterEncoding=UTF-8"; String USERNAME = "root"; //账号 String PWD = "123456"; //密码 Connection conn = null; PreparedStatement pstmt = null; ResultSet rs = null; try{ //导入驱动,加载具体的驱动类 Class.forName("com.mysql.cj.jdbc.Driver"); //连接数据库 conn = DriverManager.getConnection(URL,USERNAME,PWD); //发送sql语句 // String sql = "select count(*) from login where name = ? and pwd = ?"; //报错,找不到原因 String sql = "select * from login"; pstmt = conn.prepareStatement(sql); // pstmt.setString(1, name); // pstmt.setString(2, pwd); //执行查询,获取结果集 rs = pstmt.executeQuery(sql); //处理结果集 int count=0; while(rs.next()){ String daoName = rs.getString("name"); String daoPwd = rs.getString("pwd"); if(name.equals(daoName) && pwd.equals(daoPwd)){ count = 1; break; } } return count; }catch(Exception e){ e.printStackTrace(); return -1; }finally{ try { //关闭连接 if(rs!=null) rs.close(); if(pstmt!=null) pstmt.close(); if(conn!=null) conn.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } }
注意:JavaBean在Java项目中更多的是封装数据。
4 实际MVC框架应用
注意:更多地去研究ssh和ssm框架,mvc只是一个设计思想。5 总结
mvc不是可以实实在在应用的框架,只是一种设计思想。
mvc设计框架的思想就是:- MVC要实现的目标是将软件用户界面和业务逻辑分离以使代码可扩展性、可复用性、可维护性、灵活性加强。
- View层是界面,Model层是业务逻辑,Controller层用来调度View层和Model层,将用户界面和业务逻辑合理的组织在一起,起粘合剂的效果。所以Controller中的内容能少则少,这样才能提供最大的灵活性。
更多相关内容 -
spring-webmvc5.3.6 jar包.rar
2021-07-26 09:49:38这个jar文件包含Spring MVC框架相关的所有类。 包含国际化、标签、Theme、视图展现的FreeMarker、JasperReports、Tiles、Velocity、XSLT相关类。 当然,如果你的应用使用了独立的MVC框架,则无需这个JAR文件里的... -
ASP.NET MVC 5使用X.PagedList.Mvc进行分页教程(PagedList.Mvc)
2020-09-04 03:38:08主要介绍了ASP.NET MVC 5使用X.PagedList.Mvc进行分页教程(原名为PagedList.Mvc),需要的朋友可以参考下 -
C# MVC 过滤器防止SQL注入
2021-09-15 13:44:09C# MVC 过滤器防止SQL注入 -
ASPNET-MVC5:ASP.NET MVC5学习路径源代码-mvc source code
2021-03-24 20:07:06ASP.NET MVC5学习路径源代码 ASP.NET MVC是Microsoft的基于MVC模式的Web应用程序开发框架。 MVC是一种框架方法,将应用程序的实现分为三个组件:模型,视图和控制器。 ASP.NET MVC学习路径的目标是通过遵循入门,... -
精通Spring MVC 4
2017-11-04 13:36:03Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块。Spring MVC4是当前zuixin的版本,在众多特性上有了进一步的提升。, 在精通Spring... -
ASP.NET MVC 5 框架揭秘试读样章_netmvc_.netmvc_MVC.net_ASP.NETMVC_
2021-09-30 08:40:46本书以一个模拟 ASP.NET MVC 内部运行机制的“迷你版 MVC 框架”作为开篇,其目的在于将ASP.NET MVC 真实架构的“全景”勾勒出来。接下来本书以请求消息在 ASP.NET MVC 框架内部的流向为主线将相关的知识点串联起来... -
asp.net MVC电商商城项目.rar
2020-05-28 11:37:07asp.net MVC电商商城项目.rar -
PHP与MVC
2019-03-23 01:28:57NULL 博文链接:https://caihorse.iteye.com/blog/1064068 -
基于Java Web MVC框架的学生成绩管理系统设计.pdf
2021-06-27 10:52:13基于Java Web MVC框架的学生成绩管理系统设计.pdf -
ASP.NET MVC5
2018-06-22 20:19:34ASP.NET MVC5 高清完整版,适合新手学习,理解MVC架构 -
Pro ASP.NET MVC 5 (精通ASP.NET MVC5框架) 中文+英文+配套源代码
2019-03-18 22:06:28Pro ASP.NET MVC 5 (精通ASP.NET MVC5框架) 中文+英文+配套源代码 -
【免费】ASP.NET MVC5 高级编程[附源码].rar
2017-09-14 11:14:55ASP.NET MVC5高级编程(第5版.NET开发经典名著)作为Microsoft备受欢迎的MVC技术的最新版本,MVC 5是一个成熟的Web应用程序框架,支持快速的、TDD友好的开发。MVC允许开发人员创建动态的、数据驱动的网站。这样的... -
MVC-Chart-GDI:ASP.NET MVC、GDI +
2021-06-28 13:00:55MVC-图表-GDI ASP.NET MVC、GDI+ -VWD2010(MVC2) 图表-条形图-饼形图 -
asp.net工作流管理系统源码MVC工作流源码
2018-12-28 15:21:05用asp.net MVC5开发的工作流引擎,本源码包含可视化流程设计器,表单设计器。适合对象:需要从事OA办公系统、CRM客户关系系统、HR人事管理系统的你参考学习之用,同时你还可以学习现在流行的MVC。 -
MVC简单例子C#
2017-11-03 09:20:24MVC简单例子C#,简单易懂 MVC简单例子C#,简单易懂 MVC简单例子C#,简单易懂 -
C++的MVC模式简单示例
2018-04-17 09:49:27C++的MVC模式,界面使用VC/MFC编写。对于MVC模式初学者来说,具有较大的参考价值。 -
spring-webmvc.jar
2018-01-24 11:53:30spring-webmvc-4.jar 下载spring-webmvc-4.jar 下载spring-webmvc-4.jar 下载spring-webmvc-4.jar 下载spring-webmvc-4.jar 下载spring-webmvc-4.jar 下载 -
MVC框架UML图
2017-11-28 19:26:58本资源是个人通过几天学习总结而来,提供给大家一起学习。 -
ASP.net MVC3 中文教程
2017-12-23 12:37:41ASP.net MVC3 中文教程ASP.net MVC3 中文教程ASP.net MVC3 中文教程ASP.net MVC3 中文教程 -
ASP.NET MVC5 官网下载源码.rar
2017-09-20 15:32:27ASP.NET MVC5 官网下载源码.rar ASP.NET MVC5 官网下载源码.rar ASP.NET MVC5 官网下载源码.rar ASP.NET MVC5 官网下载源码.rar ASP.NET MVC5 官网下载源码.rar ASP.NET MVC5 官网下载源码.rar -
ASP.NET MVC和EF增删改查,分页
2018-11-08 14:54:30ASP.NET MVC和EF实现增删改查,外加分页功能。EF创建数据库,ModelFirst -
Pro ASP.NET Core MVC 2 (7th) 中文版
2017-12-22 11:04:19Pro ASP.NET Core MVC 2 (7th) 中文版 本资源转载自网络,如有侵权,请联系上传者或csdn删除 -
spring-webmvc jar包
2018-04-05 13:03:34spring-webmvc-4.1.0.RELEASE.jar用于Spring框架的mvc注解 -
ASP.NET MVC4 Web编程
2017-03-22 16:30:19asp.net mvc4 -
ASP.NET MVC 5入门指南(中文PDF+源码)
2018-10-06 15:34:26ASP.NET MVC 5入门指南 (中文PDF+源碼) 1. ASP.NET MVC 5 - 开始MVC 5之旅 2. ASP.NET MVC 5 - 控制器 3. ASP.NET MVC 5 - 视图 4. ASP.NET MVC 5 - 将数据从控制器传递给视图 5. ASP.NET MVC 5 - 添加一个模型 6. ... -
经典MVC登录实例代码
2016-05-20 19:47:27mvc入门——经典MVC登录实例 -
asp.net mvc+Bootstrap Fileinput框架实现的文件上传
2017-12-28 14:45:35asp.net mvc+Bootstrap Fileinput框架实现的文件上传,实例经过测试请放心下载参考。 -
ASP.NET MVC5 编程实战.pdf
2016-10-30 18:41:38ASP.NET MVC5 编程实战.pdf -
ASP.NET MVC4 MVC5源码
2017-09-29 10:12:54MVC4+MVC5源代码MVC4+MVC5源代码MVC4+MVC5源代码MVC4+MVC5源代码