国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > Java > 正文

springboot操作靜態資源文件的方法

2024-07-14 08:41:28
字體:
來源:轉載
供稿:網友

默認靜態資源供

SpringBoot有幾個默認的靜態資源目錄,當然也可配置,默認配置的/**映射到/static(或/public ,/resources,/META-INF/resources),自定義配置方式如下:

spring.mvc.static-path-pattern=/** # Path pattern used for static resources.

前端如果需要訪問默認的靜態資源,下面有點要注意,考慮下面的目錄結構:

└─resources  │ application.yml  │  ├─static  │ ├─css  │ │   index.css  │ │  │ └─js  │     index.js  │  └─templates      index.html

在index.html中該如何引用上面的靜態資源呢?

 如下寫法:

<link rel="stylesheet" type="text/css" href="/css/index.css" rel="external nofollow" ><script type="text/javascript" src="/js/index.js"></script>

注意:默認配置的/**映射到/static(或/public ,/resources,/META-INF/resources)

 當請求/css/index.css的時候,Spring MVC 會在/static/目錄下面找到。 
 如果配置為/static/css/index.css,那么上面配置的幾個目錄下面都沒有/static目錄,因此會找不到資源文件! 
 所以寫靜態資源位置的時候,不要帶上映射的目錄名(如/static/,/public/ ,/resources/,/META-INF/resources/)!

自定義靜態資源

網上資料說可以在配置文件中定義指定,我沒有用這種方式,我使用的是通過實現擴展Configuration來實現。

PS:說明一下在SpringBoot 1.x的版本中,都是通過繼承WebMvcAutoConfiguration來擴展一些與Spring MVC相關的配置,但在2.x的版本中,直接實現接口WebMvcConfigurer來擴展Spring MVC的相關功能,如配置攔截器,配置通用返回值處理器,配置統一異常處理等,當然還包括配置本文中的自定義靜態資源路徑,覆蓋里面等default方法即可。 
 直接上代碼吧:

@Configurationpublic class MyWebAppConfigurer implements WebMvcConfigurer {  // event.share.image.dir=/data/share/image/  @Value("${event.share.image.dir}")  private String outputDir;  @Override  public void addResourceHandlers(ResourceHandlerRegistry registry) {    registry.addResourceHandler("/share/image/**").addResourceLocations(        "file:"+outputDir);  }}

說明:上面代碼的背景是從別的地方動態拿過來的圖片,肯定不能在放到SringBoot的jar包中了,于是通過以上配置可以就可通過http://host/share/image/a.jpg直接訪問在/data/share/image/a.jpg圖片了。如果靜態資源文件不是動態的,也在resources目錄下面,只是需要下面這樣寫即可:

registry.addResourceHandler("/share/image/**").addResourceLocations(        "classpath:"+outputDir); // 把file換成classpath

通過SpringBoot工具類訪問靜態資源

很簡單,代碼如下:

private static final String BACKGROUND_IMAGE = "share/background.jpg";File file = new ClassPathResource(BACKGROUND_IMAGE).getFile();InputStream is = new ClassPathResource(BACKGROUND_IMAGE).getInputStream();

原來還有一種寫法:

private static final String BACKGROUND_IMAGE = "classpath:share/background.jpg";File file = ResourceUtils.getFile(BACKGROUND_IMAGE);

但在2.x版本中,可能出現下面但異常

java.io.FileNotFoundException: class path resource [share/background.jpg] cannot be resolved to absolute file path because it does not reside in the file system: jar:file:/home/ubuntu/wxcs/calendar-api-1.0.0.jar!/BOOT-INF/classes!/share/background.jpg

還是推薦第一種寫法把。


注:相關教程知識閱讀請移步到JAVA教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 兖州市| 环江| 晋中市| 灯塔市| 关岭| 冀州市| 航空| 章丘市| 新绛县| 正定县| 浦北县| 和田县| 额尔古纳市| 洛川县| 东光县| 土默特右旗| 辰溪县| 潢川县| 于都县| 庄河市| 开化县| 湘西| 晴隆县| 长岛县| 宽城| 鱼台县| 毕节市| 本溪市| 抚远县| 利津县| 随州市| 眉山市| 江北区| 大英县| 旬阳县| 田林县| 昭通市| 遵化市| 靖宇县| 封丘县| 来凤县|