2012-03-21 5 views
5

Prima voglio sapere se esiste un modo integrato per ottenere un sottodominio da un URL usando servlet puri?Come posso recuperare il sottodominio in un servlet? La primavera ha qualche aiuto

E poi se la primavera ha qualche aiuto?

Così i miei URL sarebbe come:

jonskeet.stackoverflow.com 

Dove JonSkeet è il sottodominio.

Creerò un filtro che caricherà un oggetto in base al valore del sottodominio.

BTW, quando si crea un filtro, esiste un modo per ordinare i filtri per assicurarsi che vengano attivati ​​tutti in un ordine specifico?

+0

Nome errato di Jon Skeet lì amico, tisk tisk! – Kiril

+0

+1 se ti sei chiesto se SO ha davvero creato un sottodominio Jon Skeet e hai provato a visitare http://jonskeet.stackoverflow.com – Kiril

+0

No, non penso che tu possa andare oltre all'ottenimento dell'URL e quindi suddividere il Stringati. A proposito, non dovresti inserire più di una domanda, in particolare quando la tua domanda sui filtri può essere risolta rapidamente con una ricerca su Google. – madth3

risposta

7

Dubito che ci sia un'API speciale per questo. Ma puoi ottenerlo da HttpRequest usando request.getServerName().split("\\.")[0]. Sembra che sia abbastanza facile.

La limitazione è che non è possibile supportare "sottodominio" che contiene caratteri punto, ad es. jon.skeet.stackoverflow.com.

+0

Ah, i sottodomini non possono ** veramente ** contenere punti, vedere per ulteriori dettagli: http://stackoverflow.com/questions/7111881/what-are-the-allowed-characters-in-a-sub-domain – Kiril

+0

In altre parole: il punto non fa parte del sottodominio, è un separatore per le parti testuali del nome di dominio. – Kiril

+1

getServerName() restituisce anche www, quindi fallirà, prima o poi –

1

Utilizzare Guava.

Gradle:

dependencies { 
compile group: 'com.google.guava', name: 'guava', version: '19.0' 
... 
} 

Java:

private String getSubdomain(HttpServletRequest req) { 

     String site = req.getServerName(); 

     String domain = InternetDomainName.from(site).topPrivateDomain().toString(); 
     String subDomain = site.replaceAll(domain, ""); 
     subDomain = subDomain.substring(0, subDomain.length() - 1); 

     return subDomain; 
} 

Quindi, "jon.skeet.stackoverflow.com" restituirà "jon.skeet".

Problemi correlati