Я пытаюсь создать Spring RESTful API очень простое приложение с нуля, но я не могу получить доступ к контроллеру. Я мог получить доступ к файлу JSP, но не к контроллеру. Я также пробовал комментировать с @RestController, но это не сработало. Я работаю на Tomcat 8.
Ошибка:
The origin server did not find a current representation for the target resource or is not willing to disclose that one exists. WEB.xml
<?xml version = "1.0" encoding = "UTF-8"?>
<web-app version = "2.5" xmlns = "http://java.sun.com/xml/ns/javaee"
xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation = "http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
диспетчер-сервлет.xml
<?xml version = "1.0" encoding = "UTF-8"?>
<beans xmlns = "http://www.springframework.org/schema/beans"
xmlns:mvc = "http://www.springframework.org/schema/mvc"
xmlns:context = "http://www.springframework.org/schema/context"
xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation = "
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">
<mvc:annotation-driven />
<context:component-scan
base-package = "com.controller />
<mvc:default-servlet-handler />
</beans>
Мой контроллер
@Controller
public class TransactionControllerImpl{
@Autowired
private TransactionService transactionService;
@RequestMapping(method = RequestMethod.GET, value = "/transaction")
@ResponseBody
public String getTransactionList() {
try {
System.out.println("from controller");
return "HEllow rahul";//transactionService.getTransactionList();
}
catch (Exception e) {
return null;
}
}
localhost: 8080 / test / transaction, а «test» - это контекстный путь, который я добавил в веб-модуль Tomcat.
Удалите @ResponseBody и распечатайте Exception, если существует в return null
Я также пробовал без Responsebody, но это не сработало. Проблема в контроллере или какой-то конфигурации. Он даже не попадает в контроллер.
Похоже, это решение: Исходный сервер не нашел текущего представления для целевого ресурса или не желает раскрывать его существование.
Нет. В моем случае я мог получить доступ к JSP, и даже шаблон URL мне кажется нормальным.
Можете ли вы попробовать добавить @RequestMapping("/") в класс контроллера
Если вы хотите развить сервис отдыха, с весенней загрузкой будет намного проще!
Если вы начинаете с нуля, то обязательно используйте Spring Boot; вы можете сгенерировать полный рабочий проект одним щелчком мыши на start.spring.io. Это позволяет избежать многих головных болей, связанных с настройкой проектов. Стиль контейнера, стиль конфигурации (XML; используйте JavaConfig), JSP (используйте Thymeleaf) и стиль инъекции (избегайте инъекции полей) в вашем руководстве - все они устарели.
Вы должны использовать spring -boot, а не эту старую реализацию. В springboot все будет автоматически настраиваться, вам просто нужно указать зависимость и запустить приложение.




Удалите прослушиватель из web.xml, потому что у вас есть только один контекстный xml. Если вы хотите загрузить несколько XML-контекста, добавьте слушателя и параметр контекста.
Если вы создаете контекст приложения отдельно, вы должны указать параметр и значение контекста в качестве местоположения вашего файла context.xml.
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/application-context.xml</param-value>
</context-param>
По вашей ошибке контроллер недоступен, это может быть связано с: -
<context:component-scan
base-package = "com.controller />
проверьте, правильно ли вы написали имя базового пакета, или попробуйте использовать
<context:component-scan base-package = "..package name..">
<context:include-filter expression = "org.springframework.stereotype.Controller" type = "annotation"/>
</context:component-scan>
Надеюсь, это поможет.
Как вы получаете доступ к контроллеру, какой URL вы используете?