Un pezzo alla volta, usando request.
codice:
String url = request.getScheme()+"://"+
   request.getServerName()+":"+
   request.getServerPort()+
   request.getContextPath();