1.各种xml文件中的命名空间找不到
示例:
applicationContext.xml文件中
context:component-scan 通配符找不到
解决方法:
因为context:component-scan使用的是context命名空间的引用标签,所以要在xml文档的头部加入:xmlns:context="http://www.springframework.org/schema/context"
并在xsi:schemaLocation中加入:http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd
如果缺少其他的命名空间引用,也应该添加。
2.启动Tomcat,出现各种引用包缺失
示例:
出现cglib2包的引用
解决方法:
添加cglib2包到Tomcat的lib文件夹下或者WEB-INF的lib文件夹下即可
可能是因为我的Spring下载不是很完整,整个过程中需要添加以下的包:
com.springsource.org.aopalliance-1.0.0.jar
asm-3.2.jar
commons-logging-1.2.jar
cglib2
我的情况可能和你的情况不一样,你只需要在启动Tomcat的时候,仔细检查启动过程中出现的Exception,一般是ClassNotFoundException,然后根据信息找到没有加入的包,引入即可。
3.启动Tomcat之后,出现No mapping found for HTTP request with URI错误
示例:
访问URL为:http://localhost:8080/HelloSpring/
servlet-mapping为*.html,截获所有以html结尾的请求
错误为:No mapping found for HTTP request with URI [/HelloSpring/]
解决方法:
经过一番Google&Baidu之后,发现我的问题是没有对Controller进行扫描,导致就算对请求截获了,没有对应的处理器去处理,当我在<截获请求的Servlet名称>-servlet.xml文件中添加<context:component-scan base-package=“Controller所有包”/>后,成功了;controller中:@RequestMapping(value="/index.html")这句代表截获/index.html请求将在这里处理。
如果你扫描了还是出现了这个错误,可能还是这个原因:
你的Servlet-mapping为/,即截获了所有的请求,这个将导致一个请求在控制器处理完之后,一般会返回一个ModelAndView,将被交给ResourceViewResolver处理,处理之后返回一个jsp页面(一般):附bean代码:
<bean
class="org.springframework.web.servlet.view.InternalResourceViewResolver"
p:viewClass="org.springframework.web.servlet.view.JstlView" p:prefix="/WEB-INF/jsp/"
p:suffix=".jsp" />
被这个处理之后,如果ModelAndView中的名称为“Index”,则对应的jsp文件为:prefix + Index + suffix = /WEB-INF/jsp/Index.jsp,这个请求将继续被/截获,然而这个时候传给控制器的是"/WEB-INF/jsp/Index.jsp",我的控制器中是没有能够处理这个请求的,除非你写了@RequestMapping(value="/WEB-INF/jsp/Index.jsp"),否则他将出现No mapping found 错误,所以在写servlet-mapping的时候要小心这个问题。
4.javax.servlet.jsp.jstl.core.Config 错误
这个问题比较简单,是因为没有添加jstl包到类路径下(可以是Tomcat的lib文件夹,也可以Web-INF中的lib文件夹)。