1、web.xml中配置DispatcherServlet的拦截路径设置为/ ,配置成*.do的话<mvc:resources />标签将不起作用。
<servlet> <servlet-name>mvc-dispatcher</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/spring-mvc.xml</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>mvc-dispatcher</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping>
2、springmvc的配置文件里面必须加入 <mvc:annotation-driven/> ,最好是第一行位置,表示向spring容器注入DefaultAnnotationHandlerMapping与AnnotationMethodHandlerAdapter两个bean,它们是spring MVC为@Controllers分发请求所必须的,否则即使配置了<context:component-scan />也是无法访问到Conroller的。
3、<context:component-scan /> 需要制定只是扫描@Controller的WEB层等注解,@Service等注解一定要过滤掉,否则,事务不起作用。
例如:
<context:component-scan base-package="com.lyl"> <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller" /> <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Service" /> </context:component-scan>
4、对于一些静态资源,如图片/css/js等文件要采用<mvc:resources />做映射,否则在DispatcherServlet配置拦截所有路径情况下,这些资源被拦截,作为视图去找,无法定位。
<mvc:resources mapping="/static/**" location="/WEB-INF/static/" />
请求路径中的/static/,会被ResourceHttpRequestHandler截获并转换成/WEB-INF/static 如:
<script type="text/javascript" src="projectPath/static/js/jquery-1.4.2.js"></script>
会被处理成:projectPath/WEB-INF/static/js/jquery-1.4.2.js
5、在ContextLoaderListener加载Spring配置文件的时候,最好不要加载springmvc的配置文件,以免重复加载,同时注意声明扫描的注解里面剔除控制层的主键@Controller的。
<context:component-scan base-package="com.lyl"> <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller" /> </context:component-scan>