SpringMVC引入静态org.webjars中资源404
2016-12-04 00:44
190 查看
首先对于webjars的介绍这里不多说,直接去官网查看说明,官网地址 http://www.webjars.org
问题出现原因:
在了解Spring整合websocket时几乎所有的demo中都是使用的webjars的方式引入静态资源,而且示例中所有的资源配置都是通过代码实现,这里我着重说明在xml配置中,webjars出现404的问题。
通过http://www.webjars.org/documentation#springmvc官网说明了解基本的配置,一定注意项目中使用servlet版本,到底2.X还是3.X,通过官网的配置,基本通过
![](http://img.blog.csdn.net/20161204004850983?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
注意“When using Spring Framework version 4.2 or higher, it will automatically detect the
on the classpath and use it to automatically resolve the version of any WebJar assets for you”这段说明,它大概的意思是如果你用的spring4.2+的版本,那么spring会自动对资源的路径进行解析,那么通过上面的方式引入资源就不会出现404,然并卵!!!,这里我们在看一下通过纯java代码是如何实现的。代码如下
这一行,这是明确的在配置webJars的资源解析器,而官网上恰恰没有做这块配置的说明,导致虽然引入了依赖包,但是通过
这种方式引入静态资源还是会出现404的情况。
解决办法:
1、如果你是使用的纯java代码进行配置,那么通过上面的代码就已经可以。
2、如果你是通过xml文件的方式进行配置,配置如下:
问题出现原因:
在了解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-locatorlibrary
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的问题!
相关文章推荐
- web.xml配置SpringMVC时导致访问的页面资源不存在,跳转页面时出现404
- SpringMVC项目中静态资源js,css文件访问不到404
- springMVC访问静态资源:为什么图片/js/css等文件写在jsp中是404不能获取
- mavn项目(springMVC) 引入静态资源(js、css)等
- 引入jquery等(静态资源)报404
- Springmvc关于静态资源的404问题
- springmvc出现页面引用的js,css等静态资源访问出现404问题
- SpringMVC之Web引入静态资源与规范请求后缀(三)
- 使用springmvc做项目时资源的的引入问题 (CSS/JS/IMAGES)
- springmvc如何引入css等资源
- springmvc 静态资源引入报错
- (springmvc)页面找不到静态资源文件Failed to load resource: the server responded with a status of 404 (Not Found)
- springMVC 引入静态资源Js的方式
- springMVC 引入静态资源Js的方式
- Springmvc框架静态资源访问404问题解决
- 配置springMVC之后,引入js,css等资源处理
- springMVC 请求404异常或静态资源无法访问
- springMVC前端请求找不到资源路径(HTTP Status 404)问题
- SpringMVC maven项目引入web资源无效的原因及解决办法
- springMvc静态资源引入的两种方式