初学spring,看了相关的篇文章把项目的-servlet.xml进行了一下了解。
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context" xmlns:p="http://www.springframework.org/schema/p"
xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">
<!--让系统识别相应的注解 -->
<context:annotation-config/>
<!--系统扫描那些包下的注解文件 -->
<context:component-scan base-package="com.inesanet"/>
<!--Spring3.1使用新的HandlerMapping 和 HandlerAdapter来支持@Contoller和@RequestMapping注解处理器 ,
使用处理器映射RequestMappingHandlerMapping 和 处理器适配器RequestMappingHandlerAdapter组合来代替Spring2.5开始的处理器映射
DefaultAnnotationHandlerMapping和处理器适配器AnnotationMethodHandlerAdapter。 -->
<!--下面的配置就默认加载处理器映射和处理器适配器 。它还默认加载了其他配置-->
<mvc:annotation-driven/>
<!--因为配置系统拦截所有的/请求,通过此来让系统访问静态资源 -->
<mvc:resources mapping="/assets/**" location="/assets/" />
<mvc:resources mapping="/page/**" location="/page/" />
<!-- Handler Mapping :将请求映射到处理器
HandlerAdapter :把处理器包装为适配器,用来支持多种类型的处理器 -->
<!-- SimpleControllerHandlerAdapter :
表示所有实现了org.springframework.web.servlet.mvc.Controller接口的Bean可以作为Spring Web MVC中的处理器, 如果需要其他类型的处理器可以通过实现HadlerAdapter来解决。 -->
<!--在此项目中因为我们用注解方式进行配置,所以可以省略下行配置 -->
<bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"></bean>
<bean class="org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter"></bean>
<!--HttpMessageConverter它负责对http传入和传出的内容进行格式转换 -->
<!--比如前面学的@ResponseBody是将内容或对象作为Http响应正文返回,使用@ResponseBody将会跳过视图处理部分,直接调用合适的HttpMessageConverter,将返回值写入输出流
n现在只要你开启了<mvc:annotation-driven />,它会给AnnotationMethodHandlerAdapter初始化7个转换器,可以通过调用AnnotationMethodHandlerAdapter类
的getMessageConverts()方法来获取转换器的一个集合 List<HttpMessageConverter>,默认开启的有:
ByteArrayHttpMessageConverter
StringHttpMessageConverter
ResourceHttpMessageConverter
SourceHttpMessageConverter<T>
XmlAwareFormHttpMessageConverter
Jaxb2RootElementHttpMessageConverter
MappingJacksonHttpMessageConverter
Spring是如何寻找最佳的HttpMessageConverter呢?
最基本的方式就是通过请求的accept里面的格式来匹配,如果accept=application/json之类的,就使用json的HttpMessageConverter,如果accept=application/xml之类的,就使用xml的HttpMessageConverter-->
<!--所以说下面的配置信息可以删除 -->
<bean id="messageAdapter" class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
<!--自动转换功能 -->
<property name="messageConverters">
<list>
<!-- Message converters -->
<bean class="org.springframework.http.converter.StringHttpMessageConverter"/>
<bean class="org.springframework.http.converter.FormHttpMessageConverter"/>
<bean class="org.springframework.http.converter.ByteArrayHttpMessageConverter"/>
<bean class="org.springframework.http.converter.xml.SourceHttpMessageConverter"/>
<bean class="org.springframework.http.converter.BufferedImageHttpMessageConverter"/>
<!-- 可以吧list集合自动转化成为json -->
<bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"/>
</list>
</property>
</bean>
<!-- 视图解释类 -->
<!-- InternalResourceViewResolver :用于支持Servlet、JSP视图解析;
viewClass :JstlView表示JSP模板页面需要使用JSTL标签库,classpath中必须包含jstl的相关jar包;
prefix 和 suffix :查找视图页面的前缀和后缀(前缀[逻辑视图名]后缀),比如传进来的逻辑视图名为hello,则该该jsp视图页面应该存放在“WEB-INF/jsp/hello.jsp” -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
<property name="prefix" value="/page/"/>
<property name="suffix" value=".jsp"/>
</bean>
</beans>