0

次のような restFull Web サーバーを構築する方法を理解しようとしています。

1: / に移動するときに単一の index.html ファイルを提供する

2: 他のすべての URL は、コントローラーによって安静にキャッチされます。たとえば、/invoke1 -> "/invoke1" のリクエスト マッピングに到達します。

問題:

まず第一に、Spring Dispatcher には HTML ページの提供に関する奇妙なフォールアウトがあります (私はリソースについて<mvc:resources mapping話しているのではなく、JSP ではなく HTML ページの提供について話しているのです)。

次のようにデフォルトのカタリナサーブレットを使用して、この問題を解決しました。

<servlet>
 <servlet-name>default</servlet-name>
    <servlet-class>
      org.apache.catalina.servlets.DefaultServlet
    </servlet-class>
   <load-on-startup>2</load-on-startup>       
</servlet>
<servlet-mapping>
    <servlet-name>default</servlet-name>
    <url-pattern>/docs/*</url-pattern>
</servlet-mapping> 

このコードを使用すると、HTML ページを提供できます (/docs/* パスの下にある限り、セキュリティの背後であっても)。したがって、ここから次のことができます。

@RequestMapping(method = RequestMethod.GET)
public String main() {
     return "redirect:/docs/index.html";
}

しかし、それは私が望むものではありません。これ以降、ブラウザの URL は /docs/ として表示されます

私がしたいことは、ユーザーが/に行くとindex.htmlを取得しますが、/invoke1に行くとスプリングコントローラーに到達することです。

これは、私がしばらく理解しようとしているものです。正しい解決策を教えていただければ幸いです。ありがとうございました。

4

4 に答える 4

0

簡単な答えは、リダイレクト (「redirect:/」) ではなく、フォワード (「forward:/」) を使用する必要があるということです。

于 2013-10-10T13:48:17.887 に答える
0

Spring 3+ とそのリソース処理を使用すると、次のことができます。

  • サーブレットをマップする/- すべてのリクエスト (を除く*.jsp) は Spring によって処理されます
  • リソースを提供するようにSpringを構成します-(したがって、index.htmlSpringによって提供されます)
  • web.xml で設定index.htmlします<welcome-file>
于 2013-10-10T10:45:38.443 に答える