HttpServletRequest to complete URL

I have an HttpServletRequest object. How do I get the complete and exact URL that caused this call to arrive at my servlet? Or at least as accurately as possible, as there are perhaps things that...