2013-04-23 71 views
2

I have been told in this post可以使用Spring在URL結構中具有.jsp擴展名。我一直在嘗試用下面的代碼來實現它:如何在春天使用.jsp擴展名的網址提供支持

HelloController.java

@Controller 
@RequestMapping("/welcome") 
public class HelloController { 
    @RequestMapping(value="/item.jsp", method = RequestMethod.GET) 
    public String helloDotJSP(ModelMap model) { 

     System.out.println("/item.jsp RequestMapping"); 
     model.addAttribute("message", "Spring 3 MVC Hello World"); 
     return "item"; 
    } 
} 

,當我嘗試訪問該頁面本地主機:8080 /應用/首頁/ item.jsp我得到的錯誤,請求的資源不可用。但是,當我嘗試將/item.jsp的擴展名修改爲例如/item.other它開始工作。我如何添加對.jsp擴展的支持?

謝謝你的幫助。

+0

我想知道你爲什麼要這麼做......無論如何,你是否想要所有的映射使用這個擴展,或者它是一般的應用程序? – NilsH 2013-04-23 10:00:44

+0

我的要求之一是提供與現有URL基礎結構的向後兼容性。我不知道是否需要所有映射來使用此擴展,但肯定會有多個映射。 – Disper 2013-04-23 10:10:22

+0

我明白了。我猜測默認的JSP servlet會干擾你的url模式。您是否考慮過使用對現有網址進行網址重寫?然後,您可以在透明地使用常規Spring URL映射的同時公開「舊」URL。 – NilsH 2013-04-23 10:15:13

回答

1

您正在獲取「請求的資源不可用」,因爲我在web.xml中的您的servlet映射未將item.jsp映射到Spring DispatcherServlet

無論如何,如果您的要求只是爲了支持舊網址,還有更有效的方法來做到這一點。

大多數低保是創建JSP,它們具有相同的名稱和結構的舊的網址,並在每個JSP中添加小腳本像

<% 
response.setStatus(301); 
response.setHeader("Location", "/new-url.htm"); 
response.setHeader("Connection", "close"); 
%> 

我通常不建議小腳本,但在案件像這些,它是最簡單的解決方案。

如果您有像apache這樣的前端Web服務器,您還可以添加301重定向規則。

希望這會有所幫助。