没有发现WebApplicationContext:没有ContextLoaderListener注册?

我试图创build一个简单的Spring 3应用程序,并有以下文件。 请告诉我这个错误的原因

下面是我的web.xml

<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0"> <display-name>Spring2</display-name> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> <servlet> <servlet-name>dispatcher</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <load-on-startup>0</load-on-startup> </servlet> <servlet-mapping> <servlet-name>dispatcher</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> </web-app> 

以下是我的index.jsp

 <%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %> <%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %> <!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> Index Page<br/> <form:form commandName="loginBean" method="POST" action="login"> <form:input path="userName" id="userName"/><br/> <form:input path="password" id="password"/><br/> <input type="submit" value="submit"/> </form:form> <a href="register.jsp">Go to Registration Page</a> </body> </html> 

下面是我的dispatcher-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-3.0.xsd"> <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/" /> <property name="suffix" value=".jsp" /> </bean> <bean name="/login" class="com.infy.controller.LoginController"/> </beans> 

这是LoginController.java

 import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.servlet.ModelAndView; @Controller public class LoginController { @RequestMapping(value="/login", method=RequestMethod.POST) public ModelAndView loginAction(@ModelAttribute("loginBean")LoginBean bean){ return new ModelAndView("success", "success", "Successful Login"); } } 

最后是我的LoginBean

 public class LoginBean { private String userName; private String password; public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } } 

你将不得不在你的web.xml中有一个ContextLoaderListener – 它加载你的configuration文件。

 <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> 

您需要了解Web应用程序上下文和根应用程序上下文之间的区别。

在Web MVC框架中,每个DispatcherServlet都有自己的WebApplicationContext,它inheritance了已经在根WebApplicationContext中定义的所有Bean。 定义的这些inheritance的bean可以在特定于servlet的范围中重写,并且新的特定于范围的bean可以在给定的servlet实例的本地定义。

调度程序servlet的应用程序上下文是一个只适用于Web类的Web应用程序上下文。 您不能将这些用于中间层。 这些需要使用ContextLoaderListener的全局应用程序上下文。

在这里阅读春季参考春季mvc。

如果您想要使用现有的上下文,而不是使用org.springframework.web.context.ContextLoaderListener从xmlconfiguration中加载的新上下文,请参阅 – > https://stackoverflow.com/a/40694787/ 3004747