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,通过官网的配置,基本通过

	<link rel='stylesheet' href='/webjars/bootstrap/3.1.0/css/bootstrap.min.css'>
是完全可以找到资源的,但是此种方式不利于版本的更新、替换,还有另外一种方式可以在使用中脱离版本的依赖,就是如下方式

	<link rel='stylesheet' href='/webjars/bootstrap/css/bootstrap.min.css'>
但是你会发现在xml中按照官网的配置,还是一直出现404的问题,官网配置说明宁如下


注意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的资源解析器,而官网上恰恰没有做这块配置的说明,导致虽然引入了依赖包,但是通过

<link rel='stylesheet' href='/webjars/bootstrap/css/bootstrap.min.css'>

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


解决办法:

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

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

    <mvc:resources mapping="/webjars/**" location="classpath:/META-INF/resources/webjars/">
    	<mvc:resource-chain resource-cache="false" auto-registration="false">
    		<mvc:resolvers>
    			<bean class="org.springframework.web.servlet.resource.WebJarsResourceResolver"></bean>
    			<bean class="org.springframework.web.servlet.resource.PathResourceResolver"></bean>
    		</mvc:resolvers>
    	</mvc:resource-chain>
    </mvc:resources>
注意我的servelet版本是2.X,如果你的是3.x那么location="classpath:/META-INF/resources/webjars/"会有所差异,其他没有变化,通过上述配置你在使用webjars的资源时,既可以不依赖,也不会再出现404的问题!























评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值