一、Spring MVC

1.Spring的运行原理

在这里插入图片描述

  • 具体流程
    1. 用户发起请求request到前端控制器DispatherServlet
    2. 前端控制器请求处理映射器HandlerMapping查找Handler可以根据注解,XML进行查找
    3. 处理映射器向前端控制器返回映射链HandlerExceutionChain对象,包含一个Handler处理器对象,多个HandlerInterception拦截器的对象
    4. 前端控制器请求处理器适配器HandlerAdapter请求执行Handler
    5. 处理器适配器执行Handler
    6. 处理器执行完返回给适配器ModelAndView对象ModelAndView是SpringMVC一个底层的对象,包含View和Model,Model部分是业务对象返回的模型数据,View部分为逻辑视图名
    7. 处理器适配器返回给前端控制器ModelAndView对象(包含模型数据,逻辑视图名)
    8. 前端控制器请求视图解析器ViewResolver解析视图,视图解析器将逻辑视图名解析为具体的View(jsp…)
    9. 视图解析器向前端控制器返回view
    10. 前端控制器进行视图渲染,视图渲染将模型数据(ModelAndView对象)填充到request域
    11. 前端控制器向用户响应结果

二、Spring MVC组件

1. 前端控制器(DispatchServlet)

  1. 无需开发,由Spring框架提供
  2. SpringMVC的入口函数,接收请求,响应请求,相当于转发器,有了DispatchServlet减少其他组件之间的耦合度,用户请求到达前端控制器,相当于MVC中的Controller,是整个流程控制的中心,由它调用其他组件处理用户请求,降低组件间的耦合度。

2.处理器映射器(HandlerMapping)

  1. 不需要开发,由框架提供
  2. 根据URL查找Handler,HandlerMapping负责根据用户请求找到Handler处理器(Controller),SpringMVC中提供了不同的映射器实现的映射方式,如:配置文件方式,实现接口方式,注解方式

3.处理器适配器(HandlerAdapter)

  1. 不需要开发,由框架提供
  2. 按照特定规则(HandlerAdapter要求的规则)去执行Handler通过HandlerAdapter对处理器进行执行,是适配器模式的应用,通过扩展适配器可以对更多的类型的处理器进行执行。

4.处理器(Handler)

  1. 需要开发人员开发
  2. 真正执行Handler的是处理器,处理器是对具体的用户请求进行处理,由于Handler涉及到具体的用户业务请求,所以一般情况下是需要开发人员根据业务需求开发的Handler

5.视图解析器(ViewResolver)

  1. 不需要开发,由框架提供
  2. 进行试图解析,根据逻辑视图名解析成真正的视图View,viewResolver负责将处理结果生成View视图,ViewResolver根据逻辑视图名解析成真正物理视图名即具体的以页面地址,在生成View视图对象,最后对View视图进行渲染将处理结果通过页面展示给用户。

6.视图(View)

  1. 需要开发人员进行开发
  2. View是一个接口,实现类支持不同的View类型,
  3. SpringMVC框架提供了很多View视图类型,包含jspView,FreeMarkView,pdfView等,一般情况下需要通过页面标签或者页面模板技术将模板数据展示给用户,需要开发人员根据业务开发具体的页面

三、SpringMVC框架

  1. 传统的模型层被拆分为了业务层(Service)和数据访问层(DAO,Data Access Object),在Service下可以通过Spring的声明式事务操作数据访问层。
    在这里插入图片描述
  2. 特点
    1. 结构松散,几乎可以在Sring MVC中使用各类视图
    2. 松耦合,各个模块分离
    3. 与Spring无缝集成
  3. 架构
    1. SpringMVC是属于Spring的一个模块
    2. SpringMVC和Spring无需通过中间整合增进行整合
    3. Spring是一个基于MVC的Web框架

四、SpringMVC的使用

  1. 创建web项目
    在这里插入图片描述
    在这里插入图片描述
  • 在这里可能会出现一个错误,那就是maven依赖导入失败,具体表现就是中间这个地方不能显示这些包或者显示部分包,具体的操作就是导入包,如果实在导入包等等操作之后也不能解决问题,我建议卸载之后重新下载,在卸载的时候清除所有的缓存,不要之前的配置,安装的时候会提示,这样比修改bug快的多。

在这里插入图片描述

五、SpringBoot框架

1.springBoot

  1. SpringBoot是由spring框架延伸出来的
  2. SpringBoot是一个快速开发框架,可以迅速搭建出一套基于SpringBoot框架体系的应用
  3. SpringBoot开启各种自动装配,从而简化代码开发,不需要编写各种配置文件,只需要引入相关的依赖就可以迅速搭建一个应用
  4. 优势
    • 快速构建项目
    • 对于主流开发框架的无配置集成
    • 项目可以独立运行,无需外部依赖servlet容器
    • 提高了开发

2.设置SpringBoot的parent

  1. SpringBoot项目需要首项引入parent
<parent>
	<groupId>org.springframework.boot</groupId>
	<artifactId> spring-boot-starter-parent</artifactId>
	<version>1.5.2.RELEASE</version>
</parent>
  1. springBoot的项目必须先将parent设置为SpringBoot的parent,该parent包含了大量默认的配置,大大简化我们的开发

3.导入SpringBoot的Web的支持

<!--web的starter-->
<dependency>
	<groupId>org.sprngframework.boot</groupId>
	<artifactId>spring-boot-starter-web</artifactId>
</dependency>

4.编写SpringBoot的应用

@Controller
public class helloController{
	
	@RequestMapping("/hello")
	@ResponseBody
	public String hello(){
		return "hello";
	}
}

5.编写启动类

  1. @SpringBootApplication是SpringBoot的核心注解,主要目的开始装配main方法的一个应用,直接是使用SpringApplication.run()来启动SpringBoot应用
@SpringBootApplication
public class HelloApplication{
	public static void main(String[] args){
		SpringApplication.run(HelloApplication.class,args);
	}
}

6.测试运行

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