目次
1.サーブレットコンテナの関連する構成をカスタマイズおよび変更する方法
2. WebServerFactoryCustomizerを記述します:組み込みサーブレットコンテナのカスタマイザ。サーブレット構成を変更するには
2.サーブレットの3つの主要コンポーネント(サーブレット、フィルタ、リスナー)を登録します
SpringBootには、組み込みサーブレットコンテナとしてTomcatが付属していることは誰もが知っています。
1.サーブレットコンテナの関連する構成をカスタマイズおよび変更する方法
1.サーバーに関連する構成を変更します
server.xxxを介してサーバーを構成します。
server.tomcat.xxxを介してTomcatを構成します
2. WebServerFactoryCustomizerを記述します:組み込みサーブレットコンテナのカスタマイザ。サーブレット構成を変更するには
2.サーブレットの3つの主要コンポーネント(サーブレット、フィルタ、リスナー)を登録します
SpringBootは、デフォルトで組み込みサーブレットコンテナをjarパッケージとして起動してSpringBoot Webアプリケーションを起動するため、web.xmlファイルはありません。
次の方法を使用して、3つの主要コンポーネントを登録します。
ServletRegistrationBean
FilterRegistrationBean
ServletListenerRegistrationBean
例は次のとおりです。
MyServlet
MyFilter
MyListener
MyServletConfig
@Configuration
public class MyServletConfig {
//注册三大组件
@Bean
public ServletRegistrationBean myServlet(){
ServletRegistrationBean registrationBean = new ServletRegistrationBean<>(new MyServlet(),"/myServlet");
return registrationBean;
}
@Bean
public FilterRegistrationBean myFilter(){
FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean();
filterRegistrationBean.setFilter(new MyFilter());
filterRegistrationBean.setUrlPatterns(Arrays.asList("/hello","/myServlet"));
return filterRegistrationBean;
}
@Bean
public ServletListenerRegistrationBean myListener(){
ServletListenerRegistrationBean<MyListener> servletListenerRegistrationBean =
new ServletListenerRegistrationBean<>(new MyListener());
return servletListenerRegistrationBean;
}
}
3つ目は、他のサーブレットコンテナを使用する
tomcatに加えて、他のサーブレットコンテナには、Jetty(長い接続に適しています)、Undertow(JSPをサポートしていません)が含まれます。
1.他の容器を使用する
pom.xmlでTomcatを除外し、桟橋を導入します
2.組み込みサーブレットコンテナの自動構成の原則
- SpringBootは、インポートされた依存関係に従って、対応するファクトリをコンテナに追加します
- コンテナ内のコンポーネントがオブジェクトを作成したい場合、ポストプロセッサに警告します
- ポストプロセッサは、コンテナからすべてのカスタマイザを取得し、カスタマイザのカスタマイズメソッドを呼び出します。
3.組み込みサーブレットコンテナの起動の原則
- SpringBootアプリケーションの実行メソッド
- refreshContext(context):SpringBootはIOCコンテナーを更新します(IOCオブジェクトを作成し、コンテナーを初期化し、コンテナー内に各コンポーネントを作成します)。Webアプリケーションかどうかに応じて異なるApplicationContextコンテナを作成します
- refresh(context):作成したIOCコンテナを更新します
- onRefresh():WebのiocコンテナがonRefreshメソッドを書き換えます
- webiocコンテナは、埋め込みサーブレットコンテナを作成します
- 特定の組み込みサーブレットコンテナファクトリを取得し、ファクトリがオブジェクトを作成し、ポストプロセッサがこのオブジェクトに従ってすべてのカスタマイザを取得して、サーブレットコンテナの関連する構成をカスタマイズします。
- コンテナファクトリに組み込みサーブレットコンテナを取得させる
- 埋め込まれたサーブレットコンテナはオブジェクトを作成し、サーブレットコンテナを起動します
第四に、外部サーブレットを使用する
組み込みサーブレットコンテナは制限されており、JSPをサポートしていません。ただし、jspを使用する必要がある場合は、外部サーブレットが必要です。
1. pom.xmlを変更して、パッケージ化方法をwarパッケージに変更します
2.web.xmlを生成します
右上隅をクリックします
注:テキストの上下に2つの赤いボックスがあります。以下は必要ありません。上の赤いボックスのパスは自分で変更する必要があります。
src \ main \ webapp \ WEB-INFを手動で追加します。たとえば、私のものは次のとおりです。
D:\springBootProduct\springboot-04-web-servlet\src\main\webapp\WEB-INF\web.xml
変更すると、パスは(1)のパスになります。
3.サーバーをアイデアに統合します
戦争パッケージでプロジェクトを作成する
ディレクトリを見ると、もう1つのファイルServletInitializerがあります
右上隅をクリックします
プラス記号をクリックします
ここに注意してください:
デフォルトのパスを開いたところは次のようになります。パスを変更する必要があります。次のようになります。
D:\springBootProduct\springboot-04-jsp\src\main\webapp\WEB-INF\web.xml
この時点で、ディレクトリは次のようになります。
右上隅をクリックします
ポート番号、Tomcat、および名前を設定します
この場所はある場合とない場合があります。違いはURLに表示されます。ここでは、削除しません。
2つのJSPを作成し、好きなようにコンテンツを提供します
HelloController
application.properties
実行
注:実行できない場合は、ServletInitializerクラスがありません。手動で追加してください。それでも機能しない場合は、プロジェクトを再構築してください。warパッケージの形式であることを忘れないでください。
public class ServletInitializer extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(Springboot04JspApplication.class);
}
}