spring 配置文件解析

web.xml中spring烂机器的配置
<servlet>
<servlet-name>springMVC</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath*:/springMVC.xml</param-value>
</init-param>
<!-- 启动顺序,让这个Servlet随Servletp容器一起启动。 -->
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springMVC</servlet-name>
<!-- 会拦截*.go结尾的请求 -->
<url-pattern>.go</url-pattern>
</servlet-mapping>

<listener>
  <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
org.springframework.web.servlet.DispatcherServlet:拦截所有的请求,然后到DefaultAnnotationHandlerMapping和AnnotationMethodHandlerAdapter中检索匹配并进行跳转到对应的Controller中

org.springframework.web.context.ContextLoaderListener:监听对应的操作




spring-MVC.xml中的配置,
1. <context:annotation-config/>隐式的向Spring 容器注册
AutowiredAnnotationBeanPostProcessor,CommonAnnotationBeanPostProcessor,
PersistenceAnnotationBeanPostProcessor以及RequiredAnnotationBeanPostProcessor这4 个BeanPostProcessor,解决了@Controller标识的类的bean的注入和使用。

2. <mvc:annotation-driven/>隐式注册了
DefaultAnnotationHandlerMapping和AnnotationMethodHandlerAdapter两个bean,配置一些messageconverter,解决了@Controller注解的使用前提配置。
第一条中的配置一般在配置包扫描路径扫描之后将其移除,为什么呢:
<context:component-scan base-package="***.***"/> 该配置项其实也包含了自动注入上述"1"中四个bean processor的功能,因此当使用 <context:component-scan/> 后,就可以将 <context:annotation-config/>移除了。

不配置<mvc:annotation-driven/>,基本的访问应该是没问题,比如servlet mapping的配置是"*.do", ".do"这种请求可以被正确捕捉和处理,但是如果添加静态资源访问,你可能要将拦截改为"/",此时你再次访问就会发现已经不能被正常拦截了,除非你加上<mvc:annotation-driven/>。

<mvc:annotation- driven/>在初始化的时候会自动创建两个对 象,org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter 和 org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter


<!-- 对静态资源文件的访问   公司的实现方式   方案一   --> 
    <mvc:resources location="/admin/" mapping="/ajax/js/**" />
    <mvc:resources location="/admin/" mapping="/images/**" />
    <mvc:resources location="/admin/cargo" mapping="/admin/cargo/*.htm" />

<!-- 视图解释类 --> 
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
      <property name="prefix" value="/"/> 
      <property name="suffix" value=".jsp"/><!--可为空,方便实现自已的依据扩展名来选择视图解释类的逻辑  -->
      <!--  使spring支持jstl标签  -->
      <property name="viewClass" value="org.springframework.web.servlet.view.JstlView" /> 
</bean>


<!-- 对静态资源文件的访问   方案三 -->
<mvc:default-servlet-handler/>


上传文件的控制
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">           
   <property name="maxUploadSize" value="104857600"/>       
        <property name="maxInMemorySize" value="4096"/>
</bean>



<!--  请求拦截(自定义的spring的总拦截器)    -->
<mvc:interceptors>
        <!-- 使用bean定义一个Interceptor,直接定义在mvc:interceptors根下面的Interceptor将拦截所有的请求 -->
<bean class="www.baidu.com.util.SpringMVCInterceptor"/>
<!-- 定义在mvc:interceptor下面的表示是对特定的请求才进行拦截的
<mvc:interceptor>
<mvc:mapping path="/admin/editOutBoundUrl.mmx"/>
<bean class="www.baidu.com.interceptor.OutBoundUrlInterceptor"/>
</mvc:interceptor>
-->
</mvc:interceptors>



<!-- 总错误处理-->
<bean id="exceptionResolver" class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
<property name="defaultErrorView"> 
<value>/error/error</value>
</property>
<property name="defaultStatusCode"> 
<value>500</value>
</property>
<property name="warnLogCategory">        <value>org.springframework.web.servlet.handler.SimpleMappingExceptionResolver</value>
</property>
</bean>

猜你喜欢

转载自jinpengaigo.iteye.com/blog/2213281