JavaScript is the way to go, Servlet is server-side you know.
As long as I know, once browser submits a request we can't control what happens until next page is loaded.
So, either you handle lag before loading the new page, or you handle lag after page is loaded. Of course, it's hard to load a page that requires authentication, before authentication is done, so better keep on login page until it happens.
My suggestion is that you handle login with AJAX, always being careful with security. Instead of letting browser submit the form, your JS gathers login information and asynchronously sends to Servlet using AJAX. I don't know how to do it but it can be done.
While your JS wait for response, you create some animation to distract user. Once response comes, if it login succeeds, your JS loads the new page.