2011-03-05 29 views
3

問題這是我的web.xml與Spring 3和谷歌應用程序引擎

<?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>dispatcher</servlet-name> 
     <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
     <load-on-startup>1</load-on-startup> 
    </servlet> 
    <servlet-mapping> 
     <servlet-name>dispatcher</servlet-name> 
     <url-pattern>/</url-pattern> 
    </servlet-mapping> 
</web-app> 

,這是我的調度員servlet.xml中

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
    xmlns:mvc="http://www.springframework.org/schema/mvc" 
    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-3.0.xsd 
     http://www.springframework.org/schema/mvc 
     http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd"> 
    <!-- JSR-303 support will be detected on classpath and enabled automatically --> 
    <mvc:annotation-driven/> 
    <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
     <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/> 
     <property name="suffix" value=".jsp"/> 
    </bean> 
</beans> 

而且我有一個註解控制器類:

@Controller 
public class MainController { 
    @RequestMapping("/test") 
    public ModelAndView testHandler(){ 
      ModelAndView mav = new ModelAndView(); 
      mav.setViewName("testView"); 
      mav.addObject("message", "test"); 
      return mav; 
    } 
} 

該項目編譯沒有錯誤,但是當我運行它並擊中http://.aggengine.com//test我得到了404。我的映射wr ong或我的URI?

回答

3

我想你忘了爲你的控制器創建一個<bean>

<mvc:annotation-driven/> 

僅支持在bean創建時讀取註釋。

例如要註冊您的控制器:

<bean id="mainController" class="my.package.MainController"/> 

另外,您可以啓用自動classpath中掃描,但可以在AppEngine上導致性能問題,因爲它是緩慢的(並且會發生您的每一次應用程序冷啓動)

要啓用類路徑掃描,上下文命名空間添加到您的<beans>並添加:

<context:component-scan base-package="my.package"/> 
+0

啊,謝謝你了,添加組件掃描做到了! – stevebot