【问题标题】:Spring MVC DispatcherServlet errorSpring MVC DispatcherServlet 错误
【发布时间】:2018-10-12 13:17:05
【问题描述】:

我尝试使用 Maven 执行 Spring MVC 添加示例,但是当我尝试运行 index.jsp 页面时出现此错误:

HTTP 状态 500 - 实例化 servlet 类 org.springframework.web.servlet.DispatcherServlet 时出错 java.lang.ClassNotFoundException: org.springframework.web.servlet.DispatcherServlet 在执行 spring mvc 时

    pom.xml (to include the jars)   
--------
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
      <modelVersion>4.0.0</modelVersion>

      <groupId>com.spring1</groupId>
      <artifactId>mvcexample</artifactId>
      <version>0.0.1-SNAPSHOT</version>
      <packaging>jar</packaging>

      <name>mvcexample</name>
      <url>http://maven.apache.org</url>

      <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
      </properties>

      <dependencies>
        <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>3.8.1</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-context</artifactId>
                <version>4.1.8.RELEASE</version>
            </dependency>

            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-webmvc</artifactId>
                <version>4.1.8.RELEASE</version>
            </dependency>
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>5.1.36</version>
            </dependency>
            <dependency>
                <groupId>javax.servlet</groupId>
                <artifactId>jstl</artifactId>
                <version>1.2</version>
            </dependency>
      </dependencies>
    </project>

1.pom添加maven依赖

    index.jsp
    ---------
    <html>
    <body>
    <form action="add">
    <input type="text" name="t1"><br>
    <input type="text" name="t2"><br>
    <input type="text" name="t3"><br>
    <input type="submit" value="submit">
    </form>
    </body>
    </html>

2.用于接受输入的页面

    display.jsp
    ------------
    <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
        pageEncoding="ISO-8859-1"%>
    <!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>
    Result is :<%=request.getAttribute("result") %>
    </body>
    </html>

3.显示结果的显示页面

    web.xml
    -------
    <!DOCTYPE web-app PUBLIC
     "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
     "http://java.sun.com/dtd/web-app_2_3.dtd" >

    <web-app>
      <display-name>Archetype Created Web Application</display-name>
      <servlet>
            <servlet-name>spring1</servlet-name>
            <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        </servlet>
        <servlet-mapping>
            <servlet-name>spring1</servlet-name>
            <url-pattern>/</url-pattern>
        </servlet-mapping>

    </web-app>

4.定义dispatcher servlet

    spring1-servlet.xml
    -------------------
    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:ctx="http://www.springframework.org/schema/context"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:mvc="http://www.springframework.org/schema/mvc"
        xsi:schemaLocation="http://www.springframework.org/schema/beans 
        http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
        http://www.springframework.org/schema/mvc
        http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context-2.5.xsd ">


        <ctx:annotation-config></ctx:annotation-config>
        <ctx:component-scan base-package="com.spring1.mvcexample"></ctx:component-scan>
    </beans>

    App.java
    ---------
    package com.spring1.mvcexample;



    @Controller
    public class App 
    {
        @RequestMapping("/add")
        public ModelAndView add(HttpServletRequest request,HttpServletResponse response)
        {
            int i=Integer.parseInt(request.getParameter("t1"));
            int j=Integer.parseInt(request.getParameter("t2"));
            int k=Integer.parseInt(request.getParameter("t3"));
            int l=i+j+k;
            ModelAndView mv=new ModelAndView();
            mv.setViewName("display.jsp");
            mv.addObject("result",l);
            return mv;
        }
        }

5.包含控制器的代码

我已经提到了我使用过的所有类和文件。我尝试了很多次,但无法解决错误。请建议我如何解决该错误。提前致谢。

【问题讨论】:

  • 您确定您已按照示例中的所有步骤进行操作吗?你应该在你的服务器中部署一个war文件,而你正在生成一个jar。您的错误指出您的服务器没有找到一些弹簧罐。检查部署说明。
  • @kerem-can 你已经从标题中删除了特定的异常,你应该把它粘贴到正文中。
  • 请编辑粘贴您获得的异常的问题。澄清没有找到什么类。
  • 尝试 maven clean 并更新项目。它应该可以解决您的问题。检查相应的 jar 是否可用。

标签: java spring maven spring-mvc servlets


【解决方案1】:

您可以简单地在 web.xml 下添加以下标签 load-on-startup

<web-app>
    <display-name>Archetype Created Web Application</display-name>
    <servlet>
        <servlet-name>spring1</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>spring1</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
</web-app> 

【讨论】:

  • 我添加了 load-on -startup 行,然后我收到以下错误FO:Starting ProtocolHandler ["ajp-nio-8009"] May 02, 2018 6:13:48 PM org.apache.catalina .startup.Catalina 启动信息:服务器在 27559 毫秒内启动 2018 年 5 月 2 日下午 6:14:00 org.springframework.web.servlet.PageNotFound noHandlerFound 警告:在 DispatcherServlet 中找不到带有 URI [/mvc2/add] 的 HTTP 请求的映射名称为“spring1”
  • 你可以尝试用 com.spring1.mvcexample.*">
  • @SaipriyadarshiniBandi 你得到一个不同的错误。您之前声称这是一个 java.lang.ClassNotFoundException。现在你得到了一个 org.springframework.web.servlet.PageNotFound noHandlerFound。请使用此新信息编辑您的问题。请注意,您的应用程序正在尝试访问 /mvc2/add。您没有正确替换映射的地方。在您的文件中搜索“mvc2”。
【解决方案2】:

您在 pom.xml 中缺少一些依赖项 jar,请添加这些,我可以看到缺少的一些依赖项是

  1. org.springframework.beans-3.0.1.RELEASE-A

  2. org.springframework.core-3.0.1.RELEASE-A

  3. org.springframework.web-3.0.1.RELEASE-A

  4. org.springframework.web.servlet-3.0.1.RELEASE-A

  5. org.springframework.web.portlet-3.0.1.RELEASE-A

  6. org.springframework.web.struts-3.0.1.RELEASE-A

【讨论】:

  • 我已在 pom 文件中添加了所有依赖项,但我仍然收到错误 Starting ProtocolHandler ["ajp-nio-8009"] 2018 年 5 月 2 日下午 6:13:48 org.apache.catalina。 startup.Catalina 启动信息:服务器在 27559 毫秒内启动 2018 年 5 月 2 日下午 6:14:00 org.springframework.web.servlet.PageNotFound noHandlerFound 警告:在 DispatcherServlet 中找不到带有 URI [/mvc2/add] 的 HTTP 请求的映射名称“spring1”
  • 很明显页面url映射不正确.so in url pattern give *
【解决方案3】:

&lt;servlet&gt;标签下写下一行:

  • &lt;load-on-startup&gt;1&lt;/load-on-startup&gt;

还要确保你的 web.xml 和 spring1-servlet.xml 文件应该在 /WEB-INF 文件夹下。

【讨论】:

  • 能否附上控制台输出?您是否在 xml 文件中收到任何编译时错误?
猜你喜欢
  • 1970-01-01
  • 2014-07-11
  • 1970-01-01
  • 1970-01-01
  • 2014-03-09
  • 2013-05-18
  • 2018-09-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多