I did not use standard login either.
You can do login with
Servlet filter. It is a very common way of doing.
1) Divide your page into 2 group under 2 directory, public and private.
2) Put a filter, to filter condition to access private directory is Session object USERID exists.
3) If Session object USERID does not exist, go to login page.
4) Search itinerary is in public place.
5) Pay, list, confirm is in private place.
Compare with stardard way, this approach give you total control of the login process, you can also add some profile cache in the login.
It also has good portability, since you does not use any container provided service.
-------------------------------------------
But after all, it is the same as standard login. Since the standard login is also based on some kind of filter, you do not see it, since it is done by the container.