我只是想知道,在java中,当我们需要像www.mydomain.com/buy
这样的东西时,我会创建一个servlet并将其映射到buy
并将其添加到部署描述符中。因此,对于每个这样的链接,我会在那里专门映射到该名称的servlet。
但是现在facebook为每个用户提供了一个独立的网址,例如www.facebook.com/user1
或www.facebook.com/user2/friends
,我对PHP没有太多了解,所以我不知道怎么做他们正在做但我想知道是否有人必须在java中做同样的事情,那么我不认为为部署描述符中的8亿用户创建映射并为他们创建相同数量的servlet是可行的。
有没有办法让这种东西在java中成为可能?
不仅facebook很多网站都这么做,就像我知道的一些非常大的电子商务网站展示了这样的产品www.ecom.com/camera-nikon
或www.ecom.com/nokia-n70-music-edition/
答案 0 :(得分:0)
这种映射已经以编程方式完成。您需要将DispatcherServlet
映射到/*
。它将分析URL,从中提取用户名并在业务逻辑中执行适当的调用。
BTW Spring MVC提供更高级别的地图设施。例如,您可以编写映射到/
的控制器(作为上面提到的servlet)。您可以定义注释如下的方法:
@RequestMapping(value = "/{userName}/friends, method = RequestMethod.GET)
public User[] getFriends(@PathVariable(value = "userName") String userName) {
....
}
传递给URL的用户名与方法参数之间的映射将自动完成。