我想以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本身的动态值(场地名称)
我该如何做到这一点?
答案 0 :(得分:2)
离开我的头顶,这是你可以尝试的东西:
1)使用与URL的公共(前缀)部分匹配的servlet映射创建一个servlet(例如,对于foursquare,模式将为/v/*
)。
2)在您的servlet中,使用request.getPathInfo()
检索URL路径的剩余部分。然后,您可以使用常规字符串实用程序对其进行解析,并将其转换为您想要的新路径。
3)假设您更新的路径位于名为newUrl
的变量中,请致电response.sendRedirect(newUrl)
告诉浏览器更新其网址。这也将使用新路径再次调用您的servlet,因此它需要处理这两种情况。
有关如何处理相对路径与绝对路径等的详细信息,请参阅HttpServletResponse.sendRedirect()
的javadoc。