簡體   English   中英

configureDefaultServletHandling是什么意思?

[英]What does configureDefaultServletHandling means?

我試圖理解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(映射到“/”)來提供資源。 如果你使用這個,你需要注意幾件事。 引自文檔 -

這允許將DispatcherServlet映射到“/”(從而覆蓋容器的默認Servlet的映射),同時仍允許容器的默認Servlet處理靜態資源請求。 它配置DefaultServletHttpRequestHandler,其URL映射為“/ **”,並且相對於其他URL映射具有最低優先級。

此處理程序將所有請求轉發到默認Servlet。 因此,重要的是它按照所有其他URL HandlerMappings的順序保持最后。 如果您使用或者如果您要設置自己的自定義HandlerMapping實例,請確保將其order屬性設置為低於DefaultServletHttpRequestHandler的值,即Integer.MAX_VALUE。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM