2011-09-06 5 views
1

ここではGoogleのアプリエンジンを使用しています。JSPでは、管理ページのリクエストを除いて、すべてを保持ページにリダイレクトするには

私はセキュリティがように設定したweb.xmlに

:他のすべての要求をリダイレクトしながら

<security-constraint> 
     <web-resource-collection> 
     <url-pattern>/admin/*</url-pattern> 
     </web-resource-collection> 
     <auth-constraint> 
     <role-name>admin</role-name> 
     </auth-constraint> 
    </security-constraint> 

今私は、/管理者でサーブレットを使用してデータストアのスキーマにいくつかの大規模な変更を行いたいですBeBackSoon.jspのようなものにする

これをweb.xmlで簡単に行う方法はありますか?

+0

変更を加えた後、アプリケーションを再デプロイするだけです。たぶん私はあなたの質問を理解していない? – home

答えて

0

これにはfilterを使用できます。

@Override 
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException { 
    HttpServletRequest request = (HttpServletRequest) req; 
    HttpServletResponse response = (HttpServletResponse) res; 
    String contextPath = request.getContextPath(); 

    if (request.getRequestURI().startsWith(contextPath + "/admin") { 
     chain.doFilter(req, res); 
    } else { 
     response.sendRedirect(contextPath + "/BeBackSoon.jsp"); 
    } 
} 

/*のURLパターンにマップします。 CSS/JS/imagesのような静的アセットが別のパスの背後にある場合は、条件に"/static"のような共通パスのチェックを入れたいと思います。そうしないと、管理ページは適切なCSS/JS/images 。

+0

2つの(簡単に修正された)問題:1)コードが無限ループを引き起こす(リクエストがcontextPath + destinationであるかどうかを確認する)2 GAEではadmin loginを処理するためにcontextPath + "/ _ah /"もチェックする必要がある。 – MontyGomery

関連する問題