strivezxq的专栏

springMVC配置用法的文章很多,但具体描述清楚的不多,,这里主要介绍下常用的配置项的用法,以及它的解析类,springMVC处理内容有两种方式,一种是converter,另一种是ViewResolver,两种都能处理json,xml以及form内容格式。

<?xml version="1.0" encoding="UTF-8" standalone="no"?><beans xmlns=""xmlns:context=""xmlns:aop="" xmlns:mvc=""xmlns:p="" xmlns:xsi=""xmlns:util=""xmlns:c=""xsi:schemaLocation=" http://www.springframework.org/schema/context/spring-context-3.2.xsd http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd http://www.springframework.org/schema/util/spring-util.xsd http://www.springframework.org/schema/aop/spring-aop-3.2.xsd"><!– 如果controller里要用到配置,才需要加载配置,因为一般这个配置由DispatchServlet来加载,和spring监听类不在一个上下文里,想要知道原因请看 这篇文章详细解析了spring初始化过程 –><context:property-placeholder location="classpath:app.properties" /><!–Scans the classpath for annotated components @Component, @Repository, @Service, and @Controller 通过use-default-filters="false",可以设置只扫描哪些注释,一般springMVC配置只加载下面两种注释–><context:component-scan base-package="your.base.package" use-default-filters="false"><context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/><context:include-filter type="annotation" expression="org.springframework.web.bind.annotation.ControllerAdvice"/></context:component-scan><!– <context:component-scan annotation-config = "true">已经包含了context:annotation-configr的功能,所以这个配置基本没必要配置,激活在bean类中被检测到的各种注释:Spring's @Required and@Autowired, as well as JSR 250's @PostConstruct, @PreDestroy and @Resource (if available),JAX-WS's @WebServiceRef (if available), EJB3's @EJB (if available), and JPA's@PersistenceContext and @PersistenceUnit (if available) –><context:annotation-config /><!–会在Spring MVC上下文中定义一个 org.springframework.web.servlet.resource.DefaultServletHttpRequestHandler, 它会像一个检查员,对进入DispatcherServlet的URL进行筛查,如果发现是静态资源的请求,就将该请求转由Web应用服务器默认的 Servlet处理,如果不是静态资源的请求,才由DispatcherServlet继续处理。一般Web应用服务器默认的Servlet名称是"default",因此DefaultServletHttpRequestHandler可以 找到它。如果你所有的Web应用服务器的默认Servlet名称不是"default",则需要通过default-servlet-name属性显示指 定:<mvc:default-servlet-handler default-servlet-name="所使用的Web服务器默认使用的Servlet名称" />Tomcat, Jetty, JBoss, and GlassFish默认名称为default, eg: web.xml中1. <servlet-mapping>2.<servlet-name>default</servlet-name>3.<url-pattern>*.jpg</url-pattern>4. </servlet-mapping>5. <servlet-mapping>6.<servlet-name>default</servlet-name>7.<url-pattern>*.js</url-pattern>8. </servlet-mapping>9. <servlet-mapping>10.<servlet-name>default</servlet-name>11.<url-pattern>*.css</url-pattern>12. </servlet-mapping>如果不配置springdefault-servlet-name 默认会设置,已经支持常用的web服务器–><mvc:default-servlet-handler /><!– 允许静态资源放在任何地方 ,处理类org.springframework.web.servlet.resource.ResourceHttpRequestHandler<bean id="resourceHttpRequestHandler" class="org.springframework.web.servlet.resource.ResourceHttpRequestHandler"><property name="locations" value="classpath:/META-INF/resources/"></property> </bean><bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"><property name="mappings"><props><prop key="/resources/**">resourceHttpRequestHandler</prop></props></property></bean>下面标签实现–><mvc:resources mapping="/resources/**" location="/resources/"></mvc:resources><!– register "global" interceptor beans to apply to all registered HandlerMappings .Each inteceptor must implement the org.springframework.web.servlet.HandlerInterceptor ororg.springframework.web.context.request.WebRequestInterceptor interface–><mvc:interceptors><mvc:interceptor><mvc:mapping path="/**" /><mvc:exclude-mapping path="/css/**" /><mvc:exclude-mapping path="/js/**" /><mvc:exclude-mapping path="/images/**" /><bean class="com.fpx.common.auth.mgt.framework.interceptor.ContextInterceptor" /></mvc:interceptor></mvc:interceptors><!– Turns on support for mapping requests to Spring MVC @Controller methodsAlso registers default Formatters and Validators for use across all @Controllers配置解析类:org.springframework.web.servlet.config.AnnotationDrivenBeanDefinitionParser配置content-negotiation-anager可以在url里设置内容类型参数,可以设置默认内容类型<bean id="contentNegotiationManagerFactoryBean" class="org.springframework.web.accept.ContentNegotiationManagerFactoryBean"p:favorPathExtension="false" p:favorParameter="true" p:parameterName="format" p:ignoreAcceptHeader="true"p:defaultContentType="application/json"><property name="mediaTypes"><props><prop key="json">application/json</prop><prop key="xml">application/xml</prop></props> </property></bean>–><mvc:annotation-driven content-negotiation-anager="contentNegotiationManagerFactoryBean"><mvc:message-converters><ref bean="stringHttpMessageConverter" /><ref bean="jsonHttpMessageConverter" /><ref bean="marshallingHttpMessageConverter" /></mvc:message-converters></mvc:annotation-driven><!– 内容管理工厂 –><beanclass="org.springframework.web.accept.ContentNegotiationManagerFactoryBean"p:favorPathExtension="false" p:favorParameter="true"p:parameterName="format" p:ignoreAcceptHeader="true"p:defaultContentType="application/json"><property name="mediaTypes"><props><prop key="json">application/json</prop><prop key="xml">application/xml</prop></props></property></bean><!– 内容解析器 ,可以p:parameterName="format"来配置返回参数类型 ,通过p:defaultContentType配置默认请求内容类型,c:qualityValue="0.5" 可以设置内容类型的优先级, 如果使用了mvc:annotation-driven 和注解方式(@RequestBody), 下面配置是不生效的–><bean class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver"><property name="contentNegotiationManager" ref= "contentNegotiationManagerFactoryBean"></property><property name="defaultViews"><list><beanclass="org.springframework.web.servlet.view.json.MappingJackson2JsonView"><property name="modelKey" value="resultVo" /><property name="extractValueFromSingleKeyModel" value="true" /></bean><bean class="org.springframework.web.servlet.view.xml.MarshallingView"><constructor-arg ref="jaxb2Marshaller" /><property name="contentType" value="application/xml" /></bean></list></property><!– <property name="ignoreAcceptHeader" value="true" /> –></bean><!– XML view using a JAXB marshaller –><bean id="jaxb2Marshaller" class="org.springframework.oxm.jaxb.Jaxb2Marshaller"><property name="marshallerProperties"><map><entry key="jaxb.formatted.output"><value type="boolean">true</value></entry><entry key="jaxb.encoding" value="UTF-8" /></map></property><property name="packagesToScan"><list><value>com.api.domain</value><value>com.api.web.controller.vo</value></list></property></bean><bean id="jstlViewResolver"class="org.springframework.web.servlet.view.InternalResourceViewResolver"><property name="order" value="2" /><property name="viewClass"value="org.springframework.web.servlet.view.JstlView" /><property name="prefix" value="/views/" /><property name="suffix" value="" /><property name="requestContextAttribute" value="rc" /></bean><!– c:qualityValue="0.5" 可以设置内容类型的优先级,默认是1.0,越大优先级越高 –><bean id="stringHttpMessageConverter"class="org.springframework.http.converter.StringHttpMessageConverter"><property name="supportedMediaTypes"><list><value>text/plain;charset=UTF-8</value><value>text/html;charset=UTF-8</value></list></property></bean><bean id="jsonHttpMessageConverter"class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter" /><bean id="marshallingHttpMessageConverter"class="org.springframework.http.converter.xml.MarshallingHttpMessageConverter"><constructor-arg ref="jaxb2Marshaller" /><!– <property name="supportedMediaTypes" value="application/xml"></property> –><property name="supportedMediaTypes"><util:list><bean class="org.springframework.http.MediaType" c:type="application" c:subtype="xml" c:qualityValue="0.5"/></util:list></property></bean>

如果心胸不似海,又怎能有海一样的事业。

strivezxq的专栏

相关文章:

你感兴趣的文章:

标签云: