更新:どうにかして、調整と再デプロイメントの別のラウンドを経て、localhost:8080/ping-1.0/pingが機能し始めました。設定ファイルはまだ以下の通りです。私はそれを知らずに私が修正したものを知っていればいいと思うが、今解決されている。Tomcatで呼び出されていないSpring MVCコントローラ
私は数日間この問題に取り組んできましたが、私がここや他の場所で見たあらゆる種類のソリューションを試してみました。私はSpring MVCコントローラをTomcatにデプロイしましたが、アクセスできません。
ツール:
スプリング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>
PING-サーブレット.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と呼ばれます。展開はうまくいくようです。私はcatalina.logで$ CATALINA_BASE/webappsにし、この中でのping-1.0というディレクトリを参照してください。
Tomcatはポート8080で実行されている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
私はローカルホストにアクセスすることができます。例えば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
です。すでに試しました。うまくいかなかったのです。 – pmext
'PingController'が置かれているパッケージは何ですか –