tomcatプロジェクトの導入

4139 ワード

mac上でtomcatを直接起動してディレクトリapache-tomcat-8.5に切断する.32/binコマンドsh startupを実行する.sh起動成功terminalではTomcat started.
アクセスhttp://localhost:8080/ bingo
tomcatを閉じるときにコマンドsh shutdownを実行します.sh
tomcatディレクトリの下のプロジェクトapache-tomcat-8.5を走ります.32/webapps
例えば、このディレクトリの下にmanagerプロジェクトがあり、indexが提供されています.jsp image.png
アクセスhttp://localhost:8080/manager/index.jsp
例えばexamplesで構成されたweb.xmlに1つあります
 
        HelloWorldExample
        /servlets/servlet/HelloWorldExample
    

アクセスhttp://localhost:8080/examples/servlets/servlet/HelloWorldExample
idea servletのみを含むtomcat web java webプロジェクトnew project->java enterprise->アプリケーションサーバとしてtomcatを選択->create project from templateをチェック
Web上にservletを作成します.xmlで対応するservlet構成を構成する
設定tomcat(構成手順省略)、Deploymentの設定時にApplication contextをプロジェクトと同じ名前に設定
tomcatを起動し、http://localhost:8080/selfjavawebproj/myservlet selfjavawebprojにアクセスするのはwebアプリケーションの名前であり、myservetはwebである必要がある.xmlで構成されたパス
tomcatのコンテナレベルtomcatのサーブレットコンテナは4層に分かれており、Engine->Host->Context->Wrapperの最内層のWapperは1つのサーブレットを表し、Contextは1つのアプリケーションを表し、1つのアプリケーションには複数のservletが含まれ、Hostは1つのサイトを表し、1つのサイトの下に複数のアプリケーションがあり、Engineはエンジンを表し、複数のサイトを管理するために使用される.tomcatのconf/server.xmlでは、複数のサービスを構成できます.私のプロファイルを例に挙げます.

    //  service      connector,  engine
 
 
 //    host
 
 
 
 
 

tomcatがコンテナを実装する際にContainerを定義し,parent childという役割を定義し,各階層のコンテナをコンビネーションモードで組み立てる
public interface Container extends Lifecycle {
    public void setName(String name);
    public Container getParent();
    public void setParent(Container container);
    public void addChild(Container child);
    public void removeChild(Container child);
    public Container findChild(String name);
}

http://localhost:8080/selfjavawebproj/myservletこの要求が発行されると、1まずプロトコルとポート番号に基づいてserviceとEngineを選択し、上記の構成に対応し、1つのserviceしかなく、コネクタはHTTP 1をサポートする.1,ポート8080なので、nameがCatalinaであるサービスとnameがCatalinaであるEngine 2がアクセスするドメイン名localhostに基づいて対応するhost 3がurlに基づいてcontextを見つけるので、前の構成のときにApplication contextが構成するのもアプリケーション名であり、ここでcontextはselfjavawebproj 4がurlに基づいてWrapperを見つける、すなわち構成の経路に基づいてwebにある.xmlで対応するservlet実装クラスが見つかりました
しかし、最後のWrapperになってからリクエストの処理が本格的に開始されるわけではありません.中間の各層でリクエストに対してこの層の処理を行います.例えば、Engineは先にリクエストを受け取り、Engine層の論理を処理して自分のchild Host層にリクエストし、最後にWrapper------pipeline責任チェーンモードに着きます.
具体的にはtomcatではPipeline-Valveパイプです
Valueは処理ポイントを表します
public interface Valve {
  public Valve getNext();
  public void setNext(Valve valve);
  public void invoke(Request request, Response response)
}

Valueのinvokeは現在のこの処理点の処理ロジックを表し、getNextは次の処理点を取得することを表し、getNext.invokeは次の処理ポイントの処理ロジックをトリガーします
public interface Pipeline extends Contained {
  public void addValve(Valve valve);
  public Valve getBasic();
  public void setBasic(Valve valve);
  public Valve getFirst();
}

pipelineはこのvalueチェーンを維持しており、Firstはチェーンの1つ目であり、Basicはチェーンの最後の1つであり、Basicは次のコンテナに関連付けられた1つ目のvalue最後の1つのWrapperのBasicはFilterチェーンを指し、FilterチェーンのdoFilterメソッドを呼び出し、最後にサーブレットのserviceメソッドに進む