zoukankan      html  css  js  c++  java
  • 配置文件dispatcher在web.xml里的配置

    DispatcherServlet是前端控制器设计模式的实现,提供SpringWebMVC的集中访问点,而且负责职责的分派,而且与spring IOC容器无缝集成,从而可以获得Spring的优势。

    其主要职责是调度工作,本身用于控制流程,具体为:

    1.文件上传解析,如果请求类型是multipart将通过MultipartResolver进行文件上传解析;

    2.通过HandlerMapping,将请求映射到处理器(返回一个HandlerExecutionChain,它包括一个处理器、多个HandlerInterceptor拦截器);

    3.通过handlerAdapter支持多种类型的处理器(handlerExceptionChain中的处理器);

    4.通过ViewResolver解析逻辑视图名到具体视图实现;

    5.本地化解析;

    6.渲染具体的视图等;

    7.如果执行过程中遇到异常将交给handlerExceptionResolver来解析;

    DispatcherServler在web.xml中的配置

    <servlet>

             <servlet-name>heiheihei</servlet-name>

             <servlet-class>org.springframework.web.servlet.DispatcherServlet<servlet-class>

             <load-on-startup>1</load-on-startup>

    </servlet>

    <servlet-mapping>

             <servlet-name>heiheihei</servlet-name>

             <url-pattern>/</url-pattern>

    </servlet-mapping>

    load-on-startup:表示启动容器时刻初始化该servlet的顺序;

    url-pattern:表示哪些请求交给SpringwebMVC处理,“/”是用来定义默认servlet映射的。也可以如"*.html"表示拦截所有以html为扩展名的请求。默认使用WebApplicationContext作为上下文,spring默认配置文件为"/web-inf/[servlet名字]-servlet.xml"。

    DispatcherServlet也可以配置自己的初始化参数,覆盖默认配置:

    1.contextClass:实现WebApplicationContext接口的类,当前的servet用它来创建上下文。如果这个参数没有指定,默认使用XmlWebApplicationContext。

    2.contextCOnfigLocation:传给上下文实例(由contextClass指定)的字符串,用来指定上下文的位置。这个字符串可以被分成多个字符串(使用逗号作为分隔符)来支持多个上下文(在多个上下文的情况下,如果同一个bean被定义两次,后面一个优先)。

    3.namespace:WebApplicationContext命名空间。默认值是[server-name]-servlet。

    因此可以通过以下方式添加初始化参数:

    <servlet>

             <servlet-name></servlet-name>

             <servlet-class></servlet-class>

             <load-on-startup></load-on-startup>

             <init-param>

                       <param-name>contextCOnfigLocation</param-name>

                       <param-value>classPath:spring-servlet.xml</param-value>

             </init-param>

    </servlet>

    注意:如果使用如上配置,springwebMVC框架将加载"classPath:spring-servlet.xml"来初始化上下文。

    上下文关系

    集成web环境的通用配置:

    <context-param>

             <param-name>contextCOnfigLocation</param-name>

             <param-value>

                       classpath:spring-common-config.xml,

                       classpath:spring-budget-config.xml

             </param-value>

    </context-param>

    <listener>

             <listener-class>org.springframework.web/context.ContextLoaderListener</listener-class>

    </listener>

    如上配置是spring集成web环境的通用配置;一般用于加载除web层的bean,以便与其他任何web框架集成。【contextConfigLocation:表示用于加载bean的配置文件;contextClass:表示用于加载bean的applicationContext实现类,默认webApplicationContext】

    contextLoaderListener初始化的上下文和dispatcherServlet初始化的上下文关系:

    从图中可知:

    1.contextLoaderListener初始化的上下文加载的bean是对于整个应用程序共享的,不管是使用什么表现层技术,一般如DAO层,Service层bean;

    2.dispatcherServlet初始化的上下文加载的bean是只对spring Web MVC有效的bean,如Controller、handlerMapping、HandlerAdapter等等,该初始化上下文应该只加载web相关组件。

    DispatcherServlet初始化顺序

    继承体系:HttpServlet-HttpServletBean-FrameworkServlet-DispatcherServlet;

    1.httpServlet继承HttpServlet,因此在web容器启动时将调用其init()方法,该初始化方法的主要作用是①将servlet初始化参数(init-param)设置到该组件上(如contextAttribute/contextClass/namespace/contextConfigLocation),通过BeanWrapper简化设值过程,方便后续使用;②提供给子类初始化扩展点,initServletBean(),该方法由FrameworkServlet覆盖。

    2.FrameworkServlet继承HttpServletBean,通过initServletBean()进行web上下文初始化,该方法主要覆盖两件事:①初始化web上下文;②提供给子类初始化扩展点。

    3.DispatcherServlet继承FrameworkServlet,并实现onRefresh()方法提供一些前端控制器相关的配置;主要作用:①初始化spring web mvc使用的web上下文,并且可能指定父容器;②初始化dispatcherServlet使用的策略,如handlerMapping,handlerAdapter;

    DispatcherServlet中使用的特殊的bean

    dispatcherServlet默认使用WebApplicationContext作为上下文,其中包含诸多bean:

    1.controller:处理器/页面控制器,做的事MVC中的C的事情,但控制逻辑转移到前端控制器,用于对请求进行处理;

    2.HandlerMapping:请求带处理器的映射,如果映射成功返回一个HandlerExecutionChain对象(包含一个handler处理器对象,多个handlerInterceptor拦截器);如BeanNameUrlHandlerMapping将url与bean名字映射,映射成功的bean就是此处的处理器;

    3.handlerAdapter:HandlerAdapter将会把处理器包装为适配器,从而支持多种类型的处理器,即适配器设计模式的应用,从而很容易支持很多类型的处理器;如SimpleControllerHandlerAdapter将对实现了Controller接口的Bean进行适配器,并且调用处理器的handlerRequest方法进行功能处理;

    4.ViewResolver:viewResolver将把逻辑视图名解析为具体的view,通过这种策略模式,很容易更换其他试图技术,如InternalResourceViewResolver将逻辑视图名映射为jsp视图;

    5.LocalResover:本地化解析,因为Spring支持国际化,因此LocalResover解析客户端的Locale信息从而方便进行国际化;

    6.ThemeResolver:主题解析,通过它来实习县一个页面多套风格,即常见的类似于软件皮肤效果;

    7.MultipartResolver:文件上传解析,用于支持文件上传;

    8.HandlerExceptionResolver;处理器异常解析,如果将异常映射到相应的统一错误界面,从而显示用户友好的界面;

    9.RequestToViewNameTranslator:当处理器没有返回逻辑视图名等相关信息时,自动将请求url映射为逻辑视图名;

    10.FlashMapManager:用于管理FlashMap的策略接口,FlashMap用于存储一个请求的输出,当进入另一个请求时作为该请求的输入,通常用于重定向场景。
    ————————————————
    版权声明:本文为CSDN博主「Starry-」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/nobody_1/article/details/80039227

  • 相关阅读:
    HDU 1025 Constructing Roads In JGShining's Kingdom (DP+二分)
    HDU 1158 Employment Planning
    HDU 2059 龟兔赛跑
    Csharp 简单操作Word模板文件
    Csharp windowform datagridview Clipboard TO EXCEL OR FROM EXCEL DATA 保存datagridview所有數據
    Csharp 讀寫文件內容搜索自動彈出 AutoCompleteMode
    Csharp windowform controls clear
    CSS DIV大图片右上角叠加小图片
    Csharp DataGridView自定义添加DateTimePicker控件日期列
    Csharp 打印Word文件默認打印機或選擇打印機設置代碼
  • 原文地址:https://www.cnblogs.com/yangjingru/p/12144793.html
Copyright © 2011-2022 走看看