weblogic下部署工程静态资源文件 *.js不能访问
最近把工程部署 到webogic容器下,问题颇多,在Tomcat下运行正常的应用,在weblogic下频频抽风,先是部署不起来报错,具体报错原因参看上篇文章javaweb项目Tomcat转移到weblogic部署失败解决 ,解决完部署问题,终于可能访问页面了,又出现页面所有的js页面无法解析,试着访问js路径,报404错误,日志中频报####><Connection
最近把工程部署 到webogic容器下,问题颇多,在Tomcat下运行正常的应用,在weblogic下频频抽风,先是部署不起来报错,具体报错原因参看上篇文章java web项目Tomcat转移到weblogic部署失败解决 ,解决完部署问题,终于可能访问页面了,又出现页面所有的js页面无法解析,试着访问js路径,报404错误,日志中频报
####<2015-12-25 上午10时03分17秒 CST> <Error> <HTTP> <yao-pc> <AdminServer> <[ACTIVE] ExecuteThread: '15' for queue: 'weblogic.kernel.Default (self-tuning)'> <<WLS Kernel>> <> <e00ce85f4675ab26:6ad8874a:151d6cde952:-8000-000000000000009a> <1451008997598> <BEA-101083> <Connection failure.
java.net.ProtocolException: Didn't meet stated Content-Length, wrote: '0' bytes instead of stated: '-1' bytes.
at weblogic.servlet.internal.ServletOutputStreamImpl.ensureContentLength(ServletOutputStreamImpl.java:457)
at weblogic.servlet.internal.ServletResponseImpl.ensureContentLength(ServletResponseImpl.java:1448)
at weblogic.servlet.internal.ServletResponseImpl.send(ServletResponseImpl.java:1530)
at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1498)
at weblogic.work.ExecuteThread.execute(ExecuteThread.java:256)
at weblogic.work.ExecuteThread.run(ExecuteThread.java:221)
>
百度搜了很久,终于解决了:
spring mvc - 对静态资源的处理
spring对静态资源文件(js css htm html jpg jepg png bmp)等的处理方式如下:
一、交由上级web容器处理,在web.xml中的org.springframework.web.servlet.DispatcherServlet 配置之前加入如下代码:
1
2
3
4
|
<servlet-mapping>
<servlet-name>
FileServlet
</servlet-name>
<url-pattern>*.js</url-pattern>
</servlet-mapping>
|
根据不同的资源文件制定不同的映射机制,其中servlet-name在tomcat中默认是default,该servlet在tomcat\config\web.xml文件中默认配置,不同的应用服务器对应的静态资源文件处理的servlet名称不尽相同,如下:
1
2
3
4
5
|
tomcat,jboss,glassfish,jetty : defaut;
weblogic : FileServlet;
websphere : SimpleFileServlet;
resin : resin-file;
GAE : _ah_default
|
二、交由spring mvc:resources 处理
在dispatchServlet.xml文件中增加
<mvc:resources location="/WEB-INF/resource/" mapping="/resource/**"/>
该方式虽然静态资源文件可以访问了,但是如果系统配置了通配符的拦截器,静态资源还是会被拦截器拦截,如下:
1
2
3
4
5
6
|
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path=
"/*"
/>
<bean
class
=
"com.xinlong.cms.front.interceptor.CmsFrontInterceptor"
></bean>
</mvc:interceptor>
</mvc:interceptors>
|
因此需要修改,如下:
1
2
3
4
5
6
7
|
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path=
"/*"
/>
<mvc:exclude-mapping path=
"/resource/**"
/>
<bean
class
=
"com.xinlong.cms.front.interceptor.CmsFrontInterceptor"
></bean>
</mvc:interceptor>
</mvc:interceptors>
|
到此还有个问题mvc:exclude-mapping 标签不被spring-mvc-3.0.xsd支持,该配置在spring-mvc-3.2.xsd中,可以通过http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd获取,因此需要在spring-mvc-3.0.xsd文件中增加该标签,处理办法很简单,从网上下载spring-mvc-3.2.xsd,找到标签后,再找到spring.web.servlet-3.0.5.jar中的spring-mvc-3.0.xsd文件,将标签加入即可
原文地址:http://my.oschina.net/ydsakyclguozi/blog/468980更多推荐
所有评论(0)