Racine de l'URl de la servlet
Je veux obtenir l'url de la racine de mon application web à partir de l'un de la servlet.
Si je déployer mon application "www.mydomain.com" je veux obtenir à la racine de l'url comme "http://www.mydomain.com".
Même chose si je le déployer en local serveur tomcat avec le port 8080, il devrait donner http://localhost:8080/myapp
Quelqu'un peut me dire comment faire pour obtenir l'URL de la racine de mon application web à partir de servlet?
public class MyServlet extends HttpServlet {
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String rootURL="";
//Code to get the URL where this servlet is deployed
}
}
- Chaîne rootUrl = request.getRequestURL().toString().remplacer(à la demande.getRequestURI(), "");
- ne fonctionne pas parce que
getRequestURI()
comprendmyapp
Vous devez vous connecter pour publier un commentaire.
Vous vous rendez compte que l'URL du client voit (et/ou de types dans son navigateur) et l'URL servi par le conteneur de votre servlet est déployé sur peut être très différent?
Afin d'obtenir ce dernier, cependant, vous avez un peu de méthodes disponibles sur HttpServletRequest:
getScheme()
,getServerName()
,getServerPort()
etgetContextPath()
et de les combiner à l'aide de séparateurs appropriésgetRequestURL()
et supprimergetServletPath()
etgetPathInfo()
d'elle.myapp
est un servlet chemin/nom, dans OP exemple. Qu'en dites-vous?Cette fonction vous aide à obtenir votre URL de base à partir d'un
HttpServletRequest
:En général, vous ne pouvez pas obtenir l'URL; mais, il y a des solutions pour des cas spécifiques. Voir Trouver votre application à l'URL avec seulement un ServletContext
Écrire un scriptlet dans l'accueil de fichiers de capturer le chemin d'accès racine. Je suppose index.jsp est le fichier par défaut. Donc, mettez le code suivant dans cette
<%
RootContextUtil rootCtx = RootContextUtil.getInstance();
if( rootCtx.getRootURL()==null ){
String url = request.getRequestURL().toString();
String uri = request.getRequestURI();
String root = url.substring( 0, url.indexOf(uri) );
rootCtx.setRootURL( root );
}
%>
Utilisation de cette variable là où il le faut dans l'application directement en appelant la valeur
String rootUrl = RootContextUtil.getInstance().getRootURL();
REMARQUE: Pas besoin de s'inquiéter à propos de protocoles/ports/etc.. Espérons que cela aide chacun