JSP / Servlet重写URL

时间:2013-10-24 14:47:34

标签: java jsp tomcat servlets url-rewriting

我想以foursquare正在做的方式更改网站中某些网页的网址:

来自www.foursquare.com/v/anystring/venueid

访问www.foursquare.com/v/venue-name/venueid

例如纽约的中央公园:

https://foursquare.com/v/writeherewhatyouwant/412d2800f964a520df0c1fe3

变为

https://foursquare.com/v/central-park/412d2800f964a520df0c1fe3

我正在Tomcat容器中开发一个纯JSP / Servlet应用程序,没有框架。

我想过使用tuckey的urlrewritefilter,但我不知道如何使用来自servlet本身的动态值(场地名称)

我该如何做到这一点?

1 个答案:

答案 0 :(得分:2)

离开我的头顶,这是你可以尝试的东西:

1)使用与URL的公共(前缀)部分匹配的servlet映射创建一个servlet(例如,对于foursquare,模式将为/v/*)。

2)在您的servlet中,使用request.getPathInfo()检索URL路径的剩余部分。然后,您可以使用常规字符串实用程序对其进行解析,并将其转换为您想要的新路径。

3)假设您更新的路径位于名为newUrl的变量中,请致电response.sendRedirect(newUrl)告诉浏览器更新其网址。这也将使用新路径再次调用您的servlet,因此它需要处理这两种情况。

有关如何处理相对路径与绝对路径等的详细信息,请参阅HttpServletResponse.sendRedirect()的javadoc。