Нет доступа к контроллеру Spring

Я пытаюсь создать 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;
        }
    }

Как вы получаете доступ к контроллеру, какой URL вы используете?

imprezzeb 11.11.2018 05:41

localhost: 8080 / test / transaction, а «test» - это контекстный путь, который я добавил в веб-модуль Tomcat.

rahul 11.11.2018 05:42

Удалите @ResponseBody и распечатайте Exception, если существует в return null

user7294900 11.11.2018 05:46

Я также пробовал без Responsebody, но это не сработало. Проблема в контроллере или какой-то конфигурации. Он даже не попадает в контроллер.

rahul 11.11.2018 05:50

Нет. В моем случае я мог получить доступ к JSP, и даже шаблон URL мне кажется нормальным.

rahul 11.11.2018 05:57

Можете ли вы попробовать добавить @RequestMapping("/") в класс контроллера

Deadpool 11.11.2018 06:17

Если вы хотите развить сервис отдыха, с весенней загрузкой будет намного проще!

Avijit Barua 11.11.2018 06:46

Если вы начинаете с нуля, то обязательно используйте Spring Boot; вы можете сгенерировать полный рабочий проект одним щелчком мыши на start.spring.io. Это позволяет избежать многих головных болей, связанных с настройкой проектов. Стиль контейнера, стиль конфигурации (XML; используйте JavaConfig), JSP (используйте Thymeleaf) и стиль инъекции (избегайте инъекции полей) в вашем руководстве - все они устарели.

chrylis -cautiouslyoptimistic- 11.11.2018 07:07

Вы должны использовать spring -boot, а не эту старую реализацию. В springboot все будет автоматически настраиваться, вам просто нужно указать зависимость и запустить приложение.

GauravRai1512 11.11.2018 07:07
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
10
123
2

Ответы 2

Удалите прослушиватель из 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>

Надеюсь, это поможет.

Другие вопросы по теме