1

Я работаю с Spring MVC в google-приложении, и хотя я получил базовый пример приветствия, я не могу заставить свой сервлет появляться, когда я использую сопоставление запросов «/». Даже когда я указываю «/» как мое сопоставление запросов в моем контроллере, я продолжаю получать «Hello App Engine!». страницу со ссылкой на мой проект. Я уже вытащил объявление приветственного файла из своего веб-xml.Мой контроллер/сервлет с отображением «/» не переопределяет «Hello App Engine!»

В основном ...

package my.package.for.spring.stuff.controllers; 

import ....; 

// It doesn't seem to make a difference if 
// I have this reqeustmapping or not... 
@Controller 
public class MainController { 

    // If I change mapping to "/main" and then go to 
    // localhost:8888/main then everything works as expected 
    @RequestMapping("/") 
    public String HelloWorld() { 
    return "MyView"; 
    } 
} 

все еще идет к "Hello App Engine!" стр. Кроме того, вот мой web.xml ...

<?xml version="1.0" encoding="utf-8"?> 
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns="http://java.sun.com/xml/ns/javaee" 
xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5"> 


    <servlet> 
     <servlet-name>SpringAppEngine</servlet-name> 
     <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
     <load-on-startup>1</load-on-startup> 
    </servlet> 
    <servlet-mapping> 
     <servlet-name>SpringAppEngine</servlet-name> 
     <url-pattern>/</url-pattern> 
    </servlet-mapping> 
</web-app> 

И тогда вот моя весна 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:p="http://www.springframework.org/schema/p" 
     xmlns:context="http://www.springframework.org/schema/context" 
     xsi:schemaLocation="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.xsd"> 

     <context:component-scan base-package="my.package.for.spring.stuff" /> 

     <bean id="viewResolver" 
       class="org.springframework.web.servlet.view.InternalResourceViewResolver" 
       p:prefix="/WEB-INF/views/main/" p:suffix=".jsp" /> 

</beans> 

Почему приложение двигатель генерируется приветственный файл все еще появляется, даже если я m объявление корневого отображения в моем контроллере? Я знаю, что моя настройка должна быть правильной, потому что, когда я изменяю requestmapping, все работает так, как ожидалось.

+0

Это работает, если вы измените свое сопоставление на что-то еще? можете ли вы показать свой весенний xml? –

+0

Да, он работает, если я изменяю отображение на что-либо еще, а затем перейдите в 'localhost: 8888/anythingelse'. Я не в том месте, где я могу получить свои другие xmls. Я должен опубликовать их позже этим вечером. – Dave

+0

Я обновил вопрос w/my xmls и класс в значительной степени точно так же, как и сейчас. – Dave

ответ

8

сервлет 3,0 спецификация говорит:

Строка, содержащая только «/» символ указывает на «по умолчанию» сервлет приложения.

И это также говорит:

По умолчанию все приложения будут иметь index.htm (л) и index.jsp в список приветственном-файла-списка. Дескриптор может использоваться для , чтобы переопределить эти настройки по умолчанию.

Таким образом, я предполагаю, что контейнер считает, что неявное index.html приветствовать файл является точным соответствием, который имеет приоритет над сервлета по умолчанию отображается в /.

Решение должно удалить файл index.html или, возможно, определить явный пустой список файлов приветствия в дескрипторе.

1

По-видимому, вытащить отображение index.html из web.xml недостаточно, вам действительно нужно удалить index.html. Если кто-то может опубликовать ответ, объясняющий, почему я все еще буду поддерживать и принимать.

0

Это сообщение помогло мне, и я думаю, что могу расширить, почему удаление файла устраняет проблему. Согласно GAE, любой файл в военном каталоге (кроме JSP и что-либо в WEB-INF) получает сопоставление с этим именем файла. Это неявное отображение, как представляется, заменяет любые правила сервлета в web.xml:

https://developers.google.com/appengine/docs/java/gettingstarted/staticfiles

После удаления или переименования index.html, ваше правило сервлета для «/» используется вместо неявного отображения для статического файла ,

Смежные вопросы