MVC笔记

一、示意图版(个人理解)

我最开始了解MVC时挺混乱的
有的说MVC是一种设计模式
有的说MVC是一种框架模式
有的说MVC是一种框架
有的说MVC是一种架构
最后想明白了,从中能吸取实践中能用的经验就好,管什么是什么!

框架、设计模式这两个概念总容易被混淆,其实它们之间还是有区别的。

> 在软件生产中有三种级别的重用:
> 内部重用,即在同一应用中能公共使用的抽象块;
> 代码重用,即将通用模块组合成库或工具集,以便在多个应用和领域都能使用;
> 应用框架的重用,即为专用领域提供通用的或现成的基础结构,以获得最高级别的重用性。
#从重用角度看
> 框架通常是代码重用
> 设计模式是设计重用
> 架构则介于两者之间,部分代码重用,部分设计重用,有时分析也可重用。
#从抽象程度看
> 设计模式是对在某种环境中反复出现的问题以及解决该问题的方案的描述,它比框架更抽象;
> 框架可以用代码表示,也能直接执行或复用,而对模式而言只有实例才能用代码表示;

简而言之
设计模式是比框架更小的元素,一个框架中往往含有一个或多个设计模式,框架总是针对某一特定应用领域,但同一模式却可适用于各种应用。
可以说,框架是大智慧,用来对软件设计进行分工;设计模式是小技巧,对具体问题提出解决方案,以提高代码复用率,降低耦合度。

1)框架模式有哪些?
MVC、MTV、MVP、CBD、ORM等等;
2)框架有哪些?
C++语言的QT、MFC、gtk,Java语言的SSH 、SSI,php语言的 smarty(MVC模式),python语言的django(MTV模式)等等
3)设计模式有哪些?
工厂模式、适配器模式、策略模式等等

1、MVC架构示意图

MVC_0

 View:代表系统中用于展示/交互的部分
 Controller:代表系统的业务处理/模型
 Model:代表系统中的数据模型
 DB:代表数据库
 request:请求
 response:响应

2、MVC设计模式示意图

MVC_1

3、MVC框架示意图

MVC_2

Java最典型的MVC就是JSP + servlet + javabean的模式。

二、详解

[MVC框架详解(资源整理)]https://blog.youkuaiyun.com/qq_21225505/article/details/81666986
[一个典型的MVC模式]https://www.cnblogs.com/cyy-13/p/5718586.html
待补

在刚刚步入“多层结构”Web应用程序开发的时候,我阅读过几篇关于“asp.net三层结构开发”的文章。但其多半都是对PetShop3.0和Duwamish7的局部剖析或者是学习笔记。对“三层结构”通体分析的学术文章几乎没有。 2005年2月11日,Bincess BBS彬月论坛开始试运行。不久之后,我写了一篇题目为《浅谈“三层结构”原理与用意》的文章。旧版文章以彬月论坛程序中的部分代码举例,通过全局视角阐述了什么是“三层结构”的开发模式?为什么要这样做?怎样做?……而在这篇文章的新作中,配合这篇文章我写了7个程序实例(TraceLWord1~TraceLWord7留言板)以帮助读者理解“三层结构”应用程序。这些程序示例可以在随带的CodePackage目录中找到——   对于那些有丰富经验的Web应用程序开发人员,他们认为文章写的通俗易懂,很值得一读。可是对于asp.net初学者,特别是没有任何开发经验的人,文章阅读起来就感到非常困难,不知文章所云。甚至有些读者对“三层结构”的认识更模糊了……   关于“多层结构”开发模式,存在这样一种争议:一部分学者认为“多层结构”与“面向对象的程序设计思想”有着非常紧密的联系。而另外一部分学者却认为二者之间并无直接联系。写作这篇文章并不是要终结这种争议,其行文目的是希望读者能够明白:在使用asp.net进行Web应用程序开发时,实现“多层结构”开发模式的方法、原理及用意。要顺利的阅读这篇文章,希望读者能对“面向对象的程序设计思想”有一定深度的认识,最好能懂一些“设计模式”的知识。如果你并不了解前面这些,那么这篇文章可能并不适合你现在阅读。不过,无论这篇文章面对的读者是谁,我都会尽量将文章写好。我希望这篇文章能成为学习“三层结构”设计思想的经典文章!
### 关于 Spring Boot MVC 的学习笔记 #### 一、Spring Boot MVC 基础概念 Spring Boot MVC 是基于 Spring Framework 中的 Spring MVC 构建的一个简化框架,旨在减少配置量并提高开发效率。它继承了 Spring MVC 的所有特性,并在此基础上进行了优化和扩展[^1]。 #### 二、环境搭建 为了更好地理解 Spring Boot MVC,在开始之前需准备好相应的开发工具与依赖库。推荐使用 IntelliJ IDEA 或 Eclipse 进行项目创建;对于 Maven 用户来说,则应确保本地已安装好 JDK 和 Maven 环境。新建一个 Spring Initializr 项目时可以选择 Web 组件来引入必要的 Starter POM 文件[^2]。 ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> ``` #### 三、控制器编写 在 Spring Boot 应用程序里定义 RESTful API 接口通常会采用 `@RestController` 注解标记类作为控制层组件。每个方法可以利用 HTTP 请求映射注解(如 GET, POST 等)指定访问路径以及参数传递方式。 ```java @RestController @RequestMapping("/api/v1") public class ExampleController { @GetMapping("/hello") public String sayHello() { return "Hello World!"; } } ``` #### 四、视图解析器配置 当返回 HTML 页面而非 JSON 数据时,就需要设置 Thymeleaf 或 FreeMarker 等模板引擎支持页面渲染功能。默认情况下无需额外配置即可正常工作,但如果想要自定义前缀/后缀等属性则可以在 application.properties 文件内修改相应项[^3]。 ```properties spring.thymeleaf.prefix=classpath:/templates/ spring.thymeleaf.suffix=.html ``` #### 五、异常处理机制 良好的错误反馈有助于提升用户体验感。可以通过全局捕获未预期抛出的情况实现统一响应格式化输出。借助 `@ControllerAdvice` 及其内部声明的方法完成此操作。 ```java @ControllerAdvice public class GlobalExceptionHandler { @ExceptionHandler(Exception.class) public ResponseEntity<String> handleException(Exception e){ return new ResponseEntity<>("An error occurred: "+e.getMessage(), HttpStatus.INTERNAL_SERVER_ERROR); } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值