Spring MVC. Tomcat отдает 404

175
23 марта 2018, 12:19

Скачал готовый качественный Maven-проект с github'а, удалось его запустить, но Tomcat относительно всех адресов отдает 404.

HTTP Status 404  Not Found
Type Status Report
Message /
Description The origin server did not find a current representation for the 
target resource or is not willing to disclose that one exists.
Apache Tomcat/9.0.6

Вот пример одного контроллера, HomePageController:

package com.core.newbie.controller;
import org.apache.log4j.Logger;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
@RequestMapping("/")
public class HomePageController {
Logger logger = Logger.getLogger(HomePageController.class);
@RequestMapping("/index")
public String home() {
    logger.info("loading home page"); // UPD: Ничего не пишется в лог отсюда.
    return "index";
}
@RequestMapping("/")
public String home2() {
    logger.info("loading home page"); // UPD: Ничего не пишется в лог отсюда.
    return "index";
}
}

web.xml в WEB-INF:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0"
     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 ">
<display-name>Archetype Created Web Application</display-name>
<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:spring-mybatis.xml</param-value>
</context-param>
<filter>
    <filter-name>encodingFilter</filter-name>
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
    <async-supported>true</async-supported>
    <init-param>
        <param-name>encoding</param-name>
        <param-value>UTF-8</param-value>
    </init-param>
</filter>
<filter-mapping>
    <filter-name>encodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>
<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<listener>
    <listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class>
</listener>
<servlet>
    <servlet-name>SpringMVC</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:spring-mvc.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
    <async-supported>true</async-supported>
</servlet>
<servlet-mapping>
    <servlet-name>SpringMVC</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>

index.html там же: обычный html-файл.

spring-mvc.xml, в ресурсах (UPD: с изначальными комментариями - может, нужно что-то изменить?):

<?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/beans
   http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
   http://www.springframework.org/schema/context
   http://www.springframework.org/schema/context/spring-context-3.1.xsd
   http://www.springframework.org/schema/mvc
   http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd">
<context:component-scan base-package="com.core.newbie.controller"/>
<mvc:annotation-driven/>
<!--<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">-->
<!--<property name="messageConverters">-->
<!--<list>-->
<!--<ref bean="mappingJacksonHttpMessageConverter"/>-->
<!--</list>-->
<!--</property>-->
<!--</bean>-->
<mvc:resources location="/WEB-INF/static/" mapping="/static/**" />
<bean id="templateResolver"
      class="org.thymeleaf.templateresolver.ServletContextTemplateResolver">
    <property name="prefix" value="/WEB-INF/" />
    <property name="suffix" value=".html" />
    <!--<property name="templateMode" value="HTML5" />-->
    <!-- Template cache is set to false (default is true).        -->
    <property name="cacheable" value="false" />
    <property name="characterEncoding" value="UTF-8"/>
</bean>
<bean id="templateEngine" class="org.thymeleaf.spring4.SpringTemplateEngine">
    <property name="templateResolver" ref="templateResolver" />
</bean>
<!--<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="prefix" value="/WEB-INF/"/>
    <property name="suffix" value=""/>
