Pas de WebApplicationContext trouvé: pas de ContextLoaderListener enregistré?

j'essaie de créer une application simple Spring 3 et j'ai les fichiers suivants. S'il vous plaît dites-moi la raison de cette erreur

ci-dessous est mon 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>

ci-dessous est mon 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>

ci-dessous est mon répartiteur-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>

voici le contrôleur de Loginc.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");
    }
}

Et enfin mon 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;
    }
}
23
demandé sur BalusC 2012-01-19 14:49:58

2 réponses

Vous aurez besoin d'avoir un ContextLoaderListener dans votre web.xml-It charge vos fichiers de configuration.

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

vous devez comprendre la différence entre le contexte d'application Web et le contexte d'application racine .

dans le Web MVC framework, chaque Répartiteurervlet a son propre WebApplicationContext, qui hérite de tous les haricots déjà définis dans le contexte de WebApplication racine. Ces hérité les haricots peuvent être remplacées dans les champ d'application spécifique aux Servlets et nouveau champ d'application spécifique les haricots peuvent être définis locale à une instance de servlet.

le contexte d'application du servlet de régulateur est un contexte d'application web qui n'est applicable qu'aux classes Web . Vous ne pouvez pas les utiliser pour vos couches intermédiaires . Ceux-ci ont besoin d'un contexte app global en utilisant ContextLoaderListener .

Lire le printemps de référence ici pour MVC de printemps .

68
répondu Aravind A 2015-01-05 01:13:51

Et si vous souhaitez utiliser un contexte existant, plutôt que d'un nouveau contexte qui serait chargé de configuration xml par org.springframework.Web.cadre.ContextLoaderListener, ensuite, voir -> https://stackoverflow.com/a/40694787/3004747

1
répondu ank 2017-05-23 12:02:38