私はこれについての高低を喜んで検索しました。あまりにも簡単な質問でなければなりません。Tomcatでのサーブレットのパスの拡張の理解
私はTomcat 7.0.27をインストールしました。在庫の例を使いこなしています。例はwebapps/examples
に格納され、server.xml
はdocBase
がwebapps
と表示されています。例のHTMLインデックスにはhttp://localhost:8080/examples/servlets/
でアクセスします。ここまでは順調ですね。
このページでは、「Hello World」サーブレットの「実行」リンクにカーソルを置くと、パスは次のように展開されます。http://localhost:8080/examples/servlets/servlet/HelloWorldExample
、もちろん正常に実行されます。しかし、servlet
はWEB-INF/classes
に拡大されるはずです。だから私はクラスへのディスク上のパスがwebapps/examples/servlets/WEB-INF/classes/HelloWorldExample.class
であることを期待します。それはそうではありません。実際のパスはwebapps/examples/WEB-INF/classes/HelloWorldExample.class
です。 servlets
ディレクトリにある唯一のものは、HTMLおよびイメージファイルです。質問#1:それは何ですか? examples/servlets/servlet
はexamples/WEB-INF/classes
にどのように再ルーティングされましたか?
質問#2:コンパイルされたクラスFoo.class
をWEB-INF/classes
にドロップし、http://localhost:8080/examples/servlets/servlet/Foo
とhttp://localhost:8080/examples/servlet/Foo
の両方にアクセスしようとします。どちらも404が見つかりません。 Tomcatを再起動しました(必要はないはずですが、何が乾草か)。何がありますか?
[Tomcatの下でサーブレットを実行する](http://cs.calstatela.edu/~abbott/Courses/CS_320b/Running%20a%20Servlet%20under%20Tomcat.html)が古くなっていることに感謝します。しかし、それは不正確ですか? – boettger1
私はその正確さについて話すことができません。Tomcatがこれをサポートしているかどうかはわかりません。 Tomcat 3は非常に古く、かつてこのような仕組みをサポートしていたことは驚きではありませんでしたが、それは "Web App"(すなわちWARファイルとその構造と内容)のコンセプトがキヤノンになる前です。今日、Webアプリケーションは標準のデプロイメント・メカニズムです。たとえTomcatがこれをまだサポートしていたとしても、私はそれを離れて、単純なWAR形式で作業します。 Tomcat 3は13歳です... –