Url-адрес изменяется после получения запроса на сервере

#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», это ошибка?