找不到WebApplicationContext:没有注册ContextLoaderListener吗? [英] No WebApplicationContext found: no ContextLoaderListener registered?

查看:143
本文介绍了找不到WebApplicationContext:没有注册ContextLoaderListener吗?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试创建一个简单的Spring 3应用程序并具有以下文件.请告诉我该错误的原因

I'm trying to create a simple Spring 3 application and have the following files. Please tell me the reason for this error

下面是我的web.xml

Below is my 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

Below is my 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

Below is my 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

This is the 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

And finally my 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-它将加载您的配置文件.

You'll have to have a ContextLoaderListener in your web.xml - It loads your configuration files.

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

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

You need to understand the difference between Web application context and root application context .

在Web MVC框架中,每个DispatcherServlet都有自己的WebApplicationContext,该WebApplicationContext 继承已在根WebApplicationContext中定义的所有bean.这些继承了 可以在servlet特定范围和新的特定范围中覆盖定义的bean 可以在给定servlet实例的本地定义bean.

In the web MVC framework, each DispatcherServlet has its own WebApplicationContext, which inherits all the beans already defined in the root WebApplicationContext. These inherited beans defined can be overridden in the servlet-specific scope, and new scope-specific beans can be defined local to a given servlet instance.

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

The dispatcher servlet's application context is a web application context which is only applicable for the Web classes . You cannot use these for your middle tier layers . These need a global app context using ContextLoaderListener .

此处阅读spring参考. mvc.

Read the spring reference here for spring mvc .

这篇关于找不到WebApplicationContext:没有注册ContextLoaderListener吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