java 如何为 spring 配置 web.xml

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/13556068/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-10-31 13:13:25  来源:igfitidea点击:

how to configure web.xml for spring

javaspringspring-mvcweb.xmlclassnotfoundexception

提问by Muhammad

I am new to spring Framework and having problem with linking/configuring springframework through web.xml. I am getting below error when running my app.

我是 spring 框架的新手,在通过 web.xml 链接/配置 springframework 时遇到问题。运行我的应用程序时出现以下错误。

Error:

错误:

HTTP Status 500 - Error instantiating servlet class org.springframework.web.servlet.DispatcherServlet


    type Exception report

    message Error instantiating servlet class org.springframework.web.servlet.DispatcherServlet

    description The server encountered an internal error (Error instantiating servlet class org.springframework.web.servlet.DispatcherServlet) that prevented it from fulfilling this request.

    exception 

    javax.servlet.ServletException: Error instantiating servlet class org.springframework.web.servlet.DispatcherServlet
        org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
        org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
        org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)
        org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
        org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1001)
        org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:585)
        org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
        java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
        java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
        java.lang.Thread.run(Unknown Source)


    root cause 

    java.lang.ClassNotFoundException: org.springframework.web.servlet.DispatcherServlet
        org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1711)
        org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1556)
        org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
        org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
        org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)
        org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
        org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1001)
        org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:585)
        org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
        java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
        java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
        java.lang.Thread.run(Unknown Source)

Apparently, it could not find class org.springframework.web.servlet.DispatcherServlet in the Libraries. However, I dont know how to tell web.xml where to look for this class.

显然,它在库中找不到类 org.springframework.web.servlet.DispatcherServlet。但是,我不知道如何告诉 web.xml 在哪里查找此类。

web.xml

网页.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">

        <servlet>
            <servlet-name>DispatcherSample</servlet-name>
            <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        </servlet>

        <servlet-mapping>
            <servlet-name>DispatcherSample</servlet-name>
            <url-pattern>/PlayField.html</url-pattern>
        </servlet-mapping>

      <welcome-file-list>
        <welcome-file>index.html</welcome-file>
        <welcome-file>Welcome.html</welcome-file>
      </welcome-file-list>

    </web-app>

DispatcherSample-servlet.xml

DispatcherSample-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.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">

        <bean id="handlerMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">  
            <property name="mappings">
                <props>
                    <prop key="/PlayField.html">playfieldController</prop>
                </props>    
            </property>
        </bean>

        <bean id="playfieldController" class="demos.PlayfieldController"/>

    </beans>

回答by Tomasz Nurkiewicz

java.lang.ClassNotFoundException: org.springframework.web.servlet.DispatcherServlet

java.lang.ClassNotFoundException: org.springframework.web.servlet.DispatcherServlet

You must add spring-webmvc.jarto your CLASSPATH (most likely to /WEB-INF/libdirectory). The rest of your configuration seems fine.

您必须添加spring-webmvc.jar到您的 CLASSPATH(最有可能添加到/WEB-INF/lib目录)。您的其余配置似乎没问题。