Не найдено сопоставления для HTTP-запроса с URI.... в DispatcherServlet с именем

Я проверил почти каждую соответствующую статью в stackoverflow уже, но я просто не могу исправить свою проблему.

Вот код: web.xml:

   <display-name>Spring3MVC</display-name>
    <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>
    <context-param>
        <param-name>contextConfigLocation</param-name> 
        <param-value>/WEB-INF/spring-servlet.xml</param-value> 
    </context-param> 
    <listener> 
        <listener-class> org.springframework.web.context.ContextLoaderListener </listener-class> 
    </listener>
    <servlet>
        <servlet-name>spring</servlet-name>
        <servlet-class>
            org.springframework.web.servlet.DispatcherServlet
        </servlet-class>
        <load-on-startup>2</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>spring</servlet-name>
        <url-pattern>*.html</url-pattern>
        <url-pattern>/</url-pattern>
        <url-pattern>*.htm</url-pattern>
    </servlet-mapping>
</web-app>

spring -servlet.xml:

<context:component-scan base-package="com.mycompany.elso" />
    <bean class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping"/>   

    <bean id="viewResolver"
        class="org.springframework.web.servlet.view.UrlBasedViewResolver">
        <property name="viewClass"
            value="org.springframework.web.servlet.view.JstlView" />
        <property name="prefix" value="/WEB-INF/jsp/" />
        <property name="suffix" value=".jsp" />
    </bean>

myController:

public class myController {
    @RequestMapping("/hello")
    public ModelAndView helloWorld() {

        String message = "Hello World, Spring 3.0!";
        return new ModelAndView("hello", "message", message); 
    }
}

Веб-страницы/index.jsp:

<html>
<head>
    <title>Spring 3.0 MVC Series</title>
</head>
<body>
    <a href="hello.html">Say Hello</a>
</body>
</html>

Веб-страницы/WEB-INF/jsp/hello.jsp:

<html>
<head>
    <title>Spring 3.0 MVC Series: Hello World - ViralPatel.net</title>
</head>
<body>
    ${message}
</body>
</html>

Итак, когда я запускаю приложение, index.jsp загружается правильно, но когда я нажимаю на href для перехода на hello.jsp, я получил ошибку 404, и в журнале сервера говорится:

No mapping found for HTTP request with URI [/Elso/hello.html] in DispatcherServlet with name 'spring'

Я проверил десятки таких статей, но я просто не могу найти ошибку, кто-нибудь знает, что это может быть?

Ответ 1

Вы можете попробовать добавить аннотацию @Controller поверх своего класса myController и попробуйте следующий URL /<webappname>/my/hello.html. Это связано с тем, что org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping добавляет /my к каждой RequestMapping в классе myController.

Ответ 2

Добавить

  <mvc:default-servlet-handler/>

до spring -servlet.xml

Ответ 3

Если вы используете

<mvc:annotation-driven/> 

убедитесь, что ваш spring -servlet.xml имеет правильный

<context:component-scan base-package="com.....controller" /> tag. 

В основном вам нужно включить все пакеты, в которых вы использовали аннотацию в своем Java-коде.

Ответ 4

Я решил свою проблему: Путь сборки Java → Системная библиотека JRE → Изменить → Альтернативный JRE → - > Готово

Поскольку он был настроен на папку JDK, поэтому он предоставлял Exception

Ответ 5

Пожалуйста, проверьте каталог [PROJECT_NAME]\target\classes, чтобы узнать, сгенерирован ли myController.class.

Если нет, проверьте все исходные тексты java, есть ли ошибки компиляции.

Ответ 6

Try:

<servlet-mapping>
    <servlet-name>spring</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>

Работал для меня!  

Ответ 7

Убедитесь, что

<mvc:annotation-driven/>
<context:component-scan base-package="com.hireartists.web.controllers"/>

указывает на правильный пакет, содержащий контроллеры.

Ответ 8

Если вы используете Java-код на основе конфигурации Spring MVC, тогда включите DefaultServletHandlerConfigurer в объекте WebMvcConfigurerAdapter.

@Override
public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) { 
        configurer.enable();
}

Ответ 9

Проверьте ur Bean xmlns..

