简介

MVC开始是存在于桌面程序中的,M是指业务模型,V是指用户界面,C则是控制器,使用MVC的目的是将M和V的实现代码分离,从而使同一个程序可以使用不同的表现形式。比如一批统计数据可以分别用柱状图、饼图来表示。C存在的目的则是确保M和V的同步,一旦M改变,V应该同步更新。

MVC指MVC模式的某种框架,它强制性的使应用程序的输入、处理和输出分开。使用MVC应用程序被分成三个核心部件:模型、视图、控制器。它们各自处理自己的任务。最典型的MVC就是JSP + servlet + javabean的模式

视图是用户看到并与之交互的界面。对老式的Web应用程序来说,视图就是由HTML元素组成的界面,在新式的Web应用程序中,HTML依旧在视图中扮演着重要的角色,但一些新的技术已层出不穷,它们包括Adobe Flash和像XHTML,XML/XSL,WML等一些标识语言和Web services.

模型表示企业数据和业务规则。在MVC的三个部件中,模型拥有最多的处理任务。例如它可能用像EJBs和ColdFusion Components这样的构件对象来处理数据库,被模型返回的数据是中立的,就是说模型与数据格式无关,这样一个模型能为多个视图提供数据,由于应用于模型的代码只需写一次就可以被多个视图重用,所以减少了代码的重复性

控制器
接受用户的输入并调用模型和视图去完成用户的需求,所以当单击Web页面中的超链接和发送HTML表单时,控制器本身不输出任何东西和做任何处理。它只是接收请求并决定调用哪个模型构件去处理请求,然后再确定用哪个视图来显示返回的数据。

spring

spring是一个非常优秀的java框架,其目标是为了简化java企业级开发,spring出来已经十几年了,这期间也一直围绕着这个目标在进行,springmvc、springboot、springcloud,这些技术也都是围绕着简化开发的目标在努力,spring除了不能帮助我们实现业务逻辑代码之外,其他的事情spring都尽量去帮我们简化了,使用spring可以帮助我们节约大量开发时间。

1.IOC控制反转,是一种设计理念,将对象创建和组装的主动控制权利交给了spring容器去做,控制
的动作被反转了,降低了系统的耦合度,利于系统维护和扩展,主要就是指需要使用的对象的组装
控制权被反转了,之前是自己要做的,现在交给spring容器做了。
2. DI依赖注入,表示spring容器中创建对象时给其设置依赖对象的方式,通过某些注入方式可以让系统更灵活,比如自动注入等可以让系统变的很灵活
3. spring容器:主要负责容器中对象的创建、组装、对象查找、对象生命周期的管理等等操作

Bean对象

由spring容器管理的对象统称为Bean对象。Bean就是普通的java对象,和我们自己new的对象其实是
一样的,只是这些对象是由spring去创建和管理的,我们需要在配置文件中告诉spring容器需要创建哪些bean对象,所以需要先在配置文件中定义好需要创建的bean对象,这些配置统称为bean定义配置元数据信息,spring容器通过读取这些bean配置元数据信息来构建和组装我们需要的对象。

Spring容器使用步骤

  1. 引入spring相关的maven配置
  2. 创建bean配置文件,比如bean xml配置文件
  3. 在bean xml文件中定义好需要spring容器管理的bean对象
  4. 创建spring容器,并给容器指定需要装载的bean配置文件,当spring容器启动之后,会加载这些配置文件,然后创建好配置文件中定义好的bean对象,将这些对象放在容器中以供使用
  5. 通过容器提供的方法获取容器中的对象,然后使用
  6. spring容器中具有代表性的容器就是BeanFactory接口,这个是spring容器的顶层接口,提供了容器最基本的功能。

BeanFactory接口

常用的几个方法
//按bean的id或者别名查找容器中的bean
Object getBean(String name) throws BeansException
//这个是一个泛型方法,按照bean的id或者别名查找指定类型的bean,返回指定类型的bean对象
T getBean(String name, Class requiredType) throws BeansException;
//返回容器中指定类型的bean对象
T getBean(Class requiredType) throws BeansException;
//获取指定类型bean对象的获取器
ObjectProvider getBeanProvider(Class requiredType);

ApplicationContext接口

这个接口继承了BeanFactory接口,所以内部包含BeanFactory所有的功能,并且在其上进行了扩展,增加了很多企业级功能,比如AOP、国际化、事件支持等等。

ClassPathXmlApplicationContext类

这个类实现了ApplicationContext接口,注意一下这个类名称包含了ClassPath Xml,说明这个容器类可以从classpath中加载bean xml配置文件,然后创建xml中置的bean对象

AnnotationConfigApplicationContext类

这个类也实现了ApplicationContext接口,bean的定义支持xml的方式和注解的方式,当我们使用注解的方式定义bean的时候,就需要用到这个容器来装载了,这个容器内部会解析注解来构建构建和管理需要的bean。
注解的方式相对于xml方式更方便一些.

Druid

