Spring MVC下配置Velocity

配置过程中走了一些弯路 ... 将代码留下,备案.

 velocityTool summary (有详细的toolsapi): 

http://velocity.apache.org/tools/releases/2.0/summary.html

 

dispatcher-servlet.xml 配置如下:

 

<bean id="velocityConfig" class="org.springframework.web.servlet.view.velocity.VelocityConfigurer">
  		<property name="resourceLoaderPath" value="/web/default/velocity/"/>
  		  <property name="velocityProperties">  
          <props>  
            <prop key="directive.foreach.counter.name">loopCounter</prop>  
            <prop key="directive.foreach.counter.initial.value">0</prop>  
            <prop key="input.encoding">UTF-8</prop>  
            <prop key="output.encoding">UTF-8</prop>  
            <prop key="directive.foreach.counter.name">velocityCount</prop>  
            <prop key="directive.foreach.counter.initial.value">1</prop>  
            <prop key="velocimacro.library.autoreload">true</prop>  
          </props>  
        </property>  
	</bean>
  <!-- spring 视图解析器配置,这里是我自己写的解析器 -->  
    <bean id="viewResolver" class="spring.tool.MultipleViewResolver">  
        <property name="resolvers">  
            <map>  
                <entry key="jsp">  
                    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">    
                        <property name="prefix" value="/web/default/screen/"/>      
                        <property name="suffix" value=".jsp"/>
                    </bean>    
                </entry>  
                <entry key="vm">  
                    <bean class="org.springframework.web.servlet.view.velocity.VelocityViewResolver">    
	  					 <property name="exposeRequestAttributes" value="true" />    
                        <property name="contentType" value="text/html;charset=UTF-8" />    
                          <property name="prefix" value=""/>
                         <property name="suffix" value=".vm"/>
                    </bean>    
                </entry>  
            </map>  
        </property>  
    </bean>  

 

 改造后的viewresolver,可以支持多种模板渲染,根据文件后缀区分

 

package spring.tool;

import java.util.Locale;
import java.util.Map;

import org.springframework.web.servlet.View;
import org.springframework.web.servlet.ViewResolver;

/**
 * @author hp
 *
 */
public class MultipleViewResolver implements ViewResolver {
	 private Map<String, ViewResolver> resolvers;    
     
	    public void setResolvers(Map<String, ViewResolver> resolvers)     
	    {    
	        this.resolvers = resolvers;    
	    }    
	/* (non-Javadoc)
	 * @see org.springframework.web.servlet.ViewResolver#resolveViewName(java.lang.String, java.util.Locale)
	 */
	@Override
	public View resolveViewName(String viewName, Locale locale) throws Exception {
		int n = viewName.lastIndexOf(".");  
        if(n==(-1)) return null;    
        String suffix = viewName.substring(n+1);  
          
        ViewResolver resolver = resolvers.get(suffix);    
        if(resolver!=null)    
            return resolver.resolveViewName(viewName.substring(0, n), locale);   
          
        return null;  
	}

}

 

web.xml配置

 

  <context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>
			classpath*:/applicationContext.xml
		</param-value>
  </context-param>
   <listener>
		<listener-class>
			org.springframework.web.context.ContextLoaderListener
		</listener-class>
  </listener>
  
  <servlet>
         <servlet-name>springdispatcher</servlet-name>
         <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
         <load-on-startup>1</load-on-startup>
     </servlet>
 

 
    <servlet-mapping>
         <servlet-name>springdispatcher</servlet-name>
         <url-pattern>*.htm</url-pattern>
     </servlet-mapping>

 

 

 

exposeRequestAttributes:默认值false,设置是否所有的request属性在与模板进行合并之前添加到model中。(可以理解为request范围内包含的所有对象,而不是一个真正的Request对象。)

exposeSessionAttributes:默认值false,设置是否所有的session属性在与模板进行合并之前添加到model中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值