2011-01-24 3 views
2

아직 설계 단계에 있기 때문에 문제가 있으며 그것에 대한 아이디어가 모호합니다. 나는 그 문제를 어떻게 시작해야하는지, 어떻게 해결해야 하는지를 알고 싶었다.하위 도메인/도메인 이름을 기준으로 색인 페이지 변경

문제 부 :

스트럿-2 JSP/서블릿을 사용하여 구축 한 웹 응용 프로그램의 URL mywebapp.com으로있다. 요구 사항은 모든 클라이언트가 webapp.abc.com,myapp.xyz.com, 등의 하위 도메인을 사용하여이 mywebapp.com에 액세스 할 수 있다는 것입니다. 도메인 이름을 기준으로 필터링하여 사용자 정의 된 로그인 페이지를 제공해야합니다. 데이터베이스에 도메인 이름을 저장하여 사용자 지정 로그인 페이지에 표시해야 할 세부 정보를 매핑했습니다.

내가 생각한 바에는 mywebapp.com의 IP 주소가 서브 도메인 레지스트리에 있으므로 mywebapp.com,에 착륙하지만 여기에서 도메인/하위 도메인을 사용자 정의 된 로그인 페이지로 필터링 할 수 있습니까?

가능한 방법은 무엇입니까?

답변

2

나는 필터를 사용하는 것이 좋습니다. 필터를 사용하면 컨트롤러와 관계없이 응용 프로그램에 대한 모든 요청을 처리 할 수 ​​있습니다.

예를 들어, 하위 도메인을 기반으로 다른 페이지로 리디렉션하려는 경우 필터는 컨트롤러 호출 이전 또는 컨트롤러 호출 이후를 처리하는 필터로이를 관리 할 수 ​​있습니다.

UPDATE : 유사한 목적 역할을 할 수 스트럿츠 2 인터셉터에 대한 자세한 설명서가있다 : 당신이 2가 마지막으로 알고 당신이 배열의 끝에서 시작하는 경우 http://java.dzone.com/articles/struts2-tutorial-part-57

String domain = ""; 
String subdomain = ""; 

String url = request.getRequestURL(); 
String[] parts = url.split("."); 

// subdomain.domain.com 0, 1, 2 
// subdomain1.subdomain2.domain.com 0, 1, 2, 3 
domain = (parts.length - 2 > -1) ? parts[1] : parts[]; 

for(int i = parts.length - 1; i >= 0; i--) { 
    if(i == parts.length - 2) { 
     domain = parts[i]; 
    } 
    if(i == parts.length - 3) { 
     subdomain = parts[i]; 
    } 
} 

가 항상 두 번째 수준 도메인 (SLD)이고 마지막 세 번째 도메인은 세 번째 수준 하위 도메인입니다.

+0

답변 해 주셔서 감사합니다. 그렇습니다. 요격을 고려했지만 도메인 이름 필터링에 대한 책에서도 예를 찾을 수 없었습니다. 만약 당신이 당신이 코드 조각이나 비슷한 예제의 링크를주지하시기 바랍니다. – rain

+0

request.getRequestURL()은 요격기 나 필터에서 내 문제를 해결할 것입니다. – rain

+0

@rain - 도메인/하위 도메인 추출을 시작하기 위해 몇 가지 코드를 추가했습니다. 나는 당신이 하위 도메인/도메인 값을 기반으로 if 분기를 처리 할 수 ​​있다고 가정합니다. – jmort253

관련 문제