2012-01-19 28 views
19

Basit bir Spring 3 uygulaması oluşturmaya çalışıyorum ve aşağıdaki dosyalara sahibim. Bana bu hata AşağıdaHayır WebApplicationContext bulunamadı: Hayır ContextLoaderListener kayıtlı?

nedenini söyle benim web.xml Aşağıda

<?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> 

benim index.jsp Aşağıda

<%@ 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> 

benim memuru-servlet.xml olan

<?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> 

Bu, 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"); 
    } 
} 

Ve nihayet 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; 
    } 
} 

cevap

64

Sen Web.xml bir ContextLoaderListener olması gerekecek - Bu senin yapılandırma dosyaları yükler. Web uygulaması içeriği ile kök uygulama içeriği arasındaki farkı anlamak zorundasınız. Web MVC çerçevede

, her DispatcherServlet zaten kök WebApplicationContext tanımlanan tüm fasulye devralır kendi WebApplicationContext vardır. Tanımlanan bu çekirdekleri, sunucuya özel kapsamda geçersiz kılınabilir ve yeni kapsam özel çekirdekleri, belirli bir sunucu örneğine yerel olarak tanımlanabilir.

Dağıtıcı sunucu uygulamasının uygulama içeriği, yalnızca Web sınıfları için geçerli olan bir web uygulaması içeriğidir. Bunları orta katman katmanlarınız için kullanamazsınız. Bunlar ContextLoaderListener kullanarak bir global uygulama bağlamına ihtiyaç duyar.

Yay mvc için yay referansı here'u okuyun.

+2

Bir applicationContext.xml gerekir ve bundan sonra bir – Batman

+1

@Batman bir bağlama hatası verir Ayrıca denetleyicilerinizi otomatik olarak nasıl algılarsınız. Bir içeriğe ihtiyacınız var: bileşen taraması veya '' –

+0

@Batman verdiğim Yay referansını kontrol edin. Size yardımcı olacak. –

0

Ve sen, daha doğrusu org.springframework.web.context.ContextLoaderListener tarafından xml yapılandırmasından yüklenecek olan yeni bir bağlamda daha varolan bağlamı kullanmak istiyorsanız o zaman bakın - Bu olacak>https://stackoverflow.com/a/40694787/3004747

+0

Bu web.xml ek olarak ve ayrıca web.xml yokluğunda kullanılabilir – ank