2011-06-14 39 views
0

大家早上好,我們在J2EE中是否有類似RegisterRoutes的功能

我有一個關於J2EE框架的問題。

自ASP.net 3.5 mvc添加新功能「路線」我們在j2ee中有類似的功能嗎?

這裏是關於ASP.NET3.5此功能的一些文字

路由是在.NET 3.5 SP1中的新功能,以及ASP.NET MVC使用此功能給控制器類響應請求的能力。 ASP.NET MVC使用類似REST的URL(Representational State Transfer),這些URL比常規的ASP.NET Web應用程序URL更清晰。以下是此類URL的例子:

/products/show/881 
/customers/list 
/login/register 

正如你所看到的,REST樣的URL往往是乾淨,簡單,不直接暴露的.aspx服務器上的文件。雖然您可以直接在ASP.NET MVC應用程序中尋址.aspx頁面,但這不是主要想法。

通過開發人員定義的路由,ASP.NET MVC應用程序可以將請求定向到控制器。爲整個ASP.NET應用程序定義一次路由,因此Global.asax文件是定義這些路徑的合理位置。實際上,如果您查看ASP.NET MVC應用程序中的默認Global.asax.cs文件,您將看到一個名爲RegisterRoutes的方法。這個方法是從Application_Start方法中調用,並且實現這樣的:控制器,動作,最後由斜線分開的ID:

public static void RegisterRoutes(RouteCollection routes) 
{ 
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 
    routes.MapRoute(
     "Default", 
     "{controller}/{action}/{id}", 
     new { controller = "Home", 
     action = "Index", 
     id = "" } 
    ); 
} 

默認情況下,一個稱爲「默認」路由與三個部分所定義。當請求到達MVC應用程序時,根據此定義來解析URL。例如,給出「/ products/show/881」的請求,這將被解析,以便「controller」參數具有「products」的值,「action」參數將是「show」,最後是「id」將是「881」。

回答

2

如果你使用Spring,你可以用它@RequestMapping註解來達到類似的東西,所以你可以有像

@Controller 
@RequestMapping("/products") 
public class ProductController { 
    @RequestMapping("/show/{id}) 
    public String show(@PathVariable Integer id) { 

    ....... 

    } 

} 

如果你想確保的JSP不能直接調用,你把它們放在WEB-INF裏面

相關問題