SpringMVC: web.xml中声明DispatcherServlet时一定要添加load-on-startup标签

50 篇文章 0 订阅
22 篇文章 1 订阅

游历SpringMVC源码后发现,在web.xml中注册的ContextLoaderListener监听器只是初始化了一个根上下文,仅仅完成了组件扫描和与容器初始化相关的一些工作,并没有探测到具体每个URL应当map到哪个Controller, 哪个方法上。而剩一下的这些复杂工作都是由DispatcherServet来完成的,即应用服务器加载DispatcherServlet调用init()方法时才能触发这项工作。所以,如果在web.xml中配置DispatcherServlet时不设置

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

的话,那么很有可能应用服务器会在当用户实际访问请求到来时才加载DispatcherServlet,这样的话注册Controller, 解析request method, 注册RequestMapping, HandlerAdapter这样的初始化工作都会在响应请求时进行,就会大大延长第一个请求的处理时间。另外,DispatcherServlet持有了根容器的子容器引用,大量的状态信息都保存在它和它的父类当中,如果这个servlet中途被应用服务器销毁,那么也会带来重新加载的时间开销。

以上仅理论推测,未实际测试

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
SpringMVCweb.xml文件是用来配置DispatcherServlet的。DispatcherServlet是整个SpringMVC的核心,它负责接收所有的请求并将请求分发给对应的Controller进行处理。 在web.xml,我们需要配置DispatcherServlet的映射路径、上下文配置文件、字符编码等信息。以下是一个简单的web.xml配置示例: ``` <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0"> <display-name>SpringMVC</display-name> <!-- 配置DispatcherServlet --> <servlet> <servlet-name>dispatcherServlet</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <!-- 配置SpringMVC上下文配置文件 --> <init-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/spring-mvc.xml</param-value> </init-param> <!-- 配置DispatcherServlet映射路径 --> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>dispatcherServlet</servlet-name> <!-- 配置DispatcherServlet映射路径 --> <url-pattern>/</url-pattern> </servlet-mapping> <!-- 配置字符编码过滤器 --> <filter> <filter-name>encodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> <init-param> <param-name>forceEncoding</param-name> <param-value>true</param-value> </init-param> </filter> <filter-mapping> <filter-name>encodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> </web-app> ```

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值