springmvc配置文件支持多视图

2014/07/13 2036点热度 0人点赞 0条评论

1)springmvc拦截器的配置

2)静态资源访问的配置

3)注解扫描的配置

4)默认首页的配置

5)多视图的配置

    实现了jsp和freemarker的配置

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" 
       xmlns:mvc="http://www.springframework.org/schema/mvc" 
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
       xmlns:p="http://www.springframework.org/schema/p" 
       xmlns:context="http://www.springframework.org/schema/context" 
       xsi:schemaLocation="http://www.springframework.org/schema/beans 
						   http://www.springframework.org/schema/beans/spring-beans-3.2.xsd 
						   http://www.springframework.org/schema/context 
	 					   http://www.springframework.org/schema/context/spring-context-3.2.xsd 
						   http://www.springframework.org/schema/mvc 
						   http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd">

  <!-- springmvc 配置文件
                 开启注解
                 只扫描Controller类的注解
   -->
    <!-- 注解支持 -->  
	<mvc:annotation-driven/>
   <!-- 拦截器 -->  
    <mvc:interceptors>  
        <!-- 多个拦截器,顺序执行 -->  
        <mvc:interceptor>  
           <mvc:mapping path="/**" /><!-- 如果不配置或/*,将拦截所有的Controller -->  
           <bean class="com.yxkong.common.interceptor.WebCommonInterceptor"></bean>  
        </mvc:interceptor>  
        <mvc:interceptor>  
           <mvc:mapping path="/**" /><!-- 如果不配置或/*,将拦截所有的Controller -->  
           <bean class="com.yxkong.common.interceptor.CommonInterceptor"></bean>  
        </mvc:interceptor>  
    </mvc:interceptors>  
	<!-- 对静态资源的访问,使用默认的servlet,在web.xml的DispatcherServlet拦截器之前配置
	   <servlet-mapping>
          <servlet-name>default</servlet-name>
          <url-pattern>*.jpg(这里配置对应的资源)</url-pattern>
       </servlet-mapping>
            也可以使用   
         <mvc:resources mapping="/images/**" location="/images/" />   
              mapping:映射到ResourceHttpRequestHandler进行处理
              location:指定静态资源的位置.可以是web application根目录下、jar包里面,这样可以把静态资源压缩到jar包中
              cache-period:可以使得静态资源进行web cache 
	 -->
	<mvc:default-servlet-handler />  
	<!-- <context:component-scan base-package="com.yxkong.system.web.controller" />-->
	<!-- <context:component-scan base-package="com.yxkong.common.web.controller" />-->
	<!-- 自动扫描controller包下的所有类,使其认为spring mvc的控制器 -->
	<context:component-scan base-package="com.yxkong" >
     	<!-- 允许定义过滤器将基包下的某些类纳入或排除-->
		<context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/> 
	   <!-- 排除 -->
	   <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Service"/>
	   
	</context:component-scan>
	<!-- 当请求应用程序首页时,将执行/tologin请求,还可以设定成redirect -->
	<mvc:view-controller path="/" view-name="forward:/tologin" />
	
	
    <!-- 启动springmvc的注解功能,完成请求和注解pojo的映射 
   		@Controller:用于标识是处理器类;
		@RequestMapping:请求到处理器功能方法的映射规则;
		@RequestParam:请求参数到处理器功能处理方法的方法参数上的绑定;
		@ModelAttribute:请求参数到命令对象的绑定;
		@SessionAttributes:用于声明session级别存储的属性,放置在处理器类上,通常列出模型属性(如@ModelAttribute)对应的名称,则这些属性会透明的保存到session中;
		@InitBinder:自定义数据绑定注册支持,用于将请求参数转换到命令对象属性的对应类型;
    -->
   
    <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"/>
    <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
       <property name="messageConverters">
          <list>
             <!-- json转换器 -->
             <!-- 避免IE执行AJAX时,返回JSON出现下载文件 -->
			 <bean id="mappingJacksonHttpMessageConverter" class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">
				<property name="supportedMediaTypes">
					<list>
						<value>text/html;charset=UTF-8</value>
					</list>
				</property>
			 </bean>
			 <!-- 设置文本的编码方式,防止乱码 -->
             <bean class = "org.springframework.http.converter.StringHttpMessageConverter">     
                <property name = "supportedMediaTypes">  
                      <list>  
                          <value>text/html;charset=UTF-8</value>     
                     </list>     
                </property>     
             </bean>    
          </list>
       </property>
      
    </bean>
    <!-- 
      org.springframework.web.servlet.view.ResourceBundleViewResolver用于多个视图集成时,
       ResourceBundleViewResolver是通过解析资源文件来解析请求输出文件的。
        <property name="basename" value="views"></property>,即表示在/WEB-INF/classes路径下有一个
        views.properties文件,
        views.properties的内容为
        welcome.(class)=org.springframework.web.servlet.view.JstlView
        welcome.url=welcome.jsp
        freemarker.(class)=org.springframework.web.servlet.view.freemarker.FreeMarkerView
        freemarker.url=freemarker.ftl
                      默认是views.properties,如果是其他的属性文件,则将value指向对应的名称开头的所有的properties 
                   每一个页面都要配置对应的解析方式
                   可以通过basename 配置路径 com.yxkong.views 此时spring会去com.yxkong目录下找以view开头的properties文件
     <bean class="org.springframework.web.servlet.view.ResourceBundleViewResolver">

        <property name="basename" value="views"></property>
    </bean>
     -->
   <!-- 
            视图解析器链
           当定义多个视图解析器的时候,就会形成视图解析器链。当controller返回一个视图名称的时候,会在视图解析器链上按照排序顺序进行处理。
           每个视图解析器都实现了ordered接口,数值越小就越靠前,默认都是最大值,order属性时Integer类型
     注意:像InternalResourceViewResolver这种能解析所有的视图,即永远能返回一个非空View对象的ViewResolver一定要把它放在ViewResolver链的最后面
    -->
  
   <!-- 展示层使用freemarker-->
    <bean  id="freemarkerView" class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">
        <property name="cache" value="false"/>
        <!-- 给方法名加前缀,一般没必要(注意这里不是路径)
        <property name="prefix" value="fm_"/>  
        -->
        <!-- 模板后缀,指定ftl页面为模板 -->
        <property name="suffix" value=".ftl"/>
        <!-- 使用对应的freemarker模板类来解析视图 -->
        <property name="viewClass" value="org.springframework.web.servlet.view.freemarker.FreeMarkerView"/>
        <property name="exposeSpringMacroHelpers" value="true"/>
        <!-- 允许访问请求属性,默认为false -->
        <property name="exposeRequestAttributes" value="true"/>
        <!-- 允许访问会话属性,默认为false -->
        <property name="exposeSessionAttributes" value="true"/>
        <!-- 页面上下文,类似于request.contextPath -->
        <property name="requestContextAttribute" value="rc"/>
        <!-- 模板输出内容编码,此处应与defaultEncoding保持一致 -->
        <property name="contentType" value="text/html;charset=UTF-8"/>
        <!-- 接卸顺序,数字越小,访问的时候先使用该解析器去解析 -->
        <property name="order" value="0"/>
    </bean>
    <bean id="freemarkerConfig" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
       <!-- 模板文件所在目录  templateLoaderPath配置单个, templateLoaderPaths配置多个 -->
       <property name="templateLoaderPaths">
          <list>
             <value>/WEB-INF/common/</value>
             <value>/WEB-INF/pages/</value>
          </list>
       </property>
       <!-- FreeMarker属性配置 -->
       <property name="freemarkerSettings">
           <props>
              <!-- 
				 每隔多长时间检查模板是否更新,单位为秒
				 设置时间过长,会造成开发的时候修改.ftl后页面不刷新
				 建议生产系统设置时间长一些
				 如果不经常更新模板可将更新的延迟时间设定长一点
			 -->
             <prop key="template_update_delay">2</prop>
             <prop key="defaultEncoding">UTF-8</prop>
             <prop key="url_escaping_charset">UTF-8</prop>
             <prop key="locale">zh_CN</prop>
             <prop key="boolean_format">true,false</prop>
             <prop key="datetime_format">yyyy-MM-dd HH:mm:ss</prop>
             <!-- <result column="birthday" property="birthday" jdbcType="DATE" />
                  date_format 映射的是jdbcType,不是bean中的类型
              -->
             <prop key="date_format">yyyy-MM-dd</prop>
             <prop key="time_format">HH:mm:ss</prop>
             <prop key="number_format">0.######</prop>
             <prop key="whitespace_stripping">true</prop>
           </props>
       </property>
    </bean>
      <!--jsp视图解析器-->
	<bean id="viewResolverCommon" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<property name="prefix" value="/WEB-INF/pages/"/>  
    	<property name="suffix" value=".jsp"/><!--可为空,方便实现自已的依据扩展名来选择视图解释类的逻辑 -->
		<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
		<property name="order" value="1"/>
	</bean>
  <!-- velocity视图解析器
    <bean id="velocityViewResolver" class="org.springframework.web.servlet.view.velocity.VelocityViewResolver">
        <property name="cache" value="true"/>
        <property name="prefix" value="/WEB-INF/pages/"/>
        <property name="suffix" value=".vm"/>
        <property name="order" value="2"/>
    </bean>
     -->
    <!-- velocity环境配置
    <bean id="velocityConfig" class="org.springframework.web.servlet.view.velocity.VelocityConfigurer">
        velocity配置文件路径 
        <property name="configLocation" value="/WEB-INF/velocity.properties"/>
         velocity模板路径
        <property name="resourceLoaderPath" value="/WEB-INF/velocity/"/>
    </bean>
   -->
</beans>

yxkong

这个人很懒,什么都没留下

文章评论