spring-web及spring-webmvc


spring与web集成:spring-web

spring-web的作用:包含web应用开发时,用到spring框架时所需的核心类,包括自动载入webapplicationcontext特性的类、struts与jsf集成类、文件上传的支持类、filter类和大量工具辅助类。


    javax.servlet
    javax.servlet-api
    3.1.0
    provided


    org.springframework
    spring-web
    5.2.7.RELEASE

通过spring获取应用上下文对象

  • 在仅仅使用spring的时候,应用上下文的获取如下图:
    弊端:每次从容器中获取bean都要编写new ClassPathXmlApplicationContext,每次获取都要加载一次核心配置文件,应用上下文创建多次。

  • 自己写工具类实现(模拟spring获取app原理)
    在web项目中,可以使用ServletContextListener监听web应用的启动,在tomcat启动的时候加载一次spring配置文件并创建应用上下文对象,并将其存储在最大的域servletContext域中,这样就可以在任意位置从域中获取上下文对象了。

  • spring-web提供获取应用上下文的工具
    spring-web提供了一个监听器ContextLoaderListener,该监听器内部加载spring配置文件,创建应用上下文对象,并存储在ServletContext域中,提供一个客户端工具WebApplicationContextUtils供使用者获取应用上下文对象。

springmvc:spring-webmvc


    org.springframework
    spring-webmvc
    5.2.7.RELEASE

spring-webmvc所依赖的包:(包含spring-context,spring-web)

在使用springmvc之前,我们都需要写servlet接口的实现类。现在使用springmvc,通过一套注解,可以让一个简单的java类成为处理请求的控制器,无需实现任何接口。

springmvc快速入门

开发步骤:
1. 导入springmvc坐标
2. 配置springmvc核心前端控制器DispathcerServlet,让servlet去加载springmvc配置文件
3. 使用注解配置Controller类中业务方法的映射地址
4. 配置springmvc核心配置文件spring-mvc.xml(可任意命名)
5. 客户端发起请求

概念理解:Spring父容器与子容器
父子容器的主要作用应该是划分框架边界。有点单一职责的味道。查看文章:spring和springmvc父子容器的理解

springmvc执行流程

springmvc框架是使用servlet充当前端控制器。

  • 流程图示
  • 完整执行流程

springmvc响应返回

  • 重点是springmvc自动将对象转化为json字符串返回数据
    • 需要引入jackson包
    • @ResponseBody声明告知mvc,不进行视图跳转,而是直接进行数据响应
    • 配置mvc的注解驱动:
      在springmvc的各个组件中,处理器映射器,处理器适配器,视图解析器称为springmvc的三大组件。
      使用自动加载RequestMappingHandlerMapping(处理器映射器)和RequestMappingHandlerAdpter(处理器适配器)。
      可以在spring-mvc.xml配置文件中配置代替注解处理器和适配器的配置,
      同时使用默认底层就会集成jsckson进行对象或集合的json字符串转换。