更新:不知何故,經過又一輪的調整和重新部署,localhost:8080/ping-1.0/ping開始工作。配置文件仍然如下。我希望我知道我在不知情的情況下修正了什麼,但現在已經解決了。未被Tomcat調用的Spring MVC控制器
我一直在摔跤這幾天,嘗試了各種解決方案,我在這裏和其他地方見過,並沒有任何工作。我有一個在Tomcat中部署的Spring MVC控制器,但無法訪問它。
工具:
春3.2.0
的Tomcat 7
的Java 1.6
春控制器:
@Controller
public class PingController {
@RequestMapping("/ping")
public String ping (Model model) throws Exception {
System.out.println("ping ping ping");
String s = (new Date()).toString();
model.addAttribute("message", s);
return "ping";
}
}
的web.xml:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<servlet>
<servlet-name>ping</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/ping-servlet.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>ping</servlet-name>
<url-pattern>/ping</url-pattern>
</servlet-mapping>
</web-app>
平的servlet .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:mvc="http://www.springframework.org/schema/mvc"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd
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">
<context:component-scan base-package="myclass.ping"/>
<mvc:annotation-driven />
</beans>
WAR文件被稱爲ping-1.0.war。部署似乎很順利。我看到一個名爲平-1.0在$ CATALINA_BASE/webapps中,並在此目錄中catalina.log:
INFO: Mapped "{[/ping],methods=[],params=[],headers=[],consumes=[],produces=[],custom=[]}" onto public java.lang.String myclass.ping.PingController.ping(org.springframework.ui.Model) throws java.lang.Exception
的Tomcat在8080端口上運行我可以訪問本地主機:例如8080 /經理。但是localhost:8080/ping會從Tomcat返回一條404消息。除了GET請求的記錄外,我在日誌中看不到任何內容。根本沒有錯誤。我已經嘗試了很多變體的請求映射,URL過濾器等,只是不能得到這個工作。
您應該將部署上下文的名稱添加到URL中。如果您部署了foo.war,則URL將爲http:// localhost:8080/foo/ping。所以對你來說它是http:// localhost:8080/ping-1.0/ping – duffymo 2013-04-29 18:58:45
已經嘗試過 - 沒有工作。 – pmext 2013-04-29 19:09:34
「PingController」所在的軟件包是什麼 – 2013-04-30 03:21:46