2

私のアプリは Spring MVC (最新; 3.2.2) を使用して、JSON を返す RESTful API を作成します。これまでのところ、ビュー レイヤーはまったく必要ありません。しかし今、API の他に、単純なユーティリティ ページ (プレーンな動的 HTML) が必要であり、そのために JSP を使用したいと考えていました。

リクエストがhttp://localhost:8080/foo/<id>コントローラー (Java) を通過し、JSP になるようにしたい。シンプルなはずですよね?しかし、私は 404 を得ています。ビューを解決する際に何かが正しくありません。

HTTP ERROR 404
Problem accessing /jsp/foo.jsp. Reason:

    Not Found

コントローラー

 @RequestMapping(value = "/foo/{id}")
 public String testing(@PathVariable String id, ModelMap model) {
    model.addAttribute("id", id);
    return "foo";
 }

コントローラーの定義とリクエストのマッピングは機能します。このメソッドは正常に呼び出されます。

春の設定

<mvc:annotation-driven/>

<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"
          p:prefix="/jsp/" p:suffix=".jsp"/>

問題はおそらくここにあります。私は、わずかに異なるプレフィックスを試し、JSP を の下WEB-INFに置きました<mvc:view-controller path="/*" />

(InternalResourceViewResolver を指定する必要さえありますか、それともデフォルトのビュー リゾルバーがこれを処理する必要がありますか?)

JSP ファイル. src/main/webapp/jsp(プロジェクトは Maven 規則を使用します) の下に、明らかに JSP があります。

この場所に何か問題がありますか?

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>/*</url-pattern>
</servlet-mapping>

私はSpring MVC のドキュメントを参照しましたが、私の問題はおそらくあまりにも些細で明らかであるため、そこで簡単にヘルプを見つけることはできません。:-P

誰かが私が間違っていることを教えてくれますか?

4

1 に答える 1

6

あなたがする必要があるのは変わることだと思います

<servlet-mapping>
  <servlet-name>mvc-dispatcher</servlet-name>
  <url-pattern>/*</url-pattern>
</servlet-mapping>

<servlet-mapping>
  <servlet-name>mvc-dispatcher</servlet-name>
  <url-pattern>/</url-pattern>
</servlet-mapping>

/*のように、パスに別のフォルダーがある場合は一致しません/jsp/foo.jsp。一方、/すべてに一致します。

于 2013-05-05T10:32:37.257 に答える