2010-12-08 4 views
0

나는 기존 항아리에 jar 응용 프로그램을 추가하는 작업에 직면하고 있습니다.바람둥이의 필터

So like I have now : localhost:8080/old-app 
I want to have also : localhost:8080/[en|fr|...]/new-module 

사람은 나 방향을 가리킬 수 ... 는 기존 등등 로케일 혜택을 많이하고 사용하지 않지만, 나의 새로운 하나를해야, 내가 생각하는 경우에도 I 필터의 아이디어를 얻을 beacuse, 필터 매핑, 나는 그것을 해결할 수 없습니다.

편집 : 이전 버전을 유지하고 새 버전에 대한 액세스 권한을 갖고 싶습니다. 당신이 컨텍스트 루트 예를 들면에게 같은 응용 프로그램 이름을 싶지 않는 경우

감사합니다, P.

+0

/old-app에서/new-app로 자동 리디렉션 하시겠습니까? 또는 새로운 URL 패턴에서 이전 앱을 사용할 수 있도록 하시겠습니까? – JoseK

+0

이 질문이 나에게 이해가되지 않을까 두렵다. –

답변

1

을 주셔서 감사합니다 localhost : 8080/appname이지만 직접/tomcat/webapps/ROOT 폴더에 넣어야합니다. 보다 정교한 URL 매핑 작업을 얻으려면 http://ocpsoft.com/prettyfaces/

+0

PrettyFaces는 JSF 웹 애플리케이션 전용입니다. OP가 JSF를 사용하고 있다는 것을 어디서 읽었습니까? – BalusC

3

배포 new-moduleROOT.war (또는 //META-INF/context.xmlpath 설정) 등을 살펴 있습니다. Tuckey's URLRewriteFilter을 사용하여 특정 URL을 다시 쓰고 언어 파트를 요청 매개 변수로 변환하여 request.getParameter()에서 사용할 수 있도록합니다. Apache HTTPD의 mod_rewrite과 매우 유사합니다.

URLRewriteFilter의 대안은 doFilter() 방법에서 다음과 같은 맞춤 필터를 직접 생성하는 것입니다. /*url-pattern

String uri = request.getRequestURI(); 
if (uri.matches("^/\\w{2}(/.*)?$")) { 
    request.setAttribute("language", uri.substring(1, 3)); 
    request.getRequestDispatcher(uri.substring(3)).forward(request, response); 
} else { 
    chain.doFilter(request, response); 
} 

지도이. 이 언어는 전달 된 리소스의 request.getAttribute("language")에 있습니다.