java - uso - seguridad de windows 7 me pide usuario y contraseña
Obtener el dominio raíz de la solicitud (4)
En HttpServletRequest
, puede obtener partes individuales del URI usando los métodos a continuación. También puede usarlos para reconstruir la URL pieza por pieza (para ayudar a la depuración u otras tareas), como esta:
// Example: http://myhost:8080/people?lastname=Fox&age=30
String uri = request.getScheme() + "://" + // "http" + "://
request.getServerName() + // "myhost"
":" + request.getServerPort() + // ":" + "8080"
request.getRequestURI() + // "/people"
(request.getQueryString() != null ? "?" +
request.getQueryString() : ""); // "?" + "lastname=Fox&age=30"
Entonces request.getServerName()
es lo más cercano que tenemos a tu necesidad.
El "dominio raíz":
Para el "dominio raíz", tendrá que trabajar a través de la String
devuelta por getServerName()
. Esto es necesario porque el Servlet no tendría forma de saber de antemano lo que usted llama "host" o lo que es solo un dominio como .com
(podría ser una máquina llamada com
en su red, y no solo un sufijo, quién ¿sabe?).
Para el patrón que proporcionó (un tercio + segundo nivel + com / neto), el siguiente debería obtener lo que necesita:
String domain = request.getServerName().replaceAll(".*//.(?=.*//.)", "");
Lo anterior dará las siguientes entradas / salidas:
www.test.com -> test.com
test1.example.com -> example.com
a.b.c.d.e.f.g.com -> g.com
www.com -> www.com
com -> com
Considere la siguiente URL como un ejemplo. http://www.test1.example.com
¿Hay algún método por el cual pueda obtener "example.com" como salida? Sé que hay un método servletrequest.getServerName()
. Me da salida como test1.example.com
Cualquier ayuda apreciada.
Puedes hacer esto como una simple manipulación de cadenas:
String A = "http://www.test1.example.com";
String B = A.substring(A.lastIndexOf(''.'', A.lastIndexOf(''.'')-1) + 1);
No existe una forma estándar de obtener example.com
de abcexample.com
porque dicha transformación generalmente no es útil. Hay TLD que no permiten registros en el segundo nivel ; por ejemplo, todos los dominios .uk
. Dado news.bbc.co.uk
te gustaría terminar en bbc.co.uk
, ¿verdad?
Tenemos una manera más confiable de hacer lo mismo. Hay google library "guava". Agregue la siguiente dependencia en su pom.
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>19.0</version>
</dependency>
Entonces intenta
InternetDomainName.from("subdomain.example.co.in").topPrivateDomain().toString()
Esto te dará "example.co.in"
import java.net.InetAddress;
void Func() {
InetAddress ia = InetAddress.getLocalHost();
System.out.println (ia.getHostName());
}
Espero que esto ayude.