今天遇到一个web.xml的一个问题。
使用Spring整合Struts2框架,在web.xml文件中配置一个listener来完成加载Spring配置文件的功能。加入的代码很简单。只加入了<listener>……</listener>这个内容。
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<filter>
<filter-name>struts2</filter-name>
<filter-class>
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
(当然前提是已经在项目的WebRoot/WEB-INF/路径下创建Spring配置文件applicationContext. xml。)
之后运行我的注册网页,register.jsp文件。便出现了异常。
而Tomact控制台只显示了
严重: Error listenerStart。
网上查找了几个小时的资料都有各自的方法,但是一个都不顶用,试了很多,还是一样的Error listenerStart。
寻找方法无果,便寻找问题发生的原因。
在Tomcat的目录下,找到logs文件夹。里面找到localhost.2016-12-23.log。这是今天的日志,里面有控制台没有显示的问题所在。(控制台只显示了Error listenerStart)
我的异常:
十二月 23, 2016 6:23:46 下午 org.apache.catalina.core.StandardContext listenerStart
严重: Error configuring application listener of class org.springframework.web.context.ContextLoaderListener
java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener(关键)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1680)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1526)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4179)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4739)
at org.apache.catalina.startup.HostConfig.checkResources(HostConfig.java:1287)
at org.apache.catalina.startup.HostConfig.check(HostConfig.java:1385)
at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:307)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:142)
at org.apache.catalina.core.ContainerBase.backgroundProcess(ContainerBase.java:1393)
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1657)
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1666)
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:1646)
at java.lang.Thread.run(Thread.java:745)
这个异常很简单,找不到相应的类。
工程导入spring-web.jar即可。