2012-01-24 45 views
0

我使用spring mvc。我在我的網站3頁(實際上是控制器處理這些請求):spring mvc url格式

localhost/post.html 
localhost/search.html 
localhost/list.html 

我想的網址是localhost/XXX/post.html其中XXX是將transffered作爲參數傳遞給控制器​​方法的參數。例如,如果用戶詢問localhost/bla/post.html,則控制器方法/post將獲得bla作爲參數。

這是春季mvc可能嗎?

回答

1

是的,而且很容易做到。當你定義了處理程序URL映射,你可以把一個變量到這樣的路徑:

@RequestMapping("/{blah}/post.html") 
public ModelAndView handleRequest(@PathVariable("blah") String blah) { 
    // 
} 

春天將設置字符串爲您的值時,它調用的方法。 (儘管並非嚴格必要,在路徑中爲調度程序servlet創建一個子目錄也是很正常的事情,將調度程序映射到根目錄可能會很痛苦,例如建立靜態資源訪問,例如,本地主機(localhost)/本地主機MYAPP /胡說/ post.html)

+0

謝謝。我不明白你最後一次關於調度程序servlet的建議。我不希望我的網站的用戶衝浪到域名/ myapp/post.html。我希望他們在web.xml中瀏覽domain/post.html(或domain/XXX/post.html) – Naor

+0

,避免將org.springframework.web.servlet.DispatcherServlet映射到/ *。隨着應用程序的增長,事情會變得更加容易,如果你將它映射到/ app/*之類的東西。前端的Apache或IIS可以將相當公開的URL重寫爲任何內容。 – Affe

+0

但是,用戶應該輸入domain/app/post.html而不是domain/post.html。 – Naor

0

很容易可以使用註解來完成:

@Controller 
public class MyController 
{ 

    @RequestMapping(value = "/{id}/post", method = RequestMethod.POST) 
    public String post(@PathVariable("id") String id) 
    { 
    } 

    @RequestMapping(value = "/{id}/search", method = RequestMethod.GET) 
    public String search(@PathVariable("id") String id) 
    { 
    } 

    @RequestMapping(value = "/{id}/list", method = RequestMethod.GET) 
    public String list(@PathVariable("id") String id) 
    { 
    } 

}