Does servlet support urls as follows:
/xyz/{value}/test
where value could be replaced by text or number.
How to map that in the web.xml?
Does servlet support urls as follows:
/xyz/{value}/test
where value could be replaced by text or number.
How to map that in the web.xml?
You shouldn't be doing that in web.xml rather you can point every request to your filter (Patternfilter) and can check for URL
As stated above, base servlets does not support patterns like you specified in your question. Spring MVC does support patterns. Here is a link to the pertinent section in the Spring Reference Document.
It does support mapping that url; but doesn't offer any validation.
In your web xml, you could do this....
But that won't guarantee that the trailing
test
is present and that it is the last item. If you're looking for something more sophisticated, you should try urlrewritefilter.http://code.google.com/p/urlrewritefilter/
It's not supported by Servlet API to have the URL pattern wildcard
*
in middle of the mapping. It only allows the wildcard*
in the end of the mapping like so/prefix/*
or in the start of the mapping like so*.suffix
.With the standard allowed URL pattern syntax your best bet is to map it on
/xyz/*
and extract the path information usingHttpServletRequest#getPathInfo()
.So, given an
<url-pattern>/xyz/*</url-pattern>
, here's a basic kickoff example how to extract the path information, null checks and array index out of bounds checks omitted:If you want more finer grained control like as possible with Apache HTTPD's
mod_rewrite
, then you could look at Tuckey's URL rewrite filter.You can use this library: http://zerh.github.io/ServletIO/, so you can convert your servlets in MVC controllers and use pretty urls
As others have indicated, the servlet specification does not allow such patterns; however, you might consider JAX-RS which does allow such patterns, if this is appropriate for your use case.
Or:
(Related to: https://stackoverflow.com/a/8303767/843093.)