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>
文章评论