Spring MVC не может отобразить URL - PullRequest
0 голосов
/ 24 июня 2018

Мой диспетчерский сервлет выглядит следующим образом

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

<mvc:annotation-driven/>
<context:component-scan base-package="com.springimplant.mvc.controllers"/>

</beans>

У меня есть домашний контроллер под пространством имен Домашний контроллер следующим образом

    package com.springimplant.mvc.controllers;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
public class HomeController {

    @RequestMapping("/home")
    @ResponseBody
    public String goHome()
    {
        return "Welcome Home";
    }
}

Файл Web.xml -

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" version="3.1">
  <display-name>course-project</display-name>

  <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListner</listener-class>
  </listener>

  <context-param>
  <param-name>contextConfigLocation</param-name>
  <param-value>/WEB-INF/spring/applicationContext.xml</param-value>
  </context-param>

  <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/*-servlet.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>

Тем не менее, когда я запускаю приложение в localhost, я получаю ошибку 404 как «Исходный сервер не нашел текущего представления для целевого ресурса или не хочет раскрывать, что он существует». Пожалуйста, руководство, где я иду не так

URL, который я нажимаю, http://localhost:8080/course-project/home

Ответы [ 3 ]

0 голосов
/ 25 июня 2018

Пожалуйста, удалите @ResponseBody, так как сервлет диспетчера должен понимать, что возвращаемое значение не является HTTP-ответом, а является именем представления. А также убедитесь, что возвращаемое значение должно совпадать с именем страницы просмотра.

0 голосов
/ 03 июля 2018

На самом деле я пытался опубликовать эту строку только как ResponseBody. Вот что сработало для меня, я начал с нового проекта со следующими изменениями

  1. Снова загрузил STS (Spring Tool Suite) (мой журнал отладки консоли не показывался).
  2. Использовав Tomcat 8.5 вместо основного сервера TC 4.0, вы можете попробовать основную версию TC 3.2-3.5, основанную на том же самом.
  3. Динамический аспект веб-модуля Я использовал 4.0, я опустил его до 3.1. (Я где-то видел, что 4.0 поддерживает аннотацию @RestController, а не аннотацию @Controller)
  4. Я использовал фасет slf4j-log4j13 и реализацию log4j, это приводило к ошибке, что класс не найден "log.logger". Поэтому я добавил еще один фасет "log4j-simple".

Хотя я до сих пор не знаю, что из этого сработало для меня :) Спасибо за ваши ответы. Вот оно на github https://github.com/gauravmatta/springmvc/tree/master/my-project

0 голосов
/ 25 июня 2018

Причина в том, что вы добавили @ResponseBody в метод goHome(), поэтому он не вернется на страницу и просто вернет чистую строку, однако в вашем случае у нас нет места, чтобы показать строку

Поэтому удалите @ResponseBody и вернитесь на страницу просмотра, аналогичную приведенной ниже:

@Controller
public class HomeController {

    @RequestMapping("/home")
    public String goHome()
    {
        return "welcome";//if the suffix is jsp
        //return "welcome.jsp"; // if do not have suffix in your spring configuration file
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...