如果這感覺重複,我會收集很多人問這個問題,但我一直無法找到有效的答案。在同一路徑上共享靜態內容和mvc控制器
我有一個使用maven構建的web應用程序。我使用Spring 4 MVC提供了一個RESTful Json API。我也有很多靜態內容(html,css,js),我使用Angular.js在數據API上添加了一張漂亮的臉蛋。
對於我的生活,我無法弄清楚如何同時得到這兩個服務,而不會弄亂他們的路徑。
我真的很想去
{APP_ROOT}/people/{id}
在我的瀏覽器,並直接與我的REST API交互,沒有任何廢話約/api/
或/rest/
我真的很想去
{APP_ROOT}/css/style.css
在我的瀏覽器,並送達從src/main/webapp/css/style.css
內容沒有任何廢話約resources
或static
此外,我真的很想CONFI古爾所有這一切都與註解的Java類,而不是有任何
web.xml
,application-context.xml
等
所以,春季調度的servlet應處理所有的REST資源的路徑,然後回落到默認的Tomcat /靜態內容的Jetty處理程序。我認爲這正是場景默認servlet處理程序是用於?我似乎無法得到它的工作。
這些都是我的相關配置類:
WebAppInitializer.java
public class WebAppInitializer extends
AbstractAnnotationConfigDispatcherServletInitializer {
@Override
protected Class<?>[] getRootConfigClasses() {
return new Class<?>[0] ;
}
@Override
protected Class<?>[] getServletConfigClasses() {
return new Class<?>[] { WebConfig.class};
}
@Override
protected String[] getServletMappings() {
return new String[] { "/*" };
}
@Override
protected Filter[] getServletFilters() {
CharacterEncodingFilter characterEncodingFilter = new CharacterEncodingFilter();
characterEncodingFilter.setEncoding("UTF-8");
return new Filter[] { characterEncodingFilter};
}
}
WebConfig.java
@Configuration
@EnableWebMvc
@ComponentScan(basePackages = {"my.example.package"})
public class WebConfig extends WebMvcConfigurerAdapter {
@Override
public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
configurer.enable();
}
}
有了這個配置,我可以與REST API互動,但不是靜態內容。默認的servlet處理程序似乎不起作用。
仙人您好,感謝的響應。 – Dave
這仍然看起來並不理想,因爲我必須手動列出每個文件。或者我需要把某些「靜態」分支放在一邊,這是我試圖避免的主要事情之一。當沒有有效的彈簧控制器時,確實有辦法優雅地回退到提供靜態內容的tomcat/jetty?那不是默認的sevlet處理程序應該做什麼? – Dave
此外,用這種方法,我將如何獲得'索引。html'可直接從瀏覽器中的「{APP_ROOT}」訪問? – Dave