读书人

Spring3.0.4MVC的resources应用之旅

发布时间: 2012-09-29 10:30:01 作者: rapoo

Spring3.0.4MVC的resources使用之旅

?? 在使用RESTful URI之前必须扫清对静态资源访问的问题,相信大家以前都用UrlRewrite Filter方式对配置uri pattern的静态资源进行URL rewrite.自从Spring3支持RESTful uri后,最新的Spring3.0.4巧妙的解决了对静态资源的访问,解决了开发时期对静态资源访问的问题.

?

?? 先说下Spring3.0.4对静态资源访问的原理.通过<resources/>或者<mvc:resources/>元素,把mapping的URI注册到SimpleUrlHandlerMapping的urlMap中,key为mapping的URI pattern值,而value为ResourceHttpRequestHandler,这样就巧妙的把对静态资源的访问由HandlerMapping来得到ResourceHttpRequestHandler来处理返回,所以就支持classpath目录,jar包内静态资源的访问.

?

?? 配置过程遇到的问题主要还是启动时BeanDefinitionXMLParser认不出<resources/>,<mvc:resources/>元素而抛出的异常.解决的方法一是正确的xmlns,xsi:schemaLocation.如下:

for <resources/>

?

?

for <mvc:resources/>

???

??? 光有这些xml头还不行,需要对http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd查找的问题.她会到classpath中查找,所以只须把org.springframework.web.servlet-3.0.4.RELEASE.jar放到web lib目录下,就能查找到xsd,并不需要在IDE中自定义一个User Specified Entries.

?

?????另外需要注意的一点是,不要对SimpleUrlHandlerMapping设置defaultHandler.因为对static uri的defaultHandler就是ResourceHttpRequestHandler,否则无法处理static resources request.

?

????? 但还有个问题困扰这我没搞明白.我这个web工程已对org.springframework.web.servlet.3.0.4(原码工程导入)工程依赖的,为什么非要把org.springframework.web.servlet-3.0.4.RELEASE.jar放入到web lib下才查找到spring-mvc-3.0.xsd?为什么不到依赖的org.springframework.web.servlet.3.0.4原码工程中查找spring-mvc-3.0.xsd?

?????



http://www.springframework.org/schema/mvc111是我配置的User Specified Entries

我的目录结构webapp下面有assets文件夹,其下有images,其下也有mstarlogo.gif图片。可是我的URL变动还是取不到固定的图片资源。请教。
如果spring的mvc:resouces标签没有作用到JSP页面的话,那我这样的写法肯定是错的,这样是应用到根目录了,所以我现在对于这个mvc:resources怎么使用还是不清楚。请教。谢谢。
<mvc:resources mapping="/assets/**" location="/scripts/"/> 还能理解它有一定的意义
其实就是将页面发现了有引用 "/scripts/**" 的路径引用转到工程的/scripts/目录取资源,所以我的页面设计为了保证能取到资源还是必须要有带工程名的前缀,比方说


目录是可以了,但是那个图标文件死活都找不到呀,总不能弄个根目录映射吧? 17 楼 bingguo 2012-03-16 lnzxl 写道只须把org.springframework.web.servlet-3.0.4.RELEASE.jar放到web lib目录下,就能查找到xsd


但是org.springframework.web.servlet-3.0.4.RELEASE.jar文件中并没有xsd文件啊,而且我这个jar本来就lib文件夹下的,也还是出现cvc-complex-type.2.4.c: The matching wildcard is strict, but no declaration can be found for element 'mvc:resources'。
18 楼 bingguo 2012-03-16 bingguo 写道lnzxl 写道只须把org.springframework.web.servlet-3.0.4.RELEASE.jar放到web lib目录下,就能查找到xsd


但是org.springframework.web.servlet-3.0.4.RELEASE.jar文件中并没有xsd文件啊,而且我这个jar本来就lib文件夹下的,也还是出现cvc-complex-type.2.4.c: The matching wildcard is strict, but no declaration can be found for element 'mvc:resources'。

为什么我的还是报错,描述不到呐,我的是3.0.5的,

读书人网 >VC/MFC

热点推荐