最初の2つの章では、Restfulに対するSpring Bootのサポートを共有しましたが、Restfulインターフェイスは通常、データのみを返します。 Web開発を行うとき、HTML、写真、CSSなどの多くの静的リソースがあることがよくあります。以前にWeb開発を行ったことがある学生は、以前に作成したWebプロジェクトの下にWebAppディレクトリがあることを知っておく必要があり、このディレクトリに静的リソースを配置することで直接アクセスできます。ただし、Spring Bootベースのプロジェクトにはこのディレクトリがないので、どのように対処すればよいですか?
1。最も愚かな方法
まず、愚かな方法を共有しましょう。これは、静的リソースをストリームを介してフロントエンドに直接返すことです。 MavenプロジェクトのリソースのルートディレクトリにHTMLディレクトリを作成し、このディレクトリにHTMLファイルを配置し、アクセスパスが / static /で始まることを指定します。実装は次のとおりです。
@controllerpublic class staticresourcecontroller {@requestmapping( "/static/**")public void gethtml(httpservletrequest request、httpservletresponse応答){string uri = request.getRequesturi(); string [] arr = uri.split( "static/"); string resourcename = "index.html"; if(arr.length> 1){resourcename = arr [1]; } string url = staticresourcecontroller.class.getResource( "/")。getPath() + "html/" + resourcename; try {fileReader reader = new fileReader(new file(url)); BufferedReader br = new BufferedReader(Reader); stringbuilder sb = new StringBuilder(); string line = br.readline(); while(line!= null){sb.append(line); line = br.readline(); } respons.getOutputStream()。write(sb.toString()。getBytes()); Response.flushbuffer(); } catch(ioexception e){e.printstacktrace(); }}}実装プロセスは非常に簡単です。これは、まずリソースURIをパスから分離し、ファイルを静的ディレクトリから読み取り、フロントエンドに出力することです。単純なデモンストレーションであるため、ここではテキストタイプのファイルのみが処理され、画像ファイルも同様に処理できます。もちろん、私たちは現実には間違いなくこれを行いません。SpringBootは間違いなくより良い解決策を持っています。しかし、この方法は少し愚かですが、実際に最も重要なことです。フレームワークがどれほど便利であっても、この種の問題に対処するのに役立ちますが、フレームワークは別として、Webプロジェクトを熟練して書くことができる必要があります。実装の原則を知ることによってのみ、問題に遭遇したときに問題を処理できるようになります。それでは、Spring Bootの静的リソースのサポートを見てみましょう。
2。スプリングブートデフォルトの静的リソースアクセス法
Spring Bootは、デフォルトで4つのディレクトリのファイルに直接アクセスできます。
classpath:/public/
classpath:/resources/
classpath:/static/
classpath:/meta-info/resouces/
次のリソースファイルリソースディレクトリに次の4つのディレクトリを作成します。
Blue Barの下のリソースフォルダーリソースは、Folder ClassPath:/ClassPathの下のリソースとは異なることに注意してください。青いバーの下のリソースは、ディレクトリ内のファイルがリソースファイルであることを表しています。パッケージ化すると、ディレクトリ内のすべてのファイルがパッケージ化されます。この名前は変更できます。 pom.xmlでリソースディレクトリを指定できます。
<リソース> <リソース> <Directory> src/main/resources </directory> </resource> </resources>
ClassPathの下のリソースは、Spring Bootのデフォルトの静的リソースフォルダーの1つであり、機能は公共、静的、および肉INFO/リソースと同じです。これで、スプリングブートを再起動でき、渡すことができます
http:// localhost:8080/1.html
http:// localhost:8080/2.html
http:// localhost:8080/3.html
http:// localhost:8080/4.html
4つのURLは、4つのディレクトリの下に静的リソースにアクセスします。
3.静的リソースディレクトリをカスタマイズします
2番目のセクションを通して、Spring Bootがデフォルトでアクセスできる静的リソースのディレクトリを既に知っていますが、誰もがこのディレクトリが修正されていると確信していますか?静的リソースディレクトリを自分で定義できますか?答えはイエスです。これで、静的リソースディレクトリをカスタマイズします。画像を保存する画像ディレクトリを定義します。すべて /画像 /**パスは、画像ディレクトリ内のリソースにアクセスします。
@configurationPublic class imagemvcconfig拡張webmvcconfigureradapter {@override public void addResourcehandlers(resourcehandlerregistry registry){registry.addresourcehandler( "/image/**").addresourcelocations( "classpath:/image:/"); }}このコードは比較的簡単なはずです。 @configurationは、前の記事で何度も言及されている構成クラスを識別します。 WebMVCCONFigurerAdapterは、Springが提供するMVCを構成するためのアダプターです。多くの構成方法があります。 AddResourceHandlersは、静的リソースの処理を専門とする方法です。後で他の方法について説明します。これで、上記の構成が有効かどうかを確認しています。 Spring.jpg画像を画像ディレクトリの下に配置します。次に、http:// localhost:8080/image/spring.jpgを介して画像にアクセスします。
実際、上記の方法に加えて、別のより単純な方法があります。これは、Application.ymlで直接構成することです。
スプリング:MVC:static-path-pattern:/image/**リソース:静的ロケーション:classpath:/images/
static-path-pattern:アクセスモード、デフォルトは /**、倍数はコンマで分離できます
静的なロケーション:複数のディレクトリによってコンマを分離したリソースディレクトリ、デフォルトのリソースディレクトリはclassPath:/meta-inf/resources/、classpath:/resources/、classpath:/static/、classpath:/public//public/
この構成は、スプリングブートのデフォルトの静的リソースディレクトリを上書きすることに注意してください。たとえば、例で構成されている場合、静的、公開、リソースなどのリソースにアクセスできなくなります。ディレクトリ。
4。概要
この記事では、主にSpring Bootが静的リソースを処理する方法を共有しています。 Spring Bootは、4つのディレクトリの下に静的リソースにアクセスできます。ClassPath:/Meta-INF/Resources/、classPath:/resources/、classpath:/static/、classpath:/public/default。また、ニーズに応じて構成をパーソナライズすることもできます。最後に、これら4つのディレクトリに同じ名前のリソースがある場合、ディレクトリが最初に返されるリソースはどのディレクトリになるかに注意する必要があります。静的なロケーションのデフォルトの順序を推測できるはずです。デフォルトでは、Spring Bootは、 /Meta-INF /リソースの下にリソースを最初に返します。もちろん、静的ロケーションの値をカスタマイズできるため、この優先度も調整できます。
上記はこの記事のすべての内容です。みんなの学習に役立つことを願っています。誰もがwulin.comをもっとサポートすることを願っています。