views:

547

answers:

3

I'd like to use this kind of a pattern for my Java web app:

<url-pattern>/*/test.html</url-pattern>

and then parse the URL in the servlet to get what the value of the star is, and use that value to query a different table in the database.

However this seems to be an illegal pattern for Tomcat. Is there any way I can achieve this without having to hard code the bit between the slashes?

(example uses in case you're wondering what the context is: /vancouver-hotel/rooms.html, /seattle-hotel/rooms.html)

A: 

Easily done with a GET parameter:

http://localhost:8080/rooms?city=vancouver
duffymo
Not SEO friendly. Query parameters are ignored.
BalusC
Map everything to rooms and let the servlet sort things out after fetching the city out of query parameters.
duffymo
A: 

You can use a url rewriting filter:

http://tuckey.org/urlrewrite/

Blake Pettersson
+1  A: 

Best way is to rearrange your URL structure to /hotels/<cityname> and let a HotelServlet listen on /hotels/* and get the <cityname> as pathinfo using request.getPathInfo(). You can use the usual java.lang.String methods to parse the pathinfo further. For example a split("/") and then storing the parts as a request attribute or something else which can be accessed by business/domain objects.

BalusC