После демонстрации программного обеспечения на Skillsoft я создал простое демонстрационное приложение Spring MVC в Eclipse.Приложение загружается нормально, и я могу попасть на домашнюю страницу («Hello World»).Но когда я пытаюсь поразить мой контроллер, я получаю следующее сообщение об ошибке
Статус HTTP 404 - Не найдено
Тип Отчет о состоянии
Сообщение /springMVCDemo/WEB-INF/jsp/quote.jsp
Описание Исходный сервер не нашел текущего представления для целевого ресурса илине хочет раскрывать, что он существует.
Я изучил следующие ссылки, описывающие ту же ошибку, но не смог заставить мой код работать:
Ошибка Tomcat 404:Исходный сервер не нашел текущего представления для целевого ресурса или не хочет раскрывать, что он существует
Сервлет возвращает "HTTP Status 404 Запрашиваемый ресурс (/ сервлет) недоступен"
Исходный сервер не нашел текущего представления для целевого ресурса или не хочет раскрыть, что он существует.при развертывании на tomcat
Исходный сервер не нашел текущего представления для целевого ресурса или не хочет раскрывать, что он существует
web.xml
<web-app>
<display-name>Archetype Created Web Application</display-name>
<servlet>
<servlet-name>MyDemoApp</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/myDemoApp-servletConfig.xml</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>MyDemoApp</servlet-name>
<url-pattern>*.html</url-pattern>
</servlet-mapping>
</web-app>
myDemoApp-servletConfig.xml
<?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.0.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.0.xsd">
<mvc:annotation-driven/>
<context:component-scan base-package="com.demo.controllers"</context:component-scan>
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/jsp/"/>
<property name="suffix" value=".jsp"/>
</bean>
</beans>
MyDemoController.java
package com.demo.controllers;
import java.util.Random;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class MyDemoController {
private String[] quotes = {"To be or not to be -Shakespeare",
"Stay hungry you're alone -Dee Snider",
"Might as well jump! -David Lee Roth"};
//http://localhost:8080/springMVCDemo/getQuote.html
@RequestMapping(value="/getQuote")
public String getRandomQuote(Model model) {
int rand = new Random().nextInt(quotes.length);
String randomQuote = quotes[rand];
model.addAttribute("randomQuote", randomQuote);
return "quote";
}
}
Quote.jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>My Demo App</title>
</head>
<body>
<h1>The quote is:</h1>
<p>${randomQuote}</p>
</body>
</html>
index.jsp
<html>
<body>
<h2>Hello World!</h2>
</body>
</html>
КаталогСтруктура
springMVCDemo
|
-->main
-->java
-->com
-->demo
-->controllers
-->MyDemoController.java
-->webapp
-->WEB-INF
myDemoApp-servletConfig.xml
web.xml
index.jsp
-->jsp
-->Quote.jsp
Что я пробовал и результаты
Эксперимент № 1:
http://localhost:8080/springMVCDemo
Результат: отображение в браузере"Привет, мир!"как и ожидалось
Эксперимент № 2:
http://localhost:8080/springMVCDemo/getQuote.html
Ожидаемое поведение: отображается одна из трех цитат
Фактический результат: HTTP 404 + сообщения консоли Eclipse:
Dec 29, 2018 5:59:40 PM org.apache.catalina.core.ApplicationContext log
INFO: Initializing Spring FrameworkServlet 'MyDemoApp'
Dec 29, 2018 5:59:40 PM org.springframework.web.servlet.DispatcherServlet initServletBean
INFO: FrameworkServlet 'MyDemoApp': initialization started
Dec 29, 2018 5:59:40 PM org.springframework.web.context.support.XmlWebApplicationContext prepareRefresh
INFO: Refreshing WebApplicationContext for namespace 'MyDemoApp-servlet': startup date [Sat Dec 29 17:59:40 EST 2018]; root of context hierarchy
Dec 29, 2018 5:59:40 PM org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
INFO: Loading XML bean definitions from ServletContext resource [/WEB-INF/myDemoApp-servletConfig.xml]
Dec 29, 2018 5:59:42 PM org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping registerHandlerMethod
INFO: Mapped "{[/getQuote],methods=[],params=[],headers=[],consumes=[],produces=[],custom=[]}" onto public java.lang.String com.demo.controllers.MyDemoController.getRandomQuote(org.springframework.ui.Model)
Dec 29, 2018 5:59:42 PM org.springframework.web.servlet.DispatcherServlet initServletBean
INFO: FrameworkServlet 'MyDemoApp': initialization completed in 1751 ms
Эксперимент № 3:
http://localhost:8080/springMVCDemo/getQuote2.html
Результат: Как и ожидалось, я получил HTTP 404, поскольку такого сопоставления не существует.Также было отображено следующее консольное сообщение Eclipse:
Dec 29, 2018 6:03:21 PM org.springframework.web.servlet.PageNotFound noHandlerFound
WARNING: No mapping found for HTTP request with URI [/springMVCDemo/getQuote2.html] in DispatcherServlet with name 'MyDemoApp'
В целом, я считаю, что мой контроллер отображается правильно, но по какой-то причине страница не отображается: (
Версии программного обеспечения, которые я использую
Eclipse 2018-09 (4.9.0); Tomcat v9.0
Если кто-нибудь может дать какой-либо совет по устранению неполадок, он будет очень признателен.Я потратил почти 8 часов, пытаясь адаптировать свой конфигурационный файл сервлета, но пока не повезло.