2013-09-28 74 views
1

我有一個Spring Web應用程序,其中調度程序Servlet僅用於靜態文件。還有一個Jersey servlet用於JavaScript調用API,映射到另一個URL模式,與我的問題不太相關。Spring調度程序Servlet中靜態資源的路徑別名

此刻我的整個調度配置是這樣的:

@Configuration 
@EnableWebMvc 
public class DispatcherConfig extends WebMvcConfigurerAdapter { 

    @Override 
    public void addResourceHandlers(ResourceHandlerRegistry registry) { 
     registry.addResourceHandler("/**").addResourceLocations(
       "classpath:/www/"); 
    } 
} 

有一個main.html文件右下www在我的類路徑中。如果有請求進入/main.html,則文件已正確傳送。大。

現在,我希望這個文件能夠在/,/part和其他一些路徑上返回請求。基本上,我希望在這裏使用某種路徑別名,或者直接從路徑映射到文件。我怎樣才能實現它?

+0

使用具有多個「值」路徑的'@ RequestMapping'方法可能更容易。 –

+0

@SotiriosDelimanolis有一個'@ Controller'?我甚至沒有(或想要)任何控制器。 –

+1

難道你不能僅僅使用你的servlet容器的_default servlet_來靜態服務嗎? – madhead

回答

1

您可以使用容器的default servlet來服務於static resources

<servlet-mapping> 
    <servlet-name>default</servlet-name> 
    <url-pattern>*.html</url-pattern> 
</servlet-mapping> 

而且從到文件路徑的映射可以用這個定義:

@Configuration 
@EnableWebMvc 
public class DispatcherConfig extends WebMvcConfigurerAdapter { 
... 

    @Override 
    public void addViewControllers(ViewControllerRegistry registry) { 
     registry.addViewController("/pathToStatic").setViewName("/static.html"); 
    } 
... 

} 

上述映射將轉發請求/pathToStatic到靜態視圖static.html