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>
spring 配置文件解析
猜你喜欢
转载自jinpengaigo.iteye.com/blog/2213281
周排行