<!--设置加载外在化应用参数 -->
<context:property-placeholder location="classpath:conf/*.properties" />
<!-- 设置使用注解的类所在的jar包 -->
<!-- 开启controller注解支持 -->
<!-- 注:如果base-package=com.stone.web 则注解事务不起作用-->
<context:component-scan base-package="com.stone.web.controller">
<context:exclude-filter type ="annotation" expression= "org.springframework.stereotype.Service" />
</context:component-scan>
<mvc:annotation-driven />
<mvc:interceptors>
<!-- 使用bean定义一个Interceptor,直接定义在mvc:interceptors根下面的Interceptor将拦截所有的请求 -->
<bean class="com.stone.web.interceptor.ApplicationInterceptor"/>
<!--<mvc:interceptor>
<mvc:mapping path="/test/number.do"/>
定义在mvc:interceptor下面的表示是对特定的请求才进行拦截的
<bean class="com.host.app.web.interceptor.LoginInterceptor"/>
</mvc:interceptor> -->
</mvc:interceptors>
<!-- 完成请求和注解POJO的映射,需要把bean部分加入到<context:component-scan base-package="*"/>前面 -->
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" >
<property name="messageConverters">
<list><!-- 默认的编码是 iso-8859-1,修改为:UTF-8 -->
<bean class="org.springframework.http.converter.StringHttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>text/html;charset=UTF-8</value>
</list>
</property>
</bean>
</list>
</property>
</bean>
<!-- 视图解析器 begin -->
<!-- 静态资源处理 -->
<mvc:resources location="/assets/" mapping="/assets/**" />
<mvc:default-servlet-handler/>
<!-- 多媒体解析器 这里申明的id必须为multipartResolver 下载上传文件必须-->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver" />
<!-- 对转向页面的路径解析。prefix:前缀, suffix:后缀 -->
<!--<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" p:prefix="" p:suffix="" />-->
<!-- 设置freeMarker的配置信息 -->
<bean id="freemarkerConfig" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
<property name="templateLoaderPath">
<value>/runtime/</value>
</property>
<property name="freemarkerSettings"><!--设置一些常用的全局变量-->
<props>
<prop key="template_update_delay">0</prop>
<prop key="locale">zh_CN</prop>
<prop key="default_encoding">UTF-8</prop>
<prop key="datetime_format">yyyy-MM-dd HH:mm:ss</prop>
<prop key="date_format">yyyy-MM-dd</prop>
<prop key="time_format">HH:mm:ss</prop>
<prop key="number_format">0.##########</prop>
<prop key="classic_compatible">true</prop>
<prop key="template_exception_handler">ignore</prop>
</props>
</property>
</bean>
<bean id="cnManager" class="org.springframework.web.accept.ContentNegotiationManagerFactoryBean">
<!-- 1、开启默认匹配,如果所有的mediaType都没匹配上,就会使用defaultContentType -->
<property name="defaultContentType" value="text/html"/>
<!-- 2、支持accept-header匹配,这里是否忽略掉accept header,默认就是false -->
<property name="ignoreAcceptHeader" value="true"/>
<!-- 3、支持后缀匹配 -->
<property name="favorPathExtension" value="true"/>
<!-- 4、支持参数匹配 -->
<property name="favorParameter" value="false"/>
<!-- 预设key对应后缀名及参数format的值, 与匹配策略3,4相关 -->
<property name="mediaTypes">
<map>
<entry key="xml" value="application/xml"/>
<entry key="json" value="text/plain"/>
</map>
</property>
</bean>
<!-- ContentNegotiatingViewResolver视图解析器,利用他就可以配置多种返回值 -->
<bean id="viewResolver" class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">
<property name="contentNegotiationManager" ref="cnManager"/>
<!--<property name="order" value="0"/>-->
<property name="viewResolvers">
<list>
<!-- 针对freemarker的视图配置 -->
<bean class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">
<property name="viewClass" value="org.springframework.web.servlet.view.freemarker.FreeMarkerView"/>
<!--<property name="viewNames" value=".ftl"/>-->
<property name="contentType" value="text/html; charset=utf-8"/>
<property name="exposeSpringMacroHelpers" value="true" />
<property name="exposeRequestAttributes" value="true" />
<property name="exposeSessionAttributes" value="true" />
<property name="requestContextAttribute" value="rc" />
<property name="cache" value="false" />
<property name="prefix" value="" />
<property name="suffix" value=".ftl" />
</bean>
<bean id="irvr1" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewNames" value="*.jsp,*.html" />
<property name="viewClass" value="org.springframework.web.servlet.view.InternalResourceView" />
<property name="prefix" value="/runtime/"></property>
<property name="suffix" value=""></property>
</bean>
</list>
</property>
<!-- 默认使用MappingJacksonJsonView生成jsonview-->
<property name="defaultViews">
<list>
<bean class="org.springframework.web.servlet.view.json.MappingJackson2JsonView">
<property name="extractValueFromSingleKeyModel" value="true" />
<property name="prettyPrint" value="true"/>
<property name="contentType" value="text/plain"/>
</bean>
<bean class="org.springframework.web.servlet.view.xml.MarshallingView">
<property name="marshaller">
<bean class="org.springframework.oxm.xstream.XStreamMarshaller" />
</property>
</bean>
</list>
</property>
</bean>
<!-- /视图解析器 end -->
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
<property name="messageConverters">
<list>
<bean class="org.springframework.http.converter.StringHttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>text/html;charset=UTF-8</value>
<value>text/plain;charset=UTF-8</value>
</list>
</property>
</bean>
<!--json-->
<bean id="mappingJacksonHttpMessageConverter" class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>apolication/json; charset=UTF-8</value>
<value>text/html;charset=UTF-8</value>
</list>
</property>
</bean>
</list>
</property>
</bean>