2011-09-14 51 views
9

我知道,在春天,我必須定義歡迎文件,這應該是WEB-INF文件夾的外面,所以我定義它是這樣的:春歡迎文件列表正確的映射

的web.xml:

<welcome-file-list> 
    <welcome-file>index.jsp</welcome-file> 
</welcome-file-list> 


<servlet-mapping> 
    <servlet-name>spring</servlet-name> 
    <url-pattern>/</url-pattern> 
</servlet-mapping> 

但實際上我真正的代碼是在WEB-INF/JSP/contact.jsp

所以我總是要做到這一點:

<jsp:forward page="/index"></jsp:forward> 

而且在我的控制器,這意味着:

@RequestMapping("/index") 
public String listContacts(Map<String, Object> map) { 

    map.put("contact", new Contact()); 
    map.put("contactList", contactService.listContact()); 

    return "contact"; 
} 

我怎樣才能使這種方式,歡迎文件總是轉到我的索引映射,從而導致contact.jsp?

隨意問的問題,如果這是混亂...

回答

22
@RequestMapping({"/index", "/"}) 

<welcome-file-list> 
    <welcome-file></welcome-file> 
</welcome-file-list> 

爲我工作。

+0

未發現與URI [/網絡/]在DispatcherServlet的HTTP請求名爲 '彈簧',更新的第一柱(加入Servlet映射在web.xml)映射。 – Jaanus

+0

@Jaanus - 看到更新 – Bozho

+1

它的工作,謝謝!這是合理的事情嗎,或者我通常應該有歡迎文件? – Jaanus

0

使用

<welcome-file-list> 
    <welcome-file>/index</welcome-file> 
</welcome-file-list> 
+0

在名爲'spring'的DispatcherServlet中使用URI [/ web /]的HTTP請求未找到映射,首先更新(在web.xml中添加了servlet映射)。 – Jaanus

4

見我的答案嘗試:https://stackoverflow.com/a/15551678/173149或剛:

<servlet-mapping> 
    <servlet-name>dispatcher</servlet-name> 
    <url-pattern>/</url-pattern> 
    <url-pattern>/index.htm</url-pattern> <<== *1* 
</servlet-mapping> 
<welcome-file-list> 
    <welcome-file>index.htm</welcome-file> <<== *2* 
</welcome-file-list> 
2

在Java配置的情況下,您可以覆蓋在擴展WebMvcConfigurerAdapter

@Override 
public void addViewControllers(ViewControllerRegistry registry) { 
    registry.addViewController("/").setViewName("/index"); 
} 

@Override 
public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) { 
    configurer.enable(); 
} 

類的兩種方法如果你想明確地提供index.html,把它變成一個資源覆蓋作爲下同類中的方法:當然

@Override 
public void addResourceHandlers(ResourceHandlerRegistry registry) { 
    registry.addResourceHandler("/index.html").addResourceLocations("/WEB-INF/views/index.html"); 
} 

addResourceLocations必須遵循選擇去牽你的意見的文件夾。

參見these samples