1.Spring Web MVCreact
Spring MVC是基于Servlet API开发的原生web框架,其名字来源于在Spring项目的模块名称(spring-webmvc)。web
Spring还推出了基于reactive栈的web框架 Spring WebFlux。
Parallel to Spring Web MVC, Spring Framework 5.0 introduced a reactive-stack web framework whose name, “Spring WebFlux,” is also based on its source module (spring-webflux). This section covers Spring Web MVC. The next section covers Spring WebFlux.算法
1.1. DispatcherServletspring
Spring MVC围绕一个Servlet(DispatcherServlet)设计,提供对于不一样请求的分享算法,实际的工做由框架配置的组件完成。mvc
DispatcherServlet须要经过Java代码或者web.xml进行配置,同时DispatcherServlet经过Sprong配置来发现业务组如请求路由匹配,视图解析器,异常处理等等。app
如下代码示范了如何经过代码注册并初始化一个DispatcherServlet,它会被Servlet容器自动检测到:框架
public class MyWebApplicationInitializer implements WebApplicationInitializer {ide
@Override public void onStartup(ServletContext servletCxt) { // Load Spring web application configuration AnnotationConfigWebApplicationContext ac = new AnnotationConfigWebApplicationContext(); // You need a Spring context configuration class name APPConfig.class ac.register(AppConfig.class); ac.refresh(); // Create and register the DispatcherServlet DispatcherServlet servlet = new DispatcherServlet(ac); ServletRegistration.Dynamic registration = servletCxt.addServlet("app", servlet); registration.setLoadOnStartup(1); registration.addMapping("/app/*"); }
}
可使用web.xml配置DispatcherServlet:url
<listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <context-param> <param-name>contextConfigLocation</param-name> <!-- you need a Spring context configuration file name app-context.xml --> <param-value>/WEB-INF/app-context.xml</param-value> </context-param> <servlet> <servlet-name>app</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value></param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>app</servlet-name> <url-pattern>/app/*</url-pattern> </servlet-mapping>