欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-03-04 16:47:10
...

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

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

 

然后运行我的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包见附件

 

 

 

 

  • spring mvc+velocity 打成war(war不解压)发布
            
    
    
        springmvcvelocitywarWebappResourceLoader 
  • 大小: 18.9 KB
  • spring mvc+velocity 打成war(war不解压)发布
            
    
    
        springmvcvelocitywarWebappResourceLoader 
  • 大小: 17.3 KB