У меня также была аналогичная проблема, но я разрешил ее, добавив mvc xmlns.

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


    <context:component-scan base-package="net.viralpatel.spring3.controller" />
    <bean id="viewResolver"
        class="org.springframework.web.servlet.view.UrlBasedViewResolver">
        <property name="viewClass"
            value="org.springframework.web.servlet.view.JstlView" />
        <property name="prefix" value="/WEB-INF/jsp/" />
        <property name="suffix" value=".jsp" />
    </bean>
</beans>

Ответ 10

добавление <mvc:annotation-driven/> работало для меня. Добавьте его перед строкой <context:component-scan ............/>

Ответ 11

Удаление Tomcat Server и добавление новой конфигурации tomcat в Eclipse для меня.

Ответ 12

Если вы используете maven как инструмент сборки для проекта, правильно создайте проект, ваши изменения в коде и xml файлах не отразятся после компиляции.

Ответ 13

Если вы зависите от Spring Social, убедитесь, что вы настроили веб-контроллер bean:

import org.springframework.context.annotation.Bean;
import org.springframework.social.connect.web.ConnectController;
import org.springframework.social.connect.ConnectionFactoryLocator;
import org.springframework.social.connect.ConnectionRepository;

...

@Bean
public ConnectController connectController(ConnectionFactoryLocator connectionFactoryLocator, ConnectionRepository connectionRepository) {
    return new ConnectController(connectionFactoryLocator, connectionRepository);
}

Ответ 14

Если вы хотите обслуживать файлы .html, вы должны добавить этот <mvc:default-servlet-handler /> в конфигурационный файл spring. Файлы .html являются статическими. Надеюсь, что это может помочь кому-то.

Ответ 15

если вы используете maven, тогда выполните команду maven install, прежде чем запускать веб-приложение на сервере, поскольку оно будет генерировать файл класса для вашего контроллера, и по моему опыту это то, что ваше приложение отсутствовало.

Ответ 16

Это не нахождение контроллеров, это основные проблемы. это может быть вызвано следующими причинами.

а. внутри папки WEB-INF у вас есть файл web.xml, который ссылается на dispatcherServlet. Здесь это случай mvc-config.xml

<servlet>
    <servlet-name>dispatcherServlet</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/mvc-config.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>

В. Этот файл mvc-config.xml имеет пространства имен, и он должен сканировать контроллеры.

<context:component-scan base-package="org.vimal.spring.controllers" />
<mvc:annotation-driven />

С. Проверьте правильность имени пакета, в котором у вас есть контроллеры. Он должен работать.

All Controllers must be Annotated with @Controller.

Ответ 17

Добавьте @Controller к вашему контроллеру или где бы вы ни располагали @RequestMapping для конечной точки json.

Это работало для меня при развертывании аналогичного приложения.

Ответ 18

Если вы используете Maven, Добавьте их в свой pom.xml

<dependency>
<groupid>javax.servlet</groupid>
<artifactId>jstl</artifactId>
<version>1.2</version>
<scope>runtime</scope>

<dependency>
<groupid>taglibs</groupid>
<artifactId>standard</artifactId>
<version>1.1.2</version>
<scope>runtime</scope>

Ответ 19

Была такая же ошибка, и мне потребовалось много времени, чтобы понять ее. Скорее всего, до ошибок компиляции, классы Java не опубликованы в вашем сервлете. Проверьте это, перейдя на сервер, который вы используете \tmp1\wtpwebapps [PROJECT_NAME]\WEB-INF\classes \, и попробуйте найти классы контроллера, чтобы узнать, были ли они опубликованы. Если нет, вам нужно понять, какие ошибки компиляции.

Ответ 20

Я также столкнулся с той же проблемой, но после размещения пространства имен ниже, он отлично работает:

xmlns:mvc="http://www.springframework.org/schema/mvc" 

Ответ 21

В pom.xml убедитесь, что для упаковки установлено значение war как <packaging>war</packaging>, а не в jar или что-то еще.

Ответ 22

У меня была такая же проблема, и после многих повторных попыток я обнаружил, что классы не публикуются в моей целевой папке. Поэтому я выполнил две команды из cmd

  • mvn clean install
  • mvn package

Удивительно, но я смог получить доступ к странице, и ошибка исчезла. То же самое можно проверить из целевой папки, где вы сможете найти выполненные ранее классы.

Ответ 23

Что такое /Elso?

Вы пытаетесь:

@RequestMapping("/Elso")
public class myController {

    @RequestMapping("/hello")
    public ModelAndView helloWorld() {

        String message = "Hello World, Spring 3.0!";
        return new ModelAndView("hello", "message", message); 
    }
}