Comment obtenir l’URL du domaine et le nom de l’application?

Voici le scénario.

Mon application Web Java a le chemin suivant

https://www.mywebsite.com:9443/MyWebApp 

Disons qu’il y a un fichier JSP

 https://www.mywebsite.com:9443/MyWebApp/protected/index.jsp 

et j’ai besoin de récupérer

 https://www.mywebsite.com:9443/MyWebApp 

dans ce fichier JSP.

Bien sûr, il y a plutôt une manière paresseuse et idiote d’obtenir simplement l’URL et de retracer le chemin.

Mais y a-t-il une manière programmatique de le faire? Plus précisément, je pense que je peux obtenir le domaine + port, mais comment puis-je récupérer le nom de l’application “MyWebApp”?

Le nom de l’application Web (en fait, le chemin de contexte) est disponible en appelant HttpServletrequest#getContextPath() (et donc NOT getServletPath() comme précédemment suggéré). Vous pouvez récupérer ceci dans JSP par ${pageContext.request.contextPath} .

 

The context path is: ${pageContext.request.contextPath}.

Si vous avez l’intention d’utiliser ceci pour tous les chemins relatifs de votre page JSP (ce qui rendrait cette question plus logique), vous pouvez alors utiliser la balise HTML :

 <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>  ${req.requestURL}     SO question 2204870         

Tous les liens de la page seront alors automatiquement liés à la afin que vous n’ayez pas besoin de copier le chemin de contexte partout. Notez que lorsque les liens relatifs commencent par un / , ils ne seront plus relatifs au , mais à la racine du domaine.

Consultez la documentation de HttpServletRequest .
Pour créer l’URL dans votre exemple, vous devrez utiliser:

  • getScheme()
  • getServerName()
  • getServerPort()
  • getContextPath()

Voici une méthode qui retournera votre exemple:

 public static Ssortingng getURLWithContextPath(HttpServletRequest request) { return request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + request.getContextPath(); } 

Je vous suggère fortement de lire les documents , pour des méthodes similaires. Si vous êtes intéressé par le chemin de contexte, regardez ici ServletContext.getContextPath () .

Le nom de l’application provient de getContextPath .

Je trouve ce graphique de Agile Software Craftsmanship HttpServletRequest Path Decoding sortinge toutes les différentes méthodes disponibles:

entrer la description de l'image ici

Le code suivant peut être utile pour une application Web utilisant JavaScript.

 var newURL = window.location.protocol + "//" + window.location.host + "" + window.location.pathname; newURL = newURL.subssortingng(0,newURL.indexOf("")); 

Si vous recevez une URL en tant que chaîne et que vous souhaitez extraire la racine de contexte de cette application, vous pouvez utiliser cette expression régulière pour l’extraire. Cela fonctionnera pour les URL complètes ou relatives qui commencent par la racine du contexte.

 url.replaceAll("^(.*\\/\\/)?.*?\\/(.+?)\\/.*|\\/(.+)$", "$2$3")