Ошибка Spring MVC DispatcherServlet

Я пытался выполнить пример добавления Spring MVC с помощью Maven, но когда я пытаюсь запустить страницу index.jsp, я получаю эту ошибку:

HTTP Status 500 - Error instantiating servlet class org.springframework.web.servlet.DispatcherServlet java.lang.ClassNotFoundException: org.springframework.web.servlet.DispatcherServlet while executing 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. Чтобы определить сервлет диспетчера

    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. код, содержащий контроллер

Я упомянул все классы и файлы, которые использовал. Я пытался много раз, но не смог устранить ошибку. Пожалуйста, посоветуйте мне, как я могу исправить ошибку. Заранее спасибо.

Вы уверены, что выполнили все шаги в примере? Вы должны развернуть файл войны на своем сервере, и вместо этого вы создаете jar. Ваша ошибка указывает на то, что некоторые весенние банки не обнаруживаются вашим сервером. Ознакомьтесь с инструкциями по развертыванию.

RubioRic 02.05.2018 14:26

@ kerem-can Вы удалили конкретное исключение из заголовка, вы должны были вставить его в тело.

RubioRic 02.05.2018 14:29

Пожалуйста, отредактируйте вопрос, добавив исключение, которое вы получаете. Уточните, какой класс не обнаруживается.

RubioRic 02.05.2018 14:34

Попробуйте очистить и обновить проект maven. это должно решить вашу проблему. проверьте, доступна ли соответствующая банка.

Sangam Belose 02.05.2018 14:53
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
2
4
1 126
3

Ответы 3

вам не хватает некоторых jar зависимостей в вашем pom.xml, любезно добавьте их, некоторые зависимости, которые я вижу, отсутствуют,

  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, но я все еще получаю сообщение об ошибке. Запуск ProtocolHandler ["ajp-nio-8009"] 2 мая 2018 г. 18:13:48 org.apache.catalina.startup.Catalina start INFO: Запуск сервера через 27559 мс 2 мая 2018 г. 18:14:00 org.springframework.web.servlet.PageNotFound noHandlerFound ПРЕДУПРЕЖДЕНИЕ: не найдено сопоставление для HTTP-запроса с URI [/ mvc2 / add] в DispatcherServlet с именем 'spring1'

Saipriyadarshini Bandi 02.05.2018 14:48

Это ясно показывает, что сопоставление URL-адресов страницы неверно. Поэтому в шаблоне URL-адреса укажите *

ideano1 02.05.2018 19:12

Вы можете просто добавить следующий тег load-on-startup в web.xml

<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: Запуск ProtocolHandler ["ajp-nio-8009"] 2 мая 2018 г. 18:13:48 org.apache.catalina.startup.Catalina start INFO: Server запуск через 27559 мс 2 мая 2018 г. 18:14:00 org.springframework.web.servlet.PageNotFound noHandlerFound ПРЕДУПРЕЖДЕНИЕ: не найдено сопоставление для HTTP-запроса с URI [/ mvc2 / add] в DispatcherServlet с именем 'spring1'

Saipriyadarshini Bandi 02.05.2018 14:44

Можете ли вы попробовать заменить <ctx: component-scan base-package = "com.spring1.mvcexample"> </ ctx: component-scan> на <ctx: component-scan base-package = "com.spring1.mvcexample. *" > </ ctx: component-scan>

pranay jain 02.05.2018 14:53

@SaipriyadarshiniBandi Вы получаете другую ошибку. Ранее вы утверждали, что это исключение java.lang.ClassNotFoundException. Теперь вы получаете org.springframework.web.servlet.PageNotFound noHandlerFound. Пожалуйста, отредактируйте свой вопрос, указав эту новую информацию. Обратите внимание, что ваше приложение пытается получить доступ к / mvc2 / add. Где-то вы неправильно заменили отображение. Найдите "mvc2" в своих файлах.

RubioRic 02.05.2018 15:42

напишите ниже строку под тегом <servlet>:

  • <load-on-startup>1</load-on-startup>

Также убедитесь, что ваши файлы web.xml и spring1-servlet.xml должны находиться в папке / WEB-INF.

Не могли бы вы прикрепить консольный вывод? Вы получаете какую-либо ошибку времени компиляции в XML-файле?

Sachin Kumar 02.05.2018 15:00

Другие вопросы по теме