spring mvc+velocity 打成war(war不解压)发布

最近在学习velocity。搞了个简单的mvc,然后打成war包发布,然后我的tomcat是不解压war包的,也就是说在webapps文件夹里面,war包不解压成文件夹格式。

tt

然后运行我的webapp的时候,报错了,报找不到我的velocity资源文件,找了下网上的资料,发现我的velocity的ResourceLoader配置的是FileResourceLoader,这种resourceLoader是读文件目录的,也就是说,不解压war的话,那就是读取不到资源,如果tomcat设置了不解压war,那就会报错,如果是解压的war包,那就没问题。

如果是直接以不解压的war包进行发布的话,需要用另外一个resourceLoader, 也就是org.apache.velocity.tools.view.WebappResourceLoader

但这个resourceLoader需要配置servletContext,刚开始我运行的项目的时候,总是报没有设置servletContex,于是我反编译了下spring-webmvc.jar,发现spring2.0版本的jar的VelocityConfigurer是没有继承ServletContextAware这个接口的,我在网上也找了下资料,也说只有spring 2.5.6后面的版本才有,于是我现在

2.5.6的jar试了下,嗯,确实OK了

我的velocity的配置:

<!-- Velocity配置 -->
    <bean id="velocityConfig" class="org.springframework.web.servlet.view.velocity.VelocityConfigurer">
        <property name="configLocation" value="/WEB-INF/classes/web/velocity.properties"/>
    </bean>
    <bean id="velocityViewResolver" class="org.springframework.web.servlet.view.velocity.VelocityLayoutViewResolver">
        <property name="layoutUrl" value="layout/innerLayout.vm"/>
        <property name="order" value="1"/>
        <property name="cache" value="true"/>
        <property name="prefix" value=""/>
        <property name="suffix" value=".vm"/>
        <property name="dateToolAttribute" value="dateTool"/>
        <property name="numberToolAttribute" value="numberTool"/>
        <property name="exposeSpringMacroHelpers" value="true"/>
        <property name="requestContextAttribute" value="requestContext"/>
        <property name="contentType">
            <value>text/html;charset=UTF-8</value>
        </property>
        <!--工具配置文件位置
        <property name="toolboxConfigLocation">
            <value>/WEB-INF/toolbox.xml</value>
        </property>
        -->
    </bean>
    <!-- Velocity配置 -->

---------------------------------------------------------------------------------------------

velocity.properties

input.encoding=UTF-8
output.encoding=UTF-8
#resource.loader=file
#file.resource.loader.class=org.apache.velocity.runtime.resource.loader.FileResourceLoader
#webapp.resource.loader.cache=false
resource.loader=webapp
webapp.resource.loader.class=org.apache.velocity.tools.view.WebappResourceLoader
webapp.resource.loader.path=/WEB-INF/velocity/
webapp.resource.loader.cache=false
velocimacro.library=macros/pageNavigationDetail.vm,macros/pageNavigation.vm,macros/errorMacro.vm
directive.parse.max.depth=5
velocimacro.permissions.allow.inline=true
velocimacro.permissions.allow.inline.to.replace.global=false
velocimacro.permissions.allow.inline.local.scope=true
velocimacro.context.localscope=true

相关jar包见附件

猜你喜欢

转载自jjjssh.iteye.com/blog/2065902