In the Javadoc of UrlBasedViewResolver, it says this:
I take that to mean that the controller URL must be surfaced publicly, but I'm wondering if its valid to have a controller URL that is not necessarily public. I know that right now this is not possible since the dispatcher must be able to find the controller based upon the URL.Furthermore, forward URLs can be specified via the "forward:" prefix. E.g.: "forward:myAction.do" will trigger a forward to the given URL, rather than resolution as standard view name. This is typically used for controller URLs; it is not supposed to be used for JSP URLs - use logical view names there.
As an example, I have a controller URL which handles confirm e-mail requests. It does so by inspecting the query string for a couple of parameters. However, its possible that the parameters aren't quite right and so it must forward to the appropriate controller to handle this situation. I'd like for this to be handled behind the scenes without the user seeing a different URL. In theory, I guess the forward would hide this, but the URL is still surfaced -- a user could stumble across it.
But of course, I haven't tested the boundaries yet, so I might not understand the feature fully. If anyone knows more, I'd be interested in your take.