gpt4 book ai didi

java - configureDefaultServletHandling 是什么意思?

转载 作者:IT老高 更新时间:2023-10-28 13:51:38 26 4
gpt4 key购买 nike

我试图了解 Spring MVC 是如何工作的,但我不了解我的 Spring 配置中的这部分代码:

@Override
public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
configurer.enable();
}

当它在我的 WebContextApplication 类中时,一切正常,当它不存在时,一切正常。那么这种方法的目的是什么?我的 WebContextApplication 类应该有这个方法吗?为什么?

最佳答案

正如 JB Nizet 已经尝试解释的那样,两者都用于提供静态资源。

所以你的问题是你的基于 Java 的 Spring 配置有

@Override 
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/assets/**").addResourceLocations("/resources/bootstrap/");
}

那你为什么需要

@Override
public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
configurer.enable();
}

或者为什么 <mvc:default-servlet-handler/>如果你有

<mvc:resources mapping="/assets/**" location="/resources/bootstrap/" />

在xml配置方面。


要根据您提出的要求回答您的问题,您无需覆盖 configureDefaultServletHandling()因为您已经覆盖并提供了静态资源映射。

通过覆盖 addResourceHandlers()您本质上是在问的方法ResourceHttpRequestHandler为提到的资源位置提供服务。

但是,如果您覆盖 configureDefaultServletHandling()并启用它,您实际上是在要求默认 servlet(映射到“/”)来提供资源。如果您使用它,这里有几件事需要注意。引自 docs -

This allows for mapping the DispatcherServlet to "/" (thus overriding the mapping of the container’s default Servlet), while still allowing static resource requests to be handled by the container’s default Servlet. It configures a DefaultServletHttpRequestHandler with a URL mapping of "/**" and the lowest priority relative to other URL mappings.

This handler will forward all requests to the default Servlet. Therefore it is important that it remains last in the order of all other URL HandlerMappings. That will be the case if you use or alternatively if you are setting up your own customized HandlerMapping instance be sure to set its order property to a value lower than that of the DefaultServletHttpRequestHandler, which is Integer.MAX_VALUE.

关于java - configureDefaultServletHandling 是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29396281/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com