1

クリーンな URL を使用して、Tomcat 内で Groovy を実行しようとしています。Tomcat の URL マッピングとフィルターに関する知識が非常に限られているため、壁にぶつかっています。

私が望むのは、index.groovyすべての受信リクエストを処理するというフロントコントローラーを作成することです。web.xml問題は、正しいマッピングを作成する方法がわからないことです。これは私が現在持っているものです(これはほとんど標準です):

<servlet>
    <servlet-name>Groovy</servlet-name>
    <servlet-class>groovy.servlet.GroovyServlet</servlet-class>
</servlet>

<servlet-mapping>
    <servlet-name>Groovy</servlet-name>
    <url-pattern>/*</url-pattern>
</servlet-mapping>

次の URL でインスタンスにアクセスしようとすると、404.

http://localhost:8080/GroovyTest/index.groovy/test

index.groovyもちろん、理想的には、残りのパスを取得できる場所でスクリプトを実行したいと考えています。

4

1 に答える 1

3

ここでの主な問題は、サーブレットのマッピングと GroovyServlet の両方がどのように機能するかについての誤解だと思います。だから、ここに簡単な説明があります:

  • このようなマッピングを記述すると、「/*」パターンに一致するすべての URL が GroovyServlet クラスに送信されることを示します。このような一般的なパターンでは、すべての URL が有効であるため、画像やスタイルなどにアクセスしようとすると、いくつかの問題が発生する可能性があります...
  • GroovyServlet はすでにディスパッチャーです。ソースコードを見ると、継承により、指定されたパスが「/WEB-INF/groovy/」ディレクトリの下に存在することを確認するだけであることがわかります。あなたの例では、「/WEB-INF/groovy/index.groovy/test」ファイルを探すことを意味します
  • このファイルが存在する場合、Groovy スクリプトとして (デコレータを使用して) 実行され、結果は "text/html" MIME タイプで返されます。

これで、例で機能しない理由が明確に理解できると思います。目標を達成するための他の2つのアプローチをお勧めします。

  • Grailsを見てください。グルーヴィーな Web 開発を行うのに最適なフレームワークの 1 つです。
  • Gaelykマイクロ フレームワークのソースを取り上げます。ディスパッチがどのように機能するかを理解するための良い出発点であるだけでなく、きれいな URL を管理するのに役立つ素晴らしいチュートリアルもあります。
于 2010-01-24T18:35:47.967 に答える