Не найдено сопоставления для 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);
}
}