Basis URL einer Webanwendung per HttpServletRequest bestimmen

veröffentlicht am 14. Juni 2013

Gelegentlich benötigt man die Basis URL einer Webanwendung, um beispielsweise eine Aktivierungsmail an einen neu registrierten Benutzer zu verschicken. Entweder muss die URL pro Installation hinterlegt werden oder man bestimmt ganz einfach die Basis URL über einen HttpServletRequest.

Für letzteren Fall habe ich folgende Utility Klasse entwickelt und sowohl in meiner lokalen Entwicklungsumgebung als auch auf meinem produktiven Tomcat erfolgreich getestet:

package de.patrickgotthard.util;

import javax.servlet.http.HttpServletRequest;

/**
 * Utility to extract informations from a {@link HttpServletRequest}.
 * 
 * @author Patrick Gotthard
 * 
 */
public final class HttpServletRequestUtil {

	private static final String HTTP_SCHEME = "http";
	private static final String HTTPS_SCHEME = "https";
	private static final int HTTP_PORT = 80;
	private static final int HTTPS_PORT = 443;

	/**
	 * Private constructor for utility class.
	 */
	private HttpServletRequestUtil() {
	}

	/**
	 * Extracts the base url of the web application.
	 * 
	 * @param request Some {@link HttpServletRequest}
	 * @return Base url of the web application
	 */
	public static String getApplicationUrl(final HttpServletRequest request) {

		final String scheme = request.getScheme();
		final String server = request.getServerName();
		final int port = request.getServerPort();
		final String context = request.getContextPath();

		String serverUrl;
		if (HTTP_SCHEME.equalsIgnoreCase(scheme) && HTTP_PORT == port || HTTPS_SCHEME.equalsIgnoreCase(scheme) && HTTPS_PORT == port) {
			serverUrl = String.format("%s://%s%s", scheme, server, context);
		} else {
			serverUrl = String.format("%s://%s:%s%s", scheme, server, port, context);
		}

		return serverUrl;

	}

}

Hinterlasse einen Kommentar