2010-12-07 3 views
2

Я получаю странную проблему, пытающуюся интегрировать Spring MVC и Maven в Google AppEngine webapp.Не найдено сопоставления с использованием Spring3 MVC + Maven2 в GAE

Это мой web.xml

<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/webmvc-config.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> 

это мой конфигурационный файл SpringMVC

<context:annotation-config /> 

<context:component-scan base-package="com.mypackage" /> 

<mvc:annotation-driven/> 

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

это мой контроллер:

@Controller 
@RequestMapping(value = "/hello") 
public class HelloController { 
    @RequestMapping(method = RequestMethod.GET) 
    public String helloGet(ModelMap map) { 
      map.put("name", "seb!"); 
      return "hello"; 
    } 
} 

и это моя точка зрения находится на веб-приложение /WEB-INF/jsp/view/hello.jsp

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> 
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
    "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
    <head> 
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
     <title>Hello Controller</title> 
    </head> 
    <body> 
     <h1>Hello ${name}!</h1> 
    </body> 
</html> 

и это мой П содержит зависимости для SpringMVC 3.0.3, сервлет-апи 2,5, JSTL 1,2

Веду получать

WARNING: No mapping found for HTTP request with URI [/WEB-INF/jsp/view/hello.jsp] in DispatcherServlet with name 'dispatcher' 

, когда я ударил локальный: 8080/привет и Я не могу понять, почему. Это из-за GAE или я что-то пропускаю в какой-то конфигурации?

Update: Если я отправить вам URL приходя с/приложение/* Весеннее Dispatcher, меняю web.xml, как это:

<servlet-mapping> 
     <servlet-name>dispatcher</servlet-name> 
     <url-pattern>/app/*</url-pattern> 
    </servlet-mapping>` 

это будет работать, но я просто хочу, чтобы использовать целевые страницы и использовать корень приложения

ответ

3

Я столкнулся с этой проблемой в прошлом. Если я правильно помню, он работал правильно при развертывании, но не удался на сервере разработки. Моим решением было отобразить сервлет диспетчера на /app/* вместо /*.

Это результат /app во всех URL-адресах вашего приложения. Если вы хотите избавиться от этого, используйте переписывание URL-адресов.

web.xml В:

<filter> 
    <filter-name>urlRewriteFilter</filter-name> 
    <filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class> 
</filter> 

<filter-mapping> 
    <filter-name>urlRewriteFilter</filter-name> 
    <url-pattern>/*</url-pattern> 
</filter-mapping> 

И urlrewrite.xml:

<?xml version="1.0" encoding="utf-8"?> 
<!DOCTYPE urlrewrite PUBLIC "-//tuckey.org//DTD UrlRewrite 3.0//EN" 
     "http://tuckey.org/res/dtds/urlrewrite3.0.dtd"> 
<urlrewrite default-match-type="wildcard"> 
    <rule> 
     <from>/</from> 
     <to>/app/</to> 
    </rule> 
    <rule> 
     <from>/_ah/**</from> 
     <to>/_ah/$1</to> 
    </rule> 
    <rule> 
     <from>/**</from> 
     <to>/app/$1</to> 
    </rule> 
    <outbound-rule> 
     <from>/_ah/**</from> 
     <to>/_ah/$1</to> 
    </outbound-rule> 
    <outbound-rule> 
     <from>/app/**</from> 
     <to>/$1</to> 
    </outbound-rule> 
</urlrewrite> 
+0

urlrewrite может быть достаточно хорошим, я попытаюсь это. спасибо – sebarmeli

+0

он работает с urlrewrite :) – sebarmeli

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