В настоящее время у меня возникла проблема при настройке веб-проекта springmvc.springmvc не может вызвать метод контроллера
Ниже мой web.xml
<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>0</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>/api/*</url-pattern>
</servlet-mapping>
И я определил мой диспетчерскую-servlet.xml как этот
<context:component-scan base-package="xxx.controller"
<mvc:annotation-driven />
И в пакете xxx.controller Я определяю класс TestController
@Controller
@RequestMapping(value="/api")
public class TestController {
@RequestMapping(value = "/hello")
@ResponseBody
public String hello(){
System.out.println("comming hello");
return "hello world";
}
}
Теперь, когда я начинаю кот, и хочу получить доступ к localhost:8080/testproject/api/hello, весна сообщает мне
[10: 10: 58 | WARN | (org.springframework.web.servlet.PageNotFound) ] = [отображение не найдено для запроса HTTP с URI [/ TestProject/API/привет] в DispatcherServlet с именем 'диспетчером']
Но если я изменить URL-шаблон в web.xml для
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
Доступно к localhost:8080/testproject/api/hello. Я не знаю, почему это происходит. Я хочу использовать /api/*, а не /.
Может ли кто-нибудь помочь мне настроить отображение пути к контроллеру? Большое спасибо!
Извините, но, возможно, вы неправильно поняли мои слова. В настоящее время он работает, когда url-шаблон «/», но не работает, когда url-шаблон «/ api/*». Я хочу, чтобы он работал под вторым шаблоном url. Не могли бы вы рассказать мне, как настроить? –
Это правильно. Если вы хотите, чтобы все приложение было подано из/api/.., тогда сохраните свой web.xml как есть, но затем удалите сопоставление с вашего контроллера @RequestMapping (value = "/ api"). - В вашем в первом примере вы дважды определили отображение/api (web.xml & @RequestMapping), но вам нужно только один раз. – rhinds
Я вижу. Теперь он работает согласно вашему предложению. Большое спасибо! –