SpringMVC引入静态org.webjars中资源404

首先对于webjars的介绍这里不多说,直接去官网查看说明,官网地址  http://www.webjars.org


问题出现原因:

在了解Spring整合websocket时几乎所有的demo中都是使用的webjars的方式引入静态资源,而且示例中所有的资源配置都是通过代码实现,这里我着重说明在xml配置中,webjars出现404的问题。

通过http://www.webjars.org/documentation#springmvc官网说明了解基本的配置,一定注意项目中使用servlet版本,到底2.X还是3.X,通过官网的配置,基本通过

	
是完全可以找到资源的,但是此种方式不利于版本的更新、替换,还有另外一种方式可以在使用中脱离版本的依赖,就是如下方式

	
但是你会发现在xml中按照官网的配置,还是一直出现404的问题,官网配置说明宁如下

SpringMVC引入静态org.webjars中资源404_第1张图片

注意When using Spring Framework version 4.2 or higher, it will automatically detect the webjars-locator library on the classpath and use it to automatically resolve the version of any WebJar assets for you这段说明,它大概的意思是如果你用的spring4.2+的版本,那么spring会自动对资源的路径进行解析,那么通过上面的方式引入资源就不会出现404,然并卵!!!,这里我们在看一下通过纯java代码是如何实现的。代码如下

@Configuration
@EnableWebMvc
public class WebConfig extends WebMvcConfigurerAdapter {
	@Override
	public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
		configurer.enable();
	}

	@Override
	public void addResourceHandlers(ResourceHandlerRegistry registry) {
		registry.addResourceHandler("/webjars/**").addResourceLocations("/webjars/")
			.resourceChain(false)
				.addResolver(new WebJarsResourceResolver())
				.addResolver(new PathResourceResolver());
	}
}
网上很多的实例都是通过上面的方式进行加载的,一定要注意
.addResolver(new WebJarsResourceResolver())

这一行,这是明确的在配置webJars的资源解析器,而官网上恰恰没有做这块配置的说明,导致虽然引入了依赖包,但是通过

这种方式引入静态资源还是会出现404的情况。


解决办法:

1、如果你是使用的纯java代码进行配置,那么通过上面的代码就已经可以。

2、如果你是通过xml文件的方式进行配置,配置如下:

    
    	
    		
    			
    			
    		
    	
    
注意我的servelet版本是2.X,如果你的是3.x那么location="classpath:/META-INF/resources/webjars/"会有所差异,其他没有变化,通过上述配置你在使用webjars的资源时,既可以不依赖,也不会再出现404的问题!























你可能感兴趣的:(技术经验)