一、没有使用mvc:default-servlet-handler和mvc:annotation-driven
在web.xml中配置前端控制器DispatcherServlet,这样的配置导致静态资源(js、css等不能访问)
SpringMVC的DispatcherServlet处理请求,主要使用到handlerMappings(Handler映射信息)、handlerAdapters(Handler的适配器)
<!--
SpringMVC思想是有一个前端控制器
这个前端控制器是一个Servlet,应该在web.xml中配置这个Servlet来拦截所有请求
-->
<servlet>
<servlet-name>springDispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<!--指定配置文件位置-->
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring-conf.xml</param-value>
</init-param>
<!--
servlet启动加载,servlet原本是第一次访问创建对象;
load-on-startup:服务器启动的时候创建对象;值越小优先级越高,越先创建对象
-->
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springDispatcherServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
静态资源不能访问
handlerMappings有:BeanNameUrlHandlerMapping、RequestMappingHandlerMapping
handlerAdapters有:HttpRequestHandlerAdapter、SimpleControllerHandlerAdapter、RequestMappingHandlerAdapter
二、使用mvc:default-servlet-handler
在spring-conf.xml配置<mvc:default-servlet-handler/>
静态资源能访问,动态映射的请求就不行了
handlerMappings有:BeanNameUrlHandlerMapping、SimpleUrlHandlerMapping
handlerAdapters有:HttpRequestHandlerAdapter、SimpleControllerHandlerAdapter
三、使用mvc:annotation-driven
在spring-conf.xml配置<mvc:annotation-driven/>
handlerMappings有:RequestMappingHandlerMapping、BeanNameUrlHandlerMapping
handlerAdapters有:RequestMappingHandlerAdapter、HttpRequestHandlerAdapter、SimpleControllerHandlerAdapter
四、使用mvc:default-servlet-handler和mvc:annotation-driven
在spring-conf.xml配置<mvc:default-servlet-handler/>和<mvc:annotation-driven/>
handlerMappings有:RequestMappingHandlerMapping、BeanNameUrlHandlerMapping、SimpleUrlHandlerMapping
handlerAdapters有:HttpRequestHandlerAdapter、SimpleControllerHandlerAdapter、RequestMappingHandlerAdapter