It has to do with container managed security...
If you go directly , with no intermediate page, to the login page , the container will not know where to direct "after". You have to first hit a protected page (like
http://localhost:8080/admin) and when it re-directs you to login.jsp, it will know that you then want to go to /admin after a successful login.
When you go directly there and fail, it knows enough to send appropriate error messages and what not, but as soon as you succeed, you will need to have "come from somewhere else" so it knows where to send you next.
Did that make sense?