</bean>-->
<!--<bean class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">-->
    <!--<property name="contentNegotiationManager" ref="cnManager"/>-->
    <!--<property name="viewResolvers">-->
        <!--<list>-->
            <!--&lt;!&ndash; Used here for 'xml' and 'atom' views  &ndash;&gt;-->
            <!--<bean class="org.springframework.web.servlet.view.BeanNameViewResolver">-->
                <!--<property name="order" value="1"/>-->
            <!--</bean>-->
            <!--<bean class="org.thymeleaf.spring3.view.ThymeleafViewResolver">-->
                <!--<property name="templateEngine" ref="templateEngine" />-->
                <!--<property name="characterEncoding" value="UTF-8"/>-->
                <!--<property name="order" value="2"/>-->
                <!--&lt;!&ndash; We need to set exclusions because Content Negotiation tries to resolve from &ndash;&gt;-->
                <!--&lt;!&ndash; Thymeleaf even if a specific view bean (of a different class) is already    &ndash;&gt;-->
                <!--&lt;!&ndash; found, which might cause exceptions (e.g. ThymeleafView does not have a     &ndash;&gt;-->
                <!--&lt;!&ndash; 'marshaller' property).                                                     &ndash;&gt;-->
                <!--<property name="excludedViewNames" value="*.xml" />-->
            <!--</bean>-->
            <!--&lt;!&ndash; Default viewClass: JSTL view (JSP with html output)&ndash;&gt;-->
            <!--<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">-->
                <!--<property name="prefix" value="/WEB-INF/"/>-->
                <!--<property name="suffix" value=""/>-->
                <!--<property name="order" value="3"/>-->
            <!--</bean>-->
        <!--</list>-->
    <!--</property>-->
<!--</bean>-->
<bean class="org.thymeleaf.spring4.view.ThymeleafViewResolver">
    <property name="templateEngine" ref="templateEngine" />
    <property name="characterEncoding" value="UTF-8"/>
    <!--<property name="order" value="2"/>-->
    <!-- We need to set exclusions because Content Negotiation tries to resolve from -->
    <!-- Thymeleaf even if a specific view bean (of a different class) is already    -->
    <!-- found, which might cause exceptions (e.g. ThymeleafView does not have a     -->
    <!-- 'marshaller' property).                                                     -->
    <property name="excludedViewNames" value="*.xml" />
</bean>
<!--<bean id="cnManager" class="org.springframework.web.accept.ContentNegotiationManagerFactoryBean">-->
    <!--<property name="favorPathExtension" value="true"/>-->
    <!--<property name="ignoreAcceptHeader" value="true"/>-->
    <!--<property name="defaultContentType" value="text/html"/>-->
    <!--<property name="mediaTypes">-->
        <!--<map>-->
            <!--<entry key="html" value="text/html" />-->
            <!--<entry key="xml" value="application/xml" />-->
            <!--<entry key="atom" value="application/atom+xml" />-->
        <!--</map>-->
    <!--</property>-->
<!--</bean>-->
</beans>

UPD: Метода public static void main почему-то нет. Где его создать в такой структуре? Как назвать файл и что в нем прописать? Может, в этом проблема.

Лог Tomcat при старте:

