web项目加载顺序

@WEB

web项目执行顺序

现在主流的web开发框架一般都是基于Spring开发的,Spring生态圈量级非常之大,功能非常强大。今天讲述一下普通的web项目加载顺序。 虽然项目大部分都在使用SpringBoot、SpringCloud等微服务的架构来搭建项目,基本不会在进行这些配置了,但是如果项目追究Spring源码,这些基础知识还是需要了解的。

  1. web.xml
    web项目运行时首先会加载web.xml配置文件,一般该配置文件在 /WebRoot(web)/WEB-INF/web.xml ,web.xml中的内容加载不依赖于内容书写顺序,而是以 context-param 、 listener、 filter、servlet的顺序进行加载。web.xml中有以下几项内容:
    (1)context-param
    以下为配置spring配置文件目录的配置。该配置是针对整个web项目上下文的。

    
        contextConfigLocation
        classpath:applicationContext.xml
      
    

    (2)listener
    该配置用于向web容器中注册一个事件监听器,监听事件发生事件,如何响应等信息。事件监听程序在建立、修改和删除会话或servlet环境时得到通知。常与context-param联合使用。

    
       // 该类继承ServletContextListener 包含初始化方法contextInitialized(ServletContextEvent event) 和销毁方法contextDestoryed(ServletContextEvent event)
       org.springframework.web.context.ContextLoaderListener
    
    

    (3)filter
    filter 在web项目中起到过滤请求的作用,可配置在web.xml中,也可在项目中使用代码 继承Filter类来进行处理一些逻辑。Filter类中有 init(), doFilter(),destory() 方法。可获取到请求ServletRequest 和ServletResponse,然后决定继续处理哪些请求,阻挡哪些请求等。一般用作 防CRSF攻击、防SQL注入、权限过滤等
    web.xml中filter 需要和 filter-mapping 一起使用,如下为字符过滤器。

    
        encodingFilter
        org.springframework.web.filter.CharacterEncodingFilter
        
            encoding
            UTF-8
        
      
      
        encodingFilter
        /*
      
    
    public interface Filter {
      default void init(FilterConfig filterConfig) throws ServletException {}
      void doFilter(ServletRequest var1, ServletResponse var2, FilterChain var3) throws IOException, ServletException;
      default void destroy() {}
    }
    

    (4)servlet
    SpringMVC 中围绕 DispatcherServlet 来设计请求映射、视图处理、视图解析。DispatcherServlet 用于处理请求分发。具体内容见后续SpringMVC执行顺序。

    
        dispatcherServlet
        org.springframework.web.servlet.DispatcherServlet
        
            contextConfigLocation
            classpath:SpringMVC.xml
        
        1
      
      
      
        dispatcherServlet
        *.do
      
    

    (5)欢迎页
    web项目默认启动加载的页面。

    
        .html
        index.htm
        index.jsp
        default.html
        default.htm
        default.jsp
      
    

SpringMVC执行顺序

  1. 时序图

web项目加载顺序_第1张图片

2.组件

DispatcherServlet

前端控制器DispatcherServlet是SpringMVC整个流程控制中心,由它来调度其它组件相互配合,完成匹配请求URL,解析数据,响应数据,视图解析以及视图渲染等任务。

HandlerMapping

处理器映射器HandlerMapping负责根据用户请求URL找到匹配的Handler处理器。

HandlerAdapter

处理器适配器HandlerAdapter对处理器进行执行

ModelAndView

ModelAndView是Spring封装的model和view组合对象。可用于处理数据和视图。

ViewResolver

视图解析器ViewResolver负责处理结果生成视图,先根据逻辑视图名称找到物理视图地址,再生成视图对象,最后对视图进行渲染,将处理结果通过页面展现给用户。

Controller

业务逻辑处理器,接受请求参数,进行业务处理,返回响应的数据和视图。
3.applicationContext.xml和dispatcher-servlet.xml
applicationContext.xml 是Spring的全局配置文件,用来控制Spring特性,管理Bean的容器。
dispatcher-servlet.xml是SpringMVC中用作控制器,拦截器、转发view等作用。

注意

在两个配置文件中最好不要声明相同的bean。 applicationContext.xml是随ContextLoaderListener而加载的,ContextLoaderListener 配置于 中的。dispatcher-servlet.xml是随DispatcherServlet而加载的,而DispatcherServlet配置于 中,在web.xml中加载顺序为 context-param 、listener 、 filter 、servlet 。所以先加载applicationContext.xml 再加载dispatcher-servlet.xml

你可能感兴趣的:(基础知识)