我創建了一個Spring-MVC項目。Spring MVC應用程序 - URL給出找不到文件(404)
的web.xml:
<servlet>
<servlet-name>mvc-dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>mvc-dispatcher</servlet-name>
<url-pattern>/soundmails</url-pattern>
</servlet-mapping>
MVC-調度-servlet.xml中
<?xml version="1.0"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:context="http://www.springframework.org/schema/context"
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
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd">
<mvc:annotation-driven />
<context:component-scan base-package="somepkg.controllers" />
<bean id="multipartResolver" class="org.gmr.web.multipart.GMultipartResolver">
<property name="maxUploadSize" value="1048576" />
</bean>
<bean id="placeholderConfig" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<!-- property name="location">
<value>/WEB-INF/social.properties</value>
</property-->
</bean>
<bean id="jacksonMessageConverter" class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"></bean>
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
<property name="messageConverters">
<list>
<ref bean="jacksonMessageConverter"/>
</list>
</property>
</bean>
</beans>
該控制器具有這樣的代碼: ProjectController.java
@Controller
@RequestMapping("/soundmails")
public class FileUploadController {
@RequestMapping(value="/test", method=RequestMethod.GET)
public @ResponseBody String test() {
System.out.println("Hai");
return "Hai";
}
}
我在本地機器上使用Google App Engine來測試此操作。我在我的日誌讓這些:
[信息] 2013年10月24日上午01時54分18秒com.google.appengine.tools.development.LocalResourceFileServlet的doGet [INFO]警告:沒有文件發現:/soundmails/test
我試過/ soundmails/soundmails/test。這也給了同樣的錯誤。
我使用Spring 3.1.0.RELEASE
有人可以幫我找出我錯過了什麼 -/soundmails /測試是給404錯誤。
編輯
我無法爲此啓用DEBUG日誌。出於某種原因,它沒有采取在logging.properties
配置日誌級別,但我觀察到一些有趣的事情:
1)如果我請求映射到空字符串(value = ""
)
@RequestMapping(value="", method=RequestMethod.GET)
public @ResponseBody String test() {
System.out.println("Hai");
return "Hai";
}
然後,當我嘗試訪問127.0.0.1/soundmails,它工作正常(返回字符串「海」)。
2)當我有value="/test"
@RequestMapping(value="/test", method=RequestMethod.GET)
public @ResponseBody String test() {
System.out.println("Hai");
return "Hai";
}
,我嘗試訪問127.0.0.1/soundmails/test,它給HTTP 404這很奇怪。
你的DEBUG日誌告訴你什麼? – MattSenter
不幸的是,我無法啓用調試級別日誌記錄。這是一個單獨的問題,我正在弄清楚。我對這個問題做了一些編輯,並在這個特定問題上進行了更多的調查。 – user1700184
好的,下一個問題:部署的應用程序的上下文路徑是什麼?什麼是你用來訪問該網頁的完整url。 (如果您願意,您可以僞造域名。) – MattSenter