#spring #spring-mvc #tomcat #spring-annotations
#spring #spring-mvc #tomcat #spring-аннотации
Вопрос:
Я пытаюсь разработать веб-сервис RESTful с использованием Spring framework с Apache Tomcat. Я добавил два класса контроллеров, у которых было около 5-6 конечных точек, которые работали нормально. Но со вчерашнего дня, когда я пытаюсь добавить другую конечную точку, я получаю странную ошибку.
@Controller
@RequestMapping("/test")
public class TextController {
@RequestMapping(method=RequestMethod.POST)
public void test() {
System.out.println("Hello world");
}
}
Когда я пытаюсь использовать этот URL-адрес из браузера (используя клиент REST) Я получаю следующий вывод:
Hello world
Jun 25, 2014 7:05:55 PM org.springframework.web.servlet.PageNotFound noHandlerFound
WARNING: No mapping found for HTTP request with URI [/ChitChatApp/rest/test/test] in DispatcherServlet with name 'chitchat-dispatcher'
В URL-адресе отображается добавленный дополнительный «/ test».
Мои другие API по-прежнему работают нормально. Только новые, которые я добавляю, выдают эту ошибку.
Мой web.xml выглядит примерно так:
<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_2_5.xsd" id="WebApp_ID" version="2.5">
<display-name>ChitChat Web Service</display-name>
<servlet>
<servlet-name>chitchat-dispatcher</servlet-name>
<servlet-class> org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!-- Creates the Spring Container shared by all Servlets and Filters -->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/chitchat-servlet.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>chitchat-dispatcher</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
</web-app>
Не уверен, почему это начало происходить внезапно. Был бы признателен за помощь в этом.
Комментарии:
1. Покажите
chitchat-servlet.xml
, пожалуйста.2. Добавление аннотации @ResponseBody поверх метода test() решило проблему.
Ответ №1:
Из @RequestMapping("/test")
кажется, что URL-адрес должен быть «somprefix / test», но вы отправляете запрос на URL-адрес «/ ChitChatApp / rest / test / test», это ошибка?