我们在J2EE中有类似RegisterRoutes函数的东西吗?

时间:2011-06-14 16:28:21

标签: asp.net asp.net-mvc frameworks java-ee

大家早上好,

我对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),它比常规的ASP.NET Web应用程序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方法调用此方法,并按以下方式实现:

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

默认情况下,名为“Default”的路由由三部分定义:controller,action,最后是由斜杠分隔的ID。当请求到达MVC应用程序时,将根据此定义解析URL。例如,给定“/ products / show / 881”的请求,这将被解析,以便“controller”参数具有“products”的值,“action”参数将是“show”,最后是“id”将是“881”。

1 个答案:

答案 0 :(得分:2)

如果你使用Spring,你可以使用它的@RequestMapping注释来实现类似的东西,所以你可以有类似的东西

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

     .......

   }

}

如果你想确保不能直接调用jsps,你可以将它们放在WEB-INF中