

Springフレームワークを使って、WEBアプリケーション(といってもHello worldですが)を作成しています。

コントローラー抜きでindex.jspを参照することはできるんですが、  
コントローラーを実装したところ、Viewが見つからないという旨のエラーが発生し、ブラウザ側では404エラーが発生してしまいます。

大したプログラムではありませんので、そのまま添付します。

src/main/java/{package}/ActionController.java

[code]

    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestMethod;
    
    @Controller
    public class ActionController {
    
        @RequestMapping(value = "/hello", method = RequestMethod.GET)
            public String hello() {
            return "showMessage";
        }
    
        @RequestMapping(value = "/index", method = RequestMethod.GET)
        public String top() {
            return "index";
        }
    }
    
[/code]

struts-config.xml

[code]

    <mvc:annotation-driven />
    
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
            <property name="prefix" value="/WEB-INF/view/"/>
            <property name="suffix" value=".jsp"/>
    </bean>
    
[/code]

web.xml(一部)

[code]

    <servlet-mapping>
        <servlet-name>dispatcherServlet</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
    
[/code]

src/main/webapp/WEB-INF/view/index.jsp

[code]

    <html>
        <body>
            <h2>Hello World!</h2>
        </body>
    </html>
    
[/code]

src/main/webapp/WEB-INF/view/showMessage.jsp

[code]

    <html>
        <body>
            <h2>Hello World!</h2>
        </body>
    </html>
    
[/code]

以下、ローカルデバッグ時のログです。

[code]

    22:41:42.448 [http-bio-8080-exec-7] DEBUG o.s.web.servlet.DispatcherServlet - DispatcherServlet with name 'dispatcherServlet' processing GET request for [/contextpath/WEB-INF/view/showMessage.jsp]
    22:41:42.448 [http-bio-8080-exec-7] DEBUG o.s.w.s.m.m.a.RequestMappingHandlerMapping - Looking up handler method for path /WEB-INF/view/showMessage.jsp
    22:41:42.448 [http-bio-8080-exec-7] DEBUG o.s.w.s.m.m.a.RequestMappingHandlerMapping - Did not find handler method for [/WEB-INF/view/showMessage.jsp]
    22:41:42.449 [http-bio-8080-exec-7] WARN  o.s.web.servlet.PageNotFound - No mapping found for HTTP request with URI [/contextpath/WEB-INF/view/showMessage.jsp] in DispatcherServlet with name 'dispatcherServlet'
    22:41:42.449 [http-bio-8080-exec-7] DEBUG o.s.web.servlet.DispatcherServlet - Successfully completed request
    22:41:42.449 [http-bio-8080-exec-7] DEBUG o.s.web.servlet.DispatcherServlet - Successfully completed request
    
[/code]

上記ログを見る限り、間違いなくコンテキストパスはあっており、  
Eclipseの仕様で表示される、”デプロイ済みリソース”を確認する限り、実際に  
WEB-INF/view/index.jspおよびshowMessage.jspは存在していました。  
ブレークポイントでコントローラーの処理が走ったか否かも確認しましたが、  
リクエストは受理されているようでした。

なぜjspが見つからないのでしょうか。  
ご指南おねがいいたします。


CC BY-SA 3.0
2015-08-26T14:31:37.840
14880
2015-08-27T14:52:21.740
8396
question
java spring mvc
SpringMVCにて、ViewがNot foundになってしまう


次のように書き込んでおられるので、確実な回答ではないかもしれません。

> ブレークポイントでコントローラーの処理が走ったか否かも確認しましたが、  
>  リクエストは受理されているようでした。

ただ、気になるログがありました。  
ブラウザなどでアクセスしたURLは"/contextpath/hello（<http://localhost:8080>
などで）"となっていますでしょうか？"/contextpath/WEB-INF/view/showMessage.js"になっていませんでしょうか？

Springで"No mapping found for HTTP
request"と出力されるとき、その後に表示されるURI（URL）にアクセスしたことととなります。つまり今"/contextpath/WEB-
INF/view/showMessage.js"にリクエストがあり、Springが処理したと出力しています。

私自身もomarunさんの掲載したコードで動作させましたところ、Hello World!は表示されました。なので、コードとしては正しいものです（Spring
4.1.1、Tomcat 8.0.17、JDK1.8.0_45）。  
そして、私が"/contextpath/index2"と存在しないURLにアクセスすると、今回の現象と同様である以下のログが出力されております。

[code]

    27-Aug-2015 15:54:52.853 WARNING [http-nio-8080-exec-5] org.springframework.web.servlet.PageNotFound.noHandlerFound No mapping found for HTTP request with URI [/contextpath/index2] in DispatcherServlet with name 'dispatcherServlet'
    
[/code]


CC BY-SA 3.0
2015-08-27T08:00:36.887
14899
2015-08-27T08:57:02.863
2015-08-27T08:57:02.863
4464
4464
14880
answer


外部の開発環境にリポジトリごと複製し、既存のtomcat8サーバーで起動したところ、Hello World!が表示されました。  
その後、質問した際の環境にて再度確認したところ、やはり起動しませんでした。

後者の環境には大した開発環境があるわけでもなかったので、Eclipseを再インストールしたところ、正常な動作を確認しました。  
先日から、Windowsより、「Eclipse内部で例外が発生しました」というような内容のエラー通知が何度か来ており、今まで特に支障がなかったため詳細も見ず放置していましたが、  
今回それがなんらかの影響を及ぼしていた可能性があります。  
はっきりとした原因がわからず申し訳ございません。  
ありがとうございました。


CC BY-SA 3.0
2015-08-27T14:52:21.740
14915
2015-08-27T14:52:21.740
8396
14880
answer