我在弹簧靴中使用simpleurlhandlermpapping创建了一个专用的URL映射器。
在下面,您可以看到一个仅使用一个控制器的简化代码,并且仅映射2个urls:/url1和/url2到pagecontroller。
我的问题是,现在春季不仅发送/url1请求,还会发送所有静态(js,css,...)请求。
为什么会发生这种情况?如何避免它?
@Configuration
public class SimpleUrlHandlerMappingConfig {
@Autowired
private PageRepository pageRepository;
@Bean
public SimpleUrlHandlerMapping simpleUrlHandlerMapping() {
SimpleUrlHandlerMapping simpleUrlHandlerMapping
= new SimpleUrlHandlerMapping();
Map<String, Object> urlMap = fillMappingsFromDb();
simpleUrlHandlerMapping.setUrlMap(urlMap);
return simpleUrlHandlerMapping;
}
private Map<String, Object> fillMappingsFromDb() {
List<String> sefUrls = pageRepository.findMappings();
Map<String, Object> urlMap = new HashMap<>();
for (String sefUrl : sefUrls) {
urlMap.put(sefUrl, page());
}
return urlMap;
}
@Bean
public PageController page() {
return new PageController();
}
}
您可以指定要从默认调度器servlet中排除的资源。
假设您的静态内容位于名为资源的目录中:
使用xml
<mvc:resources mapping="/resources/**" location="/resources/" />
在扩展WebMvcConfigurerAdapter
@Override
public void addResourceHandlers(final ResourceHandlerRegistry registry) {
registry.addResourceHandler("/resources/**").addResourceLocations("/resources/");
}