мар. 22, 2018 5:48:07 ПП org.apache.catalina.startup.VersionLoggerListener 
log
INFO: Server version:        Apache Tomcat/9.0.6
мар. 22, 2018 5:48:07 ПП org.apache.catalina.startup.VersionLoggerListener 
log
INFO: Server built:          Mar 5 2018 09:34:35 UTC
мар. 22, 2018 5:48:07 ПП org.apache.catalina.startup.VersionLoggerListener             log
INFO: Server number:         9.0.6.0
мар. 22, 2018 5:48:07 ПП org.apache.catalina.startup.VersionLoggerListener         log
INFO: OS Name:               Windows 10
мар. 22, 2018 5:48:07 ПП org.apache.catalina.startup.VersionLoggerListener     log
INFO: OS Version:            10.0
мар. 22, 2018 5:48:07 ПП org.apache.catalina.startup.VersionLoggerListener log
INFO: Architecture:          amd64
мар. 22, 2018 5:48:07 ПП org.apache.catalina.startup.VersionLoggerListener log
INFO: Java Home:             C:\Program Files\Java\jdk-9.0.4
мар. 22, 2018 5:48:07 ПП org.apache.catalina.startup.VersionLoggerListener log
INFO: JVM Version:           9.0.4+11
мар. 22, 2018 5:48:07 ПП org.apache.catalina.startup.VersionLoggerListener log
INFO: JVM Vendor:            Oracle Corporation
мар. 22, 2018 5:48:07 ПП org.apache.catalina.startup.VersionLoggerListener log
INFO: CATALINA_BASE:         C:\Users\Tim\eclipse-    workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0
мар. 22, 2018 5:48:07 ПП org.apache.catalina.startup.VersionLoggerListener log
INFO: CATALINA_HOME:         C:\apache-tomcat-9.0.6
мар. 22, 2018 5:48:07 ПП org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -Dcatalina.base=C:\Users\Tim\eclipse-    workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0
мар. 22, 2018 5:48:07 ПП org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -Dcatalina.home=C:\apache-tomcat-9.0.6
мар. 22, 2018 5:48:07 ПП org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -Dwtp.deploy=C:\Users\Tim\eclipse-workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps
мар. 22, 2018 5:48:07 ПП org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -Dfile.encoding=Cp1251
мар. 22, 2018 5:48:07 ПП org.apache.catalina.core.AprLifecycleListener     lifecycleEvent
INFO: The APR based Apache Tomcat Native library which allows optimal     performance in production environments was not found on the java.library.path: [C:\Program Files\Java\jdk-    9.0.4\bin;C:\WINDOWS\Sun\Java\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\ProgramData\Oracle\Java\javapath;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\Program Files\Git\cmd;C:\Program Files\nodejs\;C:\Program     Files\PostgreSQL\pg10\bin;C:\Users\Tim\AppData\Local\Microsoft\WindowsApps;C:\Users\Tim\AppData\Roaming\npm;;.]
мар. 22, 2018 5:48:08 ПП org.apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler ["http-nio-8080"]
мар. 22, 2018 5:48:10 ПП org.apache.tomcat.util.net.NioSelectorPool getSharedSelector
INFO: Using a shared selector for servlet write/read
мар. 22, 2018 5:48:10 ПП org.apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler ["ajp-nio-8009"]
мар. 22, 2018 5:48:10 ПП org.apache.tomcat.util.net.NioSelectorPool getSharedSelector
INFO: Using a shared selector for servlet write/read
мар. 22, 2018 5:48:10 ПП org.apache.catalina.startup.Catalina load
INFO: Initialization processed in 14571 ms
мар. 22, 2018 5:48:12 ПП org.apache.catalina.core.StandardService startInternal
INFO: Starting service [Catalina]
мар. 22, 2018 5:48:12 ПП org.apache.catalina.core.StandardEngine startInternal
INFO: Starting Servlet Engine: Apache Tomcat/9.0.6
мар. 22, 2018 5:48:21 ПП org.apache.jasper.servlet.TldScanner scanJars
INFO: At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time.
мар. 22, 2018 5:48:21 ПП org.apache.catalina.util.SessionIdGeneratorBase     createSecureRandom
WARNING: Creation of SecureRandom instance for session ID generation using [SHA1PRNG] took [529] milliseconds.
мар. 22, 2018 5:48:22 ПП org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["http-nio-8080"]
мар. 22, 2018 5:48:22 ПП org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["ajp-nio-8009"]
мар. 22, 2018 5:48:22 ПП org.apache.catalina.startup.Catalina start
INFO: Server startup in 11643 ms
READ ALSO
Суть платформонезависимости Java

Суть платформонезависимости Java

Обычно, когда новичкам рассказывают про преимущества Java, упоминают платформонезависимостьЯ правильно понял, что разработав Java-приложение,...

156
Как сохранить String в PDF (Java)

Как сохранить String в PDF (Java)

Делаю некую задачу, после отправки POST запроса приходит ответ, его я сохраняю в String-е и дальше хочу сохранить в PDF(результат POST запроса PDF файл)

166
Изменение иконок в аккордеоне

Изменение иконок в аккордеоне

Всем приветСделал аккордеон, но не могу понять, как сделать так, чтобы иконка ПЛЮС менялась на МИНУС при открытии блока, и обратно

187
Php программирование и telegram API

Php программирование и telegram API

Есть код на php с использованием Telegram APIКод должен работать таким образом, чтобы он брал значения, введенные в контактную форму на сайте, компилировал...

206