Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Servlet URL pattern to match a URL that ends with a slash ("/")

I'd like to specify a Servlet URL pattern to match a URL that ends with a slash ("/") and only a slash.

I understand that the pattern

    /example/path/*

will match a URL of

    http://example.com/example/path/

and that this appears to work. However, that same pattern would also match URLs of

    http://example.com/example/path/a/
    http://example.com/example/path/b/
    http://example.com/example/path/c/

I'm merely looking for a URL pattern that will match http://example.com/example/path/ only without also matching http://example.com/example/path/a/ and so on.

Clarification: a URL pattern ending with a slash is not allowed.

like image 707
Jon Cram Avatar asked Jan 19 '09 21:01

Jon Cram


2 Answers

It's quite possible that you can't do this by mapping in web.xml.

What you can do is to map servlet to /mypath/* and then check part after /mypath/ via request.getPathInto(). If it is "/", run your code. If it isn't, return 404 error.

like image 187
Peter Štibraný Avatar answered Sep 19 '22 14:09

Peter Štibraný


In NetBeans, if I go to the Servlets tab on the web.xml file, the IDE would complain with, "Error: URL patterns cannot end with slash (/)". From the URL spec, it reads,

httpurl        = "http://" hostport [ "/" hpath [ "?" search ]]
hpath          = hsegment *[ "/" hsegment ]

So yes, an URI with an ending slash is invalid.

like image 23
BJYC Avatar answered Sep 16 '22 14:09

BJYC