![](/img/trans.png)
[英]Default resource handler for an URL path serving a static file in Spring Boot MVC
[英]Spring 4 - MVC - URL param and static resource path
我有一個spring mvc應用程序,在頁面中,我在表中列出了從數據庫中獲取的“組”詳細信息。 每個組的url設置為“ / viewgroup / 410”,其中410是將從數據庫中加載並顯示在viewgroup.jsp頁面中的groupid。
<td><a href="viewgroup/${group.groupid}">${group.name}</a></td>
因此,控制器方法具有
@RequestMapping("/viewgroup/{groupid}")
public String viewGroup() {
...
}
像這樣。 JSP頁面無法加載目錄結構中的靜態資源
+webapp
+resources
+css
+js
+images
+views
+login.jsp
jsp頁面具有image / js / css的以下路徑。
<link href="resources/css/bootstrap.css" rel="stylesheet" media="screen">
我嘗試添加
@Controller
@RequestMapping("/viewgroup/**")
public class ViewGroupController {
...
}
這在jsp中
<link href="viewgroup/resources/css/bootstrap.css" rel="stylesheet" media="screen">
仍然,jsp頁面加載無法加載靜態資源。 當我在url中傳遞參數時,如何在jsp頁面中提供靜態資源的資源路徑?
您通過項目的任何URL傳遞查詢參數的事實並不影響其處理靜態資源的方式。 您只需要包括指向靜態資源的鏈接(例如,作為相對路徑),如下所示:
<link href="/resources/css/bootstrap.css" rel="stylesheet" media="screen">
此類靜態資源的分辨率完全獨立於您當前正在查看的頁面,無論是/viewgroup/410
還是/foo/bar
。 這就是為什么鏈接的href開頭不需要“視圖組”的原因。
但是您確實需要告訴Spring MVC它應該如何處理此類靜態資源。 通常,這是在Spring配置中完成的。 例如,如果通過WebMvcConfigurer實例使用Spring MVC java config,則應以以下方式覆蓋addResourceHandlers方法:
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/resources/**").addResourceLocations("/resources/");
}
編輯:我不好,我認為Spring MVC +任何視圖技術(JSP,Thymeleaf等)都會根據Web應用程序的根路徑自動解析鏈接的href,但這顯然不適用於解析相對鏈接的href的原始HTML反對當前的道路。 因此,最后,如OP所見,只有使用正在使用的視圖技術處理鏈接時,才可以針對根路徑解析鏈接(在使用JSP的示例中: <c:url value="/resources/css/bootstrap.css"/>
)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.