0

私は Web 開発に非常に慣れていないので、Java でサーブレットを作成しようとしています。Apache Tomcat サーバーをセットアップする方法を理解しました。現在、サーバーには次のファイル構造があります。

tomcat6:
       -仕事
            -カタリナ
                 -localhost
                       -_
            -catalina.policy
       -ウェブアプリ
            -根
                 -META-INF
                 -index.html
       -共有
            -クラス
       -サーバ
            -クラス
       -ログ
            -localhost.2012-05-19.log
            -catalina.out
            -catalina.2012-05-19.log
       -conf
            -policy.d
                 -たくさんの .policy ファイル
            -カタリナ
                 -localhost
                      -ROOT.xml
            -web.xml
            -tomcat-useres.xml
            -server.xml
            -logging.pproperties
            -context.xml
            -pcatalina.properties
       -一般
            -クラス

自動生成されたサーブレットを NetBeans で編集したところ、IDE 内では問題なく動作しましたが、Tomcat サーバーのどこに配置しても、404 が返されるか、単に .class ファイルをダウンロードしようとします。

クラスを機能させるには、どこにクラスを配置する必要がありますか?

4

3 に答える 3

2

WAR ファイルをビルドしてから、warfile を webapps ディレクトリに配置する必要があります。

于 2012-05-19T21:56:37.117 に答える
1

webapp にサーブレットがあること、サーブレットを実装するクラス、サーブレットがマップされる URL パスを tomcat に伝える必要があります。これは で行われWEB-INF/web.xmlます。

まず、サーブレットを で定義する必要がありますweb.xml

<servlet>
    <servlet-name>HelloWorldServlet</servlet-name>
    <servlet-class>com.foo.myapp.servlets.HelloWorld</servlet-class>
</servlet>

servlet-name次に、サーブレットを (その によって) URL パスにマップする必要がありますweb.xml

<servlet-mapping>
    <servlet-name>HelloWorldServlet</servlet-name>
    <url-pattern>/HelloWorld</url-pattern>
</servlet-mapping>

ポート 8080 でリッスンしている tomcat があると仮定すると、

http://your.tomcat.host:8080/webappname/HelloWorld

サーブレットにヒットします。

HelloWorldServlet任意のテキストであることに注意してください。それは何でもかまいませんし、クラス名や URL パスに関連している必要はありません (ただし、それらに似ていると便利です)。重要なのは、タグとservlet-nameタグの両方でタグに同じ文字列を使用することです。servletservlet-mapping

サーブレットを作成するには、インターフェースを実装する必要がありServletます。 ただし、それを直接行うことはめったにありません。代わりに、(最も一般的には) HttpServlet1 つ以上のdoXXX()メソッドを拡張してオーバーライドします。HTTP ベースのサーブレットを作成していない場合は、メソッドを拡張GenericServletしてオーバーライドしますservice()。サーブレット API 以外の他のライブラリは、拡張可能な他のプロトコル固有のサーブレット基本クラスを提供する場合があります。

于 2012-05-20T01:06:04.930 に答える
0

IDEを使用せずに手動で実行している場合、これは構造です

 Apache Tomcat folder --> wep-app folder --> your_web_app_name --> WEB-INF,.html,.jsp 
                                                                      |
                                                                      |--> classes
                                                                      |
                                                                      |--> lib
                                                                      |
                                                                      |--> web.xml (Description Descriptor)
于 2012-05-19T22:28:13.510 に答える