Spring MVC - Получение постоянных 404 ошибок с использованием Tomcat - PullRequest
1 голос
/ 28 марта 2020

Я создал веб-приложение Spring MVC для своего университетского проекта с Maven, используя tomcat. Тем не менее, я боролся с постоянными ошибками 404 при обращении к URL-адресу / user / info, а также ко всем другим URL-адресам. URL / user / info должен быть сопоставлен с классом ProfileService и методом getUserInfo (), но, к сожалению, он не работает, и я получаю сообщение об ошибке 404.

Я пытаюсь выяснить, что проблема, которая вызывает 404 ошибки. Я пробовал этот URL: localhost: 8080 / user / info Изменение сети. xml Отображение URL-адреса на "/ *" не помогло.

Проблема в неправильной конфигурации сети. xml или spring-context. xml файлы, которые препятствуют отображению URL-адреса?

Когда я обращаюсь к / URL, тогда файл index. jsp сопоставляется и работает нормально.

Заранее спасибо.

spring-context. xml файл:

<?xml version="1.0" encoding="UTF-8"?>
<beans:beans
        xmlns="http://www.springframework.org/schema/mvc"
        xmlns:beans="http://www.springframework.org/schema/beans"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:context="http://www.springframework.org/schema/context"
        xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd
        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">

    <annotation-driven />
    <context:component-scan base-package="ie" />

</beans:beans>

web. xml файл:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">

    <servlet>
        <servlet-name>dispatcher</servlet-name>
        <servlet-class>
            org.springframework.web.servlet.DispatcherServlet
        </servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>WEB-INF/spring-context.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>dispatcher</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

</web-app>

ProfileService . java файл:

package ie.services;

import ie.logic.Loghme;
import ie.services.responses.CreditInfo;
import ie.services.responses.StatusCode;
import ie.services.responses.UserInfo;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.*;

@RestController
public class ProfileService {

    @RequestMapping(value = "/user/info", method = RequestMethod.GET,
            produces = MediaType.APPLICATION_JSON_VALUE)
    public UserInfo getUserInfo() {
        return new UserInfo(Loghme.getInstance().getLoginnedUser());
    }

    @RequestMapping(value = "/user/credit", method = RequestMethod.GET,
            produces = MediaType.APPLICATION_JSON_VALUE)
    public CreditInfo getUserCredit(){
        return new CreditInfo(Loghme.getInstance().getLoginnedUser().getCredit());
    }
}

1 Ответ

0 голосов
/ 28 марта 2020

Ваше отображение не совсем верно. У вас есть @PathVariable в качестве параметра метода, который вы не указали в своем пути. Таким образом, он должен читаться следующим образом (посмотрите на значение = из @RequestMapping).

 @RequestMapping(value = "/user/info/{s}", method = RequestMethod.GET,
            produces = MediaType.APPLICATION_JSON_VALUE)
    public UserInfo getUserInfo(@PathVariable String s) {
        return new UserInfo(Loghme.getInstance().getLoginnedUser());
    }

Что означает, однако, что вы должны поместить его туда, когда делаете запрос, например, GET "/ user /info/hello".

Однако, если вы не используете его, вы можете просто удалить его из метода и из строки и затем вызвать "/user/info".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...