mvc:annotation-driven
1.在web.xml中的:
servlet-mapping 使用 *.do 和 使用/ 的问题解决
使用 *.do 时候: 不用配置<mvc:annotation-driven/> 这个,如果是 / 的话,则要配置 <mvc:annotation-driven/>
因为如果没有的话:如果没有<mvc:annotation-driven/>,那么所有的Controller可能就没有解析
所以要配置它。
- <context:component-scan base-package="com"></context:component-scan>
web.xml
- <servlet>
- <servlet-name>mvc</servlet-name>
- <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
- <load-on-startup>1</load-on-startup>
- </servlet>
- <servlet-mapping>
- <servlet-name>mvc</servlet-name>
- <url-pattern>*.do</url-pattern>
- </servlet-mapping>
如果是:
web.xml
- <servlet>
- <servlet-name>mvc</servlet-name>
- <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
- <load-on-startup>1</load-on-startup>
- </servlet>
- <servlet-mapping>
- <servlet-name>mvc</servlet-name>
- <url-pattern>/</url-pattern>
- </servlet-mapping>
mvc-servlet.xml
- <context:component-scan base-package="com"></context:component-scan>
- <mvc:annotation-driven/>
- <mvc:resources mapping="/styles/**" location="/WEB-INF/resource/styles/"/>
- <mvc:default-servlet-handler/>
最后的配置如果没有<mvc:annotation-driven/>,那么所有的Controller可能就没有解析,所有当有请求时候都没有匹配的处理请求类,就都去<mvc:default-servlet-handler/>即default servlet处理了。添加上<mvc:annotation-driven/>后,相应的do请求被Controller处理,而静态资源因为没有相应的Controller就会被default servlet处理。总之没有相应的Controller就会被default servlet处理就ok了。
-
<!-- 处理静态资源 -->
-
<!-- 上传的图片缓存1个月,其他js,css,img资源缓存一年 -->
-
<mvc:resources mapping="/res/**" location="/res/" cache-period="2592000"/>
-
<mvc:resources mapping="/resources/**" location="/resources/" cache-period="31536000"/>
-
<mvc:resources mapping="/css/**" location="/css/" cache-period="31536000"/>
-
<mvc:resources mapping="/js/**" location="/js/" cache-period="31536000"/>
-
<mvc:resources mapping="/img/**" location="/img/" cache-period="31536000"/>
-
<mvc:resources mapping="/images/**" location="/images/" cache-period="31536000"/>