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>