ホームページ  >  記事  >  Java  >  ソースコードを通じて静的リソースのマッピングルールを調べる方法

ソースコードを通じて静的リソースのマッピングルールを調べる方法

醉折花枝作酒筹
醉折花枝作酒筹転載
2021-05-06 09:36:492235ブラウズ

この記事では、ソース コードを通じて静的リソース マッピング ルールを調べる方法を紹介します。一定の参考値があるので、困っている友達が参考になれば幸いです。

ソースコードを通じて静的リソースのマッピングルールを調べる方法

Spring Boot - ソース コードを通じて静的リソースのマッピング ルールを探索する

Spring Boot プロジェクトを開発するときは、次のような多くの静的リソースをインポートする必要があります。 css 、 js およびその他のファイルとして

#Web アプリケーションの場合、メインの下に Web アプリケーションが存在します。以前はすべてのページをそこにインポートしていました。しかし、現在の pom はどうなるのでしょうか。パッケージ化方法は jar なので、SpringBoot はこの方法でページを作成できるでしょうか?もちろん可能ですが、SpringBoot には静的リソースの場所に関する規制があります。

静的リソース マッピング ルール

最初のマッピング ルール

SpringBoot では、SpringMVC の Web 構成は WebMvcAutoConfiguration 構成クラス内にあります。

WebMvcAutoConfigurationAdapter には多くの設定メソッドがありますが、その 1 つはリソース処理メソッドの追加です: addResourceHandlers()、ソース コードは次のとおりです。

@Override
		protected void addResourceHandlers(ResourceHandlerRegistry registry) {
			super.addResourceHandlers(registry);
			if (!this.resourceProperties.isAddMappings()) {
				logger.debug("Default resource handling disabled");
				return;
			}
			ServletContext servletContext = getServletContext();
			addResourceHandler(registry, "/webjars/**", "classpath:/META-INF/resources/webjars/");
			addResourceHandler(registry, this.mvcProperties.getStaticPathPattern(), (registration) -> {
				registration.addResourceLocations(this.resourceProperties.getStaticLocations());
				if (servletContext != null) {
					registration.addResourceLocations(new ServletContextResource(servletContext, SERVLET_LOCATION));
				}
			});
		}

WebJarsとは、クライアント(ブラウザ)のリソース(JavaScript、Cssなど)をjarパッケージファイルにパッケージ化し、リソースの依存関係を一元管理するものです。 WebJar の jar パッケージは、Maven 中央リポジトリにデプロイされます。

Webjars 公式 Web サイトにアクセスして必要なリソースを見つけ、Maven の依存関係をプロジェクトに追加してこれらのリソースを直接使用できます。

たとえば、jquery リソースをインポートしたいとします。

<dependency>
    <groupId>org.webjars</groupId>
    <artifactId>jquery</artifactId>
    <version>3.6.0</version></dependency>

インポート後、リソース パスを通じてリソースの保存場所を見つけてアクセスできます。 Webjars Web サイトにインポートするのはすべて以下に準拠しています。 以下の図の構造

ソースコードを通じて静的リソースのマッピングルールを調べる方法

# はパスを通じてアクセスされ、静的リソースに正常にアクセスされます。

ソースコードを通じて静的リソースのマッピングルールを調べる方法

#2 番目のマッピング ルール

ソース コードの分析を続けましょう

ソースコードを通じて静的リソースのマッピングルールを調べる方法

getStaticPathpattern(): 静的パス パターンを取得します。クリックしてソース コードを確認します

public String getStaticPathPattern() {
		return this.staticPathPattern;
	}

もう一度 staticPathPattern のソース コードを確認します

ソースコードを通じて静的リソースのマッピングルールを調べる方法

##/**

は、現在のディレクトリ内のすべての静的リソースを識別できることを意味しますが、現在のディレクトリとは正確には何を指すのでしょうか? resourceProperties のソース コードをクリックすると確認できます。ソース コードは次のとおりです。

ソースコードを通じて静的リソースのマッピングルールを調べる方法上記のソース コードでは、4 つの静的リソース パスが明確に示されているため、これら 4 つのディレクトリ内の静的リソースが利用可能である限り、それらは直接入手できます。

それをテストしてみましょう。まず上記のディレクトリを完成させてから、js リソースをリソース ディレクトリに配置します。

ソースコードを通じて静的リソースのマッピングルールを調べる方法

Springboot アプリケーションのテストを開始します。静的リソースです!

ソースコードを通じて静的リソースのマッピングルールを調べる方法

#次の 4 つのディレクトリに保存されている静的リソースは、当社が識別できます:

"classpath:/META-INF/resources/""classpath:/resources/""classpath:/static/""classpath:/public/"

注:

  • 1 つのディレクトリのアクセス パスは localhost:8080/webjars/resource ディレクトリ構造であり、次の 3 つのアクセス パスは localhost:8080/resource name

  • #2 番目のマッピング ルールの優先順位は :resources>static (default)>public
  • カスタマイズされた静的リソース パス

構成ファイルを介して配置する必要があるフォルダーを指定できます。ファイルの場合、それらは application.properties で構成されます;

spring.resources.static-locations=classpath:/coding/,classpath:/cheng/

ただし、以下のソース コードから、リソース パスがカスタマイズされている場合、上記の 4 つのデフォルト パスは無効になることがわかります。パスをカスタマイズするには、springboot を使用して自動的にパスを構成します。

if (!this.resourceProperties.isAddMappings()) {
				logger.debug("Default resource handling disabled");
				return;
			}

関連する無料学習の推奨事項:

Java 基本チュートリアル

以上がソースコードを通じて静的リソースのマッピングルールを調べる方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はcsdn.netで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。