HTTP-статус 404 - не найден: исходный сервер не нашел текущего представления для целевого ресурса - PullRequest
0 голосов
/ 30 ноября 2018

Я получаю сообщение об ошибке при попытке получить доступ к сервису в среде Spring.

Spring MVC Application

Класс контроллера: -

package com.spring.mvc.tutorial;

import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

@Controller
@RequestMapping("/")
public class HelloWorldController {

    @RequestMapping(method = RequestMethod.GET)
    public String sayHello(ModelMap model) {
        model.addAttribute("message", "Hello World from Spring 4 MVC");
        return "welcome";
    }

    @RequestMapping(value = "/hello", method = RequestMethod.GET)
    public String sayHelloAgain(ModelMap model) {
        model.addAttribute("message", "Hello World Again, from Spring 4 MVC");
        return "welcome";
    }
}

Класс конфигурации: -

package com.spring.mvc.tutorial;

import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.ViewResolver;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.view.InternalResourceViewResolver;
import org.springframework.web.servlet.view.JstlView;

@Configuration
@EnableWebMvc
@ComponentScan(basePackages = "com.spring.mvc.tutorial")
public class HelloWorldConfiguration {

    public ViewResolver viewResolver() {
        InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
        viewResolver.setViewClass(JstlView.class);
        viewResolver.setPrefix("/WEB-INF/views/");
        viewResolver.setSuffix(".jsp");

        return viewResolver;
    }
}

Класс инициализации: -

package com.spring.mvc.tutorial;

import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletRegistration;

import org.springframework.web.WebApplicationInitializer;
import org.springframework.web.context.support.AnnotationConfigWebApplicationContext;
import org.springframework.web.servlet.DispatcherServlet;

public class HelloWorldInitializer implements WebApplicationInitializer {

    @Override
    public void onStartup(ServletContext container) throws ServletException {
        AnnotationConfigWebApplicationContext ctx = new AnnotationConfigWebApplicationContext();

        ctx.register(HelloWorldConfiguration.class);
        ctx.setServletContext(container);

        ServletRegistration.Dynamic servlet = container.addServlet("dispatcher", new DispatcherServlet(ctx));

        servlet.setLoadOnStartup(1);
        servlet.addMapping("/");
    }
}

Вид: -

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>HelloWorld page</title>
</head>
<body>
    <h2>${message}</h2>
</body>
</html>

ПРИМЕЧАНИЕ: - Запрос: http://localhost:8080/SpringMvcHelloWorld/ Это разработано в Eclipse Photon и развернуто в Tomcat 8.5.

Ответы [ 3 ]

0 голосов
/ 30 ноября 2018

Я получил ту же проблему и решил ее, проверив, где атрибуты, такие как @controller и @RequestMapping были связаны с пакетами mvc

Чтобы проверить, связаны ли источники:

Перейдите на страницу контроллера и нажмите одновременно клавишу управления и левую кнопку @Controller .

  1. Если источник не связантогда он появится так, как показано на рисунке.link

  2. Если источник не связан, то подключите источник, нажав кнопку присоединить источник, и наведите указатель на spring-webmvc-5.1.3.RELEASE-sources .

  3. Проверьте другие банки, выполнив два вышеуказанных шага.

0 голосов
/ 30 ноября 2018

Я пока не могу комментировать, поэтому это в форме ответа.

У меня была похожая проблема, когда tomcat не инициализировал веб-приложение.Не могли бы вы добавить как System.out.println на вашем инициализаторе, чтобы увидеть, если он инициализирует веб-приложение в первую очередь.

И делитесь журналами вашего сервера здесь.

0 голосов
/ 30 ноября 2018

Попробуйте перенаправить на главную html-страницу в классе вашего контроллера:

 @RequestMapping(method = RequestMethod.GET)
    public String sayHello(ModelMap model) {
        model.addAttribute("message", "Hello World from Spring 4 MVC");
        return "redirect:/main.html";
    }

Замените main.html на путь вашей домашней страницы

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