SpringMVC学习笔记
相关基础概念回顾
什么是MVC
mvc分为三部分。model,view,controller。是一种web框架设计模式。model和数据交互,view管理视图,controller负责和业务相关的逻辑。随着web的发展,view逐渐被弃用(代表jsp),现在主要通过json数据串联前后端,进行前后端协同开发。将原来view的职责交给前端去渲染视图。
什么是SpringMVC
SpringMVC运行在spring的基础上,是一个web方面的模块。对Servlet的实现。
Servlet知识回顾
Servlet是基于java语言的,用来提供web服务的组件。需要运行在web server上(tomcat)。
web server提供实现Servlet规范的Servlet容器(Servlet Container)。一个web server上可以部署多个Servlet容器。每个Servlet容器可以配备多个Servlet。Servlet容器可以与管理的Servlet通过ServletContext和ServletConfig进行交互。ServletContext和ServletConfig每个容器唯一,被它所管理的Servlet共享。
Servlet编码实现方式
- 基于xml配置。自定义一个类继承HttpServlet,重写service()方法。在web.xml文件中注册自定义的Servlet和它的映射路径。
- 基于注解配置@WebServlet。在自定义的Servlet上添加@WebServlet,不用去web.xml中注册。
- 基于注解配@WebListener。实现ServletContextListener接口。在init方法中获取到servletContext,注册自己的servlet。
- 基于java的SPI。实现ServletContainerInitializer接口,在onStartup中添加自定义操作。例如直接拿到servletContext注册Servlet。web-server在注册容器初始化时会根据javax.servlet.ServletContainerInitializer文件里拿到实现接口的类路径,调用传入servletContext。
SpringMVC的web项目
相比于部署在tomcat上的传统web项目。SpringMVC项目的结构有稍许不同。SpringBoot(JVM)—>SpringApp—>Servlet(DispatcherServlet)—>Controller(多个)。前三者的关系都为一一对应。SpringMVC封装实现了Servlet-api形成组件,并提供给自己的DispatcherServlet分派使用。