web on servlet stack-5.0.4

翻译自https://docs.spring.io/spring/docs/5.0.4.RELEASE/spring-framework-reference/web.html

这部分文档涵盖Servlet Stack的支持、基于Servlet API并部署到Servlet容器的web application。单独的章节包括spring MVC,View Technologies,Cors Support和webSocket Support。对于reactive stack和web application,前往Web on Reactive Stack了解。
1、Spring Web MVC
1.1、介绍
spring web mvc是基于servlet API、从开始就包含在spring framework的原始web框架。之前的名称“spring web mvc”来自于源码模块spring-webmvc,但是更常见称为“spring mvc”。
与spring web mvc平行,spring framework 5.0引入一个反应式stack,web框架名称是spring WebFlux,基于它的源码模块spring-webflux。本章覆盖spring web mvc。下一章覆盖spring webflux。
为获取baseline信息和与servlet容器、JavaEE版本范围的兼容性,请访问Spring 框架wiki。
1.2、DispatcherServlet
Spring MVC,像很多其他web框架,设计围绕着前端控制器模式即一个中心Servlet,the dispatcherServlet,提供一个共享的处理需求的算法,同时实际工作由可配置的、委派组件来执行。这个模型是灵活的,支持多样化的工作流。
DispatcherServlet,像任何servlet,需要使用Java配置或在web.xml中声明和根据servlet配置进行映射。DispatcherServlet依次使用spring配置来发现委派组件,以用来映射需求、解析视图、处理异常等等。
下面是Java配置的样例:注册和初始化DispatcherServlet。这类由Servlet容器(参见Servlet Config)自动发现。

public class MyWebApplicationInitializer implements WebApplicationInitializer{
    @Override
    public void onStartup(ServletContext servletCxt){
    //load spring web application configuration
    AnnotationConfigWebApplicationContext ac=new AnnotationConfigWebApplicationContext();
    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);
    regitstration.addMapping("/app/*");
    }
}

除了使用直接使用ServletContext,你也可以继承AbstractAnnotationConfigDispatcherServletInitializer,并覆盖特定的方法(参见Context Hierarchy样例)
下面是web.xml配置来注册和初始化DispatcherServlet的样例:

<web-app>
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <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>
</web-app>

spring Boot遵循不同的初始化序列。不是在Servlet container的生命周期中加入调钩,spring boot使用spring配置来bootstrap自己和内置的servlet容器。filter和servlet声明在spring配置中检测,在servlet容器中注册。更多细节见spring boot docs
1.2.1 、Context Hierarchy
DispatcherServlet为配置自身需要一个WebApplicationContext,一个普通ApplicationContext的扩展。
WebApplicationContext有指向它关联的ServletContext和servlet的连接。它也绑定到ServletContext,这样application可以使用RequestContextUtils上的静态方法来查找WebApplicationContext,如果他们需要访问它的话。
对于很多应用,有一个独立的WebApplicationContext是简单和有效的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值