2011-09-06 79 views
1

我在這裏使用的是谷歌應用程序引擎。使用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> 

現在我想通過/管理員使用servlet來使得一些大的變化到數據存儲的架構,而重定向所有其他請求像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"); 
    } 
} 

將其映射到網址格式/*。請注意,如果您的CSS/JS /圖片等靜態資源位於不同的路徑後面,則您希望在條件中包含像"/static"這樣的常見路徑的檢查,否則您的管理頁面將沒有合適的CSS/JS /圖像。

+0

兩個(很容易修復的)問題:1)代碼導致無限循環(檢查請求是否爲contextPath + destination 2)在GAE上,您還需要檢查contextPath +「/ _ah /」,以處理管理員登錄。 – MontyGomery

相關問題