2012-02-15 69 views
0

我正在改變一個項目,該項目在端口8080上使用了一個簡單的java HTTPServer來使用Spring MVC servlet框架。鏈接(href)與Spring MVC中的應用程序無關?

有很多的應用程序中的鏈接,像這樣:

<a href=\"/rule\">Manage rules</a><br/> 

後就正常使用要求,如:

http://localhost:8080/send 

然而,這些現在不工作,除非我把這個servlet名稱在前面像這樣:

"<a href=\"/ServletName/rule\">Manage rules</a><br/>" 

只是想知道是否有任何解決方法,或是否只是改變所有的href鏈接來在它們前面添加servlet名稱?

請注意,我不必在方法啓動時在我的@RequestMapping調用中添加servlet名稱,這是其問題的唯一鏈接。例如。如果您在視圖層使用JSP時,使用有一個鏈接標籤的標籤庫(或自己寫一個)能正常工作,而不在前面

@RequestMapping(value = "/send", method = RequestMethod.GET) 
+0

使用URL標記? – 2012-02-15 17:05:57

+0

所有href鏈接都與當前上下文相關。如果你使用的是Apache服務器,你可以配置你的apache服務器,使其在每個請求中包含servlet名稱,然後它會碰到你的應用服務器。 – 2012-02-15 17:32:32

回答

5

添加servlet名稱。基本上,鏈接標記有做創建網址

HttpServletResponse.encodeURL(originalUrl) 

在JSTL的<c:url>標籤確實如此,但它只生成URL,而不是鏈接標籤,但它可以讓你有這樣的:

<c:url value="your/relative/url" var="somevar" /> 
<a href="${somevar}">Link Text</a> 
+0

嗨,我沒有使用JSP恐怕。我認爲可能有一種方法可以通過xml文件來完成 - 可以在web.xml或applicationContext.xml中重寫URL或其他東西? – Rory 2012-02-15 18:01:41

+0

@Rory很好*您在視圖層中使用了什麼?不要告訴我你正在從java代碼直接輸出。 – 2012-02-16 09:12:53

+0

是的..使用HttpServletResponse參數做httpServletResponse.getWriter.write(「); – Rory 2012-02-16 10:03:09