So you have a Spring MVC web application and want to make sure that when the user enters a URL such as
http://www.myawesomedomain.com he/she will see the home page of your application. How do you get Spring MVC’s RequestDispatcher servlet, which acts as the traffic cop and then some for your web application, to act as the default URL handler in the eyes of the web application? There are two good ways to do it, and two bad ones. Let’s start with the bad ones, of course:
- Redirect through meta tag: you add a meta-refresh element to the head element which causes the browser showing the page to go the ‘real’ home page url, such as /index.do
window.location="index.do" inside an
So what are the good ways:
- Using Apache’s mod-rewrite to mask the URL of your application, but that assumes you have a web server in front of your application
- Using the servlet API – which is what you read below
So how do you do it?
In the application’s
web.xml file map the RequestDispatcher servlet to handle requests for
index.htm, aside from handling the extension of your liking, say, *.do. You do this through the
servlet-mapping element. This should look like this:
web.xml, set up a welcome file that may be requested by a browser when a user does not enter a specific page request, e.g.
www.domain.com. Most browsers at a minimum will automatically request, on behalf of the user,
So choose one, say
The last and final step is to map the url
index.htm and set the
<welcome-file> element to look something like this:
This will make your application by default make requests for ‘/’ go to
index.htm to the controller for the application’s home page. You do this in a Spring MVC beans xml file when specifying the URL mapper.
This way the RequestDispatcher will know which control is actually going to load the information that will be displayed by the view for the home page.
And that’s it. No redirection. No nonsense.