Druid的主要功能如下:
是⼀个⾼效、功能强⼤、可扩展性好的数据库连接池。
可以监控数据库访问性能。
数据库密码加密
获得SQL执⾏⽇志
扩展JDBC

关于MVC框架和spring相关推荐

  1. 自己手写一个Spring MVC框架

    想要了解Spring MVC框架的原理,探究框架是如何设计的,不错的学习方式是阅读源码,然后自己手写一个框架.本文带领大家简化的手写一个Spring MVC框架. Spring框架对于Java后端程序 ...

  2. 【Java学习路线之JavaWeb】Spring MVC框架入门教程

    文章目录 读者 阅读条件 MVC设计模式简介 JSP+JavaBean Servlet+JSP+JavaBean MVC优缺点 优点 缺点 Spring MVC是什么 Spring MVC优点 第一个 ...

  3. 2022/5/3 Spring MVC框架

    目录 1丶什么是MVC 1.1丶回顾MVC 1.2丶MVC设计模式 1.3丶SpringMVC架构 1.4丶概述 1.5丶中心控制器(DispatcherServlet) 1.6丶SpringMVC执 ...

  4. 超详细整合SSM框架--(Spring + Spring MVC + MyBatis)

    超详细整合SSM框架--(Spring + Spring MVC + MyBatis) SpringMVC框架--文章跳转 Spring框架--文章跳转 Mybatis框架--文章跳转 整合思路 设计 ...

  5. Java Spring MVC框架 VII

    Java Spring MVC框架 VII Spring MVC小结 1.小结 ● 关于Spring MVC框架,你应该(1/5): – 理解Spring MVC框架的作用 – 接收请求,响应结果,处 ...

  6. Struts和SpringMVC两种MVC框架比较

    基于Web的MVC framework在J2EE的世界内已是空前繁荣.TTS网站上几乎每隔一两个星期就会有新的MVC框架发布.目前比较好的MVC,老牌的有Struts.Webwork.新兴的MVC框架 ...

  7. 框架:spring、springmvc、springboot

    先来说说spring.springmvc.springboot的关系. spring boot只是一个配置工具,整合工具,辅助工具. springmvc是框架,项目中实际运行的代码 Spring 框架 ...

  8. osgi框架和spring区别_最新100道大厂高频spring面试题附答案

    简介 这里是由多位互联网大厂架构师面试整理的出现频率最高的spring相关面试题,并为大家整理了完整的答案,赶紧收藏起来吧! 100道spring高频面试题 Spring概览 1.Spring是什么? ...

  9. Spring boot (6)---SpringMVC框架和spring Boot的区别

    SpringMVC框架和spring Boot的区别 1.我们知道Spring是一个一站式框架功能十分强大,就像一个家族,有众多衍生产品例如 boot.security.jpa等等.但他们的基础都是S ...

最新文章

  1. python asyncio tcp server_Python 3.4 中新的 asyncio : Servers、Protocols 和 Transports
  2. python request timeout是什么意思_request timeout是什么意思
  3. 2007年下半年软考:网络工程师考试试题分析
  4. 中国唯一入选 Forrester 领导者象限,阿里云 Serverless 全球领先
  5. mysql 字符串转时间yymmdd_mysql 日期和时间格式转换实现语句 | 很文博客
  6. Pytorch(二) --梯度下降法
  7. matlab 捕食者和猎物,MATLAB - 追求曲线(捕食者/猎物)
  8. B Graph(异或最小生成树)
  9. 普通话/汉语发音口型大全
  10. 安装kali linux 2017.1 【二、安装VMware-tools 以及相关问题处理】
  11. HISTFILESIZE与HISTSIZE的区别
  12. ElementUI项目优化上线
  13. azure db 设置时区_使用Azure Cosmos DB开始您的旅程
  14. 《恋上数据结构第1季》映射 TreeMap,HashMap,LinkedHashMap
  15. Spring源码深度解析百度网盘下载
  16. android studio运行项目快捷键,Android Studio 快捷键大全
  17. adb命令检测手机bl有无上锁_用adb命令解bl锁
  18. Java开发的学生考勤系统多人脸识别签到二维码签到
  19. 【前端】零基础带你入门前端< 三 > —— 实现手机通讯录(微信通讯录)等
  20. 【CF833D】Red-Black Cobweb

热门文章

  1. mysql中text格式化_mysql中char,varchar,text
  2. url充定向 html转义,html、javascript、url特殊字符的转义诠释及使用方法详解
  3. nginx https 访问http_Nginx之Http模块系列之访问控制模块
  4. python接口测试覆盖率统计_从 jacoco 报告数据分析,python 脚本实现增量覆盖率统计...
  5. 放在每个定义前的html语言,html基础
  6. 黑金花大理石_黑色系大理石的首选——黑金花
  7. 字体 素材_最新2019毛笔书法字体素材合集!自创字体解决版权,甲方看都说好...
  8. 计算机应用属不属于科技股,哪些股票属于科技股
  9. 九、Docker快速搭建Elastic Stack(上篇)
  10. 二十八、Node.js中的RESTful API和接口设计