我是Spring的新手。我使用springMVC创建了一个简单的应用程序,在第一次点击应用程序时,基于欢迎文件列表,用户被定向到login.jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<div id="wrapper">
<div id="container">
<div id="header">
<img alt="header image" src="header.jpg" style="width:1350px;height:150px"/>
</div>
<div id="content" style="height:300px">
<div id="login_box" style="background-color: rgb(206, 236, 245); height: 200px; width: 400px; margin-left: 360px; margin-top: 57px;">
<div style="padding-left: 45%; border-top-width: 0px; padding-top: 10px; padding-bottom: 15px;">Login</div>
<div>
<form action="/hbfcbank/home.htm">
<table style="padding-left: 70px;">
<tbody>
<tr>
<td>Login Id : </td>
<td><input type="text" name="logiId"></td>
</tr>
<tr>
<td>Password : </td>
<td><input type="password" name="password"></td>
</tr>
</tbody>
</table>
<div style="padding-left: 150px; padding-top: 25px;">
<input type="submit" name="submit" value="submit"/>
</div>
</form>
</div>
</div>
</div>
<div id="footer">
<img alt="footer image" src="footer.jpg" style="width:1350px;height:50px">
</div>
</div>
</div>
</body>
</html>
单击login.jsp上的提交按钮时,它应该重定向到主页home.jsp,我在web.xml中添加了springmvc配置,如下所示
<?xml version="1.0" encoding="ISO-8859-1" ?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
version="2.4">
<display-name>HBFC bank</display-name>
<description>
This is a simple web application with a source code organization
based on the recommendations of the Application Developer's Guide.
</description>
<servlet>
<servlet-name>springapp</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springapp</servlet-name>
<url-pattern>*.htm</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>/jsp/login.jsp</welcome-file>
</welcome-file-list>
</web-app>
以下是springapp-servlet.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
<!-- the application context definition for the springapp DispatcherServlet -->
<bean name="/home.htm" class="com.hbfcbank.controller.LoginController"/>
</beans>
并且LoginController位于
之下package com.hdfcbank.controller;
import java.util.logging.Logger;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;
public class LoginController implements Controller {
@Override
public ModelAndView handleRequest(HttpServletRequest arg0,
HttpServletResponse arg1) throws Exception {
// TODO Auto-generated method stub
System.out.println("in LoginController");
return new ModelAndView("/jsp/home.jsp");
}
}
仍然在点击login.jsp上的提交按钮后,我收到以下错误。
java.lang.NoClassDefFoundError: org/springframework/context/ApplicationListener
java.lang.ClassLoader.defineClass1(Native Method)
java.lang.ClassLoader.defineClassCond(Unknown Source)
java.lang.ClassLoader.defineClass(Unknown Source)
java.security.SecureClassLoader.defineClass(Unknown Source)
org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:2895)
org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:1173)
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1681)
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1559)
java.lang.ClassLoader.defineClass1(Native Method)
java.lang.ClassLoader.defineClassCond(Unknown Source)
java.lang.ClassLoader.defineClass(Unknown Source)
java.security.SecureClassLoader.defineClass(Unknown Source)
org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:2895)
org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:1173)
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1681)
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1559)
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:461)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1008)
org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
java.lang.Thread.run(Unknown Source)
请提供相同的错误原因和解决方案。 感谢
答案 0 :(得分:0)
java.lang.NoClassDefFoundError: org/springframework/context/ApplicationListener
表示您在CLASSPATH中没有该类。它位于spring-context
罐子里。
因此,只需要将它放在CLASSPATH中,例如WEB-INF/lib
或更好的地方spring-webmvc
。因为最后一个需要ApplicationListener
的类。
从另一方面使用一些依赖管理工具,如Maven或Gradle,您不会遇到类似的问题,因为spring-context
是来自spring-webmvc
或其父级的传递依赖 - spring-web
答案 1 :(得分:0)
您应该检查重复的导入jar。检查是否存在两个包ApplicationListener类,删除一个,再试一次。
答案 2 :(得分:0)
是的我同意Artem Bilan。如果您使用的是Maven,请确保您已在依赖性装配设置中添加了Maven依赖。