2011-04-25 1 views
2

사용자가 내 애플리케이션에서 그룹을 만들고 URL을 통해 액세스하도록 허용하고 싶습니다. 예를 들어, "sweethatclub"이라는 그룹을 만든 경우 http://mysite.com/sweethatclub에 액세스 할 수 있습니다. 물론/sweethatclub과/drillteam, even/students/yearbook에 대해서도 동일한 코드가 실행됩니다.mysite.com/user/specified/path에 대한 모든 요청을 동일한 JSP로 실행하십시오.

Java 서블릿 환경에서 실행 중이므로이를 위해 경로를 얻을 수 없습니다. 모든 요청을 차단하고 URL을 구문 분석하여 요청에 정보를 추가하는 필터를 작성할 수 있지만 index.jsp의 코드를 실행하려고합니다. 예를 들어 /images/smiley.jpg가 index.jsp 대신 적절한 파일로 응답해야하기 때문에 index.jsp를 모든 URL에 매핑하고 싶지는 않습니다.

요청이 평범한 파일과 일치하지 않는 한 모든 요청을 서블릿에 보낼 수 있습니까? 또는, 내가 원하는 것을 성취 할 다른 방법이 있습니까?

자세한 정보를 제공해야하는지 알려주세요. 나는이 환경에 익숙하지 않다.

답변

3

web.xml의 URL 패턴은 대상 URL의 성격을 파악할만큼 똑똑하지 않아야합니다. 당신이 그것을 용인 할 수 있다면, 가장 쉬운 방법은 모든 사용자 지정 경로를 잘 알려진 루트 아래에 두는 것입니다. 따라서 사용자 지정 경로는 http://mysite.com/sites/sweethatclub과 같습니다.

또는 정적 내용을 모두 http://mysite.com/static/ 아래로 이동하고 동적 URL 공간과 다른 'static'으로 시작하는 것을 처리하도록 서블릿 매핑이나 필터를 설정할 수 있습니다.

1

유닉스 환경에 있다면 기본 그룹을 가리키는 가상 디렉토리로 모든 "그룹 사이트"를 만들면됩니다.

+0

이것은 좋은 생각이지만, 불행히도 파일 시스템에 액세스 할 수 없습니다. 또한 URL이 임의의 시간에 변경 될 수 있으므로 리디렉션을 명시 적으로 설정하는 것을 피하고 싶습니다. –

+0

그래, 나는 그것이 가장 좋은 방법이라고 생각하지 않았다, 그것은 단지 생각이었다. – Limey

1
  1. 공통 폴더에있는 모든 정적 콘텐츠를 넣어 특정 URL 패턴

    <url-pattern>/groups/*</url-pattern> 
    
  2. , 예를 들어,에 서블릿지도 /static 페이지의 모든 URL을 대신 해당 URL을 가리 키도록 수정하십시오.

  3. doFilter() 방법

    String uri = ((HttpServletRequest) request).getRequestURI(); 
    
    if (uri.startsWith("/static/")) { 
        chain.doFilter(request, response); // Goes to default servlet. 
    } else { 
        request.getRequestDispatcher("/groups" + uri).forward(request, response); 
    } 
    

    없음에 다음 작업을

    <url-pattern>/*</url-pattern> 
    

    에 매핑 수행하는 필터를 작성,이 브라우저 주소 표시 줄의 URL에 /groups와 끝까지하지 않습니다. 완전히 투명합니다. 필요한 경우 "/ 정적"및/또는 "/ 그룹"을 외부에서 구성 할 수 있도록 필터의 <init-param>으로 만들 수 있습니다.

관련 문제