Это аналогичный вопрос, который был задан раньше, но все же другой, и я просто не могу понять это.Spring MVC Controller не разрешает URI
У меня есть контроллер для веб-службы REST, реализованный с MVC, который должен обрабатывать запросы для пути «/ users/contacts», проблема в том, что в моем тестовом приложении для клиента, когда я пытаюсь ударить по этому пути, я получаю:
No mapping found for HTTP request with URI /users/users/contacts in DispatcherServlet with name 'webservice'
Опять же, на мой тестовый клиент приложение, когда я изменить путь запроса к чему-то вроде «/ WHATEVERusers/контакты», я получаю сообщение об ошибке, что он не может разрешить «/ WHATEVERusers/контакты»
Я не знаю, почему, когда я пытаюсь ударить по пути, обрабатываемому контроллером, он становится искаженным, но когда я запрашиваю какой-то мусорный путь, это не так.
У меня нет кода передо мной, но я смогу ответить на вопросы, когда вернусь домой.
Вот код из моего тестового клиента:
private static void TestGetContacts()
{
UserCreateRequest request = new UserCreateRequest();
Gson gson = new Gson();
try
{
HttpClient client = new DefaultHttpClient();
StringEntity string = new StringEntity(gson.toJson(request), HTTP.UTF_8);
string.setContentType("application/json");
URI uri = URIUtils.createURI("http", "localhost", 8888, "https://stackoverflow.com/users/contacts", null, null);
HttpPost post = new HttpPost(uri);
post.setEntity(string);
client.execute(post);
}
catch(Exception ex)
{
System.out.println(ex.getMessage());
}
}
Вот мой класс контроллера:
@Controller
@RequestMapping("https://stackoverflow.com/users/contacts")
public class UserContactService
{
private @Autowired ApplicationContext appContext;
@RequestMapping(method=RequestMethod.POST, consumes="application/json", produces="application/json")
public GetContactsResponse GetContacts(@RequestBody UserCreateRequest request)
{
GetContactsResponse response = new GetContactsResponse();
return response;
}
}
Вот мой сервлет конфигурации:
<?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:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:oxm="http://www.springframework.org/schema/oxm"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/oxm http://www.springframework.org/schema/oxm/spring-oxm-3.0.xsd">
<!--
- The controllers are autodetected POJOs labeled with the @Controller annotation.
-->
<context:component-scan base-package="com.impersonal.server.restservice.users"/>
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
<property name="messageConverters">
<list>
<ref bean="jsonConverter" />
<!--
<ref bean="marshallingConverter" />
<ref bean="atomConverter" />
-->
</list>
</property>
</bean>
<bean id="jsonConverter" class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">
<property name="supportedMediaTypes" value="application/json" />
</bean>
И вот мой веб config:
<?xml version="1.0" encoding="utf-8"?>
<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"
version="2.5">
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:/**/applicationContext.xml</param-value>
</context-param>
<servlet>
<servlet-name>webservice</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>webservice</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
Update: Мои запросы обрабатываются в мой контроллер, но после того, как запрос обрабатывается, отпечатки сервера, что он не может разрешить/пользователей/пользователей/контакты. По какой-то причине еще один запрос на получение DispsatcherServlet, и я не знаю, почему ..
Спасибо, Марк
Без дополнительной информации трудно определить, есть ли проблема в вашем клиенте или в вашем веб-сервисе. Опубликуйте более подробную информацию о своем клиентском тестовом приложении или сделайте путаницу клиента на картинке с помощью простого HTTP-клиента, такого как cURL. Также опубликуйте более подробную информацию о своем веб-сервисе, в том числе о том, как настроить его для обработки определенных URL-адресов. – jtoberon
Можете ли вы предоставить сервлет-сопоставление для своего диспетчерского сервлета, а также контекстное имя веб-приложения - это любой из этих/пользователей. Кроме того, как вы инициализировали Spring MVC, это просто использование mvc: annotation-driven или вы настроили сопоставление handleradapter или handler любым способом –
можете ли вы поделиться своим классом контроллера? – JOHND