0

私はこれに関する答え/チュートリアルを喜んで探しました。あまりにも些細な質問に違いない。

私はTomcat 7.0.27をインストールして、ストックの例をいじっています。例はに保存されており、iswebapps/examplesと書かれています。例の HTML インデックスには、 からアクセスできます。ここまでは順調ですね。server.xmldocBasewebappshttp://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てアクセスしようとしました。どちらも 404 not found を生成します。役に立たなかったTomcatを再起動しました(そうする必要はありませんが、干し草は何ですか)。何を与える?http://localhost:8080/examples/servlets/servlet/Foohttp://localhost:8080/examples/servlet/Foo

4

1 に答える 1

0

そのようには機能しません。サーブレット!= CGI. 拡張はありません。

サーブレットは、web.xml でその URL に明確にマップされます。それらのパッケージ名、または WEB-INF 内での .class としての配置、.jar 内の配置、またはクラス パス上の他の場所の配置は、それらがマップされる URL とは関係ありません。

Addena、Servlet 3.0 では、web.xml にマップする代わりに注釈を付けることができます。これは、コンパイルされたクラスを「そのままドロップイン」できることを必ずしも意味するものではありません。これはコンテナの機能になります。Tomcat がそれを許可するかどうかはわかりません。

于 2012-04-16T17:34:26.053 に答える