في الفصلين الأولين ، شاركنا دعم Spring Boot لـ Restful ، لكن الواجهة المريحة عادة ما تُرجع البيانات فقط. عند القيام بتطوير الويب ، غالبًا ما يكون لدينا الكثير من الموارد الثابتة ، مثل HTML ، الصور ، CSS ، إلخ. فكيف يمكنك إرجاع الموارد الثابتة إلى الواجهة الأمامية؟ يجب على الطلاب الذين قاموا بتطوير الويب من قبل أن يعلموا أنه سيكون هناك دليل WebApp ضمن مشروع الويب الذي أنشأناه من قبل ، ويمكننا الوصول إليه مباشرة عن طريق وضع موارد ثابتة في هذا الدليل. ومع ذلك ، لا تملك المشاريع المستندة إلى الحذاء الربيعي هذا الدليل ، فكيف يجب أن نتعامل معه؟
1. أغبى طريقة
دعنا نشارك أولاً أغبى طريقة ، وهي إعادة الموارد الثابتة مباشرة إلى الواجهة الأمامية عبر الدفق. نقوم بإنشاء دليل HTML في الدليل الجذر لموارد مشروع Maven ، ثم نضع ملف HTML في هذا الدليل ، ونحدد أن أي مسار وصول يبدأ بـ / ثابت / هو الوصول إلى الموارد الثابتة في الدليل. التنفيذ على النحو التالي:
controllerpublic class staticResourCeController { @requestmapping ("/static/**") public void gethtml (httpservletrequest request ، httpservletponse repress) {String uri = request.getRequesturi () ؛ String [] arr = uri.split ("static/") ؛ String ResourceName = "index.html" ؛ if (arr.length> 1) {resourcename = arr [1] ؛ } url url = staticResourCeController.class.getResource ("/"). getPath () + "html/" + resourcename ؛ حاول {fileReader reader = new fileReader (ملف جديد (url)) ؛ BufferedReader BR = جديد BufferedReader (reader) ؛ StringBuilder sb = new StringBuilder () ؛ خط السلسلة = br.readline () ؛ بينما (السطر! = null) {sb.append (line) ؛ line = br.readline () ؛ } response.getOutputStream (). الكتابة (sb.toString (). getBytes ()) ؛ استجابة. flushbuffer () ؛ } catch (ioException e) {E.PrintStackTrace () ؛ }}}عملية التنفيذ بسيطة للغاية ، والتي تتمثل أولاً في فصل الموارد URI عن المسار ، ثم اقرأ الملف من الدليل الثابت ، وإخراجه إلى الواجهة الأمامية. نظرًا لأنه مجرد عرض بسيط ، تتم معالجة ملفات نوع النص فقط هنا ، ويمكن معالجة ملفات الصور بشكل مشابه. بالطبع ، لن نفعل ذلك بالتأكيد في الواقع ، وسيكون لها بالتأكيد حل أفضل. ومع ذلك ، على الرغم من أن هذه الطريقة غبية بعض الشيء ، إلا أنها في الواقع أهم شيء. بغض النظر عن مدى ملاءمة الإطار الذي يساعدنا في التعامل مع هذا النوع من المشكلات ، ولكن بصرف النظر عن الإطار ، ما زلنا بحاجة إلى أن نكون قادرين على كتابة مشروع ويب بشكل كفاءة. فقط من خلال معرفة مبدأ التنفيذ ، يمكنك أن تكون قادرًا على التعامل مع المشكلات عندما تواجه مشاكل. الآن دعونا نلقي نظرة على دعم Spring Boot للموارد الثابتة.
2.
يمكن لـ Spring Boot الوصول مباشرة إلى الملفات في أربع أدلة افتراضيًا:
classpath:/public/
classpath:/الموارد/
classpath:/static/
classpath:/meta-info/resouces/
نقوم الآن بإنشاء الدلائل الأربع التالية في دليل موارد ملفات الموارد:
لاحظ أن موارد مجلد الموارد تحت الشريط الأزرق تختلف عن ClassPath المجلد:/الموارد تحت ClassPath. تمثل الموارد الموجودة تحت الشريط الأزرق أن الملفات الموجودة في الدليل هي ملفات موارد. عند التغليف ، سيتم تعبئة جميع الملفات الموجودة في الدليل. يمكن تغيير هذا الاسم. يمكنك تحديد دليل الموارد في pom.xml:
<srossial> <sroffer> <Cirlive> src/main/resources </fircensory> </sroger> </srossial>
تعد الموارد الموجودة تحت ClassPath واحدة من مجلدات الموارد الثابتة الافتراضية في SPRING BOOT ، والوظائف هي نفس المجلدات العامة والموارد العامة واللحوم. الآن يمكننا إعادة تشغيل الحذاء الربيعي ويمكننا المرور
http: // localhost: 8080/1.html
http: // localhost: 8080/2.html
http: // localhost: 8080/3.html
http: // localhost: 8080/4.html
أربعة عناوين URL تصل إلى موارد ثابتة تحت أربع أدلة.
3. تخصيص دليل الموارد الثابتة
من خلال القسم الثاني ، نعرف بالفعل دليل الموارد الثابتة التي يمكن أن يصل إليها Spring Boot افتراضيًا ، لكن الجميع سيفكرون بالتأكيد ، هل هذا الدليل ثابت؟ هل يمكننا تحديد أدلة الموارد الثابتة لأنفسنا؟ الجواب نعم. نحن الآن نخصص دليل الموارد الثابت. نحدد دليل الصور لتخزين الصور. جميع /Image /** مسارات سوف تصل إلى الموارد في دليل الصور:
ConfigurationPublic Class ImageMvcConfig يمتد webmvcConfigureRadapter {Override public void addresourceHandlers (ResourceHandlerRegistry Recistry) {registry.addresourceHandler ("/image/**") .addresourcelocations ("classpath:/". }}يجب أن يكون هذا الرمز بسيطًا نسبيًا. يحدد التكوين configuration فئة التكوين ، والتي تم ذكرها عدة مرات في المقالة السابقة. WebMVCConfigurerAdapter هو محول لتكوين MVC المقدمة بواسطة Spring. لديها العديد من طرق التكوين. AddResourceHandlers هي طريقة متخصصة في التعامل مع الموارد الثابتة. سنتحدث عن طرق أخرى لاحقًا. الآن نتحقق مما إذا كان التكوين أعلاه صالحًا. أضع صورة spring.jpg تحت دليل الصور. الآن نصل إلى الصورة من خلال http: // localhost: 8080/image/spring.jpg:
في الواقع ، بالإضافة إلى الطريقة المذكورة أعلاه ، هناك طريقة أخرى أبسط ، وهي تكوينها مباشرة في Application.yml:
Spring: MVC: static-path-pattern:/image/** الموارد: الثابتة الثابتة: classpath:/صور/
النمط الثابت: وضع الوصول ، الافتراضي هو /** ، يمكن فصل المتعددة عن طريق الفاصلة
الإرشاد الثابت: دليل الموارد ، مفصولة بفاصلة من قبل أدلة متعددة ، دليل الموارد الافتراضي هو classpath:/meta-inf/resources/، classpath:/، classpath:/static/، classpath:/public/
لاحظ أن هذا التكوين سيقوم بالكتابة فوق دليل الموارد الثابت الافتراضية لـ Spring Boot. على سبيل المثال ، إذا تم تكوينها في المثال ، لم يعد بإمكانك الوصول إلى الموارد في الدلائل الثابتة أو العامة والموارد وما إلى ذلك.
4. ملخص
يشاركك هذه المقالة بشكل أساسي في كيفية معالجة SPRING BOOT الموارد الثابتة. يمكن لـ Spring Boot الوصول إلى الموارد الثابتة بموجب الدلائل الأربعة: classpath:/meta-inf/، classpath:/resources/، classpath:/static/، classpath:/public/افتراضيًا. يمكننا أيضًا تخصيص التكوين وفقًا لاحتياجاتنا. أخيرًا ، تجدر الإشارة إلى أنه إذا كانت هناك موارد تحمل نفس الاسم في هذه الدلائل الأربعة ، فما الدليل سوف يتم إرجاع الموارد التي بموجبها الدليل أولاً؟ يجب أن تكون قادرًا على التخمين من خلال الترتيب الافتراضي للعمليات الثابتة. بشكل افتراضي ، سيقوم Spring Boot بإرجاع الموارد تحت /meta-Inf /الموارد أولاً. بالطبع ، نظرًا لأننا نستطيع تخصيص قيمة الخداع الثابتة ، يمكن أيضًا تعديل هذه الأولوية.
ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.