Почему проект SpringMVC может не запускаться?

0
26 дек 2016 13:14
Добрый день!

Изучаю Spring MVC. Делаю простейший учебный проект. Помогите понять суть проблемы. Рыл уже везде, в т.ч. на stackoverflow.com Ошибка довольно распространенная (судя по обсуждениям), но решения, которые предлагаются мне не помогают.

В проекте одна jsp, таблица стилей, один контроллер и три конфигурационных файла.
Вот структура:


При запуске проекта с такой структурой Tomcat Catalina Log показывает следующее:
WARNING [http-nio-8080-exec-1] org.springframework.web.servlet.PageNotFound.noHandlerFound No mapping found for HTTP request with URI [/] in DispatcherServlet with name 'dispatcher'
WARNING [http-nio-8080-exec-3] org.springframework.web.servlet.PageNotFound.noHandlerFound No mapping found for HTTP request with URI [/] in DispatcherServlet with name 'dispatcher'
WARNING [http-nio-8080-exec-5] org.springframework.web.servlet.PageNotFound.noHandlerFound No mapping found for HTTP request with URI [/] in DispatcherServlet with name 'dispatcher'

На мордочке примерно следующее:
404 - The requested resource is not available.

ЕСЛИ я перемещаю index.jsp в папку webapp, то проект корректно запускается.

Проблема в том, что я хочу сделать несколько jsp-страниц и разместить их на сервере в папке pages (ну или views, ну вы поняли). А также понять суть ошибки.

Почему проект не запускается, когда jsp находится в папке views и почему запускается когда я перемещаю его в папку webapp???

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

@Controller
public class HelloController {

    @RequestMapping(value = "/", method = RequestMethod.GET)
    public String hello(Model model) {
        model.addAttribute("message", "Hello World!");
        return "index";
    }
}


index.jsp
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<[email protected] contentType="text/html; ISO-8859-1" pageEncoding="utf-8" language="java"%>
<html>
    <head>
        <style><[email protected] file="resources/css/home.css"%></style>
        <title>Home</title>
    </head>
    <body>
        <form class="box login">
            <fieldset class="boxBody">
                <label>Username</label>
                <input type="text" tabindex="1" placeholder="username" required/>
                <label><a href="#" class="rLink" tabindex="5">Forget your password?</a>Password</label>
                <input type="password" tabindex="2" required placeholder="password"/>
            </fieldset>
            <footer>
                <label><input type="checkbox" tabindex="3">Keep me logged in</label>
                <input type="submit" class="btnLogin" value="Login" tabindex="4">
            </footer>
        </form>
    </body>
</html>


application-context.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"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

</beans>


dispatcher-servlet.xml
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
       http://www.springframework.org/schema/context
       http://www.springframework.org/schema/context/spring-context-3.0.xsd
       http://www.springframework.org/schema/mvc
       http://www.springframework.org/schema/mvc/spring-mvc.xsd">

    <context:component-scan base-package="ru.XXX.controllers" /> <!--имя пакета затерто на XXX-->

    <mvc:resources mapping="/resources/**" location="resources" />

    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/views/" />
        <property name="suffix" value=".jsp" />
    </bean>

</beans>


web.xml
<web-app id="WebApp_ID" 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 http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">

    <display-name>Archetype Created Web Application</display-name>

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

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

    <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/dispatcher-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>


Спасибо за помощь!

Ответов: 1

1
26 дек 2016 16:50
Добавьте в файле "dispatcher-servlet.xml" после тега <context:component-scan base-package="ru.XXX.controllers" /> тег <mvc:annotation-driven />.
Модераторы: Нет
Сейчас эту тему просматривают: Нет