[英]Spring MVC 1 to 1 mapping of a URL to .HTML without exposing path
我在不提供任何JSP的Web服務上使用帶有Boot 1.2的Spring 4.1.5。 我不想添加JSP servlet,但希望它提供一個單一的canary頁面,該頁面以更漂亮的html類型格式顯示在/manage/health
端點上提供的信息。
我在webapp/canary/canary.html
有一個文件,我想通過以下網址提供該文件: www.mywebservice.com:9343/canary
: webapp/canary/canary.html
,完全一樣,而不是canary.html
我嘗試這樣做:
@Configuration
public class CanaryConfiguration extends WebMvcConfigurerAdapter {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/canary")
.addResourceLocations("/canary/canary.html");
}
}
但是,這不起作用。
期望處理程序提供文件名。 所以換句話說,位置應該是這樣的: /canary/
處理程序將類似於: /canary/**
這樣,URL www.mywebservice.com:9343/canary/canary.html
會像一個魅力一樣工作。
但是,我希望URL可以將www.mywebservice.com:9343/canary
解析為webapp/canary/canary.html
而無需鍵入html。
在jsp servlet中,這真的很容易,因為您可以設置后綴ect。
我查看了ResourceResolver
但對我而言,如何將其鏈接到當前配置中並沒有意義。
看起來像我想要的:
提供用於解決對實際資源的傳入請求並獲取客戶端在請求資源時應使用的公共URL路徑的機制。
請參閱: ResourceResolver文檔
任何幫助將是非常有益的。
我也很清楚,我可以將html放在自動配置的資源/靜態文件和其他幾個地方。 這總是需要輸入.html,在這種情況下,這不是我想要的,因此無法正常工作。 謝謝!
您可以使用視圖控制器來做到這一點。 這是一個示例。 希望這可以幫助。
public class AppConfig extends WebMvcConfigurerAdapter {
@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController("/canary").setViewName("/canary/canary.html");
}
}
注意:如果您使用的是tomcat,則可能必須將jsp servlet配置為服務器html文件。
相關帖子在這里 。
為了提供信息,選擇的答案與以下相同:
@Controller
public class CanaryController {
@RequestMapping(value="/canary", method=RequestMethod.GET)
public String getCanary() {
return "/canary/canary.html";
}
}
只要您的webapp
文件夾中存在canary
(或任何文件/文件夾),以上代碼就可以工作。
當我嘗試此操作時,我試圖在我的YAML(.yml)文件中將后綴設置為.html,但這種方法沒有用,我認為如果不是RestController,則需要返回到servlet。 我誤解了。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.