Spring学习中出现的问题(一)——配置启动篇(服务器为Tomcat)

来源:互联网 发布:淘宝纯银首饰 编辑:程序博客网 时间:2024/06/05 21:57

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文件夹)。

0 0
原创粉丝点击